[llvm-commits] [PATCH, PowerPC] Split Darwin and 64-bit SVR4 processing of LowerFormalArguments

William J. Schmidt wschmidt at linux.vnet.ibm.com
Fri Oct 5 14:41:04 PDT 2012



On Fri, 2012-10-05 at 14:29 -0700, Chandler Carruth wrote:
> On Fri, Oct 5, 2012 at 2:25 PM, Hal Finkel <hfinkel at anl.gov> wrote:
>         
>         
>         ----- Original Message -----
>         > From: "William J. Schmidt" <wschmidt at linux.vnet.ibm.com>
>         > To: llvm-commits at cs.uiuc.edu
>         > Sent: Friday, October 5, 2012 4:20:53 PM
>         > Subject: [llvm-commits] [PATCH, PowerPC] Split Darwin and
>         64-bit SVR4 processing of LowerFormalArguments
>         >
>         > The attached patch is some TLC to split apart a function
>         being used
>         > by
>         > both Darwin and 64-bit SVR4 ABIs.  There is no change in
>         function.  I
>         > have plans to make some nontrivial changes to the SVR4 ABI
>         handling,
>         > and
>         > having the two ABIs separated will be better for all
>         concerned.
>         >
>         > Tested with no new regressions.  Ok to commit?
>         
>         
>         Alright (I assume the large block is copied from the Darwin
>         version), LGTM.
> 
> 
> Maybe I'm just confused, but why is it OK to copy/paste so much code
> from Darwin? IS the code going away as you refactor it, or is there
> actually a need to build an abstraction shared between the two?
> 
> 
> (I may just not understand the end goal of the patch, in which case a
> better explanation will fix matters...)
>  

I do have plans to refactor some of the code.  The fact is that the SVR4
ABI has requirements that Darwin doesn't have, and littering the code
with "this part is for Darwin, this part is for SVR4" is going to get
unworkable pretty fast.

An example of what's missing:  64-bit SVR4 requires that a callee that
takes the address of any parameter must copy any parameters passed in
registers into the caller's stack frame at certain reserved locations.
Because of how the code is structured, that's going to require some
rip-up of the ordering of events.  Rather than worrying all the time
about breaking the Darwin ABI, I want to separate the two now before
things become too messy.

There are several other deficiencies in parameter passing for which I've
opened a number of bug reports, many of which need to be solved in this
same code.

This patch is just to tease the two apart in the most straightforward
way possible.  Factoring will be done as part of the upcoming work.

Hope this helps!

Bill
>         
>          -Hal
>         
>         >
>         > Thanks,
>         > Bill
>         > --
>         > Bill Schmidt, Ph.D.
>         > IBM Advance Toolchain for PowerLinux
>         > IBM Linux Technology Center
>         > wschmidt at us.ibm.com
>         > wschmidt at linux.vnet.ibm.com
>         >
>         >
>         >
>         >
>         >
>         >
>         
>         > _______________________________________________
>         > llvm-commits mailing list
>         > llvm-commits at cs.uiuc.edu
>         > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>         >
>         
>         --
>         Hal Finkel
>         Postdoctoral Appointee
>         Leadership Computing Facility
>         Argonne National Laboratory
>         _______________________________________________
>         llvm-commits mailing list
>         llvm-commits at cs.uiuc.edu
>         http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
> 




More information about the llvm-commits mailing list