This is an archive of the discontinued LLVM Phabricator instance.

Make musttail more robust for vector types on x86
ClosedPublic

Authored by rnk on Nov 6 2014, 2:38 PM.

Details

Summary

Previously I tried to plug musttail into the existing vararg lowering
code. That turned out to be a mistake, because non-vararg calls use
significantly different register lowering, even on x86. For example, AVX
vectors are usually passed in registers to normal functions and memory
to vararg functions. Now musttail uses a completely separate lowering.

Hopefully this can be used as the basis for non-x86 perfect forwarding.

Diff Detail

Repository
rL LLVM

Event Timeline

rnk updated this revision to Diff 15894.Nov 6 2014, 2:38 PM
rnk retitled this revision from to Make musttail more robust for vector types on x86.
rnk updated this object.
rnk added a reviewer: majnemer.
rnk added a subscriber: Unknown Object (MLST).
majnemer accepted this revision.Dec 19 2014, 4:36 PM
majnemer edited edge metadata.

LGTM

lib/CodeGen/CallingConvLower.cpp
204 ↗(On Diff #15894)

It sounds like we can have assert(NumLocs != Locs.size()); here.

This revision is now accepted and ready to land.Dec 19 2014, 4:36 PM
This revision was automatically updated to reflect the committed changes.