brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 861fc9d Raw
178 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt %s -passes=newgvn -S | FileCheck %s3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"4target triple = "x86_64-unknown-linux-gnu"5 6define ptr @test1(ptr %v0, ptr %v1) {7; CHECK-LABEL: define ptr @test18; CHECK-SAME: (ptr [[V0:%.*]], ptr [[V1:%.*]]) {9; CHECK-NEXT:  top:10; CHECK-NEXT:    [[V2:%.*]] = load ptr, ptr [[V0]], align 811; CHECK-NEXT:    store ptr [[V2]], ptr [[V1]], align 812; CHECK-NEXT:    ret ptr [[V2]]13;14top:15  %v2 = load ptr, ptr %v0, !nonnull !016  store ptr %v2, ptr %v117  %v3 = load ptr, ptr %v118  ret ptr %v319}20 21; FIXME: could propagate nonnull to first load?22define ptr @test2(ptr %v0, ptr %v1) {23; CHECK-LABEL: define ptr @test224; CHECK-SAME: (ptr [[V0:%.*]], ptr [[V1:%.*]]) {25; CHECK-NEXT:  top:26; CHECK-NEXT:    [[V2:%.*]] = load ptr, ptr [[V0]], align 827; CHECK-NEXT:    store ptr [[V2]], ptr [[V1]], align 828; CHECK-NEXT:    ret ptr [[V2]]29;30top:31  %v2 = load ptr, ptr %v032  store ptr %v2, ptr %v133  %v3 = load ptr, ptr %v1, !nonnull !034  ret ptr %v335}36 37declare void @use1(ptr %a) readonly38 39define ptr @test3(ptr %v0, i1 %arg) {40; CHECK-LABEL: define ptr @test341; CHECK-SAME: (ptr [[V0:%.*]], i1 [[ARG:%.*]]) {42; CHECK-NEXT:  top:43; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[V0]], align 844; CHECK-NEXT:    call void @use1(ptr [[V1]])45; CHECK-NEXT:    br i1 [[ARG]], label [[BB1:%.*]], label [[BB2:%.*]]46; CHECK:       bb1:47; CHECK-NEXT:    ret ptr [[V1]]48; CHECK:       bb2:49; CHECK-NEXT:    ret ptr [[V1]]50;51top:52  %v1 = load ptr, ptr %v053  call void @use1(ptr %v1)54  br i1 %arg, label %bb1, label %bb255 56bb1:57  %v2 = load ptr, ptr %v0, !nonnull !058  ret ptr %v259 60bb2:61  %v3 = load ptr, ptr %v062  ret ptr %v363}64 65define ptr @test4(ptr %v0, i1 %arg) {66; CHECK-LABEL: define ptr @test467; CHECK-SAME: (ptr [[V0:%.*]], i1 [[ARG:%.*]]) {68; CHECK-NEXT:  top:69; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[V0]], align 870; CHECK-NEXT:    call void @use1(ptr [[V1]])71; CHECK-NEXT:    br i1 [[ARG]], label [[BB1:%.*]], label [[BB2:%.*]]72; CHECK:       bb1:73; CHECK-NEXT:    ret ptr [[V1]]74; CHECK:       bb2:75; CHECK-NEXT:    ret ptr [[V1]]76;77top:78  %v1 = load ptr, ptr %v079  call void @use1(ptr %v1)80  br i1 %arg, label %bb1, label %bb281 82bb1:83  %v2 = load ptr, ptr %v084  ret ptr %v285 86bb2:87  %v3 = load ptr, ptr %v0, !nonnull !088  ret ptr %v389}90 91define ptr @test5(ptr %v0, i1 %arg) {92; CHECK-LABEL: define ptr @test593; CHECK-SAME: (ptr [[V0:%.*]], i1 [[ARG:%.*]]) {94; CHECK-NEXT:  top:95; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[V0]], align 896; CHECK-NEXT:    call void @use1(ptr [[V1]])97; CHECK-NEXT:    br i1 [[ARG]], label [[BB1:%.*]], label [[BB2:%.*]]98; CHECK:       bb1:99; CHECK-NEXT:    ret ptr [[V1]]100; CHECK:       bb2:101; CHECK-NEXT:    ret ptr [[V1]]102;103top:104  %v1 = load ptr, ptr %v0, !nonnull !0105  call void @use1(ptr %v1)106  br i1 %arg, label %bb1, label %bb2107 108bb1:109  %v2 = load ptr, ptr %v0110  ret ptr %v2111 112bb2:113  %v3 = load ptr, ptr %v0114  ret ptr %v3115}116 117define ptr @test6(ptr %v0, ptr %v1, i1 %arg) {118; CHECK-LABEL: define ptr @test6119; CHECK-SAME: (ptr [[V0:%.*]], ptr [[V1:%.*]], i1 [[ARG:%.*]]) {120; CHECK-NEXT:  top:121; CHECK-NEXT:    br i1 [[ARG]], label [[BB1:%.*]], label [[BB2:%.*]]122; CHECK:       bb1:123; CHECK-NEXT:    [[V2:%.*]] = load ptr, ptr [[V0]], align 8124; CHECK-NEXT:    store ptr [[V2]], ptr [[V1]], align 8125; CHECK-NEXT:    ret ptr [[V2]]126; CHECK:       bb2:127; CHECK-NEXT:    [[V4:%.*]] = load ptr, ptr [[V0]], align 8128; CHECK-NEXT:    store ptr [[V4]], ptr [[V1]], align 8129; CHECK-NEXT:    ret ptr [[V4]]130;131top:132  br i1 %arg, label %bb1, label %bb2133 134bb1:135  %v2 = load ptr, ptr %v0, !nonnull !0136  store ptr %v2, ptr %v1137  %v3 = load ptr, ptr %v1138  ret ptr %v3139 140bb2:141  %v4 = load ptr, ptr %v0142  store ptr %v4, ptr %v1143  %v5 = load ptr, ptr %v1, !nonnull !0144  ret ptr %v5145}146 147declare void @use2(ptr %a)148 149define ptr @test7(ptr %v0, i1 %arg) {150; CHECK-LABEL: define ptr @test7151; CHECK-SAME: (ptr [[V0:%.*]], i1 [[ARG:%.*]]) {152; CHECK-NEXT:  top:153; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[V0]], align 8, !nonnull [[META0:![0-9]+]]154; CHECK-NEXT:    call void @use2(ptr [[V1]])155; CHECK-NEXT:    br i1 [[ARG]], label [[BB1:%.*]], label [[BB2:%.*]]156; CHECK:       bb1:157; CHECK-NEXT:    [[V2:%.*]] = load ptr, ptr [[V0]], align 8158; CHECK-NEXT:    ret ptr [[V2]]159; CHECK:       bb2:160; CHECK-NEXT:    [[V3:%.*]] = load ptr, ptr [[V0]], align 8161; CHECK-NEXT:    ret ptr [[V3]]162;163top:164  %v1 = load ptr, ptr %v0, !nonnull !0165  call void @use2(ptr %v1)166  br i1 %arg, label %bb1, label %bb2167 168bb1:169  %v2 = load ptr, ptr %v0170  ret ptr %v2171 172bb2:173  %v3 = load ptr, ptr %v0174  ret ptr %v3175}176 177!0 = !{}178