1; RUN: opt -passes=gvn -S < %s | FileCheck %s 2 3define i32 @test1(ptr %p, ptr %q) { 4; CHECK-LABEL: @test1(ptr %p, ptr %q) 5; CHECK: load i32, ptr %p, align 4, !noalias ![[SCOPE1:[0-9]+]] 6; CHECK: %c = add i32 %a, %a 7 %a = load i32, ptr %p, !noalias !3 8 %b = load i32, ptr %p 9 %c = add i32 %a, %b 10 ret i32 %c 11} 12 13define i32 @test2(ptr %p, ptr %q) { 14; CHECK-LABEL: @test2(ptr %p, ptr %q) 15; CHECK: load i32, ptr %p, align 4, !alias.scope ![[SCOPE1]] 16; CHECK: %c = add i32 %a, %a 17 %a = load i32, ptr %p, !alias.scope !3 18 %b = load i32, ptr %p, !alias.scope !3 19 %c = add i32 %a, %b 20 ret i32 %c 21} 22 23define i32 @test3(ptr %p, ptr %q) { 24; CHECK-LABEL: @test3(ptr %p, ptr %q) 25; CHECK: load i32, ptr %p, align 4, !alias.scope ![[SCOPE2:[0-9]+]] 26; CHECK: %c = add i32 %a, %a 27 %a = load i32, ptr %p, !alias.scope !4 28 %b = load i32, ptr %p, !alias.scope !5 29 %c = add i32 %a, %b 30 ret i32 %c 31} 32 33; CHECK: ![[SCOPE1]] = !{!{{[0-9]+}}} 34; CHECK: ![[SCOPE2]] = !{!{{[0-9]+}}} 35declare i32 @foo(ptr) readonly 36 37!0 = distinct !{!0, !2, !"callee0: %a"} 38!1 = distinct !{!1, !2, !"callee0: %b"} 39!2 = distinct !{!2, !"callee0"} 40 41!3 = !{!0} 42!4 = !{!1} 43!5 = !{!0, !1} 44