mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
[PGO] Fix ThinLTO crash
Differential Revsion: http://reviews.llvm.org/D36640 llvm-svn: 311023
This commit is contained in:
parent
0754d8c15a
commit
a34666379c
@ -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)
|
||||
|
7
test/Transforms/FunctionImport/Inputs/funcimport_var2.ll
Normal file
7
test/Transforms/FunctionImport/Inputs/funcimport_var2.ll
Normal file
@ -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
|
||||
}
|
||||
|
13
test/Transforms/FunctionImport/funcimport_var.ll
Normal file
13
test/Transforms/FunctionImport/funcimport_var.ll
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user