On Sun, Oct 15, 2017 at 12:40 PM, Don Hinton <hintonda at gmail.com> wrote:> On Sun, Oct 15, 2017 at 8:34 AM, Aaron Ballman <aaron at aaronballman.com> > wrote: >> >> FWIW, most of the ones I was fixing up were guarded by NDEBUG instead >> of LLVM_ENABLE_DUMP. Switching to LLVM_ENABLE_DUMP fixed the link >> errors for me -- the only one I struggled with was >> AsmMatcherEmitter::run(). But it sounds like you're saying switching >> the configuration type in MSVC from Debug to Release would have >> possibly caused issues as well? > > > This is what I believe is going on -- hope this isn't too convoluted... > > I don't know how you invoked cmake, but the generators for VS and Xcode > support multiple configurations, allowing you to delay choosing the build > type and implicitly setting CMAKE_BUILD_TYPE=None. > > If CMAKE_BUILD_TYPE isn't passed or doesn't include "debug", CMakeLists.txt > assumes it's a release build, turns off both asserts and dump methods, and > generates llvm-config.h without defining LLVM_ENABLE_DUMP. Since my change > removed the NDEBUG test for most dump definitions, they were #ifdef'd away. > While it's possible to override this behavior by passing > -DLLVM_ENABLE_ASSERTIONS or -DLLMV_FORCE_ENABLE_DUMP, you don't seem to have > done that. > > So, when a Debug build was later selected, llvm-config.h had already been > written without defining LLVM_ENABLE_DUMP, and since table-gen didn't have > the fix, it assumed the dump methods were available when it didn't see > -DNEBUG on the command line -- hence the linking errors. > > So, setting LLVM_ENABLE_DUMP at configuration time won't work in this case, > and I'm leaning toward removing it completely.Ah, okay, I see what the issue is. Thank you for the explanation!> Jack's issue involved removing -DNDEBUG in a script for Release builds. > While it caused the same linking issues you saw, it really didn't have > anything to do with the configuration issue you uncovered. Had I seen any > other errors, I would have rolled it back yesterday, but as you've said, the >bots were clean wrt this change.I was surprised that this didn't make any MSVC bots go red. The default behavior I see is that I run cmake and I get a Debug build without fiddling with anything in MSVC, unless I specify cmake options to do a release build.> So, thanks again for reverting it, and sorry for any inconvenience.No problem -- sorry that the patch may not work out! ~Aaron> > hth... > don > >> >> ~Aaron >> >> > >> > Thanks again... >> > don >> > >> > >> > >> > >> >> >> >> >> >> ~Aaron >> >> >> >> > >> >> > thanks again... >> >> > don >> >> > >> >> > On Sun, Oct 15, 2017 at 7:35 AM, Aaron Ballman >> >> > <aaron at aaronballman.com> >> >> > wrote: >> >> >> >> >> >> On Sat, Oct 14, 2017 at 11:25 AM, Don Hinton via llvm-dev >> >> >> <llvm-dev at lists.llvm.org> wrote: >> >> >> > Hi Jack: >> >> >> > >> >> >> > Yes, I was just looking at that. Seems like TableGen wasn't done >> >> >> > along >> >> >> > with >> >> >> > the rest of llvm. I'll work up a complete patch shortly. >> >> >> >> >> >> This also broke the build for MSVC when doing a debug build (though >> >> >> no >> >> >> builder seems to be picking up the failure!). After working around a >> >> >> handful of link errors, I came to one that's going to require more >> >> >> understanding of LLVM's tablegen than I have. >> >> >> >> >> >> Error LNK2019 unresolved external symbol "public: void __cdecl >> >> >> `anonymous namespace'::MatchableInfo::dump(void)const " >> >> >> (?dump at MatchableInfo@?A0xf4f1c304@@QEBAXXZ) referenced in function >> >> >> "public: void __cdecl `anonymous >> >> >> namespace'::AsmMatcherEmitter::run(class llvm::raw_ostream &)" >> >> >> (?run at AsmMatcherEmitter@?A0xf4f1c304@@QEAAXAEAVraw_ostream at llvm@@@Z) >> >> >> llvm-tblgen D:\llvm\2017\utils\TableGen\AsmMatcherEmitter.obj 1 >> >> >> >> >> >> Since this has been broken for over a day and the fixes are >> >> >> nontrivial, I've reverted your commit (r315590) in r315854. >> >> >> Hopefully >> >> >> this doesn't cause you too many problems! >> >> >> >> >> >> ~Aaron >> >> >> >> >> >> > >> >> >> > Btw, I'm curious how this happened. Do you have a stale >> >> >> > CMakeCache.txt >> >> >> > by >> >> >> > any chance? You might check the value for LLVM_ENABLE_DUMP and >> >> >> > see >> >> >> > if >> >> >> > it's >> >> >> > consistent. >> >> >> > >> >> >> > Again, I'll gen up a complete patch shortly -- sorry for delay, >> >> >> > had >> >> >> > to >> >> >> > walk >> >> >> > my dog first... >> >> >> > >> >> >> > thanks... >> >> >> > don >> >> >> > >> >> >> > On Sat, Oct 14, 2017 at 8:06 AM, Jack Howarth >> >> >> > <howarth.mailing.lists at gmail.com> wrote: >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> On Sat, Oct 14, 2017 at 10:25 AM, Don Hinton <hintonda at gmail.com> >> >> >> >> wrote: >> >> >> >>> >> >> >> >>> Hi Jack: >> >> >> >>> >> >> >> >>> Looks like I missed this one in my recent change. >> >> >> >>> >> >> >> >>> Please let me know if this solves your problem: >> >> >> >>> >> >> >> >>> $ git diff >> >> >> >>> diff --git a/utils/TableGen/InfoByHwMode.cpp >> >> >> >>> b/utils/TableGen/InfoByHwMode.cpp >> >> >> >>> index 7e1e1864356..8d3636432aa 100644 >> >> >> >>> --- a/utils/TableGen/InfoByHwMode.cpp >> >> >> >>> +++ b/utils/TableGen/InfoByHwMode.cpp >> >> >> >>> @@ -98,14 +98,16 @@ void >> >> >> >>> ValueTypeByHwMode::writeToStream(raw_ostream >> >> >> >>> &OS) const { >> >> >> >>> OS << '}'; >> >> >> >>> } >> >> >> >>> >> >> >> >>> +#ifdef LLVM_ENABLE_DUMP >> >> >> >>> LLVM_DUMP_METHOD >> >> >> >>> void ValueTypeByHwMode::dump() const { >> >> >> >>> dbgs() << *this << '\n'; >> >> >> >>> } >> >> >> >>> +#endif >> >> >> >>> >> >> >> >>> ValueTypeByHwMode llvm::getValueTypeByHwMode(Record *Rec, >> >> >> >>> const >> >> >> >>> CodeGenHwModes >> >> >> >>> &CGH) >> >> >> >>> { >> >> >> >>> -#ifndef NDEBUG >> >> >> >>> +#ifdef LLVM_ENABLE_DUMP >> >> >> >>> if (!Rec->isSubClassOf("ValueType")) >> >> >> >>> Rec->dump(); >> >> >> >>> #endif >> >> >> >>> >> >> >> >>> >> >> >> >>> thanks... >> >> >> >>> don >> >> >> >>> >> >> >> >> >> >> >> >> The patch seems to be incomplete as it moves the failure to... >> >> >> >> >> >> >> >> [ 6%] Linking CXX executable ../../bin/llvm-tblgen >> >> >> >> cd /sw/src/fink.build/llvm60-6.0.0-1/build/stage1/utils/TableGen >> >> >> >> && >> >> >> >> /sw/bin/cmake -E cmake_link_script >> >> >> >> CMakeFiles/llvm-tblgen.dir/link.txt >> >> >> >> --verbose=1 >> >> >> >> /sw/src/fink.build/llvm60-6.0.0-1/opt-bin/ccclang++ -fno-common >> >> >> >> -fPIC >> >> >> >> -fvisibility-inlines-hidden -Werror=date-time >> >> >> >> -Werror=unguarded-availability-new -std=c++11 -Wall -W >> >> >> >> -Wno-unused-parameter >> >> >> >> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers >> >> >> >> -pedantic >> >> >> >> -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor >> >> >> >> -Wdelete-non-virtual-dtor -Wstring-conversion -O3 >> >> >> >> -Wl,-search_paths_first >> >> >> >> -Wl,-headerpad_max_install_names -L/sw/lib -Wl,-dead_strip >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/AsmMatcherEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterInst.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/Attributes.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CallingConvEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeEmitterGen.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenHwModes.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenInstruction.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenMapTable.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenRegisters.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenSchedule.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenTarget.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherGen.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcher.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DisassemblerEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/FastISelEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/FixedLenDecoderEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/GlobalISelEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/InfoByHwMode.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/InstrInfoEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/IntrinsicEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/OptParserEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/RegisterBankEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/RegisterInfoEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/SearchableTableEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/SubtargetEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/SubtargetFeatureInfo.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/TableGen.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/Types.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86DisassemblerTables.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86EVEX2VEXTablesEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86FoldTablesEmitter.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86ModRMFilters.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86RecognizableInstr.cpp.o >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CTagsEmitter.cpp.o -o >> >> >> >> ../../bin/llvm-tblgen >> >> >> >> -Wl,-rpath, at loader_path/../lib ../../lib/libLLVMSupport.a >> >> >> >> ../../lib/libLLVMTableGen.a ../../lib/libLLVMSupport.a -lcurses >> >> >> >> -lz >> >> >> >> -lm >> >> >> >> ../../lib/libLLVMDemangle.a >> >> >> >> Undefined symbols for architecture x86_64: >> >> >> >> "llvm::SubtargetFeatureInfo::dump() const", referenced from: >> >> >> >> (anonymous namespace)::AsmMatcherInfo::buildInfo() in >> >> >> >> AsmMatcherEmitter.cpp.o >> >> >> >> "(anonymous namespace)::MatchableInfo::dump() const", >> >> >> >> referenced >> >> >> >> from: >> >> >> >> (anonymous >> >> >> >> namespace)::AsmMatcherEmitter::run(llvm::raw_ostream&) >> >> >> >> in >> >> >> >> AsmMatcherEmitter.cpp.o >> >> >> >> ld: symbol(s) not found for architecture x86_64 >> >> >> >> clang: error: linker command failed with exit code 1 (use -v to >> >> >> >> see >> >> >> >> invocation) >> >> >> >> make[2]: *** [bin/llvm-tblgen] Error 1 >> >> >> >> make[1]: *** [utils/TableGen/CMakeFiles/llvm-tblgen.dir/all] >> >> >> >> Error 2 >> >> >> >> make: *** [all] Error 2 >> >> >> >> >> >> >> >> Jack >> >> >> >> >> >> >> >>> >> >> >> >>> >> >> >> >>> On Sat, Oct 14, 2017 at 6:06 AM, Jack Howarth via llvm-dev >> >> >> >>> <llvm-dev at lists.llvm.org> wrote: >> >> >> >>>> >> >> >> >>>> Is anyone else seeing this bootstrap failure on current svn >> >> >> >>>> trunk? >> >> >> >>>> >> >> >> >>>> [ 6%] Linking CXX executable ../../bin/llvm-tblgen >> >> >> >>>> cd >> >> >> >>>> /sw/src/fink.build/llvm60-6.0.0-1/build/stage1/utils/TableGen >> >> >> >>>> && >> >> >> >>>> /sw/bin/cmake -E cmake_link_script >> >> >> >>>> CMakeFiles/llvm-tblgen.dir/link.txt >> >> >> >>>> --verbose=1 >> >> >> >>>> /sw/src/fink.build/llvm60-6.0.0-1/opt-bin/ccclang++ >> >> >> >>>> -fno-common >> >> >> >>>> -fPIC >> >> >> >>>> -fvisibility-inlines-hidden -Werror=date-time >> >> >> >>>> -Werror=unguarded-availability-new -std=c++11 -Wall -W >> >> >> >>>> -Wno-unused-parameter >> >> >> >>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers >> >> >> >>>> -pedantic >> >> >> >>>> -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor >> >> >> >>>> -Wdelete-non-virtual-dtor -Wstring-conversion -O3 >> >> >> >>>> -Wl,-search_paths_first >> >> >> >>>> -Wl,-headerpad_max_install_names -L/sw/lib -Wl,-dead_strip >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/AsmMatcherEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterInst.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/Attributes.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CallingConvEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeEmitterGen.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenHwModes.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenInstruction.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenMapTable.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenRegisters.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenSchedule.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenTarget.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherGen.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcher.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DisassemblerEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/FastISelEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/FixedLenDecoderEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/GlobalISelEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/InfoByHwMode.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/InstrInfoEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/IntrinsicEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/OptParserEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/RegisterBankEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/RegisterInfoEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/SearchableTableEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/SubtargetEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/SubtargetFeatureInfo.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/TableGen.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/Types.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86DisassemblerTables.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86EVEX2VEXTablesEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86FoldTablesEmitter.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86ModRMFilters.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86RecognizableInstr.cpp.o >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CTagsEmitter.cpp.o -o >> >> >> >>>> ../../bin/llvm-tblgen >> >> >> >>>> -Wl,-rpath, at loader_path/../lib ../../lib/libLLVMSupport.a >> >> >> >>>> ../../lib/libLLVMTableGen.a ../../lib/libLLVMSupport.a -lcurses >> >> >> >>>> -lz >> >> >> >>>> -lm >> >> >> >>>> ../../lib/libLLVMDemangle.a >> >> >> >>>> Undefined symbols for architecture x86_64: >> >> >> >>>> "llvm::Record::dump() const", referenced from: >> >> >> >>>> llvm::getValueTypeByHwMode(llvm::Record*, >> >> >> >>>> llvm::CodeGenHwModes >> >> >> >>>> const&) in InfoByHwMode.cpp.o >> >> >> >>>> "llvm::SubtargetFeatureInfo::dump() const", referenced from: >> >> >> >>>> (anonymous namespace)::AsmMatcherInfo::buildInfo() in >> >> >> >>>> AsmMatcherEmitter.cpp.o >> >> >> >>>> "(anonymous namespace)::MatchableInfo::dump() const", >> >> >> >>>> referenced >> >> >> >>>> from: >> >> >> >>>> (anonymous >> >> >> >>>> namespace)::AsmMatcherEmitter::run(llvm::raw_ostream&) >> >> >> >>>> in AsmMatcherEmitter.cpp.o >> >> >> >>>> ld: symbol(s) not found for architecture x86_64 >> >> >> >>>> clang: error: linker command failed with exit code 1 (use -v to >> >> >> >>>> see >> >> >> >>>> invocation) >> >> >> >>>> make[2]: *** [bin/llvm-tblgen] Error 1 >> >> >> >>>> make[1]: *** [utils/TableGen/CMakeFiles/llvm-tblgen.dir/all] >> >> >> >>>> Error >> >> >> >>>> 2 >> >> >> >>>> make: *** [all] Error 2 >> >> >> >>>> >> >> >> >>>> This is on x86_64-apple-darwin16 with Xcode 9.0. >> >> >> >>>> Jack >> >> >> >>>> >> >> >> >>>> _______________________________________________ >> >> >> >>>> LLVM Developers mailing list >> >> >> >>>> llvm-dev at lists.llvm.org >> >> >> >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> >> >>>> >> >> >> >>> >> >> >> >> >> >> >> > >> >> >> > >> >> >> > _______________________________________________ >> >> >> > LLVM Developers mailing list >> >> >> > llvm-dev at lists.llvm.org >> >> >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> >> > >> >> > >> >> > >> > >> > > >
On Sun, Oct 15, 2017 at 10:03 AM, Aaron Ballman <aaron at aaronballman.com> wrote:> On Sun, Oct 15, 2017 at 12:40 PM, Don Hinton <hintonda at gmail.com> wrote: > > On Sun, Oct 15, 2017 at 8:34 AM, Aaron Ballman <aaron at aaronballman.com> > > wrote: > >> > >> FWIW, most of the ones I was fixing up were guarded by NDEBUG instead > >> of LLVM_ENABLE_DUMP. Switching to LLVM_ENABLE_DUMP fixed the link > >> errors for me -- the only one I struggled with was > >> AsmMatcherEmitter::run(). But it sounds like you're saying switching > >> the configuration type in MSVC from Debug to Release would have > >> possibly caused issues as well? > > > > > > This is what I believe is going on -- hope this isn't too convoluted... > > > > I don't know how you invoked cmake, but the generators for VS and Xcode > > support multiple configurations, allowing you to delay choosing the build > > type and implicitly setting CMAKE_BUILD_TYPE=None. > > > > If CMAKE_BUILD_TYPE isn't passed or doesn't include "debug", > CMakeLists.txt > > assumes it's a release build, turns off both asserts and dump methods, > and > > generates llvm-config.h without defining LLVM_ENABLE_DUMP. Since my > change > > removed the NDEBUG test for most dump definitions, they were #ifdef'd > away. > > While it's possible to override this behavior by passing > > -DLLVM_ENABLE_ASSERTIONS or -DLLMV_FORCE_ENABLE_DUMP, you don't seem to > have > > done that. > > > > So, when a Debug build was later selected, llvm-config.h had already been > > written without defining LLVM_ENABLE_DUMP, and since table-gen didn't > have > > the fix, it assumed the dump methods were available when it didn't see > > -DNEBUG on the command line -- hence the linking errors. > > > > So, setting LLVM_ENABLE_DUMP at configuration time won't work in this > case, > > and I'm leaning toward removing it completely. > > Ah, okay, I see what the issue is. Thank you for the explanation! > > > Jack's issue involved removing -DNDEBUG in a script for Release builds. > > While it caused the same linking issues you saw, it really didn't have > > anything to do with the configuration issue you uncovered. Had I seen > any > > other errors, I would have rolled it back yesterday, but as you've said, > the > >bots were clean wrt this change. > > I was surprised that this didn't make any MSVC bots go red. The > default behavior I see is that I run cmake and I get a Debug build > without fiddling with anything in MSVC, unless I specify cmake options > to do a release build. >Since it creates multiple ones, it must be selecting the Debug configuration by default -- it has to pick something. But that has nothing to do with the cmake variables we set in CMakeList.txt.> > > So, thanks again for reverting it, and sorry for any inconvenience. > > No problem -- sorry that the patch may not work out! > > ~Aaron > > > > > hth... > > don > > > >> > >> ~Aaron > >> > >> > > >> > Thanks again... > >> > don > >> > > >> > > >> > > >> > > >> >> > >> >> > >> >> ~Aaron > >> >> > >> >> > > >> >> > thanks again... > >> >> > don > >> >> > > >> >> > On Sun, Oct 15, 2017 at 7:35 AM, Aaron Ballman > >> >> > <aaron at aaronballman.com> > >> >> > wrote: > >> >> >> > >> >> >> On Sat, Oct 14, 2017 at 11:25 AM, Don Hinton via llvm-dev > >> >> >> <llvm-dev at lists.llvm.org> wrote: > >> >> >> > Hi Jack: > >> >> >> > > >> >> >> > Yes, I was just looking at that. Seems like TableGen wasn't > done > >> >> >> > along > >> >> >> > with > >> >> >> > the rest of llvm. I'll work up a complete patch shortly. > >> >> >> > >> >> >> This also broke the build for MSVC when doing a debug build > (though > >> >> >> no > >> >> >> builder seems to be picking up the failure!). After working > around a > >> >> >> handful of link errors, I came to one that's going to require more > >> >> >> understanding of LLVM's tablegen than I have. > >> >> >> > >> >> >> Error LNK2019 unresolved external symbol "public: void __cdecl > >> >> >> `anonymous namespace'::MatchableInfo::dump(void)const " > >> >> >> (?dump at MatchableInfo@?A0xf4f1c304@@QEBAXXZ) referenced in > function > >> >> >> "public: void __cdecl `anonymous > >> >> >> namespace'::AsmMatcherEmitter::run(class llvm::raw_ostream &)" > >> >> >> (?run at AsmMatcherEmitter@?A0xf4f1c304@@QEAAXAEAVraw_ostream at llvm > @@@Z) > >> >> >> llvm-tblgen D:\llvm\2017\utils\TableGen\AsmMatcherEmitter.obj 1 > >> >> >> > >> >> >> Since this has been broken for over a day and the fixes are > >> >> >> nontrivial, I've reverted your commit (r315590) in r315854. > >> >> >> Hopefully > >> >> >> this doesn't cause you too many problems! > >> >> >> > >> >> >> ~Aaron > >> >> >> > >> >> >> > > >> >> >> > Btw, I'm curious how this happened. Do you have a stale > >> >> >> > CMakeCache.txt > >> >> >> > by > >> >> >> > any chance? You might check the value for LLVM_ENABLE_DUMP and > >> >> >> > see > >> >> >> > if > >> >> >> > it's > >> >> >> > consistent. > >> >> >> > > >> >> >> > Again, I'll gen up a complete patch shortly -- sorry for delay, > >> >> >> > had > >> >> >> > to > >> >> >> > walk > >> >> >> > my dog first... > >> >> >> > > >> >> >> > thanks... > >> >> >> > don > >> >> >> > > >> >> >> > On Sat, Oct 14, 2017 at 8:06 AM, Jack Howarth > >> >> >> > <howarth.mailing.lists at gmail.com> wrote: > >> >> >> >> > >> >> >> >> > >> >> >> >> > >> >> >> >> On Sat, Oct 14, 2017 at 10:25 AM, Don Hinton < > hintonda at gmail.com> > >> >> >> >> wrote: > >> >> >> >>> > >> >> >> >>> Hi Jack: > >> >> >> >>> > >> >> >> >>> Looks like I missed this one in my recent change. > >> >> >> >>> > >> >> >> >>> Please let me know if this solves your problem: > >> >> >> >>> > >> >> >> >>> $ git diff > >> >> >> >>> diff --git a/utils/TableGen/InfoByHwMode.cpp > >> >> >> >>> b/utils/TableGen/InfoByHwMode.cpp > >> >> >> >>> index 7e1e1864356..8d3636432aa 100644 > >> >> >> >>> --- a/utils/TableGen/InfoByHwMode.cpp > >> >> >> >>> +++ b/utils/TableGen/InfoByHwMode.cpp > >> >> >> >>> @@ -98,14 +98,16 @@ void > >> >> >> >>> ValueTypeByHwMode::writeToStream(raw_ostream > >> >> >> >>> &OS) const { > >> >> >> >>> OS << '}'; > >> >> >> >>> } > >> >> >> >>> > >> >> >> >>> +#ifdef LLVM_ENABLE_DUMP > >> >> >> >>> LLVM_DUMP_METHOD > >> >> >> >>> void ValueTypeByHwMode::dump() const { > >> >> >> >>> dbgs() << *this << '\n'; > >> >> >> >>> } > >> >> >> >>> +#endif > >> >> >> >>> > >> >> >> >>> ValueTypeByHwMode llvm::getValueTypeByHwMode(Record *Rec, > >> >> >> >>> const > >> >> >> >>> CodeGenHwModes > >> >> >> >>> &CGH) > >> >> >> >>> { > >> >> >> >>> -#ifndef NDEBUG > >> >> >> >>> +#ifdef LLVM_ENABLE_DUMP > >> >> >> >>> if (!Rec->isSubClassOf("ValueType")) > >> >> >> >>> Rec->dump(); > >> >> >> >>> #endif > >> >> >> >>> > >> >> >> >>> > >> >> >> >>> thanks... > >> >> >> >>> don > >> >> >> >>> > >> >> >> >> > >> >> >> >> The patch seems to be incomplete as it moves the failure to... > >> >> >> >> > >> >> >> >> [ 6%] Linking CXX executable ../../bin/llvm-tblgen > >> >> >> >> cd /sw/src/fink.build/llvm60-6.0.0-1/build/stage1/utils/ > TableGen > >> >> >> >> && > >> >> >> >> /sw/bin/cmake -E cmake_link_script > >> >> >> >> CMakeFiles/llvm-tblgen.dir/link.txt > >> >> >> >> --verbose=1 > >> >> >> >> /sw/src/fink.build/llvm60-6.0.0-1/opt-bin/ccclang++ > -fno-common > >> >> >> >> -fPIC > >> >> >> >> -fvisibility-inlines-hidden -Werror=date-time > >> >> >> >> -Werror=unguarded-availability-new -std=c++11 -Wall -W > >> >> >> >> -Wno-unused-parameter > >> >> >> >> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers > >> >> >> >> -pedantic > >> >> >> >> -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor > >> >> >> >> -Wdelete-non-virtual-dtor -Wstring-conversion -O3 > >> >> >> >> -Wl,-search_paths_first > >> >> >> >> -Wl,-headerpad_max_install_names -L/sw/lib -Wl,-dead_strip > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/AsmMatcherEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterInst.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/Attributes.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CallingConvEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeEmitterGen.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenHwModes.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenInstruction.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenMapTable.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenRegisters.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenSchedule.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CodeGenTarget.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherGen.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcher.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/DisassemblerEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/FastISelEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/FixedLenDecoderEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/GlobalISelEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/InfoByHwMode.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/InstrInfoEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/IntrinsicEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/OptParserEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/RegisterBankEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/RegisterInfoEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/SearchableTableEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/SubtargetEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/SubtargetFeatureInfo.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/TableGen.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/Types.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86DisassemblerTables.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86EVEX2VEXTablesEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86FoldTablesEmitter.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86ModRMFilters.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/X86RecognizableInstr.cpp.o > >> >> >> >> CMakeFiles/obj.llvm-tblgen.dir/CTagsEmitter.cpp.o -o > >> >> >> >> ../../bin/llvm-tblgen > >> >> >> >> -Wl,-rpath, at loader_path/../lib ../../lib/libLLVMSupport.a > >> >> >> >> ../../lib/libLLVMTableGen.a ../../lib/libLLVMSupport.a -lcurses > >> >> >> >> -lz > >> >> >> >> -lm > >> >> >> >> ../../lib/libLLVMDemangle.a > >> >> >> >> Undefined symbols for architecture x86_64: > >> >> >> >> "llvm::SubtargetFeatureInfo::dump() const", referenced from: > >> >> >> >> (anonymous namespace)::AsmMatcherInfo::buildInfo() in > >> >> >> >> AsmMatcherEmitter.cpp.o > >> >> >> >> "(anonymous namespace)::MatchableInfo::dump() const", > >> >> >> >> referenced > >> >> >> >> from: > >> >> >> >> (anonymous > >> >> >> >> namespace)::AsmMatcherEmitter::run(llvm::raw_ostream&) > >> >> >> >> in > >> >> >> >> AsmMatcherEmitter.cpp.o > >> >> >> >> ld: symbol(s) not found for architecture x86_64 > >> >> >> >> clang: error: linker command failed with exit code 1 (use -v to > >> >> >> >> see > >> >> >> >> invocation) > >> >> >> >> make[2]: *** [bin/llvm-tblgen] Error 1 > >> >> >> >> make[1]: *** [utils/TableGen/CMakeFiles/llvm-tblgen.dir/all] > >> >> >> >> Error 2 > >> >> >> >> make: *** [all] Error 2 > >> >> >> >> > >> >> >> >> Jack > >> >> >> >> > >> >> >> >>> > >> >> >> >>> > >> >> >> >>> On Sat, Oct 14, 2017 at 6:06 AM, Jack Howarth via llvm-dev > >> >> >> >>> <llvm-dev at lists.llvm.org> wrote: > >> >> >> >>>> > >> >> >> >>>> Is anyone else seeing this bootstrap failure on current svn > >> >> >> >>>> trunk? > >> >> >> >>>> > >> >> >> >>>> [ 6%] Linking CXX executable ../../bin/llvm-tblgen > >> >> >> >>>> cd > >> >> >> >>>> /sw/src/fink.build/llvm60-6.0.0-1/build/stage1/utils/ > TableGen > >> >> >> >>>> && > >> >> >> >>>> /sw/bin/cmake -E cmake_link_script > >> >> >> >>>> CMakeFiles/llvm-tblgen.dir/link.txt > >> >> >> >>>> --verbose=1 > >> >> >> >>>> /sw/src/fink.build/llvm60-6.0.0-1/opt-bin/ccclang++ > >> >> >> >>>> -fno-common > >> >> >> >>>> -fPIC > >> >> >> >>>> -fvisibility-inlines-hidden -Werror=date-time > >> >> >> >>>> -Werror=unguarded-availability-new -std=c++11 -Wall -W > >> >> >> >>>> -Wno-unused-parameter > >> >> >> >>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers > >> >> >> >>>> -pedantic > >> >> >> >>>> -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor > >> >> >> >>>> -Wdelete-non-virtual-dtor -Wstring-conversion -O3 > >> >> >> >>>> -Wl,-search_paths_first > >> >> >> >>>> -Wl,-headerpad_max_install_names -L/sw/lib -Wl,-dead_strip > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/AsmMatcherEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/AsmWriterInst.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/Attributes.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CallingConvEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeEmitterGen.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenHwModes.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenInstruction.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenMapTable.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenRegisters.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenSchedule.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CodeGenTarget.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherGen.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DAGISelMatcher.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/DisassemblerEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/FastISelEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/FixedLenDecoderEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/GlobalISelEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/InfoByHwMode.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/InstrInfoEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/IntrinsicEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/OptParserEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/RegisterBankEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/RegisterInfoEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/SearchableTableEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/SubtargetEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/SubtargetFeatureInfo.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/TableGen.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/Types.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86DisassemblerTables.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86EVEX2VEXTablesEmitter. > cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86FoldTablesEmitter.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86ModRMFilters.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/X86RecognizableInstr.cpp.o > >> >> >> >>>> CMakeFiles/obj.llvm-tblgen.dir/CTagsEmitter.cpp.o -o > >> >> >> >>>> ../../bin/llvm-tblgen > >> >> >> >>>> -Wl,-rpath, at loader_path/../lib ../../lib/libLLVMSupport.a > >> >> >> >>>> ../../lib/libLLVMTableGen.a ../../lib/libLLVMSupport.a > -lcurses > >> >> >> >>>> -lz > >> >> >> >>>> -lm > >> >> >> >>>> ../../lib/libLLVMDemangle.a > >> >> >> >>>> Undefined symbols for architecture x86_64: > >> >> >> >>>> "llvm::Record::dump() const", referenced from: > >> >> >> >>>> llvm::getValueTypeByHwMode(llvm::Record*, > >> >> >> >>>> llvm::CodeGenHwModes > >> >> >> >>>> const&) in InfoByHwMode.cpp.o > >> >> >> >>>> "llvm::SubtargetFeatureInfo::dump() const", referenced > from: > >> >> >> >>>> (anonymous namespace)::AsmMatcherInfo::buildInfo() in > >> >> >> >>>> AsmMatcherEmitter.cpp.o > >> >> >> >>>> "(anonymous namespace)::MatchableInfo::dump() const", > >> >> >> >>>> referenced > >> >> >> >>>> from: > >> >> >> >>>> (anonymous > >> >> >> >>>> namespace)::AsmMatcherEmitter::run(llvm::raw_ostream&) > >> >> >> >>>> in AsmMatcherEmitter.cpp.o > >> >> >> >>>> ld: symbol(s) not found for architecture x86_64 > >> >> >> >>>> clang: error: linker command failed with exit code 1 (use -v > to > >> >> >> >>>> see > >> >> >> >>>> invocation) > >> >> >> >>>> make[2]: *** [bin/llvm-tblgen] Error 1 > >> >> >> >>>> make[1]: *** [utils/TableGen/CMakeFiles/llvm-tblgen.dir/all] > >> >> >> >>>> Error > >> >> >> >>>> 2 > >> >> >> >>>> make: *** [all] Error 2 > >> >> >> >>>> > >> >> >> >>>> This is on x86_64-apple-darwin16 with Xcode 9.0. > >> >> >> >>>> Jack > >> >> >> >>>> > >> >> >> >>>> _______________________________________________ > >> >> >> >>>> LLVM Developers mailing list > >> >> >> >>>> llvm-dev at lists.llvm.org > >> >> >> >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >> >> >> >>>> > >> >> >> >>> > >> >> >> >> > >> >> >> > > >> >> >> > > >> >> >> > _______________________________________________ > >> >> >> > LLVM Developers mailing list > >> >> >> > llvm-dev at lists.llvm.org > >> >> >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >> >> >> > > >> >> > > >> >> > > >> > > >> > > > > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171015/b6385782/attachment-0001.html>
On Sun, Oct 15, 2017 at 10:16 AM, Don Hinton <hintonda at gmail.com> wrote:> On Sun, Oct 15, 2017 at 10:03 AM, Aaron Ballman <aaron at aaronballman.com> > wrote: > >> On Sun, Oct 15, 2017 at 12:40 PM, Don Hinton <hintonda at gmail.com> wrote: >> > On Sun, Oct 15, 2017 at 8:34 AM, Aaron Ballman <aaron at aaronballman.com> >> > wrote: >> >> >> >> FWIW, most of the ones I was fixing up were guarded by NDEBUG instead >> >> of LLVM_ENABLE_DUMP. Switching to LLVM_ENABLE_DUMP fixed the link >> >> errors for me -- the only one I struggled with was >> >> AsmMatcherEmitter::run(). But it sounds like you're saying switching >> >> the configuration type in MSVC from Debug to Release would have >> >> possibly caused issues as well? >> > >> > >> > This is what I believe is going on -- hope this isn't too convoluted... >> > >> > I don't know how you invoked cmake, but the generators for VS and Xcode >> > support multiple configurations, allowing you to delay choosing the >> build >> > type and implicitly setting CMAKE_BUILD_TYPE=None. >> > >> > If CMAKE_BUILD_TYPE isn't passed or doesn't include "debug", >> CMakeLists.txt >> > assumes it's a release build, turns off both asserts and dump methods, >> and >> > generates llvm-config.h without defining LLVM_ENABLE_DUMP. Since my >> change >> > removed the NDEBUG test for most dump definitions, they were #ifdef'd >> away. >> > While it's possible to override this behavior by passing >> > -DLLVM_ENABLE_ASSERTIONS or -DLLMV_FORCE_ENABLE_DUMP, you don't seem to >> have >> > done that. >> > >> > So, when a Debug build was later selected, llvm-config.h had already >> been >> > written without defining LLVM_ENABLE_DUMP, and since table-gen didn't >> have >> > the fix, it assumed the dump methods were available when it didn't see >> > -DNEBUG on the command line -- hence the linking errors. >> > >> > So, setting LLVM_ENABLE_DUMP at configuration time won't work in this >> case, >> > and I'm leaning toward removing it completely. >> >> Ah, okay, I see what the issue is. Thank you for the explanation! >> >> > Jack's issue involved removing -DNDEBUG in a script for Release builds. >> > While it caused the same linking issues you saw, it really didn't have >> > anything to do with the configuration issue you uncovered. Had I seen >> any >> > other errors, I would have rolled it back yesterday, but as you've >> said, the >> >bots were clean wrt this change. >> >> I was surprised that this didn't make any MSVC bots go red. The >> default behavior I see is that I run cmake and I get a Debug build >> without fiddling with anything in MSVC, unless I specify cmake options >> to do a release build. >> > > Since it creates multiple ones, it must be selecting the Debug > configuration by default -- it has to pick something. But that has nothing > to do with the cmake variables we set in CMakeList.txt. >Looks like they specify everything explicitly: cmake -G Ninja ../llvm -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_ASSERTIONS=True -DLLVM_LIT_ARGS='-v' -DCMAKE_INSTALL_PREFIX=../stage1.install -DLLVM_ENABLE_ASSERTIONS=ON -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171015/923c6379/attachment.html>