[PGO] Fix ThinLTO crash

Differential Revsion: http://reviews.llvm.org/D36640


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311023 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Xinliang David Li
2017-08-16 17:18:01 +00:00
parent cb139f4145
commit 2f4468d845
3 changed files with 26 additions and 0 deletions
+6
View File
@@ -3626,6 +3626,12 @@ void IndexBitcodeWriter::writeCombinedGlobalValueSummary() {
CallValueId = getValueId(GUID);
if (!CallValueId)
continue;
// The mapping from OriginalId to GUID may return a GUID
// that corresponds to a static varible. Filter it out here.
auto *GVSum = Index.getGlobalValueSummary(GUID, false);
if (GVSum &&
GVSum->getSummaryKind() == GlobalValueSummary::GlobalVarKind)
continue;
}
NameVals.push_back(*CallValueId);
if (HasProfileData)
@@ -0,0 +1,7 @@
@link = internal global i32 0, align 4
; Function Attrs: norecurse nounwind readnone uwtable
define nonnull i32* @get_link() local_unnamed_addr {
ret i32* @link
}
@@ -0,0 +1,13 @@
; This test makes sure a static var is not selected as a callee target
; (which will crash compilation).
; RUN: opt -module-summary %s -o %t.bc
; RUN: opt -module-summary %p/Inputs/funcimport_var2.ll -o %t2.bc
; RUN: llvm-lto -thinlto -thinlto-action=thinlink -o %t3 %t.bc %t2.bc
; RUN: llvm-lto -thinlto -thinlto-action=import -thinlto-index=%t3 %t.bc %t2.bc
define i32 @_Z4LinkPKcS0_(i8*, i8*) local_unnamed_addr {
%3 = tail call i32 @link(i8* %0, i8* %1) #2
ret i32 %3
}
; Function Attrs: nounwind
declare i32 @link(i8*, i8*) local_unnamed_addr