This is an archive of the discontinued LLVM Phabricator instance.

X86: Fix conflict over ESI between base register and rep;movsl
ClosedPublic

Authored by rnk on Aug 29 2014, 1:37 PM.

Details

Summary

The "solution" is to not use this lowering if there are any dynamic
allocas in the current function. We know up front if there are dynamic
allocas, but we don't know if we'll need to create stack temporaries
with large alignment during lowering. Conservatively assume that we will
need such temporaries.

Diff Detail

Event Timeline

rnk updated this revision to Diff 13103.Aug 29 2014, 1:37 PM
rnk retitled this revision from to X86: Fix conflict over ESI between base register and rep;movsl.
rnk updated this object.
rnk added a reviewer: hans.
rnk added a subscriber: Unknown Object (MLST).
hans accepted this revision.Aug 29 2014, 1:54 PM
hans edited edge metadata.

LGTM!

I'm still planning to retry the "store ESI in another physreg while rep movs'ing" approach instead of bailing out, but that's orthogonal to this fix.

This revision is now accepted and ready to land.Aug 29 2014, 1:54 PM
rnk added a comment.Aug 29 2014, 1:56 PM

Chandler suggested creating an opaque DAG node and lowering it in MI
*after* ISel. The MI layer is much less fluid than the DAG.

rnk closed this revision.Aug 29 2014, 2:00 PM
rnk updated this revision to Diff 13105.

Closed by commit rL216775 (authored by @rnk).