https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61555
Bug ID: 61555 Summary: [4.9/4.10 Regression] LLVM build failure Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: ipa Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org LLVM trunk fails to build with 4.9 and 4.10: [1299/1853] Linking CXX executable bin/bugpoint FAILED: : && /usr/bin/g++ -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wnon-virtual-dtor -Wno-comment -std=c++11 -ffunction-sections -fdata-sections -O2 -DNDEBUG -pipe -march=native -Wl,-O1,--hash-style=gnu,--gc-sections,--icf=all,--icf-iterations=3 -Wl,--export-dynamic tools/bugpoint/CMakeFiles/bugpoint.dir/BugDriver.cpp.o tools/bugpoint/CMakeFiles/bugpoint.dir/CrashDebugger.cpp.o tools/bugpoint/CMakeFiles/bugpoint.dir/ExecutionDriver.cpp.o tools/bugpoint/CMakeFiles/bugpoint.dir/ExtractFunction.cpp.o tools/bugpoint/CMakeFiles/bugpoint.dir/FindBugs.cpp.o tools/bugpoint/CMakeFiles/bugpoint.dir/Miscompilation.cpp.o tools/bugpoint/CMakeFiles/bugpoint.dir/OptimizerDriver.cpp.o tools/bugpoint/CMakeFiles/bugpoint.dir/ToolRunner.cpp.o tools/bugpoint/CMakeFiles/bugpoint.dir/bugpoint.cpp.o -o bin/bugpoint lib/libLLVMAnalysis.so lib/libLLVMBitWriter.so lib/libLLVMCodeGen.so lib/libLLVMCore.so lib/libLLVMipa.so lib/libLLVMipo.so lib/libLLVMIRReader.so lib/libLLVMInstCombine.so lib/libLLVMInstrumentation.so lib/libLLVMLinker.so lib/libLLVMObjCARCOpts.so lib/libLLVMScalarOpts.so lib/libLLVMSupport.so lib/libLLVMTarget.so lib/libLLVMTransformUtils.so lib/libLLVMVectorize.so lib/libLLVMInstCombine.so lib/libLLVMAsmParser.so lib/libLLVMTransformUtils.so lib/libLLVMipa.so lib/libLLVMAnalysis.so lib/libLLVMTarget.so lib/libLLVMMC.so lib/libLLVMObject.so lib/libLLVMBitReader.so lib/libLLVMCore.so lib/libLLVMSupport.so -lrt -ldl -lcurses -lpthread -lz -Wl,-rpath,"\$ORIGIN/../lib" && : tools/bugpoint/CMakeFiles/bugpoint.dir/bugpoint.cpp.o:bugpoint.cpp:function llvm::cl::list<llvm::PassInfo const*, bool, llvm::PassNameParser>::getExtraOptionNames(llvm::SmallVectorImpl<char const*>&): error: undefined reference to 'llvm::cl::parser<llvm::PassInfo const*>::getOption(unsigned int) const' collect2: error: ld returned 1 exit status [1299/1853] Building CXX object tools/clang/lib/Basic/CMakeFiles/clangBasic.dir/Targets.cpp.o ninja: build stopped: subcommand failed. Reduced: markus@x4 llvm_build % cat bugpoint.ii namespace llvm { namespace cl { enum NumOccurrencesFlag { ZeroOrMore }; enum OptionHidden { NotHidden }; class A { protected: A (NumOccurrencesFlag, OptionHidden); virtual void getExtraOptionNames (int &); }; class B { public: virtual char *getOption (unsigned) const; void getExtraOptionNames (int) { getOption (0); } }; template <class> class parser : public B { char *getOption (unsigned) const; }; template <class ParserClass = parser<int> > class C : A { ParserClass Parser; void getExtraOptionNames (int &p1) { Parser.getExtraOptionNames (0); } public: template <class M0t, class M1t> C (M0t, M1t) : A (ZeroOrMore, NotHidden) {} }; } class PassInfo; class D : public cl::parser<const PassInfo *> { public: D (); }; } using namespace llvm; cl::C<D> a (0, cl::ZeroOrMore); markus@x4 llvm_build % g++ -c -O2 -std=c++11 bugpoint.ii markus@x4 llvm_build % nm bugpoint.o | grep _ZNK4llvm2cl6parserIPKNS_8PassInfoEE9getOptionEj U _ZNK4llvm2cl6parserIPKNS_8PassInfoEE9getOptionEj (4.8.3 is fine) markus@x4 llvm_build % /usr/x86_64-pc-linux-gnu/gcc-bin/4.8.3/g++ -c -O2 -std=c++11 bugpoint.ii markus@x4 llvm_build % nm bugpoint.o | grep _ZNK4llvm2cl6parserIPKNS_8PassInfoEE9getOptionEj markus@x4 llvm_build %