| ; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s | |
| ; ScalarEvolution shouldn't attempt to interpret expressions which have | |
| ; undefined results. | |
| define void @foo(i64 %x) { | |
| %a = udiv i64 %x, 0 | |
| ; CHECK: --> (%x /u 0) | |
| %B = shl i64 %x, 64 | |
| ; CHECK: --> %B | |
| %b = ashr i64 %B, 64 | |
| ; CHECK: --> %b | |
| %c = lshr i64 %x, 64 | |
| ; CHECK: --> %c | |
| %d = shl i64 %x, 64 | |
| ; CHECK: --> %d | |
| %E = shl i64 %x, -1 | |
| ; CHECK: --> %E | |
| %e = ashr i64 %E, -1 | |
| ; CHECK: --> %e | |
| %f = lshr i64 %x, -1 | |
| ; CHECK: --> %f | |
| %g = shl i64 %x, -1 | |
| ; CHECK: --> %g | |
| %h = bitcast i64 undef to i64 | |
| ; CHECK: --> undef | |
| ret void | |
| } |