Add scoped-noalias metadata
[oota-llvm.git] / test / Transforms / GVN / invariant-load.ll
1 ; Test if the !invariant.load metadata is maintained by GVN.
2 ; RUN: opt -basicaa -gvn -S < %s | FileCheck %s
3
4 define i32 @test1(i32* nocapture %p, i8* nocapture %q) {
5 ; CHECK-LABEL: test1
6 ; CHECK: %x = load i32* %p, align 4, !invariant.load !0
7 ; CHECK-NOT: %y = load
8 entry:
9   %x = load i32* %p, align 4, !invariant.load !0
10   %conv = trunc i32 %x to i8
11   store i8 %conv, i8* %q, align 1
12   %y = load i32* %p, align 4, !invariant.load !0
13   %add = add i32 %y, 1
14   ret i32 %add
15 }
16
17 define i32 @test2(i32* nocapture %p, i8* nocapture %q) {
18 ; CHECK-LABEL: test2
19 ; CHECK-NOT: !invariant.load
20 ; CHECK-NOT: %y = load
21 entry:
22   %x = load i32* %p, align 4
23   %conv = trunc i32 %x to i8
24   store i8 %conv, i8* %q, align 1
25   %y = load i32* %p, align 4, !invariant.load !0
26   %add = add i32 %y, 1
27   ret i32 %add
28 }
29
30 !0 = metadata !{ }
31