|  | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | 
|  | ; PR35221. Test that external global address is not reloaded from GOT in each BB. | 
|  | ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -relocation-model=pic | FileCheck %s -check-prefix=LINUX-PIC | 
|  |  | 
|  | @x = external global i8, align 1 | 
|  |  | 
|  | define signext i8 @foo() { | 
|  | ; LINUX-PIC-LABEL: foo: | 
|  | ; LINUX-PIC:       @ %bb.0: @ %entry | 
|  | ; LINUX-PIC-NEXT:    .save {r4, lr} | 
|  | ; LINUX-PIC-NEXT:    push {r4, lr} | 
|  | ; LINUX-PIC-NEXT:    ldr r4, .LCPI0_0 | 
|  | ; LINUX-PIC-NEXT:    mov r0, #0 | 
|  | ; LINUX-PIC-NEXT:  .LPC0_0: | 
|  | ; LINUX-PIC-NEXT:    ldr r4, [pc, r4] | 
|  | ; LINUX-PIC-NEXT:    ldrb r1, [r4] | 
|  | ; LINUX-PIC-NEXT:    cmp r1, #0 | 
|  | ; LINUX-PIC-NEXT:    beq .LBB0_2 | 
|  | ; LINUX-PIC-NEXT:  @ %bb.1: @ %common.ret | 
|  | ; LINUX-PIC-NEXT:    sxtb r0, r0 | 
|  | ; LINUX-PIC-NEXT:    pop {r4, pc} | 
|  | ; LINUX-PIC-NEXT:  .LBB0_2: @ %bb1 | 
|  | ; LINUX-PIC-NEXT:    bl bar | 
|  | ; LINUX-PIC-NEXT:    ldrb r0, [r4] | 
|  | ; LINUX-PIC-NEXT:    sxtb r0, r0 | 
|  | ; LINUX-PIC-NEXT:    pop {r4, pc} | 
|  | ; LINUX-PIC-NEXT:    .p2align 2 | 
|  | ; LINUX-PIC-NEXT:  @ %bb.3: | 
|  | ; LINUX-PIC-NEXT:  .LCPI0_0: | 
|  | ; LINUX-PIC-NEXT:  .Ltmp0: | 
|  | ; LINUX-PIC-NEXT:    .long x(GOT_PREL)-((.LPC0_0+8)-.Ltmp0) | 
|  | entry: | 
|  | %0 = load i8, ptr @x | 
|  | %tobool = icmp eq i8 %0, 0 | 
|  | br i1 %tobool, label %bb1, label %bb2 | 
|  |  | 
|  | bb1: | 
|  | call void @bar() | 
|  | ; No more pc-relative loads! Reuse r[[B]]. | 
|  | %1 = load i8, ptr @x | 
|  | ret i8 %1 | 
|  |  | 
|  | bb2: | 
|  | ret i8 0 | 
|  | } | 
|  |  | 
|  | declare void @bar() | 
|  |  | 
|  |  |