This is an archive of the discontinued LLVM Phabricator instance.

[mips] Support shrink-wrapping
ClosedPublic

Authored by vstefanovic on Jun 8 2018, 8:13 AM.

Diff Detail

Repository
rL LLVM

Event Timeline

vstefanovic created this revision.Jun 8 2018, 8:13 AM
sdardis added inline comments.Jun 11 2018, 7:07 AM
test/CodeGen/Mips/shrink-wrapping.ll
1 ↗(On Diff #150520)

Can you use the update_llc_checks.py script to generate the check lines? You'll need to supply a triple instead of -march=

7 ↗(On Diff #150520)

Remove the dso_local, local_unamed_addr and nounwind from this.

33 ↗(On Diff #150520)

Can you also provide a test case similar to gcc PR86069? For O32 this consists of a branch over a section of code to an early return and the branch has to be expanded into a long jump sequence. You can use .space to create arbitrary size chunks of nops.

34 ↗(On Diff #150520)

Similarly here for the dso_local.

Added long branch test, used update_llc_test_checks.py to create checks.

vstefanovic marked 4 inline comments as done.Jun 11 2018, 12:47 PM
sdardis added inline comments.Jun 12 2018, 9:20 AM
test/CodeGen/Mips/shrink-wrapping.ll
3 ↗(On Diff #150816)

Can you also add mips64 tests?

192–195 ↗(On Diff #150816)

Can you remove this alloca, we need to expose the jump in such a way that the shrink wrapping pass tries to move the prologue past it.

Updated the long branch test with actual shrink-wrapping.

vstefanovic marked 2 inline comments as done.Jun 12 2018, 1:41 PM
This revision is now accepted and ready to land.Jun 28 2018, 1:23 AM
This revision was automatically updated to reflect the committed changes.