aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/Mem2Reg
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/Mem2Reg')
-rw-r--r--test/Transforms/Mem2Reg/2007-08-27-VolatileLoadsStores.ll2
-rw-r--r--test/Transforms/Mem2Reg/atomic.ll12
-rw-r--r--test/Transforms/Mem2Reg/crash.ll3
3 files changed, 16 insertions, 1 deletions
diff --git a/test/Transforms/Mem2Reg/2007-08-27-VolatileLoadsStores.ll b/test/Transforms/Mem2Reg/2007-08-27-VolatileLoadsStores.ll
index 50683cf..52a8375 100644
--- a/test/Transforms/Mem2Reg/2007-08-27-VolatileLoadsStores.ll
+++ b/test/Transforms/Mem2Reg/2007-08-27-VolatileLoadsStores.ll
@@ -42,6 +42,6 @@ return: ; preds = %bb6
ret i32 %retval8
}
-declare i32 @_setjmp(%struct.__jmp_buf_tag*)
+declare i32 @_setjmp(%struct.__jmp_buf_tag*) returns_twice
declare void @g()
diff --git a/test/Transforms/Mem2Reg/atomic.ll b/test/Transforms/Mem2Reg/atomic.ll
new file mode 100644
index 0000000..982c413
--- /dev/null
+++ b/test/Transforms/Mem2Reg/atomic.ll
@@ -0,0 +1,12 @@
+; RUN: opt -mem2reg < %s -S | FileCheck %s
+
+; mem2reg is allowed with arbitrary atomic operations (although we only support
+; it for atomic load and store at the moment).
+define i32 @test1(i32 %x) {
+; CHECK: @test1
+; CHECK: ret i32 %x
+ %a = alloca i32
+ store atomic i32 %x, i32* %a seq_cst, align 4
+ %r = load atomic i32* %a seq_cst, align 4
+ ret i32 %r
+}
diff --git a/test/Transforms/Mem2Reg/crash.ll b/test/Transforms/Mem2Reg/crash.ll
index 655549f..59e2c0b 100644
--- a/test/Transforms/Mem2Reg/crash.ll
+++ b/test/Transforms/Mem2Reg/crash.ll
@@ -18,10 +18,13 @@ bb15:
ret i32 %B
lpad86:
+ %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
+ cleanup
br label %bb15
}
+declare i32 @__gxx_personality_v0(...)
define i32 @test2() {