aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/GVN/2010-05-08-OneBit.ll
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-05-08 20:01:44 +0000
committerChris Lattner <sabre@nondot.org>2010-05-08 20:01:44 +0000
commit7944c21cae06c5124cf1ee1f811d2a13f8e1b939 (patch)
tree559ff0c6dff05aed9b26ead363d9e3eeb7f773c5 /test/Transforms/GVN/2010-05-08-OneBit.ll
parentb54b9ddaaf2d258767d360583642ed1b91075fc9 (diff)
downloadexternal_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.ll63
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()