[llvm-dev] trouble hoisting GlobalValues

Smith, Kevin B via llvm-dev llvm-dev at lists.llvm.org
Fri Dec 11 17:21:45 PST 2015

I thought Zia Ansari did something like what you want for constants to reduce code size.  It is probably extendable for what you seem to be trying to
do. Back in something like mid-july or so.

Zia - ?

Kevin Smith

>-----Original Message-----
>From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Steve
>King via llvm-dev
>Sent: Friday, December 11, 2015 1:53 PM
>To: llvm-dev <llvm-dev at lists.llvm.org>
>Subject: [llvm-dev] trouble hoisting GlobalValues
>Hello LLVM,
>To reduce the code-size cost of relocations, I'm trying to hoist
>GlobalValues that are used many times.  A new pass hides each hoisted
>GV behind a BITCAST in the dominating BB.  The pass then updates users
>with the output of the BITCAST.  This pass works properly AFAICT.
>The problems come in instruction selection.
>SelectionDAGBuilder::visitBitCast() treats the BITCAST as a no-op and
>eventually users of the GV fold the relocation as if hoisting never
>happened.  Experiments turning the BITCAST into a copytoreg failed and
>anyway I feel like I'm just shooting in the dark.
>Can anyone can suggest a strategy for lowering a hoisted GV?  The end
>result should be that the GV materializes as a simple move-immediate
>to register.
>LLVM Developers mailing list
>llvm-dev at lists.llvm.org

More information about the llvm-dev mailing list