[LLVMdev] [cfe-commits] [Patch?] Fix handling of ARM homogenous aggregates

Tim Northover Tim.Northover at arm.com
Thu Apr 5 08:27:17 PDT 2012


On Wednesday 04 Apr 2012 13:27:07 Tim Northover wrote:
> Putting that information in the InputArg/OutputArg and incorporating it the
> CCAssignFn interface  allows a more straightforward implementation in the
> targets, in my view (for both our uses). It's also information that's
> readily available when InputArg/OutputArgs are being constructed. In your
> case:
> 
>     CCIf<"SourceTy->isPointerTy()", CCAssignToReg<[P1, P2]>>;
> 
> I've got a patch which implements it for ARM and X86 (though not HFAs using
> the features yet, I'm still musing on the best interface to present there
> -- "HFA* byval" for target simplicity or "HFA" for user simplicity), I'll
> see if I can clean it up for other targets and send it for comparison.

Here's the patch I was talking about. It's probably not quite ready for 
committing yet, but I think it's a step towards supporting the HFA ABI without 
excessive work from the front-end or duplication of SelectionDAGBuilder code.

If this is the right approach, it still needs to be decided whether the extra 
complexity and inconsistency (with MIPS etc) of passing an argument via 
"{float, float}" vs "{float, float}* byval" is worth the simplified interface 
and possible extra optimisation opportunities.

Opinions, anyone? (Hint hint).

Tim.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: callingconv-sourcetype.diff
Type: text/x-patch
Size: 39781 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120405/b5329082/attachment.bin>


More information about the llvm-dev mailing list