; RUN: opt < %s -basicaa -sink -S | FileCheck %s | |
@A = external global i32 | |
@B = external global i32 | |
; Sink should sink the load past the store (which doesn't overlap) into | |
; the block that uses it. | |
; CHECK: @foo | |
; CHECK: true: | |
; CHECK-NEXT: %l = load i32* @A | |
; CHECK-NEXT: ret i32 %l | |
define i32 @foo(i1 %z) { | |
%l = load i32* @A | |
store i32 0, i32* @B | |
br i1 %z, label %true, label %false | |
true: | |
ret i32 %l | |
false: | |
ret i32 0 | |
} |