This is an archive of the discontinued LLVM Phabricator instance.

[mips] Move F128 argument handling into MipsCCState as we did for returns. NFC.
ClosedPublic

Authored by dsanders on Oct 24 2014, 3:59 AM.

Details

Summary

There are a couple more changes to make before analyzeFormalArguments can
be merged into the standard AnalyzeFormalArguments. I've had to temporarily
poke a couple holes in MipsCCState's encapsulation to save having to make
all the required changes for this merge all at once*. These will be removed
shortly.

  • We must merge our ByVal argument handling with the implementation in CCState. This will be done over the next three patches, then the fourth will merge analyzeFormalArguments with AnalyzeFormalArguments.

Depends on D5967

Diff Detail

Event Timeline

dsanders updated this revision to Diff 15400.Oct 24 2014, 3:59 AM
dsanders retitled this revision from to [mips] Move F128 argument handling into MipsCCState as we did for returns. NFC..
dsanders updated this object.
dsanders edited the test plan for this revision. (Show Details)
dsanders added a reviewer: vmedic.
dsanders added a subscriber: Unknown Object (MLST).
vmedic accepted this revision.Oct 27 2014, 4:10 AM
vmedic edited edge metadata.

LGTM

This revision is now accepted and ready to land.Oct 27 2014, 4:10 AM
dsanders closed this revision.Nov 1 2014, 11:48 AM

Excuse me, I have reverted it in r221081.

lib/Target/Mips/MipsISelLowering.cpp
116

FuncArg might not be paired corresponding to Ins.
Consider, CodeGen's sret arg in Ins.
Does it satisfy assert(Ins[i].OrigArgIndex < MF.getFunction()->arg_size()) in CodeGen/Mips/return-vector.ll?

dsanders added inline comments.Nov 2 2014, 8:13 AM
lib/Target/Mips/MipsISelLowering.cpp
116

Well spotted. sret arguments are always pointers (so they can never originate from an f128 or {f128}) so I've re-committed with an explicit check for them that skips the originalTypeIsF128() call and pushes false into the vector instead.

I also checked PreAnalyzeCallOperandsForF128() and it doesn't see sret arguments.