summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorDehao Chen <dehao@google.com>2017-09-13 21:22:55 +0000
committerDehao Chen <dehao@google.com>2017-09-13 21:22:55 +0000
commit15c86ef970dc17440310e356d94d2358f8a0a99d (patch)
treedf5ff527600e2e8b097db47c7883d1e8412f5b49 /llvm/test/Transforms
parent618c555bbefd2c73a874590deeb952df08a7af8e (diff)
downloadbcm5719-llvm-15c86ef970dc17440310e356d94d2358f8a0a99d.tar.gz
bcm5719-llvm-15c86ef970dc17440310e356d94d2358f8a0a99d.zip
Invoke GetInlineCost for legality check before inline functions in SampleProfileLoader.
Summary: SampleProfileLoader inlines hot functions if it is inlined in the profiled binary. However, the inline needs to be guarded by legality check, otherwise it could lead to correctness issues. Reviewers: eraman, davidxl Reviewed By: eraman Subscribers: sanjoy, llvm-commits Differential Revision: https://reviews.llvm.org/D37779 llvm-svn: 313195
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/SampleProfile/Inputs/einline.prof1
-rw-r--r--llvm/test/Transforms/SampleProfile/early-inline.ll12
2 files changed, 13 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SampleProfile/Inputs/einline.prof b/llvm/test/Transforms/SampleProfile/Inputs/einline.prof
index df0275b5005..624990b47ef 100644
--- a/llvm/test/Transforms/SampleProfile/Inputs/einline.prof
+++ b/llvm/test/Transforms/SampleProfile/Inputs/einline.prof
@@ -1,5 +1,6 @@
_Z3foov:200:100
1: _Z3barv:0
+ 2: no_inline:100
3: _Z3barv:100
recursive:200:100
1: recursive:100
diff --git a/llvm/test/Transforms/SampleProfile/early-inline.ll b/llvm/test/Transforms/SampleProfile/early-inline.ll
index a240635b2b8..042713adc75 100644
--- a/llvm/test/Transforms/SampleProfile/early-inline.ll
+++ b/llvm/test/Transforms/SampleProfile/early-inline.ll
@@ -12,6 +12,8 @@ define void @_Z3foov() #0 personality i8* bitcast (i32 (...)* @__gxx_personality
%1 = alloca i8*
%2 = alloca i32
%3 = alloca i32, align 4
+; CHECK: call void @no_inline
+ call void @no_inline(), !dbg !16
; CHECK-NOT: call
call void @_ZL3barv(), !dbg !9
; CHECK-NOT: invoke
@@ -45,8 +47,16 @@ define void @recursive() !dbg !13 {
ret void
}
+; The callee has mismatch attributes to the caller, it should not be inlined
+define void @no_inline() #1 !dbg !17 {
+ ret void
+}
+
declare i32 @__gxx_personality_v0(...)
+attributes #0 = {"target-features"="+sse4.1"}
+attributes #1 = {"target-features"="+sse4.2"}
+
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4}
@@ -62,3 +72,5 @@ declare i32 @__gxx_personality_v0(...)
!13 = distinct !DISubprogram(linkageName: "recursive", scope: !1, file: !1, line: 20, scopeLine: 20, unit: !0)
!14 = !DILocation(line: 21, column: 3, scope: !13)
!15 = !DILocation(line: 22, column: 3, scope: !13)
+!16 = !DILocation(line: 7, column: 3, scope: !6)
+!17 = distinct !DISubprogram(linkageName: "no_inline", scope: !1, file: !1, line: 20, scopeLine: 20, unit: !0)
OpenPOWER on IntegriCloud