[LLVMdev] [ARM] [PIC] optimizing the loading of hidden global variable (original) (raw)
Weiming Zhao weimingz at codeaurora.org
Fri Mar 14 14:16:09 PDT 2014
- Previous message: [LLVMdev] [ARM] [PIC] optimizing the loading of hidden global variable
- Next message: [LLVMdev] [ARM] [PIC] optimizing the loading of hidden global variable
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I just gave a try to MegeGlobal with alias because I thought it's easy to do. However, another issue with it is: Although I got aliases like: @h0 = alias getelementptr inbounds (... at _MergedGlobals, 0, 0) @h1 = alias getelementptr inbounds (... at _MergedGlobals, 0, 1) @h2 = alias getelementptr inbounds (... at _MergedGlobals, 0, 2)
They cannot be lowered to correct asm. The all be aliases of _MergedGlobals: .globl h0 .set h0, _MergedGlobals .globl h1 .set h1, _MergedGlobals .globl h2 .set h2, _MergedGlobals
I guess there is no support in asm to alias to a member of struct, right?
Thanks, Weiming
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
-----Original Message----- From: Rafael EspĂndola [mailto:rafael.espindola at gmail.com] Sent: Friday, March 14, 2014 1:49 PM To: Weiming Zhao Cc: Tim Northover; LLVM Developers Mailing List; Jim Grosbach; Nick Kledzik Subject: Re: [LLVMdev] [ARM] [PIC] optimizing the loading of hidden global variable
On 14 March 2014 14:34, Weiming Zhao <weimingz at codeaurora.org> wrote:
Hi Rafael,
Yes, merging gv prevents linker to do garbage collection. Should it be implemented as a peephole pass? If we do it too early, the distance between GVs are not fixed yet.
Correct. It would be somewhere in CodeGen, I am not exactly sure where.
PS: Below is the GCC output with "extern" hidden: ldr r2, .L2 stmfd sp!, {r3, lr} .save {r3, lr} .LPIC0: add r0, pc, r2 bl Z4initPv(PLT) ldr r1, .L2+4 .LPIC1: add r0, pc, r1 bl Z4initPv(PLT) ldr r0, .L2+8 .LPIC2: add r0, pc, r0 ldmfd sp!, {r3, lr} b Z4initPv(PLT) .L3: .align 2 .L2: .word g0-(.LPIC0+8) .word g1-(.LPIC1+8) .word g2-(.LPIC2+8)
That is pretty neat too.
Cheers, Rafael
- Previous message: [LLVMdev] [ARM] [PIC] optimizing the loading of hidden global variable
- Next message: [LLVMdev] [ARM] [PIC] optimizing the loading of hidden global variable
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]