[PATCH] D11051: Extend LICM to hoist loop invariant GEP out
Quentin Colombet
qcolombet at apple.com
Thu Jul 9 10:24:02 PDT 2015
qcolombet added a comment.
Hi Lawrence,
I am not sure the transformation is legal, I’ll come back on that, but assuming it is, I think we could consider that moving the constant elements of a gep at the beginning of a gep-chain is the canonical representation.
If people agree on this, then this transformation would be better suited as an inst combine and we can get rid of all the is loop invariant checks.
Now, going back to the legality of the transformation, I am definitely not a language lawyer but it seems to me we may slightly modify the behavior of the program.
E.g., consider
C = gep A, B
D = gep C, 1023
Where gep C, 1023 produces an overflow.
After this transformation, we would get:
New = gep A, 1023
D = gep B, New
Now, the overflow may be on New = gep A, 1023, which potentially affects the behavior of the program.
Thoughts?
Cheers,
-Quentin
Repository:
rL LLVM
http://reviews.llvm.org/D11051
More information about the llvm-commits
mailing list