diff options
author | Shuxin Yang <shuxin.llvm@gmail.com> | 2013-04-01 18:13:05 +0000 |
---|---|---|
committer | Shuxin Yang <shuxin.llvm@gmail.com> | 2013-04-01 18:13:05 +0000 |
commit | ad26993e1a9b147c3ca4b170ab2eba260f89a1ac (patch) | |
tree | b3d65702ef7fa712ed88ab6840977dc172e4521a | |
parent | f28a29b776b7dc2b97d09c75d69494f862c216b3 (diff) |
Correct assertion condition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178484 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/Scalar/Reassociate.cpp | 2 | ||||
-rw-r--r-- | test/Transforms/Reassociate/xor_reassoc.ll | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp index 493930b388..1f343136e5 100644 --- a/lib/Transforms/Scalar/Reassociate.cpp +++ b/lib/Transforms/Scalar/Reassociate.cpp @@ -199,7 +199,7 @@ namespace { } XorOpnd::XorOpnd(Value *V) { - assert(!isa<Constant>(V) && "No constant"); + assert(!isa<ConstantInt>(V) && "No ConstantInt"); OrigVal = V; Instruction *I = dyn_cast<Instruction>(V); SymbolicRank = 0; diff --git a/test/Transforms/Reassociate/xor_reassoc.ll b/test/Transforms/Reassociate/xor_reassoc.ll index 380eba562c..d371a9b5b6 100644 --- a/test/Transforms/Reassociate/xor_reassoc.ll +++ b/test/Transforms/Reassociate/xor_reassoc.ll @@ -149,3 +149,18 @@ define i32 @xor_ra_size2(i32 %x) { ;CHECK: %or1 = or i32 %x, 456 ;CHECK: %xor = xor i32 %or, %or1 } + + +; ========================================================================== +; +; Xor reassociation bugs +; +; ========================================================================== + +@xor_bug1_data = external global <{}>, align 4 +define void @xor_bug1() { + %1 = ptrtoint i32* undef to i64 + %2 = xor i64 %1, ptrtoint (<{}>* @xor_bug1_data to i64) + %3 = and i64 undef, %2 + ret void +} |