Page MenuHomePhabricator

[mips] Fix va_arg() for pointer types on big-endian N32.

Authored by dsanders on Dec 30 2014, 11:30 AM.



The Mips ABI's treat pointers in the same way as integers. They are
sign-extended to 32-bit for O32, and 64-bit for N32/N64. This doesn't matter
for O32 and N64 where pointers are already the correct width but it does matter
for big-endian N32, where pointers are 32-bit and need promoting.

The caller side is already passing pointers correctly. This patch corrects the

Diff Detail

Event Timeline

dsanders updated this revision to Diff 17726.Dec 30 2014, 11:30 AM
dsanders retitled this revision from to [mips] Fix va_arg() for pointer types on big-endian N32..
dsanders updated this object.
dsanders edited the test plan for this revision. (Show Details)
dsanders added reviewers: atanasyan, vmedic.
dsanders added a subscriber: Unknown Object (MLST).
atanasyan accepted this revision.Jan 9 2015, 7:59 AM
atanasyan edited edge metadata.


This revision is now accepted and ready to land.Jan 9 2015, 7:59 AM
dsanders closed this revision.Jan 13 2015, 2:48 AM

Committed to trunk in r225782. I'll give the buildbots some time to settle and let the 3.5.1 release finish before merging to release_35. The trunk generates slightly different (but equivalent) IR so I had to update the tests accordingly.