1; RUN: llc < %s 2; PR9900 3 4; NVPTX does not support zero sized type arg 5; UNSUPPORTED: target=nvptx{{.*}} 6 7%zero = type [0 x i8] 8%foobar = type { i32, %zero } 9 10define void @f(%foobar %arg) { 11 %arg1 = extractvalue %foobar %arg, 0 12 %arg2 = extractvalue %foobar %arg, 1 13 call i32 @f2(%zero %arg2, i32 5, i32 42) 14 ret void 15} 16 17define i32 @f2(%zero %x, i32 %y, i32 %z) { 18 ret i32 %y 19} 20 21define void @f3(%zero %x, i32 %y) { 22 call i32 @f2(%zero %x, i32 5, i32 %y) 23 ret void 24} 25 26define void @f4(%zero %z) { 27 insertvalue %foobar undef, %zero %z, 1 28 ret void 29} 30 31define void @f5(%foobar %x) { 32allocas: 33 %y = extractvalue %foobar %x, 1 34 br label %b1 35 36b1: 37 %insert120 = insertvalue %foobar undef, %zero %y, 1 38 ret void 39} 40 41define void @f6(%zero %x, %zero %y) { 42b1: 43 br i1 undef, label %end, label %b2 44 45b2: 46 br label %end 47 48end: 49 %z = phi %zero [ %y, %b1 ], [ %x, %b2 ] 50 call void @f4(%zero %z) 51 ret void 52} 53 54%zero2 = type {} 55 56define i32 @g1(%zero2 %x, i32 %y, i32 %z) { 57 ret i32 %y 58} 59 60define void @g2(%zero2 %x, i32 %y) { 61 call i32 @g1(%zero2 %x, i32 5, i32 %y) 62 ret void 63} 64 65%zero2r = type {%zero2} 66 67define i32 @h1(%zero2r %x, i32 %y, i32 %z) { 68 ret i32 %y 69} 70 71define void @h2(%zero2r %x, i32 %y) { 72 call i32 @h1(%zero2r %x, i32 5, i32 %y) 73 ret void 74} 75 76%foobar2 = type { i32, %zero2r } 77 78define void @h3(%foobar2 %arg) { 79 %arg1 = extractvalue %foobar2 %arg, 0 80 %arg2 = extractvalue %foobar2 %arg, 1 81 %arg21 = extractvalue %zero2r %arg2, 0 82 call void @g2(%zero2 %arg21, i32 5) 83 ret void 84} 85