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