Add a pass to convert aggregate loads/stores into scalar load stores

Hal Finkel hfinkel at anl.gov
Thu Oct 30 21:49:54 PDT 2014


----- Original Message -----
> From: "deadal nix" <deadalnix at gmail.com>
> To: "Philip Reames" <listmail at philipreames.com>
> Cc: "Chandler Carruth" <chandlerc at google.com>, "Hal Finkel" <hfinkel at anl.gov>, "llvm-commits"
> <llvm-commits at cs.uiuc.edu>
> Sent: Thursday, October 30, 2014 11:45:12 PM
> Subject: Re: Add a pass to convert aggregate loads/stores into scalar load stores
> 
> Option 4 - Transform to series of smaller integer loads
> - This appears to be what this patch implements. Not entirely sure
> why this was chosen.
> 
> 
> Yes, this is what this diff is doing.
> 
> 
> This option allow to keep pointerness of load/stores (it could be
> refined in this patch, but the idea is there). It also avoid to
> generate a bunch of small load when a big load would suffice.
> 
> 
> Making a big load of iN (option 2) is also reasonable, but in this
> case, the load won't respect the target alignment's constraints. I
> thought it was a problem so I went for the option 3 instead.
> 
> 
> My first approach was option 1, but i was told that doing this in a
> separate pass was a better approach. Option 5 do not really solve
> the problem. It also force to generate an alloca in the first block,
> so it is not possible to work at a basic block level anymore.

Why do you think that the transformation needs to be basic-block local?

 -Hal

> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-commits mailing list