From 91b2307a89b836f9452cf867e077ce9762d0845b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 18 Aug 2010 04:28:19 +0000 Subject: fix PR7589: In brief: gep P, (zext x) != gep P, (sext x) DecomposeGEPExpression was getting this wrong, confusing basicaa. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111352 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Analysis/BasicAA/featuretest.ll | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'test/Analysis') diff --git a/test/Analysis/BasicAA/featuretest.ll b/test/Analysis/BasicAA/featuretest.ll index ce71e9a..47d278f 100644 --- a/test/Analysis/BasicAA/featuretest.ll +++ b/test/Analysis/BasicAA/featuretest.ll @@ -104,3 +104,24 @@ define i32 @constexpr_test() { ; CHECK: @constexpr_test ; CHECK: ret i32 0 } + + + +; PR7589 +; These two index expressions are different, this cannot be CSE'd. +define i16 @zext_sext_confusion(i16* %row2col, i5 %j) nounwind{ +entry: + %sum5.cast = zext i5 %j to i64 ; [#uses=1] + %P1 = getelementptr i16* %row2col, i64 %sum5.cast + %row2col.load.1.2 = load i16* %P1, align 1 ; [#uses=1] + + %sum13.cast31 = sext i5 %j to i6 ; [#uses=1] + %sum13.cast = zext i6 %sum13.cast31 to i64 ; [#uses=1] + %P2 = getelementptr i16* %row2col, i64 %sum13.cast + %row2col.load.1.6 = load i16* %P2, align 1 ; [#uses=1] + + %.ret = sub i16 %row2col.load.1.6, %row2col.load.1.2 ; [#uses=1] + ret i16 %.ret +; CHECK: @zext_sext_confusion +; CHECK: ret i16 %.ret +} -- cgit v1.1