From 683e0e5156ede45f9a9546b8d2a106dea5614035 Mon Sep 17 00:00:00 2001 From: James Molloy Date: Wed, 18 Nov 2015 11:24:42 +0000 Subject: [PATCH] [LTO] Add an early run of functionattrs Because we internalize early, we can potentially mark a bunch of functions as norecurse. Do this before globalopt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253451 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/IPO/PassManagerBuilder.cpp | 1 + test/LTO/X86/diagnostic-handler-remarks.ll | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Transforms/IPO/PassManagerBuilder.cpp b/lib/Transforms/IPO/PassManagerBuilder.cpp index 6e0d23961ca..ec6f21e8c64 100644 --- a/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -482,6 +482,7 @@ void PassManagerBuilder::addLTOOptimizationPasses(legacy::PassManagerBase &PM) { PM.add(createIPSCCPPass()); // Now that we internalized some globals, see if we can hack on them! + PM.add(createFunctionAttrsPass()); // Add norecurse if possible. PM.add(createGlobalOptimizerPass()); // Linking modules together can lead to duplicated global constants, only diff --git a/test/LTO/X86/diagnostic-handler-remarks.ll b/test/LTO/X86/diagnostic-handler-remarks.ll index 690a9014a7e..a368a677b2f 100644 --- a/test/LTO/X86/diagnostic-handler-remarks.ll +++ b/test/LTO/X86/diagnostic-handler-remarks.ll @@ -32,8 +32,11 @@ target triple = "x86_64-apple-darwin" +declare i32 @bar() + define i32 @foo() { - ret i32 7 + %a = call i32 @bar() + ret i32 %a } define i32 @main() { -- 2.34.1