Index: llvm/lib/Transforms/IPO/PassManagerBuilder.cpp =================================================================== --- llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -405,6 +405,9 @@ else if (!GlobalExtensions->empty() || !Extensions.empty()) MPM.add(createBarrierNoopPass()); + // Clang may generate unreachable call-graphs, let's prune it. + MPM.add(createGlobalDCEPass()); + if (PrepareForThinLTO) // Rename anon globals to be able to export them in the summary. MPM.add(createNameAnonGlobalPass()); Index: llvm/test/Other/GlobalDCE_at_O0.ll =================================================================== --- /dev/null +++ llvm/test/Other/GlobalDCE_at_O0.ll @@ -0,0 +1,7 @@ +; RUN: opt < %s -O0 -S | FileCheck %s + +; CHECK-NOT: @test1 + +define internal i32 @test1() { + ret i32 42 +}