Home | History | Annotate | Download | only in PowerPC
      1 ; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -relocation-model=pic | FileCheck %s
      2 
      3 ; unsigned int foo(void) {
      4 ;   return 0;
      5 ; }
      6 ;
      7 ; int main() {
      8 ; L: __attribute__ ((unused));
      9 ;   static const unsigned int arr[] =
     10 ;   {
     11 ;     (unsigned int) &&x  - (unsigned int)&&L ,
     12 ;     (unsigned int) &&y  - (unsigned int)&&L
     13 ;   };
     14 ;
     15 ;   unsigned int ret = foo();
     16 ;   void* g = (void *) ((unsigned int)&&L + arr[ret]);
     17 ;   goto *g;
     18 ;
     19 ; x:
     20 ;   return 15;
     21 ; y:
     22 ;   return 25;
     23 ; }
     24 
     25 define i32 @foo() local_unnamed_addr {
     26 entry:
     27   ret i32 0
     28 }
     29 
     30 define i32 @main() {
     31 entry:
     32   br label %L
     33 
     34 L:                                                ; preds = %L, %entry
     35   indirectbr i8* inttoptr (i32 add (i32 ptrtoint (i8* blockaddress(@main, %L) to i32), i32 sub (i32 ptrtoint (i8* blockaddress(@main, %return) to i32), i32 ptrtoint (i8* blockaddress(@main, %L) to i32))) to i8*), [label %return, label %L]
     36 
     37 return:                                           ; preds = %L
     38   ret i32 15
     39 }
     40 
     41 
     42 ; CHECK:     lwz 3, .LC0-.LTOC(30)
     43 ; CHECK-NOT: li 3, .Ltmp1-.L1$pb@l
     44 ; CHECK-NOT: addis 4, 30, .Ltmp1-.L1$pb@ha