This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Be less conservative about forming IT blocks.
ClosedPublic

Authored by jmolloy on Jul 31 2015, 7:54 AM.

Details

Summary

In http://reviews.llvm.org/rL215382, IT forming was made more conservative under
the belief that a flag-setting instruction was unpredictable inside an IT block on ARMv6M.

But actually, ARMv6M doesn't even support IT blocks so that's impossible. In the ARMARM for
v7M, v7AR and v8AR it states that the semantics of such an instruction changes inside an
IT block - it doesn't set the flags. So actually it is fine to use one inside an IT block
as long as the flags register is dead afterwards.

Diff Detail

Repository
rL LLVM

Event Timeline

jmolloy updated this revision to Diff 31124.Jul 31 2015, 7:54 AM
jmolloy retitled this revision from to [ARM] Be less conservative about forming IT blocks..
jmolloy updated this object.
jmolloy added reviewers: t.p.northover, MatzeB.
jmolloy set the repository for this revision to rL LLVM.
jmolloy added a subscriber: llvm-commits.
rengolin accepted this revision.Jul 31 2015, 9:15 AM
rengolin added a reviewer: rengolin.

LGTM. Thanks!

test/CodeGen/ARM/thumb2-it-block.ll
20 ↗(On Diff #31124)

Have you opened a bug for this?

This revision is now accepted and ready to land.Jul 31 2015, 9:15 AM
This revision was automatically updated to reflect the committed changes.