diff options
| author | Mandeep Singh Grang <mgrang@codeaurora.org> | 2018-11-07 18:26:24 +0000 |
|---|---|---|
| committer | Mandeep Singh Grang <mgrang@codeaurora.org> | 2018-11-07 18:26:24 +0000 |
| commit | d47d188b6ff1800c126f97f9759267219ceaf9fd (patch) | |
| tree | 8055da6313019000bbf639a7a1e3b8439c3e930a /llvm/test/Transforms | |
| parent | 5bcdea51186658e0eb1c7f73273bf256c2626512 (diff) | |
| download | bcm5719-llvm-d47d188b6ff1800c126f97f9759267219ceaf9fd.tar.gz bcm5719-llvm-d47d188b6ff1800c126f97f9759267219ceaf9fd.zip | |
[LoopSink] Do not sink instructions into non-cold blocks
Summary: This fixes PR39570.
Reviewers: danielcdh, rnk, bkramer
Reviewed By: rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D54181
llvm-svn: 346337
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/LICM/loopsink-pr39570.ll | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LICM/loopsink-pr39570.ll b/llvm/test/Transforms/LICM/loopsink-pr39570.ll new file mode 100644 index 00000000000..65d3e1f5139 --- /dev/null +++ b/llvm/test/Transforms/LICM/loopsink-pr39570.ll @@ -0,0 +1,112 @@ +; RUN: opt -S -loop-sink < %s | FileCheck %s + +; CHECK: pr39570 +; Make sure not to assert. + +%0 = type { i32, %1*, %2, %6*, %33* } +%1 = type { i32 (...)** } +%2 = type { %3* } +%3 = type { %4, i32, %5* } +%4 = type { i32 (...)**, i32 } +%5 = type opaque +%6 = type { %7, %1*, %31*, i8, %2, %32* } +%7 = type <{ %8, %9*, %10, i32, %33*, %33*, %33*, %27, %28, i16 }> +%8 = type { i32 (...)** } +%9 = type opaque +%10 = type { %11, %16, %18, %19 } +%11 = type { %12*, i32, i32, %13* } +%12 = type { i32 (...)** } +%13 = type { %14*, %14* } +%14 = type { %15, i32 } +%15 = type { %12*, i32, i32, i16* } +%16 = type { %12*, i32, i32, %17* } +%17 = type { %13, %14* } +%18 = type { %12*, i32, i32, %14** } +%19 = type { %20, %21, %12*, float, i32, i32, %22, %22, %24, i32, i32 } +%20 = type { i8 } +%21 = type { i8 } +%22 = type { %12*, %23*, %23* } +%23 = type opaque +%24 = type { %12*, i32, i32, %25* } +%25 = type { %12*, i32, i32, %26* } +%26 = type opaque +%27 = type { %33* } +%28 = type { %29, i32, i32, %14* } +%29 = type { %30 } +%30 = type { i32 (...)** } +%31 = type opaque +%32 = type { i32 (...)** } +%33 = type <{ %8, %9*, %10, i32, %33*, %33*, %33*, %27, %28, i16, [2 x i8] }> + +define dso_local void @pr39570() local_unnamed_addr align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !prof !1 { + br i1 undef, label %8, label %1, !prof !2 + +; <label>:1: ; preds = %0 + %2 = load %0*, %0** undef, align 4 + br label %3 + +; <label>:3: ; preds = %7, %1 + %4 = getelementptr inbounds %0, %0* %2, i32 undef, i32 0 + br label %5 + +; <label>:5: ; preds = %3 + %6 = getelementptr inbounds %0, %0* %2, i32 undef, i32 4 + br i1 undef, label %18, label %7, !prof !3 + +; <label>:7: ; preds = %5 + br label %3 + +; <label>:8: ; preds = %0 + invoke void @baz() + to label %9 unwind label %12 + +; <label>:9: ; preds = %8 + invoke void @bar() + to label %17 unwind label %10 + +; <label>:10: ; preds = %9 + %11 = landingpad { i8*, i32 } + catch i8* null + unreachable + +; <label>:12: ; preds = %8 + %13 = landingpad { i8*, i32 } + cleanup + invoke void @bar() + to label %16 unwind label %14 + +; <label>:14: ; preds = %12 + %15 = landingpad { i8*, i32 } + catch i8* null + unreachable + +; <label>:16: ; preds = %12 + resume { i8*, i32 } %13 + +; <label>:17: ; preds = %9 + br label %18 + +; <label>:18: ; preds = %17, %5 + invoke void @baz() + to label %19 unwind label %20 + +; <label>:19: ; preds = %18 + invoke void @bar() + to label %22 unwind label %20 + +; <label>:20: ; preds = %19 + %21 = landingpad { i8*, i32 } + catch i8* null + unreachable + +; <label>:22: ; preds = %19 + ret void +} + +declare dso_local i32 @__gxx_personality_v0(...) +declare dso_local void @bar() local_unnamed_addr +declare dso_local void @baz() local_unnamed_addr align 2 + +!1 = !{!"function_entry_count", i64 0} +!2 = !{!"branch_weights", i32 1, i32 3215551} +!3 = !{!"branch_weights", i32 3215551, i32 1} |

