diff options
author | Chris Lattner <sabre@nondot.org> | 2010-05-08 20:01:44 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-05-08 20:01:44 +0000 |
commit | 7944c21cae06c5124cf1ee1f811d2a13f8e1b939 (patch) | |
tree | 559ff0c6dff05aed9b26ead363d9e3eeb7f773c5 /test/Transforms/GVN/2010-05-08-OneBit.ll | |
parent | b54b9ddaaf2d258767d360583642ed1b91075fc9 (diff) | |
download | external_llvm-7944c21cae06c5124cf1ee1f811d2a13f8e1b939.zip external_llvm-7944c21cae06c5124cf1ee1f811d2a13f8e1b939.tar.gz external_llvm-7944c21cae06c5124cf1ee1f811d2a13f8e1b939.tar.bz2 |
Fix PR7052, patch by Jakub Staszak!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103347 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/GVN/2010-05-08-OneBit.ll')
-rw-r--r-- | test/Transforms/GVN/2010-05-08-OneBit.ll | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/test/Transforms/GVN/2010-05-08-OneBit.ll b/test/Transforms/GVN/2010-05-08-OneBit.ll new file mode 100644 index 0000000..1809cf0 --- /dev/null +++ b/test/Transforms/GVN/2010-05-08-OneBit.ll @@ -0,0 +1,63 @@ +; RUN: opt < %s -gvn +; PR7052 + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" +target triple = "x86_64-unknown-linux-gnu" + +define i32 @main(i32 %argc, i8** nocapture %argv) { +entry: + %0 = getelementptr inbounds i8* undef, i64 5 ; <i8*> [#uses=1] + %1 = bitcast i8* %0 to i32* ; <i32*> [#uses=1] + store i32 undef, i32* %1, align 1 + br i1 undef, label %k121.i.i, label %l117.i.i + +l117.i.i: ; preds = %entry + invoke fastcc void @foo() + to label %.noexc5 unwind label %landing_pad + +.noexc5: ; preds = %l117.i.i + unreachable + +k121.i.i: ; preds = %entry + br i1 undef, label %l129.i.i, label %k133.i.i + +l129.i.i: ; preds = %k121.i.i + invoke fastcc void @foo() + to label %.noexc7 unwind label %landing_pad + +.noexc7: ; preds = %l129.i.i + unreachable + +k133.i.i: ; preds = %k121.i.i + %2 = getelementptr i8* undef, i64 5 ; <i8*> [#uses=1] + %3 = bitcast i8* %2 to i1* ; <i1*> [#uses=1] + %4 = load i1* %3 ; <i1> [#uses=1] + br i1 %4, label %k151.i.i, label %l147.i.i + +l147.i.i: ; preds = %k133.i.i + invoke fastcc void @foo() + to label %.noexc10 unwind label %landing_pad + +.noexc10: ; preds = %l147.i.i + unreachable + +k151.i.i: ; preds = %k133.i.i + ret i32 0 + +landing_pad: ; preds = %l147.i.i, %l129.i.i, %l117.i.i + switch i32 undef, label %fin [ + i32 1, label %catch1 + i32 2, label %catch + ] + +fin: ; preds = %landing_pad + unreachable + +catch: ; preds = %landing_pad + ret i32 1 + +catch1: ; preds = %landing_pad + ret i32 2 +} + +declare fastcc void @foo() |