blob: a8a17e5f90bf15272062facde7392e560128d319 [file] [log] [blame]
Hal Finkel94146652014-07-24 14:25:39 +00001; RUN: opt < %s -basicaa -scoped-noalias -aa-eval -evaluate-aa-metadata -print-all-alias-modref-info -disable-output 2>&1 | FileCheck %s
2target 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 @foo2(float* nocapture %a, float* nocapture %b, float* nocapture readonly %c) #0 {
6entry:
7; CHECK-LABEL: Function: foo2
David Blaikiea79ac142015-02-27 21:17:42 +00008 %0 = load float, float* %c, align 4, !alias.scope !0
David Blaikie79e6c742015-02-27 19:29:02 +00009 %arrayidx.i = getelementptr inbounds float, float* %a, i64 5
Hal Finkel029cde62014-07-25 15:50:02 +000010 store float %0, float* %arrayidx.i, align 4, !alias.scope !5, !noalias !4
David Blaikie79e6c742015-02-27 19:29:02 +000011 %arrayidx1.i = getelementptr inbounds float, float* %b, i64 8
Hal Finkel029cde62014-07-25 15:50:02 +000012 store float %0, float* %arrayidx1.i, align 4, !alias.scope !0, !noalias !5
David Blaikiea79ac142015-02-27 21:17:42 +000013 %1 = load float, float* %c, align 4
David Blaikie79e6c742015-02-27 19:29:02 +000014 %arrayidx = getelementptr inbounds float, float* %a, i64 7
Hal Finkel94146652014-07-24 14:25:39 +000015 store float %1, float* %arrayidx, align 4
16 ret void
17
David Blaikiea79ac142015-02-27 21:17:42 +000018; CHECK: MayAlias: %0 = load float, float* %c, align 4, !alias.scope !0 <-> store float %0, float* %arrayidx.i, align 4, !alias.scope !4, !noalia
Hal Finkel029cde62014-07-25 15:50:02 +000019; CHECK: s !5
David Blaikiea79ac142015-02-27 21:17:42 +000020; CHECK: MayAlias: %0 = load float, float* %c, align 4, !alias.scope !0 <-> store float %0, float* %arrayidx1.i, align 4, !alias.scope !0, !noali
Hal Finkel029cde62014-07-25 15:50:02 +000021; CHECK: as !4
David Blaikiea79ac142015-02-27 21:17:42 +000022; CHECK: MayAlias: %0 = load float, float* %c, align 4, !alias.scope !0 <-> store float %1, float* %arrayidx, align 4
23; CHECK: MayAlias: %1 = load float, float* %c, align 4 <-> store float %0, float* %arrayidx.i, align 4, !alias.scope !4, !noalias !5
24; CHECK: MayAlias: %1 = load float, float* %c, align 4 <-> store float %0, float* %arrayidx1.i, align 4, !alias.scope !0, !noalias !4
25; CHECK: MayAlias: %1 = load float, float* %c, align 4 <-> store float %1, float* %arrayidx, align 4
Hal Finkel029cde62014-07-25 15:50:02 +000026; CHECK: NoAlias: store float %0, float* %arrayidx1.i, align 4, !alias.scope !0, !noalias !4 <-> store float %0, float* %arrayidx.i, align
27; CHECK: 4, !alias.scope !4, !noalias !5
28; CHECK: NoAlias: store float %1, float* %arrayidx, align 4 <-> store float %0, float* %arrayidx.i, align 4, !alias.scope !4, !noalias !5
29; CHECK: MayAlias: store float %1, float* %arrayidx, align 4 <-> store float %0, float* %arrayidx1.i, align 4, !alias.scope !0, !noalias !
30; CHECK: 4
Hal Finkel94146652014-07-24 14:25:39 +000031}
32
33attributes #0 = { nounwind uwtable }
34
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +000035!0 = !{!1, !3}
36!1 = !{!1, !2, !"some scope"}
37!2 = !{!2, !"some domain"}
38!3 = !{!3, !2, !"some other scope"}
39!4 = !{!1}
40!5 = !{!3}
Hal Finkel94146652014-07-24 14:25:39 +000041