diff options
Diffstat (limited to 'test/Transforms/InstSimplify')
-rw-r--r-- | test/Transforms/InstSimplify/2011-09-05-InsertExtractValue.ll | 29 | ||||
-rw-r--r-- | test/Transforms/InstSimplify/compare.ll | 11 |
2 files changed, 29 insertions, 11 deletions
diff --git a/test/Transforms/InstSimplify/2011-09-05-InsertExtractValue.ll b/test/Transforms/InstSimplify/2011-09-05-InsertExtractValue.ll new file mode 100644 index 0000000..d10c61fe --- /dev/null +++ b/test/Transforms/InstSimplify/2011-09-05-InsertExtractValue.ll @@ -0,0 +1,29 @@ +; RUN: opt < %s -instsimplify -S | FileCheck %s + +declare void @bar() + +define void @test1() { +entry: + invoke void @bar() to label %cont unwind label %lpad +cont: + ret void +lpad: + %ex = landingpad { i8*, i32 } personality i32 (i32, i64, i8*, i8*)* @__gxx_personality_v0 cleanup + %exc_ptr = extractvalue { i8*, i32 } %ex, 0 + %filter = extractvalue { i8*, i32 } %ex, 1 + %exc_ptr2 = insertvalue { i8*, i32 } undef, i8* %exc_ptr, 0 + %filter2 = insertvalue { i8*, i32 } %exc_ptr2, i32 %filter, 1 + resume { i8*, i32 } %filter2 +; CHECK: @test1 +; CHECK-NOT: extractvalue +; CHECK-NOT: insertvalue +} + +declare i32 @__gxx_personality_v0(i32, i64, i8*, i8*) + +define { i8, i32 } @test2({ i8*, i32 } %x) { + %ex = extractvalue { i8*, i32 } %x, 1 + %ins = insertvalue { i8, i32 } undef, i32 %ex, 1 + ret { i8, i32 } %ins +; CHECK: @test2 +} diff --git a/test/Transforms/InstSimplify/compare.ll b/test/Transforms/InstSimplify/compare.ll index d2c564f..2cbd641 100644 --- a/test/Transforms/InstSimplify/compare.ll +++ b/test/Transforms/InstSimplify/compare.ll @@ -283,17 +283,6 @@ define i1 @srem3(i16 %X, i32 %Y) { ret i1 %E } -; CHECK: @srem4 -; CHECK-NEXT: ret i1 false -define i1 @srem4(i16 %X, i32 %Y) { - %A = zext i16 %X to i32 - %B = or i32 2147483648, %A - %C = sub nsw i32 %A, %B - %D = srem i32 %C, %Y - %E = icmp slt i32 %D, 0 - ret i1 %E -} - define i1 @udiv1(i32 %X) { ; CHECK: @udiv1 %A = udiv i32 %X, 1000000 |