BeMg wrote: > A test case will crash, missing `+` before `zbc`: > > ``` > __attribute__((target_clones("default", "arch=+zbb,zbc;priority=-1", > "priority=-2;arch=+zba", "priority=3;arch=+zbb,+zba"))) int foo1(void) { > return 2; } > > > int bar() { return foo1(); } > ``` > > ``` > $ clang -cc1 -triple riscv64-linux-gnu -target-feature +i -emit-llvm foo.c > clang: > /home/kitoc/llvm-workspace/llvm-project/llvm/lib/TargetParser/RISCVISAInfo.cpp:455: > static llvm::Expected<std::unique_ptr<llvm::RISCVISAInfo> > > llvm::RISCVISAInfo::parseFeatures(unsigned int, const > std::vector<std::__cxx11::basic_string<char> >&): Assertion `ExtName.size() > > 1 && (ExtName[0] == '+' || ExtName[0] == '-')' failed. > PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ > and include the crash backtrace, preprocessed source, and associated run > script. > Stack dump: > 0. Program arguments: ./bin/clang -cc1 -triple riscv64-linux-gnu > -target-feature +i -emit-llvm attr-target-clones-riscv.c > 1. attr-target-clones-riscv.c:7:1: current parser token 'int' > 2. attr-target-clones-riscv.c:4:130: LLVM IR generation of declaration > 'foo1' > 3. attr-target-clones-riscv.c:4:130: Generating code for declaration > 'foo1' > #0 0x00007f4ed63e00d0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) > (/scratch/kitoc/llvm-workspace/build-upstream/bin/../lib/libLLVMSupport.so.20.0git+0x1e00d0) > ... > #11 0x00007f4eda71a854 llvm::RISCVISAInfo::parseFeatures(unsigned int, > std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, > std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, > std::char_traits<char>, std::allocator<char>>>> const&) > (/scratch/kitoc/llvm-workspace/build-upstream/bin/../lib/libLLVMTargetParser.so.20.0git+0x3d854) > #12 0x00007f4ed825b8e0 > clang::targets::RISCVTargetInfo::initFeatureMap(llvm::StringMap<bool, > llvm::MallocAllocator>&, clang::DiagnosticsEngine&, llvm::StringRef, > std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, > std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, > std::char_traits<char>, std::allocator<char>>>> const&) const > (/scratch/kitoc/llvm-workspace/build-upstream/bin/../lib/libclangBasic.so.20.0git+0x45b8e0) > ... > Aborted (core dumped) > ```
Fixed and add new test. https://github.com/llvm/llvm-project/pull/85786 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits