Only sets profile summary when it was not preset.
authorDehao Chen <dehao@google.com>
Wed, 14 Dec 2016 22:06:49 +0000 (22:06 +0000)
committerDehao Chen <dehao@google.com>
Wed, 14 Dec 2016 22:06:49 +0000 (22:06 +0000)
Summary: SampleProfileLoader pass may be invoked twice by LTO. The 2nd pass should not append more summary info as it is already preset by the 1st pass.

Reviewers: eraman, davidxl

Subscribers: mehdi_amini, llvm-commits

Differential Revision: https://reviews.llvm.org/D27733

llvm-svn: 289725

llvm/lib/Transforms/IPO/SampleProfile.cpp
llvm/test/Transforms/SampleProfile/summary.ll

index 30eda6b..6a43f8d 100644 (file)
@@ -1315,7 +1315,8 @@ bool SampleProfileLoader::runOnModule(Module &M) {
       clearFunctionData();
       retval |= runOnFunction(F);
     }
-  M.setProfileSummary(Reader->getSummary().getMD(M.getContext()));
+  if (M.getProfileSummary() == nullptr)
+    M.setProfileSummary(Reader->getSummary().getMD(M.getContext()));
   return retval;
 }
 
index 49b1d2c..0a3d1a2 100644 (file)
@@ -1,5 +1,6 @@
 ; Test that we annotate entire program's summary to IR.
 ; RUN: opt < %s -sample-profile -sample-profile-file=%S/Inputs/summary.prof -S | FileCheck %s
+; RUN: opt < %s -sample-profile -sample-profile-file=%S/Inputs/summary.prof -S | opt -sample-profile -sample-profile-file=%S/Inputs/summary.prof -S | FileCheck %s
 
 define i32 @bar() #0 !dbg !1 {
 entry: