| commit | 6c2c3e07bfaa1a021bf665971b018491a728a895 | [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 | 40dbd17044c80ff0fdcb0c63479680733eb7b46a | |
| parent | 5a52af0f63af33ceca08ac39f04738f37bd746ea [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).
llvm-svn: 292531