141 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 32; RUN: opt -S -passes=gvn < %s | FileCheck %s3 4; Make sure deduplicated phi nodes are removed from the VN map.5define i64 @f2(ptr %arg) {6; CHECK-LABEL: define i64 @f2(7; CHECK-SAME: ptr [[ARG:%.*]]) {8; CHECK-NEXT: BB:9; CHECK-NEXT: store i1 false, ptr [[ARG]], align 110; CHECK-NEXT: br label [[BB2D:%.*]]11; CHECK: BB2a:12; CHECK-NEXT: br label [[BB2B:%.*]]13; CHECK: BB2b:14; CHECK-NEXT: br label [[BB2C:%.*]]15; CHECK: BB2c:16; CHECK-NEXT: [[AZ2:%.*]] = phi i1 [ true, [[BB2B]] ], [ [[AZ:%.*]], [[BB2D]] ]17; CHECK-NEXT: [[DOTPHI_TRANS_INSERT:%.*]] = sext i1 [[AZ2]] to i6418; CHECK-NEXT: [[GEP2_PHI_TRANS_INSERT:%.*]] = getelementptr i1, ptr [[ARG]], i64 [[DOTPHI_TRANS_INSERT]]19; CHECK-NEXT: [[L93_PRE:%.*]] = load i1, ptr [[GEP2_PHI_TRANS_INSERT]], align 120; CHECK-NEXT: br label [[BB2D]]21; CHECK: BB2d:22; CHECK-NEXT: [[AZ]] = phi i1 [ [[AZ2]], [[BB2C]] ], [ false, [[BB:%.*]] ]23; CHECK-NEXT: [[L93:%.*]] = phi i1 [ [[L93_PRE]], [[BB2C]] ], [ false, [[BB]] ]24; CHECK-NEXT: [[TMP0:%.*]] = sext i1 [[AZ]] to i6425; CHECK-NEXT: [[GEP2:%.*]] = getelementptr i1, ptr [[ARG]], i64 [[TMP0]]26; CHECK-NEXT: store i1 [[AZ]], ptr [[ARG]], align 227; CHECK-NEXT: br i1 [[L93]], label [[BB2C]], label [[BB1E:%.*]]28; CHECK: BB1e:29; CHECK-NEXT: br i1 [[AZ]], label [[BB2F:%.*]], label [[BB4:%.*]]30; CHECK: BB2f:31; CHECK-NEXT: store i1 true, ptr [[ARG]], align 232; CHECK-NEXT: br label [[BB2B]]33; CHECK: BB4:34; CHECK-NEXT: br label [[BB4]]35;36BB:37 store i1 false, ptr %arg, align 138 br label %BB2d39 40BB2a: ; No predecessors!41 br label %BB2b42 43BB2b: ; preds = %BB2f, %BB2a44 br label %BB2c45 46BB2c: ; preds = %BB2d, %BB2b47 %0 = phi i1 [ true, %BB2b ], [ %1, %BB2d ]48 br label %BB2d49 50BB2d: ; preds = %BB2c, %BB51 %1 = phi i1 [ %0, %BB2c ], [ false, %BB ]52 %2 = sext i1 %1 to i6453 %gep2 = getelementptr i1, ptr %arg, i64 %254 %L93 = load i1, ptr %gep2, align 155 %Az = load i1, ptr %arg, align 256 store i1 %1, ptr %arg, align 257 br i1 %L93, label %BB2c, label %BB1e58 59BB1e: ; preds = %BB2d60 br i1 %Az, label %BB2f, label %BB461 62BB2f: ; preds = %BB1e63 store i1 true, ptr %arg, align 264 br label %BB2b65 66BB4: ; preds = %BB1e, %BB467 br label %BB468 69; uselistorder directives70 uselistorder label %BB4, { 1, 0 }71}72 73; Make sure deduplicated phi nodes are removed from the VN map. Make74; sure there is no assert on attempt to use ConstantData use lists.75define i64 @f_null() {76; CHECK-LABEL: define i64 @f_null() {77; CHECK-NEXT: BB:78; CHECK-NEXT: store i1 false, ptr null, align 179; CHECK-NEXT: br label [[BB2D:%.*]]80; CHECK: BB2a:81; CHECK-NEXT: br label [[BB2B:%.*]]82; CHECK: BB2b:83; CHECK-NEXT: br label [[BB2C:%.*]]84; CHECK: BB2c:85; CHECK-NEXT: [[AZ2:%.*]] = phi i1 [ true, [[BB2B]] ], [ [[AZ:%.*]], [[BB2D]] ]86; CHECK-NEXT: [[DOTPHI_TRANS_INSERT:%.*]] = sext i1 [[AZ2]] to i6487; CHECK-NEXT: [[GEP2_PHI_TRANS_INSERT:%.*]] = getelementptr i1, ptr null, i64 [[DOTPHI_TRANS_INSERT]]88; CHECK-NEXT: [[L93_PRE:%.*]] = load i1, ptr [[GEP2_PHI_TRANS_INSERT]], align 189; CHECK-NEXT: br label [[BB2D]]90; CHECK: BB2d:91; CHECK-NEXT: [[AZ]] = phi i1 [ [[AZ2]], [[BB2C]] ], [ false, [[BB:%.*]] ]92; CHECK-NEXT: [[L93:%.*]] = phi i1 [ [[L93_PRE]], [[BB2C]] ], [ false, [[BB]] ]93; CHECK-NEXT: [[TMP0:%.*]] = sext i1 [[AZ]] to i6494; CHECK-NEXT: [[GEP2:%.*]] = getelementptr i1, ptr null, i64 [[TMP0]]95; CHECK-NEXT: store i1 [[AZ]], ptr null, align 296; CHECK-NEXT: br i1 [[L93]], label [[BB2C]], label [[BB1E:%.*]]97; CHECK: BB1e:98; CHECK-NEXT: br i1 [[AZ]], label [[BB2F:%.*]], label [[BB4:%.*]]99; CHECK: BB2f:100; CHECK-NEXT: store i1 true, ptr null, align 2101; CHECK-NEXT: br label [[BB2B]]102; CHECK: BB4:103; CHECK-NEXT: br label [[BB4]]104;105BB:106 store i1 false, ptr null, align 1107 br label %BB2d108 109BB2a: ; No predecessors!110 br label %BB2b111 112BB2b: ; preds = %BB2f, %BB2a113 br label %BB2c114 115BB2c: ; preds = %BB2d, %BB2b116 %0 = phi i1 [ true, %BB2b ], [ %1, %BB2d ]117 br label %BB2d118 119BB2d: ; preds = %BB2c, %BB120 %1 = phi i1 [ %0, %BB2c ], [ false, %BB ]121 %2 = sext i1 %1 to i64122 %gep2 = getelementptr i1, ptr null, i64 %2123 %L93 = load i1, ptr %gep2, align 1124 %Az = load i1, ptr null, align 2125 store i1 %1, ptr null, align 2126 br i1 %L93, label %BB2c, label %BB1e127 128BB1e: ; preds = %BB2d129 br i1 %Az, label %BB2f, label %BB4130 131BB2f: ; preds = %BB1e132 store i1 true, ptr null, align 2133 br label %BB2b134 135BB4: ; preds = %BB1e, %BB4136 br label %BB4137 138; uselistorder directives139 uselistorder label %BB4, { 1, 0 }140}141