brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 974e87a Raw
79 lines · plain
1; RUN: opt -passes=inline -enable-noalias-to-md-conversion -S < %s | FileCheck %s2target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"3target triple = "x86_64-unknown-linux-gnu"4 5define void @hello(ptr noalias nocapture %a, ptr nocapture readonly %c) #0 {6entry:7  %0 = load float, ptr %c, align 48  %arrayidx = getelementptr inbounds float, ptr %a, i64 59  store float %0, ptr %arrayidx, align 410  ret void11}12 13define void @foo(ptr nocapture %a, ptr nocapture readonly %c) #0 {14entry:15  tail call void @hello(ptr %a, ptr %c)16  %0 = load float, ptr %c, align 417  %arrayidx = getelementptr inbounds float, ptr %a, i64 718  store float %0, ptr %arrayidx, align 419  ret void20}21 22; CHECK-LABEL: define void @foo(ptr captures(none) %a, ptr readonly captures(none) %c) #0 {23; CHECK: entry:24; CHECK:   call void @llvm.experimental.noalias.scope.decl25; CHECK:   [[TMP0:%.+]] = load float, ptr %c, align 4, !noalias !026; CHECK:   %arrayidx.i = getelementptr inbounds float, ptr %a, i64 527; CHECK:   store float [[TMP0]], ptr %arrayidx.i, align 4, !alias.scope !028; CHECK:   [[TMP1:%.+]] = load float, ptr %c, align 429; CHECK:   %arrayidx = getelementptr inbounds float, ptr %a, i64 730; CHECK:   store float [[TMP1]], ptr %arrayidx, align 431; CHECK:   ret void32; CHECK: }33 34define void @hello2(ptr noalias nocapture %a, ptr noalias nocapture %b, ptr nocapture readonly %c) #0 {35entry:36  %0 = load float, ptr %c, align 437  %arrayidx = getelementptr inbounds float, ptr %a, i64 538  store float %0, ptr %arrayidx, align 439  %arrayidx1 = getelementptr inbounds float, ptr %b, i64 840  store float %0, ptr %arrayidx1, align 441  ret void42}43 44define void @foo2(ptr nocapture %a, ptr nocapture %b, ptr nocapture readonly %c) #0 {45entry:46  tail call void @hello2(ptr %a, ptr %b, ptr %c)47  %0 = load float, ptr %c, align 448  %arrayidx = getelementptr inbounds float, ptr %a, i64 749  store float %0, ptr %arrayidx, align 450  ret void51}52 53; CHECK-LABEL: define void @foo2(ptr captures(none) %a, ptr captures(none) %b, ptr readonly captures(none) %c) #0 {54; CHECK: entry:55; CHECK:   call void @llvm.experimental.noalias.scope.decl(metadata !3)56; CHECK:   call void @llvm.experimental.noalias.scope.decl(metadata !6)57; CHECK:   [[TMP0:%.+]] = load float, ptr %c, align 4, !noalias !858; CHECK:   %arrayidx.i = getelementptr inbounds float, ptr %a, i64 559; CHECK:   store float [[TMP0]], ptr %arrayidx.i, align 4, !alias.scope !3, !noalias !660; CHECK:   %arrayidx1.i = getelementptr inbounds float, ptr %b, i64 861; CHECK:   store float [[TMP0]], ptr %arrayidx1.i, align 4, !alias.scope !6, !noalias !362; CHECK:   [[TMP1:%.+]] = load float, ptr %c, align 463; CHECK:   %arrayidx = getelementptr inbounds float, ptr %a, i64 764; CHECK:   store float [[TMP1]], ptr %arrayidx, align 465; CHECK:   ret void66; CHECK: }67 68attributes #0 = { nounwind uwtable }69 70; CHECK: !0 = !{!1}71; CHECK: !1 = distinct !{!1, !2, !"hello: %a"}72; CHECK: !2 = distinct !{!2, !"hello"}73; CHECK: !3 = !{!4}74; CHECK: !4 = distinct !{!4, !5, !"hello2: %a"}75; CHECK: !5 = distinct !{!5, !"hello2"}76; CHECK: !6 = !{!7}77; CHECK: !7 = distinct !{!7, !5, !"hello2: %b"}78; CHECK: !8 = !{!4, !7}79