Merging r261039:
[oota-llvm.git] / test / CodeGen / X86 / codegen-prepare.ll
index 316accfa41ac9ae5f79ad647f7121924dff1d616..e58bc22ef142140202842aa7a9192e312a7d42e9 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: llc < %s -mtriple=x86_64-pc-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-pc-linux -addr-sink-using-gep=1 | FileCheck %s
 
 ; Check that the CodeGenPrepare Pass
 ; does not wrongly rewrite the address computed by Instruction %4
 define linkonce_odr void @foo(%class.A* nocapture %this, i32 %BoolValue) nounwind uwtable {
 entry:
   %cmp = icmp eq i32 %BoolValue, 0
-  %address1 = getelementptr inbounds %class.A* %this, i64 0, i32 0, i32 3
-  %address2 = getelementptr inbounds %class.A* %this, i64 0, i32 0, i32 1
+  %address1 = getelementptr inbounds %class.A, %class.A* %this, i64 0, i32 0, i32 3
+  %address2 = getelementptr inbounds %class.A, %class.A* %this, i64 0, i32 0, i32 1
   br i1 %cmp, label %if.else, label %if.then
 
 if.then:                                         ; preds = %entry
-  %0 = getelementptr inbounds %class.D* %address2, i64 0, i32 0, i64 0, i32 0
-  %1 = load float* %0, align 4 
-  %2 = getelementptr inbounds float* %0, i64 3
-  %3 = load float* %2, align 4 
-  %4 = getelementptr inbounds %class.D* %address1, i64 0, i32 0, i64 0, i32 0
+  %0 = getelementptr inbounds %class.D, %class.D* %address2, i64 0, i32 0, i64 0, i32 0
+  %1 = load float, float* %0, align 4 
+  %2 = getelementptr inbounds float, float* %0, i64 3
+  %3 = load float, float* %2, align 4 
+  %4 = getelementptr inbounds %class.D, %class.D* %address1, i64 0, i32 0, i64 0, i32 0
   store float %1, float* %4, align 4
   br label %if.end