50 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; PR35221. Test that external global address is not reloaded from GOT in each BB.3; RUN: llc < %s -mtriple=armv7-linux-gnueabi -relocation-model=pic | FileCheck %s -check-prefix=LINUX-PIC4 5@x = external global i8, align 16 7define signext i8 @foo() {8; LINUX-PIC-LABEL: foo:9; LINUX-PIC: @ %bb.0: @ %entry10; LINUX-PIC-NEXT: .save {r4, lr}11; LINUX-PIC-NEXT: push {r4, lr}12; LINUX-PIC-NEXT: ldr r4, .LCPI0_013; LINUX-PIC-NEXT: mov r0, #014; LINUX-PIC-NEXT: .LPC0_0:15; LINUX-PIC-NEXT: ldr r4, [pc, r4]16; LINUX-PIC-NEXT: ldrb r1, [r4]17; LINUX-PIC-NEXT: cmp r1, #018; LINUX-PIC-NEXT: beq .LBB0_219; LINUX-PIC-NEXT: @ %bb.1: @ %common.ret20; LINUX-PIC-NEXT: sxtb r0, r021; LINUX-PIC-NEXT: pop {r4, pc}22; LINUX-PIC-NEXT: .LBB0_2: @ %bb123; LINUX-PIC-NEXT: bl bar24; LINUX-PIC-NEXT: ldrb r0, [r4]25; LINUX-PIC-NEXT: sxtb r0, r026; LINUX-PIC-NEXT: pop {r4, pc}27; LINUX-PIC-NEXT: .p2align 228; LINUX-PIC-NEXT: @ %bb.3:29; LINUX-PIC-NEXT: .LCPI0_0:30; LINUX-PIC-NEXT: .Ltmp0:31; LINUX-PIC-NEXT: .long x(GOT_PREL)-(.LPC0_0+8-.Ltmp0)32entry:33 %0 = load i8, ptr @x34 %tobool = icmp eq i8 %0, 035 br i1 %tobool, label %bb1, label %bb236 37bb1:38 call void @bar()39; No more pc-relative loads! Reuse r[[B]].40 %1 = load i8, ptr @x41 ret i8 %142 43bb2:44 ret i8 045}46 47declare void @bar()48 49 50