diff --git a/llvm/test/Transforms/GVN/clobber-partial-alias.ll b/llvm/test/Transforms/GVN/clobber-partial-alias.ll new file mode 100644 --- /dev/null +++ b/llvm/test/Transforms/GVN/clobber-partial-alias.ll @@ -0,0 +1,17 @@ +; RUN: opt -gvn -S < %s | FileCheck %s + +define float @foo(float* %arg, i32 %i) { +bb: + %i2 = zext i32 %i to i64 + %i3 = getelementptr inbounds float, float* %arg, i64 %i2 + %i4 = bitcast float* %i3 to <2 x float>* + %i5 = load <2 x float>, <2 x float>* %i4, align 16 + %i7 = add nuw nsw i32 %i, 1 + %i8 = zext i32 %i7 to i64 + %i9 = getelementptr inbounds float, float* %arg, i64 %i8 +; CHECK-NOT: load float, float* + %i10 = load float, float* %i9, align 4 + %i16 = extractelement <2 x float> %i5, i32 0 + %i17 = fmul float %i16, %i10 + ret float %i17 +}