This is an archive of the discontinued LLVM Phabricator instance.

[SVE] Add fatal error when running out of registers for SVE tuple call arguments
ClosedPublic

Authored by david-arm on Oct 13 2020, 9:11 AM.

Details

Summary

When passing SVE types as arguments to function calls we can run
out of hardware SVE registers. This is normally fine, since we
switch to an indirect mode where we pass a pointer to a SVE stack
object in a GPR. However, if we switch over part-way through
processing a SVE tuple then part of it will be in registers and
the other part will be on the stack. This is wrong and we'd like
to avoid any silent ABI compatibility issues in future. For now,
I've added a fatal error when this happens until we can get a
proper fix.

Diff Detail

Event Timeline

david-arm created this revision.Oct 13 2020, 9:11 AM
david-arm requested review of this revision.Oct 13 2020, 9:11 AM
efriedma accepted this revision.Oct 13 2020, 11:52 AM

Can you add a testcase to check we properly trigger the error? Otherwise LGTM.

This revision is now accepted and ready to land.Oct 13 2020, 11:52 AM
This revision was landed with ongoing or failed builds.Oct 14 2020, 1:32 AM
This revision was automatically updated to reflect the committed changes.