blob: 12a454999285737b3166fe94fe462d579e8d7377 [file] [log] [blame]
Reid Klecknerad60d3c2014-01-16 22:59:24 +00001; This used to be invalid, but now it's valid. Ensure the verifier
2; doesn't reject it.
3; RUN: llvm-as %s -o /dev/null
Reid Kleckner4b70bfc2013-12-19 02:14:12 +00004
5declare void @doit(i64* inalloca %a)
6
7define void @a() {
8entry:
David Majnemer39a09d22014-03-09 06:41:58 +00009 %a = alloca inalloca [2 x i32]
Reid Kleckner4b70bfc2013-12-19 02:14:12 +000010 %b = bitcast [2 x i32]* %a to i64*
11 call void @doit(i64* inalloca %b)
Reid Kleckner4b70bfc2013-12-19 02:14:12 +000012 ret void
13}
14
15define void @b() {
16entry:
David Majnemer39a09d22014-03-09 06:41:58 +000017 %a = alloca inalloca i64
Reid Kleckner4b70bfc2013-12-19 02:14:12 +000018 call void @doit(i64* inalloca %a)
19 call void @doit(i64* inalloca %a)
Reid Kleckner4b70bfc2013-12-19 02:14:12 +000020 ret void
21}
Reid Kleckner3cbfa162014-01-17 23:58:17 +000022
23define void @c(i1 %cond) {
24entry:
25 br i1 %cond, label %if, label %else
26
27if:
David Majnemer39a09d22014-03-09 06:41:58 +000028 %a = alloca inalloca i64
Reid Kleckner3cbfa162014-01-17 23:58:17 +000029 br label %call
30
31else:
David Majnemer39a09d22014-03-09 06:41:58 +000032 %b = alloca inalloca i64
Reid Kleckner3cbfa162014-01-17 23:58:17 +000033 br label %call
34
35call:
36 %args = phi i64* [ %a, %if ], [ %b, %else ]
37 call void @doit(i64* inalloca %args)
38 ret void
39}