commit | 2037eb7f158f6a7b745b1c8d7be2f7015d8bca38 | [log] [tgz] |
---|---|---|
author | Davide Italiano <davide@freebsd.org> | Thu Jan 19 23:07:51 2017 +0000 |
committer | Davide Italiano <davide@freebsd.org> | Thu Jan 19 23:07:51 2017 +0000 |
tree | 7d2778911c894acdbfb6bbc2f251bb80da72919f | |
parent | 84788aed39dd8110f433b08bed8d1387dec4c8c0 [diff] |
[SCCP] Teach the pass how to handle `div` with overdefined operands. This can prove that: extern int f; int g() { int x = 0; for (int i = 0; i < 365; ++i) { x /= f; } return x; } always returns zero. Thanks to Sanjoy for confirming this transformation actually made sense (bugs are mine). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292531 91177308-0d34-0410-b5e6-96231b3b80d8