171 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=instcombine -S < %s | FileCheck %s3 4define void @test01(ptr %ptr0, ptr %ptr1) {5; CHECK-LABEL: @test01(6; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 17; CHECK-NEXT: store i8 43, ptr [[PTR1:%.*]], align 18; CHECK-NEXT: ret void9;10 call void @llvm.experimental.noalias.scope.decl(metadata !0)11 store i8 42, ptr %ptr012 store i8 43, ptr %ptr113 ret void14}15 16define void @test02_keep(ptr %ptr0, ptr %ptr1) {17; CHECK-LABEL: @test02_keep(18; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata !0)19; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !020; CHECK-NEXT: store i8 43, ptr [[PTR1:%.*]], align 1, !noalias !321; CHECK-NEXT: ret void22;23 call void @llvm.experimental.noalias.scope.decl(metadata !0)24 store i8 42, ptr %ptr0, !alias.scope !025 store i8 43, ptr %ptr1, !noalias !526 ret void27}28 29define void @test03(ptr %ptr0, ptr %ptr1) {30; CHECK-LABEL: @test03(31; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !532; CHECK-NEXT: store i8 43, ptr [[PTR1:%.*]], align 1, !noalias !333; CHECK-NEXT: ret void34;35 call void @llvm.experimental.noalias.scope.decl(metadata !0)36 store i8 42, ptr %ptr0, !alias.scope !337 store i8 43, ptr %ptr1, !noalias !538 ret void39}40 41define void @test04_keep(ptr %ptr0, ptr %ptr1) {42; CHECK-LABEL: @test04_keep(43; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata !0)44; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !345; CHECK-NEXT: store i8 43, ptr [[PTR1:%.*]], align 1, !noalias !346; CHECK-NEXT: ret void47;48 call void @llvm.experimental.noalias.scope.decl(metadata !0)49 store i8 42, ptr %ptr0, !alias.scope !550 store i8 43, ptr %ptr1, !noalias !551 ret void52}53 54define void @test05_keep(ptr %ptr0, ptr %ptr1) {55; CHECK-LABEL: @test05_keep(56; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata !0)57; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !358; CHECK-NEXT: store i8 43, ptr [[PTR1:%.*]], align 1, !noalias !059; CHECK-NEXT: ret void60;61 call void @llvm.experimental.noalias.scope.decl(metadata !0)62 store i8 42, ptr %ptr0, !alias.scope !563 store i8 43, ptr %ptr1, !noalias !064 ret void65}66 67define void @test06(ptr %ptr0, ptr %ptr1) {68; CHECK-LABEL: @test06(69; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !370; CHECK-NEXT: store i8 43, ptr [[PTR1:%.*]], align 1, !noalias !571; CHECK-NEXT: ret void72;73 call void @llvm.experimental.noalias.scope.decl(metadata !0)74 store i8 42, ptr %ptr0, !alias.scope !575 store i8 43, ptr %ptr1, !noalias !376 ret void77}78 79define void @test07(ptr %ptr0, ptr %ptr1) {80; CHECK-LABEL: @test07(81; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !082; CHECK-NEXT: store i8 43, ptr [[PTR1:%.*]], align 1, !noalias !583; CHECK-NEXT: ret void84;85 call void @llvm.experimental.noalias.scope.decl(metadata !0)86 store i8 42, ptr %ptr0, !alias.scope !087 store i8 43, ptr %ptr1, !noalias !388 ret void89}90 91define void @test08(ptr %ptr0, ptr %ptr1) {92; CHECK-LABEL: @test08(93; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !594; CHECK-NEXT: store i8 43, ptr [[PTR1:%.*]], align 1, !noalias !095; CHECK-NEXT: ret void96;97 call void @llvm.experimental.noalias.scope.decl(metadata !0)98 store i8 42, ptr %ptr0, !alias.scope !399 store i8 43, ptr %ptr1, !noalias !0100 ret void101}102 103define void @test11(ptr %ptr0) {104; CHECK-LABEL: @test11(105; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !0106; CHECK-NEXT: ret void107;108 call void @llvm.experimental.noalias.scope.decl(metadata !0)109 store i8 42, ptr %ptr0, !alias.scope !0110 ret void111}112 113define void @test12(ptr %ptr0) {114; CHECK-LABEL: @test12(115; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !5116; CHECK-NEXT: ret void117;118 call void @llvm.experimental.noalias.scope.decl(metadata !0)119 store i8 42, ptr %ptr0, !alias.scope !3120 ret void121}122 123define void @test13(ptr %ptr0) {124; CHECK-LABEL: @test13(125; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !alias.scope !3126; CHECK-NEXT: ret void127;128 call void @llvm.experimental.noalias.scope.decl(metadata !0)129 store i8 42, ptr %ptr0, !alias.scope !5130 ret void131}132 133define void @test14(ptr %ptr0) {134; CHECK-LABEL: @test14(135; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !noalias !0136; CHECK-NEXT: ret void137;138 call void @llvm.experimental.noalias.scope.decl(metadata !0)139 store i8 42, ptr %ptr0, !noalias !0140 ret void141}142 143define void @test15(ptr %ptr0) {144; CHECK-LABEL: @test15(145; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !noalias !5146; CHECK-NEXT: ret void147;148 call void @llvm.experimental.noalias.scope.decl(metadata !0)149 store i8 42, ptr %ptr0, !noalias !3150 ret void151}152 153define void @test16(ptr %ptr0) {154; CHECK-LABEL: @test16(155; CHECK-NEXT: store i8 42, ptr [[PTR0:%.*]], align 1, !noalias !3156; CHECK-NEXT: ret void157;158 call void @llvm.experimental.noalias.scope.decl(metadata !0)159 store i8 42, ptr %ptr0, !noalias !5160 ret void161}162 163declare void @llvm.experimental.noalias.scope.decl(metadata)164 165!0 = !{ !1 }166!1 = distinct !{ !1, !2 }167!2 = distinct !{ !2 }168!3 = !{ !4 }169!4 = distinct !{ !4, !2 }170!5 = !{ !1, !4 }171