brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 274c891 Raw
181 lines · plain
1; RUN: opt < %s -aa-pipeline=basic-aa -passes=aa-eval -print-all-alias-modref-info -disable-output 2>&1 | FileCheck %s2 3; CHECK: Function: t14; CHECK: NoAlias: i32* %gep1, i32* %gep25define void @t1(ptr %p, i32 %addend, ptr %q) {6  %knownnonzero = load i32, ptr %q, !range !07  %add = add nsw nuw i32 %addend, %knownnonzero8  %gep1 = getelementptr [8 x i32], ptr %p, i32 2, i32 %addend9  %gep2 = getelementptr [8 x i32], ptr %p, i32 2, i32 %add10  load i32, ptr %gep111  load i32, ptr %gep212  ret void13}14 15; CHECK: Function: t216; CHECK: MayAlias: i32* %gep1, i32* %gep217define void @t2(ptr %p, i32 %addend, ptr %q) {18  %knownnonzero = load i32, ptr %q, !range !019  %add = add nsw nuw i32 %addend, %knownnonzero20  %gep1 = getelementptr [8 x i32], ptr %p, i32 1, i32 %addend21  %gep2 = getelementptr [8 x i32], ptr %p, i32 0, i32 %add22  load i32, ptr %gep123  load i32, ptr %gep224  ret void25}26 27; CHECK: Function: t328; CHECK: MustAlias: i32* %gep1, i32* %gep229define void @t3(ptr %p, i32 %addend, ptr %q) {30  %knownnonzero = load i32, ptr %q, !range !031  %add = add nsw nuw i32 %addend, %knownnonzero32  %gep1 = getelementptr [8 x i32], ptr %p, i32 0, i32 %add33  %gep2 = getelementptr [8 x i32], ptr %p, i32 0, i32 %add34  load i32, ptr %gep135  load i32, ptr %gep236  ret void37}38 39; CHECK: Function: t440; CHECK: MayAlias: i32* %gep1, i32* %gep241define void @t4(ptr %p, i32 %addend, ptr %q) {42  %knownnonzero = load i32, ptr %q, !range !043  %add = add nsw nuw i32 %addend, %knownnonzero44  %gep1 = getelementptr [8 x i32], ptr %p, i32 1, i32 %addend45  %gep2 = getelementptr [8 x i32], ptr %p, i32 %add, i32 %add46  load i32, ptr %gep147  load i32, ptr %gep248  ret void49}50 51; CHECK: Function: t552; CHECK: MayAlias: i64* %gep1, i32* %gep253define void @t5(ptr %p, i32 %addend, ptr %q) {54  %knownnonzero = load i32, ptr %q, !range !055  %add = add nsw nuw i32 %addend, %knownnonzero56  %gep1 = getelementptr [8 x i32], ptr %p, i32 2, i32 %addend57  %gep2 = getelementptr [8 x i32], ptr %p, i32 2, i32 %add58  load i32, ptr %gep259  load i64, ptr %gep160  ret void61}62 63; CHECK-LABEL: Function: add_non_zero_simple64; CHECK: NoAlias: i32* %gep1, i32* %gep265define void @add_non_zero_simple(ptr %p, i32 %addend, ptr %q) {66  %knownnonzero = load i32, ptr %q, !range !067  %add = add i32 %addend, %knownnonzero68  %gep1 = getelementptr i32, ptr %p, i32 %addend69  %gep2 = getelementptr i32, ptr %p, i32 %add70  load i32, ptr %gep171  load i32, ptr %gep272  ret void73}74 75; CHECK-LABEL: Function: add_non_zero_different_scales76; CHECK: MayAlias: i32* %gep1, i16* %gep277define void @add_non_zero_different_scales(ptr %p, i32 %addend, ptr %q) {78  %knownnonzero = load i32, ptr %q, !range !079  %add = add i32 %addend, %knownnonzero80  %gep1 = getelementptr i32, ptr %p, i32 %addend81  %gep2 = getelementptr i16, ptr %p, i32 %add82  load i32, ptr %gep183  load i16, ptr %gep284  ret void85}86 87; CHECK-LABEL: Function: add_non_zero_different_sizes88; CHECK: NoAlias: i16* %gep1, i32* %gep289; CHECK: NoAlias: i32* %gep1, i16* %gep290; CHECK: NoAlias: i16* %gep1, i16* %gep291; CHECK: MayAlias: i64* %gep1, i32* %gep292; CHECK: MayAlias: i64* %gep1, i16* %gep293; CHECK: MayAlias: i32* %gep1, i64* %gep294; CHECK: MayAlias: i16* %gep1, i64* %gep295; CHECK: MayAlias: i64* %gep1, i64* %gep296define void @add_non_zero_different_sizes(ptr %p, i32 %addend, ptr %q) {97  %knownnonzero = load i32, ptr %q, !range !098  %add = add i32 %addend, %knownnonzero99  %gep1 = getelementptr i32, ptr %p, i32 %addend100  %gep2 = getelementptr i32, ptr %p, i32 %add101  load i32, ptr %gep1102  load i32, ptr %gep2103  load i16, ptr %gep1104  load i16, ptr %gep2105  load i64, ptr %gep1106  load i64, ptr %gep2107  ret void108}109 110 111; CHECK-LABEL: add_non_zero_with_offset112; MayAlias: ptr %gep1, ptr %gep2113; NoAlias: ptr %gep1, ptr %gep2114define void @add_non_zero_with_offset(ptr %p, i32 %addend, ptr %q) {115  %knownnonzero = load i32, ptr %q, !range !0116  %add = add i32 %addend, %knownnonzero117  %p.off.8 = getelementptr i8, ptr %p, i32 2118  %gep1 = getelementptr i32, ptr %p.off.8, i32 %addend119  %gep2 = getelementptr i32, ptr %p, i32 %add120  load i32, ptr %gep1121  load i32, ptr %gep2122  load i16, ptr %gep1123  load i16, ptr %gep2124  ret void125}126 127; CHECK-LABEL: Function: add_non_zero_assume128; CHECK: NoAlias: i32* %gep1, i32* %gep2129define void @add_non_zero_assume(ptr %p, i32 %addend, i32 %knownnonzero) {130  %cmp = icmp ne i32 %knownnonzero, 0131  call void @llvm.assume(i1 %cmp)132  %add = add i32 %addend, %knownnonzero133  %gep1 = getelementptr i32, ptr %p, i32 %addend134  %gep2 = getelementptr i32, ptr %p, i32 %add135  load i32, ptr %gep1136  load i32, ptr %gep2137  ret void138}139 140; CHECK-LABEL: non_zero_index_simple141; CHECK: NoAlias: i32* %gep, i32* %p142; CHECK: NoAlias: i16* %gep, i32* %p143; CHECK: MayAlias: i64* %gep, i32* %p144define void @non_zero_index_simple(ptr %p, ptr %q) {145  %knownnonzero = load i32, ptr %q, !range !0146  %gep = getelementptr i32, ptr %p, i32 %knownnonzero147  load i32, ptr %p148  load i32, ptr %gep149  load i16, ptr %gep150  load i64, ptr %gep151  ret void152}153 154; CHECK-LABEL: non_zero_index_with_offset155; CHECK: MayAlias: i32* %gep, i32* %p156; CHECK: NoAlias: i16* %gep, i32* %p157define void @non_zero_index_with_offset(ptr %p, ptr %q) {158  %knownnonzero = load i32, ptr %q, !range !0159  %p.off.8 = getelementptr i8, ptr %p, i32 2160  %gep = getelementptr i32, ptr %p.off.8, i32 %knownnonzero161  load i32, ptr %p162  load i32, ptr %gep163  load i16, ptr %gep164  ret void165}166 167; CHECK-LABEL: non_zero_index_assume168; CHECK: NoAlias: i32* %gep, i32* %p169define void @non_zero_index_assume(ptr %p, i32 %knownnonzero) {170  %cmp = icmp ne i32 %knownnonzero, 0171  call void @llvm.assume(i1 %cmp)172  %gep = getelementptr i32, ptr %p, i32 %knownnonzero173  load i32, ptr %p174  load i32, ptr %gep175  ret void176}177 178declare void @llvm.assume(i1)179 180!0 = !{ i32 1, i32 0 }181