+invoke.cont16: ; preds = %if.then14
+ %arrayidx18 = getelementptr inbounds i8, i8* %call17, i64 %dec
+ store i8 0, i8* %arrayidx18
+ unreachable
+
+lpad: ; preds = %if.end19, %if.then14, %if.end, %entry
+ %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
+ cleanup
+ unreachable
+}
+declare i8* @_ZNK18G__FastAllocString4dataEv() nounwind
+
+
+; PR10605 / rdar://9930964 - Don't fold loads incorrectly. The load should
+; happen before the store.
+define i32 @test7({i32,i32,i32}* %tmp1, i32 %tmp71, i32 %tmp63) nounwind {
+; X64-LABEL: test7:
+; X64: movl 8({{%rdi|%rcx}}), %eax
+; X64: movl $4, 8({{%rdi|%rcx}})
+
+
+ %tmp29 = getelementptr inbounds {i32,i32,i32}, {i32,i32,i32}* %tmp1, i32 0, i32 2
+ %tmp30 = load i32, i32* %tmp29, align 4
+
+ %p2 = getelementptr inbounds {i32,i32,i32}, {i32,i32,i32}* %tmp1, i32 0, i32 2
+ store i32 4, i32* %p2
+
+ %tmp72 = or i32 %tmp71, %tmp30
+ %tmp73 = icmp ne i32 %tmp63, 32
+ br i1 %tmp73, label %T, label %F
+
+T:
+ ret i32 %tmp72
+
+F:
+ ret i32 4
+}
+
+declare i32 @__gxx_personality_v0(...)