KhronosGroup / KhronosGroup/SPIRV-LLVM-Translator

In-LLVM-tree build fails: no matching function for call to ‘llvm::StringSwitch<...>::Cases

Open
#3,469 3 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.