To use LTO, you can pass emcc the --llvm-lto flag (with value 1 above, see emcc --help).
Looks like that CMake flag turns on -flto=thin which I don't know much about. It may require a special build of LLVM, one that includes the pass it is complaining about. On Fri, Aug 4, 2017 at 2:03 AM, Dirk Vanden Boer <[email protected]> wrote: > If I enable lto using cmake: -DCMAKE_INTERPROCEDURAL_OPTIMIZATION_ > RELEASE=ON > > Emscripten fails with the following error, is lto supported? > > [1/17] Building CXX object util/CMakeFiles/gdxutil.dir/colormap.cpp.o > FAILED: util/CMakeFiles/gdxutil.dir/colormap.cpp.o > /Users/dirk/Projects/emsdk/emscripten/incoming/em++ > -DSPDLOG_FMT_EXTERNAL -I../../util -I../../util/include -I. -isystem > ../local-toolchain-wasm/include -isystem > ../local-toolchain-wasm/include/eigen3 > -Wall -Wextra -Wpedantic -Wfatal-errors -Wno-unknown-pragmas > -fdiagnostics-color -stdlib=libc++ -DNDEBUG -O2 -flto=thin -fPIC > -fvisibility=hidden -std=c++1z -MD -MT > util/CMakeFiles/gdxutil.dir/colormap.cpp.o > -MF util/CMakeFiles/gdxutil.dir/colormap.cpp.o.d -o > util/CMakeFiles/gdxutil.dir/colormap.cpp.o -c ../../util/colormap.cpp > Pass 'Module Summary Analysis' is not initialized. > Verify if there is a pass dependency cycle. > Required Passes: > Error: Required pass not found! Possible causes: > - Pass misconfiguration (e.g.: missing macros) > - Corruption of the global PassRegistry > Assertion failed: (PI && "Expected required passes to be initialized"), > function schedulePass, file /Users/dirk/Projects/emsdk/ > clang/fastcomp/src/lib/IR/LegacyPassManager.cpp, line 647. > 0 clang-4.0 0x0000000104822ae8 > llvm::sys::PrintStackTrace(llvm::raw_ostream&) > + 40 > 1 clang-4.0 0x0000000104821ca6 > llvm::sys::RunSignalHandlers() + 86 > 2 clang-4.0 0x0000000104823139 SignalHandler(int) + 361 > 3 libsystem_platform.dylib 0x00007fffcdfc2b3a _sigtramp + 26 > 4 libsystem_malloc.dylib 0x00007fffcdf3691f tiny_malloc_from_free_list > + 431 > 5 libsystem_c.dylib 0x00007fffcde47420 abort + 129 > 6 libsystem_c.dylib 0x00007fffcde0e893 basename_r + 0 > 7 clang-4.0 0x0000000104335e02 > llvm::PMTopLevelManager::schedulePass(llvm::Pass*) > + 2082 > 8 clang-4.0 0x0000000104335718 > llvm::PMTopLevelManager::schedulePass(llvm::Pass*) > + 312 > 9 clang-4.0 0x0000000104a0a5bf > clang::EmitBackendOutput(clang::DiagnosticsEngine&, > clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, > clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout > const&, llvm::Module*, clang::BackendAction, > std::__1::unique_ptr<llvm::raw_pwrite_stream, > std::__1::default_delete<llvm::raw_pwrite_stream> >) + 11503 > 10 clang-4.0 0x0000000104bebe70 clang::BackendConsumer:: > HandleTranslationUnit(clang::ASTContext&) + 1056 > 11 clang-4.0 0x00000001054d53c2 > clang::ParseAST(clang::Sema&, bool, bool) + 466 > 12 clang-4.0 0x0000000104e2365c > clang::FrontendAction::Execute() > + 76 > 13 clang-4.0 0x0000000104de4bb1 clang::CompilerInstance:: > ExecuteAction(clang::FrontendAction&) + 1201 > 14 clang-4.0 0x0000000104e7a481 clang:: > ExecuteCompilerInvocation(clang::CompilerInstance*) + 4865 > 15 clang-4.0 0x0000000103bb93b3 > cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 1235 > 16 clang-4.0 0x0000000103bb7a49 main + 10297 > 17 libdyld.dylib 0x00007fffcddb3235 start + 1 > 18 libdyld.dylib 0x0000000000000062 start + 841272878 > Stack dump: > 0. Program arguments: /Users/dirk/Projects/emsdk/ > clang/fastcomp/build_incoming_64/bin/clang-4.0 -cc1 -triple > asmjs-unknown-emscripten -emit-llvm-bc -flto=thin -disable-free > -main-file-name colormap.cpp -mrelocation-model pic -pic-level 2 > -mthread-model posix -mdisable-fp-elim -no-integrated-as > -mconstructor-aliases -target-linker-version 278.4 -dwarf-column-info > -debugger-tuning=gdb -coverage-notes-file /Users/dirk/Projects/gdx-core/ > build/gdx-wasm/util/CMakeFiles/gdxutil.dir/colormap.cpp.gcno > -nostdsysteminc -nobuiltininc -resource-dir /Users/dirk/Projects/emsdk/ > clang/fastcomp/build_incoming_64/bin/../lib/clang/4.0.0 -dependency-file > util/CMakeFiles/gdxutil.dir/colormap.cpp.o.d -sys-header-deps -MT > util/CMakeFiles/gdxutil.dir/colormap.cpp.o -isystem > ../local-toolchain-wasm/include -isystem > ../local-toolchain-wasm/include/eigen3 > -D __EMSCRIPTEN_major__=1 -D __EMSCRIPTEN_minor__=37 -D > __EMSCRIPTEN_tiny__=16 -D _LIBCPP_ABI_VERSION=2 -D SPDLOG_FMT_EXTERNAL -I > ../../util -I ../../util/include -I . -D NDEBUG -stdlib=libc++ -O2 > -Werror=implicit-function-declaration -Wall -Wextra -Wpedantic > -Wfatal-errors -Wno-unknown-pragmas -std=c++1z -fdeprecated-macro > -fno-dwarf-directory-asm -fdebug-compilation-dir > /Users/dirk/Projects/gdx-core/build/gdx-wasm -ferror-limit 19 > -fmessage-length 0 -fvisibility hidden -fobjc-runtime=gnustep > -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics > -vectorize-loops -vectorize-slp -nobuiltininc -nostdsysteminc > -isystem/Users/dirk/Projects/emsdk/emscripten/incoming/system/include/libcxx > -isystem/Users/dirk/Projects/emsdk/emscripten/incoming/system/lib/libcxxabi/include > -isystem/Users/dirk/Projects/emsdk/emscripten/incoming/system/include/compat > -isystem/Users/dirk/Projects/emsdk/emscripten/incoming/system/include > -isystem/Users/dirk/Projects/emsdk/emscripten/incoming/system/include/SSE > -isystem/Users/dirk/Projects/emsdk/emscripten/incoming/system/include/libc > -isystem/Users/dirk/Projects/emsdk/emscripten/incoming/ > system/lib/libc/musl/arch/emscripten -isystem/Users/dirk/Projects/ > emsdk/emscripten/incoming/system/local/include > -isystem/Users/dirk/Projects/emsdk/emscripten/incoming/system/include/SDL > -disable-llvm-optzns -o util/CMakeFiles/gdxutil.dir/colormap.cpp.o -x c++ > ../../util/colormap.cpp > 1. <eof> parser at end of file > clang-4.0: fatal error: unable to execute command: Abort trap: 6 > clang version 4.0.0 (https://github.com/kripken/ > emscripten-fastcomp-clang.git feff46c2a99f012dfdd291f02636fd386d132969) ( > https://github.com/kripken/emscripten-fastcomp.git > d11ecd94546630d1e087de93ac95eccb2630b5e3) (emscripten 1.37.16 : 1.37.16) > Target: asmjs-unknown-emscripten > Thread model: posix > InstalledDir: /Users/dirk/Projects/emsdk/clang/fastcomp/build_incoming_ > 64/bin > ERROR:root:compiler frontend failed to generate LLVM bitcode, halting > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
