mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
Summary: The fix for dead stripping analysis in the case of SamplePGO indirect calls to local functions (r313151) introduced the possibility of an infinite loop. Make sure we check for the value being already live after we update it for SamplePGO indirect call handling. Reviewers: danielcdh Subscribers: mehdi_amini, inglorion, llvm-commits, eraman Differential Revision: https://reviews.llvm.org/D38086 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313766 91177308-0d34-0410-b5e6-96231b3b80d8
32 lines
1.0 KiB
LLVM
32 lines
1.0 KiB
LLVM
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
@fptr = external local_unnamed_addr global void ()*, align 8
|
|
|
|
; Function Attrs: norecurse nounwind uwtable
|
|
define void @_Z6updatei(i32 %i) local_unnamed_addr #0 {
|
|
entry:
|
|
store void ()* @_ZL3foov, void ()** @fptr, align 8
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind readnone uwtable
|
|
define internal void @_ZL3foov() !prof !34 {
|
|
entry:
|
|
%0 = load void ()*, void ()** @fptr, align 8
|
|
tail call void %0(), !prof !40
|
|
ret void
|
|
}
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
!llvm.module.flags = !{!3}
|
|
!llvm.ident = !{!31}
|
|
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 5.0.0 (trunk 297016)", isOptimized: true, runtimeVersion: 0, emissionKind: NoDebug, enums: !2)
|
|
!1 = !DIFile(filename: "b.cc", directory: "/ssd/llvm/abc/small")
|
|
!2 = !{}
|
|
!3 = !{i32 2, !"Debug Info Version", i32 3}
|
|
!31 = !{!"clang version 5.0.0 (trunk 297016)"}
|
|
!34 = !{!"function_entry_count", i64 1}
|
|
!40 = !{!"VP", i32 0, i64 3000, i64 -8789629626369651636, i64 3000}
|