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; ptr g = (ptr) ((unsigned int)&&L + arr[ret]); 17; goto *g; 18; 19; x: 20; return 15; 21; y: 22; return 25; 23; } 24 25define i32 @foo() local_unnamed_addr { 26entry: 27 ret i32 0 28} 29 30define i32 @main() { 31entry: 32 br label %L 33 34L: ; preds = %L, %entry 35 indirectbr ptr inttoptr (i32 add (i32 ptrtoint (ptr blockaddress(@main, %L) to i32), i32 sub (i32 ptrtoint (ptr blockaddress(@main, %return) to i32), i32 ptrtoint (ptr blockaddress(@main, %L) to i32))) to ptr), [label %return, label %L] 36 37return: ; 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