diff options
Diffstat (limited to 'test/Transforms/Mem2Reg')
-rw-r--r-- | test/Transforms/Mem2Reg/2007-08-27-VolatileLoadsStores.ll | 2 | ||||
-rw-r--r-- | test/Transforms/Mem2Reg/atomic.ll | 12 | ||||
-rw-r--r-- | test/Transforms/Mem2Reg/crash.ll | 3 |
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() { |