[LLVMdev] alias information on machine instructions

Florian Brandner fbrandne at mail.tuwien.ac.at
Fri Jun 15 07:16:57 PDT 2007


hi,


Florian Brandner wrote:
> Dan Gohman wrote:
>> On Wed, May 23, 2007 at 12:23:38AM -0700, Chris Lattner wrote:
>>> Right.  The original Value*'s are preserved in the DAG, but dropped when 
>>> MachineInstrs are created.  We could add a machineoperand to capture this 
>>> Value* if desired.
>> Another benefit of keeping the original Value*'s (and offsets) around is it
>> would provide more information that could be used for verbose asm output
>> and MachineInstr-level dumps, which would be quite nice.
>>
> 
> i'll do this and post a patch, unless someone else is already working on
> this.
> 

i have extended the DAG instruction selector and scheduler to preserve
Value*'s. the values are attached to machine instructions as a separate
operand list (at least for now). for now this looks very good.

but i found that the alias analysis is not as good as expected. the
problem seems to be the codegenprepare pass. GEP instructions are
lowered to integer calculations (e.g. ptrtoint, add, inttoptr). this
causes the (basic) alias analysis to answer MayAlias for most queries.

this is also a problem for the DAG combiner, when the
-combiner-global-alias-analysis switch is given to llc.

any ideas how to handle this?
florian








More information about the llvm-dev mailing list