brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · cce191f Raw
100 lines · plain
1; RUN: opt < %s -passes=gvn-sink -S | FileCheck %s2 3; Check that nonnull metadata for non-dominating loads is not propagated.4; CHECK-LABEL: @test1(5; CHECK-LABEL: if.end:6; CHECK:  %[[ptr:.*]] = phi ptr7; CHECK: %[[load:.*]] = load ptr, ptr %[[ptr]]8; CHECK-NOT: !nonnull9; CHECK: ret ptr %[[load]]10define ptr @test1(i1 zeroext %flag, ptr %p) {11entry:12  br i1 %flag, label %if.then, label %if.else13 14if.then:15  %a = load ptr, ptr %p16  %aa = load ptr, ptr %a, !nonnull !017  br label %if.end18 19if.else:20  %b = load ptr, ptr %p21  %bb= load ptr, ptr %b22  br label %if.end23 24if.end:25  %c = phi ptr [ %aa, %if.then ], [ %bb, %if.else ]26  ret ptr %c27}28 29; CHECK-LABEL: @test2(30; CHECK-LABEL: if.end:31; CHECK:  %[[ptr:.*]] = phi ptr32; CHECK: %[[load:.*]] = load ptr, ptr %[[ptr]]33; CHECK-NOT: !nonnull34; CHECK: ret ptr %[[load]]35define ptr @test2(i1 zeroext %flag, ptr %p) {36entry:37  br i1 %flag, label %if.then, label %if.else38 39if.then:40  %a = load ptr, ptr %p41  %aa = load ptr, ptr %a42  br label %if.end43 44if.else:45  %b = load ptr, ptr %p46  %bb= load ptr, ptr %b, !nonnull !047  br label %if.end48 49if.end:50  %c = phi ptr [ %aa, %if.then ], [ %bb, %if.else ]51  ret ptr %c52}53 54; Check that nontemporal markings are propagated if both original stores are55; marked.56; CHECK-LABEL: @nontemporal(57; CHECK-LABEL: if.end:58; CHECK: !nontemporal59; CHECK: ret void60define void @nontemporal(i1 zeroext %flag, ptr %p) {61entry:62  br i1 %flag, label %if.then, label %if.else63 64if.then:65  %a = load ptr, ptr %p66  store ptr %p, ptr %a, align 8, !nontemporal !167  br label %if.end68 69if.else:70  %b = load ptr, ptr %p71  store ptr %p, ptr %b, align 8, !nontemporal !172  br label %if.end73 74if.end:75  ret void76}77 78; CHECK-LABEL: @nontemporal_mismatch(79; CHECK-NOT: !nontemporal80define void @nontemporal_mismatch(i1 zeroext %flag, ptr %p) {81entry:82  br i1 %flag, label %if.then, label %if.else83 84if.then:85  %a = load ptr, ptr %p86  store ptr %p, ptr %a, align 887  br label %if.end88 89if.else:90  %b = load ptr, ptr %p91  store ptr %p, ptr %b, align 8, !nontemporal !192  br label %if.end93 94if.end:95  ret void96}97 98!0 = !{}99!1 = !{i32 1}100