KhronosGroup / KhronosGroup/SPIRV-LLVM-Translator
In-LLVM-tree build fails: no matching function for call to ‘llvm::StringSwitch<...>::Cases
- Dominant language
- LLVM
- Stars
- 625
- Forks
- 279
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 34
Description
I'm trying to build the translator, checked out today, within the tree of LLVM 21.1.7 (the latest release of LLVM as of today), in tree.
The CMake configure command was:
```
cmake -G Ninja -S llvm -DLLVM_ENABLE_PROJECTS="clang;lld" \
-B /path/to/build/dir -DCMAKE_INSTALL_PREFIX=/path/to/install/dir \
-DCMAKE_BUILD_TYPE=Release
```
During the build, I get:
```
/path/to/llvm-project-21.1.7.src/llvm/tools/SPIRV-LLVM-Translator/lib/SPIRV/SPIRVWriter.cpp:5379:17: error: no matching function for call to ‘llvm::StringSwitch::Cases(, SPIRV::LLVMToSPIRVBase::FPBuiltinType)’
5378 | StringSwitch(OpName)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5379 | .Cases({"fadd", "fsub", "fmul", "fdiv", "frem"},
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5380 | FPBuiltinType::REGULAR_MATH)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/FloatingPointMode.h:19,
from /home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/APFloat.h:20,
from /home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/IR/Constants.h:23,
from /home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/IR/IntrinsicInst.h:26,
from /home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/IR/DebugInfo.h:28,
from /home/lh156516/src/local/llvm-project-21.1.7.src/llvm/tools/SPIRV-LLVM-Translator/lib/SPIRV/LLVMToSPIRVDbgTran.h:43,
from /home/lh156516/src/local/llvm-project-21.1.7.src/llvm/tools/SPIRV-LLVM-Translator/lib/SPIRV/SPIRVWriter.h:45,
from /home/lh156516/src/local/llvm-project-21.1.7.src/llvm/tools/SPIRV-LLVM-Translator/lib/SPIRV/SPIRVWriter.cpp:41:
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:87:17: note: candidate: ‘llvm::StringSwitch& llvm::StringSwitch::Cases(llvm::StringLiteral, llvm::StringLiteral, T) [with T = SPIRV::LLVMToSPIRVBase::FPBuiltinType; R = SPIRV::LLVMToSPIRVBase::FPBuiltinType]’
87 | StringSwitch &Cases(StringLiteral S0, StringLiteral S1, T Value) {
| ^~~~~
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:87:17: note: candidate expects 3 arguments, 2 provided
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:91:17: note: candidate: ‘llvm::StringSwitch& llvm::StringSwitch::Cases(llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, T) [with T = SPIRV::LLVMToSPIRVBase::FPBuiltinType; R = SPIRV::LLVMToSPIRVBase::FPBuiltinType]’
91 | StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
| ^~~~~
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:91:17: note: candidate expects 4 arguments, 2 provided
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:96:17: note: candidate: ‘llvm::StringSwitch& llvm::StringSwitch::Cases(llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, T) [with T = SPIRV::LLVMToSPIRVBase::FPBuiltinType; R = SPIRV::LLVMToSPIRVBase::FPBuiltinType]’
96 | StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
| ^~~~~
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:96:17: note: candidate expects 5 arguments, 2 provided
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:101:17: note: candidate: ‘llvm::StringSwitch& llvm::StringSwitch::Cases(llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, T) [with T = SPIRV::LLVMToSPIRVBase::FPBuiltinType; R = SPIRV::LLVMToSPIRVBase::FPBuiltinType]’
101 | StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
| ^~~~~
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:101:17: note: candidate expects 6 arguments, 2 provided
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:106:17: note: candidate: ‘llvm::StringSwitch& llvm::StringSwitch::Cases(llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, T) [with T = SPIRV::LLVMToSPIRVBase::FPBuiltinType; R = SPIRV::LLVMToSPIRVBase::FPBuiltinType]’
106 | StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
| ^~~~~
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:106:17: note: candidate expects 7 arguments, 2 provided
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:112:17: note: candidate: ‘llvm::StringSwitch& llvm::StringSwitch::Cases(llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, T) [with T = SPIRV::LLVMToSPIRVBase::FPBuiltinType; R = SPIRV::LLVMToSPIRVBase::FPBuiltinType]’
112 | StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
| ^~~~~
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:112:17: note: candidate expects 8 arguments, 2 provided
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:118:17: note: candidate: ‘llvm::StringSwitch& llvm::StringSwitch::Cases(llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, T) [with T = SPIRV::LLVMToSPIRVBase::FPBuiltinType; R = SPIRV::LLVMToSPIRVBase::FPBuiltinType]’
118 | StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
| ^~~~~
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:118:17: note: candidate expects 9 arguments, 2 provided
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:124:17: note: candidate: ‘llvm::StringSwitch& llvm::StringSwitch::Cases(llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, T) [with T = SPIRV::LLVMToSPIRVBase::FPBuiltinType; R = SPIRV::LLVMToSPIRVBase::FPBuiltinType]’
124 | StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
| ^~~~~
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:124:17: note: candidate expects 10 arguments, 2 provided
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:131:17: note: candidate: ‘llvm::StringSwitch& llvm::StringSwitch::Cases(llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, llvm::StringLiteral, T) [with T = SPIRV::LLVMToSPIRVBase::FPBuiltinType; R = SPIRV::LLVMToSPIRVBase::FPBuiltinType]’
131 | StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2,
| ^~~~~
/home/lh156516/src/local/llvm-project-21.1.7.src/llvm/include/llvm/ADT/StringSwitch.h:131:17: note: candidate expects 11 arguments, 2 provided
```
Additional information:
* OS: SLES GNU/Linux 15 SP6
* Compiler: GCC 13
* SPIR-V Tools: repository head, checked out today.
Contributor guide
Research direction
Start at llvm/tools/SPIRV-LLVM-Translator/lib/SPIRV/SPIRVWriter.cpp:5379 and compare the StringSwitch::Cases call with llvm/include/llvm/ADT/StringSwitch.h. Reproduce the in-tree CMake/Ninja build using LLVM 21.1.7, GCC 13, and SLES 15 SP6; done means the translator builds successfully in that configuration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp
- Domain
- build-system, compilers
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100