diff options
Diffstat (limited to 'test/Verifier/inalloca2.ll')
-rw-r--r-- | test/Verifier/inalloca2.ll | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/Verifier/inalloca2.ll b/test/Verifier/inalloca2.ll new file mode 100644 index 0000000..12a4549 --- /dev/null +++ b/test/Verifier/inalloca2.ll @@ -0,0 +1,39 @@ +; This used to be invalid, but now it's valid. Ensure the verifier +; doesn't reject it. +; RUN: llvm-as %s -o /dev/null + +declare void @doit(i64* inalloca %a) + +define void @a() { +entry: + %a = alloca inalloca [2 x i32] + %b = bitcast [2 x i32]* %a to i64* + call void @doit(i64* inalloca %b) + ret void +} + +define void @b() { +entry: + %a = alloca inalloca i64 + call void @doit(i64* inalloca %a) + call void @doit(i64* inalloca %a) + ret void +} + +define void @c(i1 %cond) { +entry: + br i1 %cond, label %if, label %else + +if: + %a = alloca inalloca i64 + br label %call + +else: + %b = alloca inalloca i64 + br label %call + +call: + %args = phi i64* [ %a, %if ], [ %b, %else ] + call void @doit(i64* inalloca %args) + ret void +} |