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

deadal nix deadalnix at gmail.com
Thu Oct 30 21:45:12 PDT 2014


> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141030/8c7aac5d/attachment.html>


More information about the llvm-commits mailing list