1 ; RUN: opt < %s -basicaa -sink -S | FileCheck %s
3 @A = external global i32
4 @B = external global i32
6 ; Sink should sink the load past the store (which doesn't overlap) into
7 ; the block that uses it.
11 ; CHECK-NEXT: %l = load i32* @A
12 ; CHECK-NEXT: ret i32 %l
14 define i32 @foo(i1 %z) {
17 br i1 %z, label %true, label %false
24 ; But don't sink volatile loads...
27 ; CHECK: load volatile
28 ; CHECK-NEXT: store i32
30 define i32 @foo2(i1 %z) {
31 %l = load volatile i32* @A
33 br i1 %z, label %true, label %false