This is an archive of the discontinued LLVM Phabricator instance.

Add/Improve complex, vector, aggregate types handling for SysV ARM (hard/soft) ABI.
ClosedPublic

Authored by omjavaid on Feb 29 2016, 3:31 AM.

Details

Summary

This patch adds code to SysV ARM ABI for handling complex and aggregates containing complex return types.

It also improves support for handling vectors and aggregates containing vector return types for both ARM hard and soft ABIs.

This patch further enables vector value tests for both gcc and clang.

There is some work in progress to add more comprehensive return value tests and will be followed up in couple of days.

Diff Detail

Repository
rL LLVM

Event Timeline

omjavaid updated this revision to Diff 49353.Feb 29 2016, 3:31 AM
omjavaid retitled this revision from to Add/Improve complex, vector, aggregate types handling for SysV ARM (hard/soft) ABI..
omjavaid updated this object.
omjavaid added a reviewer: tberghammer.
omjavaid added a subscriber: lldb-commits.
tberghammer accepted this revision.Feb 29 2016, 3:54 AM
tberghammer edited edge metadata.

Looks good (it would be nice if we can split GetReturnValueObjectImpl to multiple function as it starts to become pretty big and hard to read but I don't think we shouldn't do it as part of this CL)

source/Plugins/ABI/SysV-arm/ABISysV_arm.cpp
586–588 ↗(On Diff #49353)

(nit): It can be an "else if"

599–601 ↗(On Diff #49353)

(nit); Indentation

This revision is now accepted and ready to land.Feb 29 2016, 3:54 AM
This revision was automatically updated to reflect the committed changes.