erichkeane wrote:

> I've managed to reproduce the stage 2 build failure locally (on macOS) but 
> not yet minimise it. Here are the steps:
> 
>     1. Build `clang`
> 
>     2. Configure reproducer with modules and Mac OS X 15.2 SDK (as in builder)
> 
> 
> ```shell
> cmake -G Ninja -S llvm -B build-repro \
>     -DCMAKE_C_COMPILER=$PWD/build/bin/clang \
>     -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \
>     
> -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.2.sdk \
>     -DCMAKE_BUILD_TYPE=RelWithDebInfo \
>     -DLLVM_TARGETS_TO_BUILD=AArch64 \
>     -DLLVM_ENABLE_MODULES=ON
> ```
> 
>     3. Build `llvm-min-tblgen`:
> 
> 
> ```shell
> ninja -C build-repro llvm-min-tblgen
> ```
> 
> This fails with:
> 
> ```
> FAILED: [code=1] bin/llvm-min-tblgen
> : && /Users/nathan/src/external/llvm-project/build/bin/clang++ -fPIC 
> -fvisibility-inlines-hidden -Werror=date-time 
> -Werror=unguarded-availability-new -fmodules 
> -fmodules-cache-path=/Users/nathan/src/external/llvm-project/build-repro/module.cache
>  -fcxx-modules -Xclang -fmodules-local-submodule-visibility -gmodules -Wall 
> -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual 
> -Wmissing-field-initializers -pedantic -Wno-long-long 
> -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default 
> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor 
> -Wsuggest-override -Wstring-conversion -Wno-pass-failed 
> -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -O2 -g 
> -DNDEBUG -arch arm64 -isysroot 
> /Library/Developer/CommandLineTools/SDKs/MacOSX15.2.sdk 
> -Wl,-search_paths_first -Wl,-headerpad_max_install_names  -Wl,-dead_strip 
> -Wl,-no_warn_duplicate_libraries 
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/ARMTargetDefEmitter.cpp.o
>  utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/Attributes.cpp.o 
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/CodeGenIntrinsics.cpp.o
>  
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/DirectiveEmitter.cpp.o
>  
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/IntrinsicEmitter.cpp.o
>  
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/RISCVTargetDefEmitter.cpp.o
>  
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/RuntimeLibcallsEmitter.cpp.o
>  
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/RuntimeLibcalls.cpp.o
>  
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/SDNodeProperties.cpp.o
>  utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/TableGen.cpp.o 
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/TargetFeaturesEmitter.cpp.o
>  
> utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/TargetLibraryInfoEmitter.cpp.o
>  utils/TableGen/Basic/CMakeFiles/obj.LLVMTableGenBasic.dir/VTEmitter.cpp.o 
> utils/TableGen/CMakeFiles/llvm-min-tblgen.dir/llvm-min-tblgen.cpp.o -o 
> bin/llvm-min-tblgen  -Wl,-rpath,@loader_path/../lib  lib/libLLVMSupport.a  
> lib/libLLVMTableGen.a  -lm  
> /Library/Developer/CommandLineTools/SDKs/MacOSX15.2.sdk/usr/lib/libz.tbd  
> lib/libLLVMDemangle.a && :
> Undefined symbols for architecture arm64:
>   
> "std::__1::enable_if<is_move_constructible<std::__1::__shared_weak_count*>::value
>  && is_move_assignable<std::__1::__shared_weak_count*>::value, void>::type 
> std::__1::swap[abi:nn180100]<std::__1::__shared_weak_count*>(std::__1::__shared_weak_count*&,
>  std::__1::__shared_weak_count*&)", referenced from:
>       (anonymous namespace)::RealFileSystem::dir_begin(llvm::Twine const&, 
> std::__1::error_code&) in libLLVMSupport.a[143](VirtualFileSystem.cpp.o)
>       (anonymous namespace)::RealFileSystem::dir_begin(llvm::Twine const&, 
> std::__1::error_code&) in libLLVMSupport.a[143](VirtualFileSystem.cpp.o)
>       llvm::sys::fs::directory_iterator::directory_iterator(llvm::Twine 
> const&, std::__1::error_code&, bool) in libLLVMSupport.a[168](Path.cpp.o)
> ld: symbol(s) not found for architecture arm64
> clang++: error: linker command failed with exit code 1 (use -v to see 
> invocation)
> ninja: build stopped: subcommand failed.
> ```
> 
> after this commit, but succeeds otherwise.

Hmm.. interesting.

Unfortunately THAT invocation is less interesting of course, since that is the 
link step.  I DO wonder what is different from what @mizvekov has been trying, 
because that seems like it should be pretty clear.

MAYBE the 2nd stage needs to be an ARM machine?  It would stink for it to have 
to be a Mac.

The fact that you are using MODULES is actually quite interesting, @mizvekov , 
perhaps THAT is the key? 



https://github.com/llvm/llvm-project/pull/208285
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to