summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/CodeExtractor
diff options
context:
space:
mode:
authorXinliang David Li <davidxl@google.com>2017-05-02 02:44:14 +0000
committerXinliang David Li <davidxl@google.com>2017-05-02 02:44:14 +0000
commit6133846be1026e6a03200851184cac9d01fd3126 (patch)
tree75dce685a5686c55da68bc5a1f02841ca1c75506 /llvm/test/Transforms/CodeExtractor
parent28355efdada8c8a4f9829d388d413c4745168874 (diff)
downloadbcm5719-llvm-6133846be1026e6a03200851184cac9d01fd3126.tar.gz
bcm5719-llvm-6133846be1026e6a03200851184cac9d01fd3126.zip
[PartialInlining] Hook up inline cost analysis
Differential Revision: http://reviews.llvm.org/D32666 llvm-svn: 301894
Diffstat (limited to 'llvm/test/Transforms/CodeExtractor')
-rw-r--r--llvm/test/Transforms/CodeExtractor/PartialInlineOptRemark.ll40
-rw-r--r--llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll6
2 files changed, 43 insertions, 3 deletions
diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineOptRemark.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineOptRemark.ll
index 3ba03843046..c8808182f71 100644
--- a/llvm/test/Transforms/CodeExtractor/PartialInlineOptRemark.ll
+++ b/llvm/test/Transforms/CodeExtractor/PartialInlineOptRemark.ll
@@ -7,6 +7,8 @@
; RUN: opt -S -passes=partial-inliner -pass-remarks=partial-inlining --disable-partial-inlining < %s 2>&1 | FileCheck --check-prefix=LIMIT %s
; RUN: opt -S -partial-inliner -pass-remarks=partial-inlining -max-partial-inlining=0 < %s 2>&1 | FileCheck --check-prefix=LIMIT %s
; RUN: opt -S -passes=partial-inliner -pass-remarks=partial-inlining -max-partial-inlining=0 < %s 2>&1 | FileCheck --check-prefix=LIMIT %s
+; RUN: opt -S -partial-inliner -pass-remarks=partial-inlining -inline-threshold=0 < %s 2>&1 | FileCheck --check-prefix=LIMIT %s
+; RUN: opt -S -passes=partial-inliner -pass-remarks=partial-inlining -inline-threshold=0 < %s 2>&1 | FileCheck --check-prefix=LIMIT %s
define i32 @bar(i32 %arg) local_unnamed_addr #0 !dbg !5 {
bb:
@@ -30,6 +32,38 @@ bb2: ; preds = %bb1, %bb
ret i32 %tmp3, !dbg !19
}
+define i32 @bar_noinline(i32 %arg) local_unnamed_addr #1 !dbg !5 {
+bb:
+ %tmp = icmp slt i32 %arg, 0, !dbg !7
+ br i1 %tmp, label %bb1, label %bb2, !dbg !8
+
+bb1: ; preds = %bb
+ tail call void (...) @foo() #0, !dbg !9
+ tail call void (...) @foo() #0, !dbg !10
+ tail call void (...) @foo() #0, !dbg !11
+ br label %bb2, !dbg !18
+
+bb2: ; preds = %bb1, %bb
+ %tmp3 = phi i32 [ 0, %bb1 ], [ 1, %bb ]
+ ret i32 %tmp3, !dbg !19
+}
+
+define i32 @bar_alwaysinline(i32 %arg) local_unnamed_addr #2 !dbg !5 {
+bb:
+ %tmp = icmp slt i32 %arg, 0, !dbg !7
+ br i1 %tmp, label %bb1, label %bb2, !dbg !8
+
+bb1: ; preds = %bb
+ tail call void (...) @foo() #0, !dbg !9
+ tail call void (...) @foo() #0, !dbg !10
+ tail call void (...) @foo() #0, !dbg !11
+ br label %bb2, !dbg !18
+
+bb2: ; preds = %bb1, %bb
+ %tmp3 = phi i32 [ 0, %bb1 ], [ 1, %bb ]
+ ret i32 %tmp3, !dbg !19
+}
+
; Function Attrs: nounwind
declare void @foo(...) local_unnamed_addr #0
@@ -37,12 +71,18 @@ declare void @foo(...) local_unnamed_addr #0
define i32 @dummy_caller(i32 %arg) local_unnamed_addr #0 !dbg !20 {
bb:
; CHECK:remark{{.*}}bar partially inlined into dummy_caller
+; CHECK-NOT:remark{{.*}}bar_noinline partially inlined into dummy_caller
+; CHECK-NOT:remark{{.*}}bar_alwaysinline partially inlined into dummy_caller
; LIMIT-NOT:remark{{.*}}bar partially inlined into dummy_caller
%tmp = tail call i32 @bar(i32 %arg), !dbg !21
+ %tmp2 = tail call i32 @bar_noinline(i32 %arg), !dbg !21
+ %tmp3 = tail call i32 @bar_alwaysinline(i32 %arg), !dbg !21
ret i32 %tmp, !dbg !22
}
attributes #0 = { nounwind }
+attributes #1 = { noinline nounwind }
+attributes #2 = { alwaysinline nounwind }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3}
diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll
index a61287c5d8a..5408b4faaf7 100644
--- a/llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll
+++ b/llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll
@@ -3,7 +3,7 @@
; RUN: opt < %s -partial-inliner -max-num-inline-blocks=2 -S | FileCheck --check-prefix=LIMIT %s
; RUN: opt < %s -passes=partial-inliner -max-num-inline-blocks=2 -S | FileCheck --check-prefix=LIMIT %s
-; Function Attrs: noinline nounwind uwtable
+; Function Attrs: nounwind uwtable
define i32 @bar(i32 %arg) local_unnamed_addr #0 {
bb:
%tmp = icmp slt i32 %arg, 0
@@ -35,7 +35,7 @@ declare i32 @channels(...) local_unnamed_addr
declare void @foo(...) local_unnamed_addr
-; Function Attrs: noinline nounwind uwtable
+; Function Attrs: nounwind uwtable
define i32 @dummy_caller(i32 %arg) local_unnamed_addr #0 {
bb:
; CHECK-LABEL: @dummy_caller
@@ -89,7 +89,7 @@ define i32 @dummy_caller2(i32 %arg) local_unnamed_addr #0 {
ret i32 %tmp
}
-attributes #0 = { noinline nounwind uwtable }
+attributes #0 = { nounwind uwtable }
attributes #1 = { nounwind }
!llvm.ident = !{!0}
OpenPOWER on IntegriCloud