diff options
author | Dan Gohman <gohman@apple.com> | 2010-04-22 01:35:11 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-04-22 01:35:11 +0000 |
commit | ddb3eafc32187af2ee2311a27344cb53d4307d63 (patch) | |
tree | af6c45c6f40a50f01aad706ea62df8f681ca1737 /test/Analysis | |
parent | 0883355976328699815a7e3ef2efba2a9fd81e02 (diff) | |
download | llvm-ddb3eafc32187af2ee2311a27344cb53d4307d63.tar.gz llvm-ddb3eafc32187af2ee2311a27344cb53d4307d63.tar.bz2 llvm-ddb3eafc32187af2ee2311a27344cb53d4307d63.tar.xz |
Don't attempt to analyze values which are obviously undef. This fixes some
assertion failures in extreme cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102042 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Analysis')
-rw-r--r-- | test/Analysis/ScalarEvolution/undefined.ll | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/Analysis/ScalarEvolution/undefined.ll b/test/Analysis/ScalarEvolution/undefined.ll new file mode 100644 index 0000000000..b1f44460af --- /dev/null +++ b/test/Analysis/ScalarEvolution/undefined.ll @@ -0,0 +1,39 @@ +; 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 +} |