41 lines · plain
1; RUN: opt -S -O2 -enable-gvn-hoist < %s | FileCheck %s2 3; Check that the inlined loads are hoisted.4; CHECK-LABEL: define i32 @fun(5; CHECK-LABEL: entry:6; CHECK: load i32, ptr @A7; CHECK: if.then:8 9@A = external global i3210@B = external global i3211@C = external global i3212@D = external global i3213@E = external global i3214 15define i32 @loadA() {16 %a = load i32, ptr @A17 ret i32 %a18}19 20define i32 @fun(i1 %c) {21entry:22 br i1 %c, label %if.then, label %if.else23 24if.then:25 store i32 1, ptr @B26 %call1 = call i32 @loadA()27 store i32 2, ptr @C28 br label %if.endif29 30if.else:31 store i32 2, ptr @D32 %call2 = call i32 @loadA()33 store i32 1, ptr @E34 br label %if.endif35 36if.endif:37 %ret = phi i32 [ %call1, %if.then ], [ %call2, %if.else ]38 ret i32 %ret39}40 41