brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · e981e37 Raw
161 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2 3; The tests in this file check that we do not simplify based on metadata that is4; not available on all code paths.5 6; RUN: opt < %s -S -passes=newgvn | FileCheck %s7 8define i1 @test1(ptr %arg, i1 %arg2) {9; CHECK-LABEL: @test1(10; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]11; CHECK:       bb1:12; CHECK-NEXT:    [[LOAD1:%.*]] = load ptr, ptr [[ARG:%.*]], align 8, !nonnull [[META0:![0-9]+]]13; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq ptr [[LOAD1]], null14; CHECK-NEXT:    ret i1 [[CMP1]]15; CHECK:       bb2:16; CHECK-NEXT:    [[LOAD2:%.*]] = load ptr, ptr [[ARG]], align 817; CHECK-NEXT:    [[CMP2:%.*]] = icmp eq ptr [[LOAD2]], null18; CHECK-NEXT:    ret i1 [[CMP2]]19;20  br i1 %arg2, label %bb1, label %bb221 22bb1:23  %load1 = load ptr, ptr %arg, !nonnull !024  %cmp1 = icmp eq ptr %load1, null25  ret i1 %cmp126 27bb2:28  %load2 = load ptr, ptr %arg29  %cmp2 = icmp eq ptr %load2, null30  ret i1 %cmp231}32 33define i1 @test2(ptr %arg, i1 %arg2) {34; CHECK-LABEL: @test2(35; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]36; CHECK:       bb1:37; CHECK-NEXT:    [[LOAD1:%.*]] = load ptr, ptr [[ARG:%.*]], align 838; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq ptr [[LOAD1]], null39; CHECK-NEXT:    ret i1 [[CMP1]]40; CHECK:       bb2:41; CHECK-NEXT:    [[LOAD2:%.*]] = load ptr, ptr [[ARG]], align 8, !nonnull [[META0]]42; CHECK-NEXT:    [[CMP2:%.*]] = icmp eq ptr [[LOAD2]], null43; CHECK-NEXT:    ret i1 [[CMP2]]44;45  br i1 %arg2, label %bb1, label %bb246 47bb1:48  %load1 = load ptr, ptr %arg49  %cmp1 = icmp eq ptr %load1, null50  ret i1 %cmp151 52bb2:53  %load2 = load ptr, ptr %arg, !nonnull !054  %cmp2 = icmp eq ptr %load2, null55  ret i1 %cmp256}57 58 59define i1 @test3(ptr %ptr, i1 %arg2) {60; CHECK-LABEL: @test3(61; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]62; CHECK:       bb1:63; CHECK-NEXT:    [[LOAD1:%.*]] = load i32, ptr [[PTR:%.*]], align 4, !range [[RNG1:![0-9]+]]64; CHECK-NEXT:    [[CMP1:%.*]] = icmp ne i32 [[LOAD1]], 99965; CHECK-NEXT:    ret i1 [[CMP1]]66; CHECK:       bb2:67; CHECK-NEXT:    [[LOAD2:%.*]] = load i32, ptr [[PTR]], align 468; CHECK-NEXT:    [[CMP2:%.*]] = icmp ne i32 [[LOAD2]], 99969; CHECK-NEXT:    ret i1 [[CMP2]]70;71  br i1 %arg2, label %bb1, label %bb272 73bb1:74  %load1 = load i32, ptr %ptr, !range !175  %cmp1 = icmp ne i32 %load1, 99976  ret i1 %cmp177 78bb2:79  %load2 = load i32, ptr %ptr80  %cmp2 = icmp ne i32 %load2, 99981  ret i1 %cmp282}83 84define i1 @test4(ptr %ptr, i1 %arg2) {85; CHECK-LABEL: @test4(86; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]87; CHECK:       bb1:88; CHECK-NEXT:    [[LOAD1:%.*]] = load i32, ptr [[PTR:%.*]], align 489; CHECK-NEXT:    [[CMP1:%.*]] = icmp ne i32 [[LOAD1]], 99990; CHECK-NEXT:    ret i1 [[CMP1]]91; CHECK:       bb2:92; CHECK-NEXT:    [[LOAD2:%.*]] = load i32, ptr [[PTR]], align 4, !range [[RNG1]]93; CHECK-NEXT:    [[CMP2:%.*]] = icmp ne i32 [[LOAD2]], 99994; CHECK-NEXT:    ret i1 [[CMP2]]95;96  br i1 %arg2, label %bb1, label %bb297 98bb1:99  %load1 = load i32, ptr %ptr100  %cmp1 = icmp ne i32 %load1, 999101  ret i1 %cmp1102 103bb2:104  %load2 = load i32, ptr %ptr, !range !1105  %cmp2 = icmp ne i32 %load2, 999106  ret i1 %cmp2107}108 109define i1 @test5(ptr %ptr, i1 %arg2) {110; CHECK-LABEL: @test5(111; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]112; CHECK:       bb1:113; CHECK-NEXT:    [[LOAD1:%.*]] = load i32, ptr [[PTR:%.*]], align 4, !range [[RNG1]]114; CHECK-NEXT:    [[CMP1:%.*]] = icmp slt i32 [[LOAD1]], 999115; CHECK-NEXT:    ret i1 [[CMP1]]116; CHECK:       bb2:117; CHECK-NEXT:    [[LOAD2:%.*]] = load i32, ptr [[PTR]], align 4118; CHECK-NEXT:    [[CMP2:%.*]] = icmp slt i32 [[LOAD2]], 999119; CHECK-NEXT:    ret i1 [[CMP2]]120;121  br i1 %arg2, label %bb1, label %bb2122 123bb1:124  %load1 = load i32, ptr %ptr, !range !1125  %cmp1 = icmp slt i32 %load1, 999126  ret i1 %cmp1127 128bb2:129  %load2 = load i32, ptr %ptr130  %cmp2 = icmp slt i32 %load2, 999131  ret i1 %cmp2132}133 134define i1 @test6(ptr %ptr, i1 %arg2) {135; CHECK-LABEL: @test6(136; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]137; CHECK:       bb1:138; CHECK-NEXT:    [[LOAD1:%.*]] = load i32, ptr [[PTR:%.*]], align 4139; CHECK-NEXT:    [[CMP1:%.*]] = icmp slt i32 [[LOAD1]], 999140; CHECK-NEXT:    ret i1 [[CMP1]]141; CHECK:       bb2:142; CHECK-NEXT:    [[LOAD2:%.*]] = load i32, ptr [[PTR]], align 4, !range [[RNG1]]143; CHECK-NEXT:    [[CMP2:%.*]] = icmp slt i32 [[LOAD2]], 999144; CHECK-NEXT:    ret i1 [[CMP2]]145;146  br i1 %arg2, label %bb1, label %bb2147 148bb1:149  %load1 = load i32, ptr %ptr150  %cmp1 = icmp slt i32 %load1, 999151  ret i1 %cmp1152 153bb2:154  %load2 = load i32, ptr %ptr, !range !1155  %cmp2 = icmp slt i32 %load2, 999156  ret i1 %cmp2157}158 159!0 = !{}160!1 = !{ i32 10, i32 20 }161