| ; 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 |
| } |