Part of initial Arm64EC patchset.
Don't try to duplicate the existing logic; instead, just call the actual code we use for native x64.
Differential D125419
[Arm64EC 7/?] clang side of Arm64EC varargs ABI. efriedma on May 11 2022, 1:55 PM. Authored by
Details Part of initial Arm64EC patchset. Don't try to duplicate the existing logic; instead, just call the actual code we use for native x64.
Diff Detail
Event Timeline
Comment Actions Just realized I forgot to add tests for va_arg.
Comment Actions I think this looks reasonable to me - if noone else has time to approve it, I guess I could, but I'd rather have the more authoritative reviewers complete their reviews.
Comment Actions I don't have the expertise to approve, but one question. Why is there more testing in the .c than in .cpp. Is the same logic being used for both so there's no point checking twice? If so what things is the .cpp test looking for specifically? I struggle to see how the lines it checks for map into the call to the variadic function. Is it looking at the mangling, the choice of pointer or not? |
Hmm. Doesn't EC ABI lowering need to preserve this same state, or else you'll get incompatibilities when you exhaust SSE registers?
Should you just be calling over to this at a higher-level point, like in computeInfo?