brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.1 KiB · 28f0b42 Raw
244 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 22# RUN: llc -mtriple=i386-unknown-linux-gnu -verify-coalescing -run-pass=register-coalescer -o - %s | FileCheck %s3 4# Make sure no verifier error is produced from coalescing the identity5# copy in bb.3 with live out implicit_defs. The value is live out of6# the block, and the incoming value is a phi def.7 8---9name:            pr38795_verifier_error_reduced_110tracksRegLiveness: true11body:             |12  ; CHECK-LABEL: name: pr38795_verifier_error_reduced_113  ; CHECK: bb.0:14  ; CHECK-NEXT:   successors: %bb.1(0x80000000)15  ; CHECK-NEXT:   liveins: $eax16  ; CHECK-NEXT: {{  $}}17  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY $eax18  ; CHECK-NEXT: {{  $}}19  ; CHECK-NEXT: bb.1:20  ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.2(0x40000000)21  ; CHECK-NEXT: {{  $}}22  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:gr32 = IMPLICIT_DEF23  ; CHECK-NEXT:   JCC_1 %bb.3, 4, implicit undef $eflags24  ; CHECK-NEXT: {{  $}}25  ; CHECK-NEXT: bb.2:26  ; CHECK-NEXT:   successors: %bb.3(0x80000000)27  ; CHECK-NEXT: {{  $}}28  ; CHECK-NEXT:   [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags29  ; CHECK-NEXT: {{  $}}30  ; CHECK-NEXT: bb.3:31  ; CHECK-NEXT:   successors: %bb.5(0x40000000), %bb.4(0x40000000)32  ; CHECK-NEXT: {{  $}}33  ; CHECK-NEXT:   JCC_1 %bb.5, 4, implicit undef $eflags34  ; CHECK-NEXT: {{  $}}35  ; CHECK-NEXT: bb.4:36  ; CHECK-NEXT:   successors: %bb.5(0x80000000)37  ; CHECK-NEXT: {{  $}}38  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY [[MOV32r0_]]39  ; CHECK-NEXT: {{  $}}40  ; CHECK-NEXT: bb.5:41  ; CHECK-NEXT:   successors: %bb.1(0x80000000)42  ; CHECK-NEXT: {{  $}}43  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gr32 = COPY [[COPY]]44  ; CHECK-NEXT:   JMP_1 %bb.145  bb.0:46    liveins: $eax47    %0:gr32 = COPY $eax48 49  bb.1:50    %1:gr32 = IMPLICIT_DEF51    JCC_1 %bb.3, 4, implicit undef $eflags52 53  bb.2:54    %0:gr32 = MOV32r0 implicit-def dead $eflags55 56  bb.3:57    %0:gr32 = COPY %058    JCC_1 %bb.5, 4, implicit undef $eflags59 60  bb.4:61    %1:gr32 = COPY %062 63  bb.5:64    %0:gr32 = COPY killed %165    JMP_1 %bb.166 67...68 69# Check for "Instruction ending live segment doesn't read the70# register" verifier error after coalescing71# This still failed with a similar error after a preliminary fix was72# attempted for pr38795_verifier_error_reduced_173 74---75name:            pr38795_verifier_error_reduced_276tracksRegLiveness: true77body:             |78  ; CHECK-LABEL: name: pr38795_verifier_error_reduced_279  ; CHECK: bb.0:80  ; CHECK-NEXT:   successors: %bb.1(0x80000000)81  ; CHECK-NEXT: {{  $}}82  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:gr32 = IMPLICIT_DEF83  ; CHECK-NEXT: {{  $}}84  ; CHECK-NEXT: bb.1:85  ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.2(0x40000000)86  ; CHECK-NEXT: {{  $}}87  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:gr32 = IMPLICIT_DEF88  ; CHECK-NEXT:   JCC_1 %bb.3, 4, implicit killed undef $eflags89  ; CHECK-NEXT: {{  $}}90  ; CHECK-NEXT: bb.2:91  ; CHECK-NEXT:   successors: %bb.9(0x80000000)92  ; CHECK-NEXT: {{  $}}93  ; CHECK-NEXT:   JMP_1 %bb.994  ; CHECK-NEXT: {{  $}}95  ; CHECK-NEXT: bb.3:96  ; CHECK-NEXT:   successors: %bb.5(0x40000000), %bb.4(0x40000000)97  ; CHECK-NEXT: {{  $}}98  ; CHECK-NEXT:   JCC_1 %bb.5, 5, implicit killed undef $eflags99  ; CHECK-NEXT: {{  $}}100  ; CHECK-NEXT: bb.4:101  ; CHECK-NEXT:   successors: %bb.6(0x80000000)102  ; CHECK-NEXT: {{  $}}103  ; CHECK-NEXT:   [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags104  ; CHECK-NEXT:   JMP_1 %bb.6105  ; CHECK-NEXT: {{  $}}106  ; CHECK-NEXT: bb.5:107  ; CHECK-NEXT:   successors: %bb.9(0x80000000)108  ; CHECK-NEXT: {{  $}}109  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:gr32 = IMPLICIT_DEF110  ; CHECK-NEXT:   JMP_1 %bb.9111  ; CHECK-NEXT: {{  $}}112  ; CHECK-NEXT: bb.6:113  ; CHECK-NEXT:   successors: %bb.8(0x40000000), %bb.7(0x40000000)114  ; CHECK-NEXT: {{  $}}115  ; CHECK-NEXT:   JCC_1 %bb.8, 4, implicit killed undef $eflags116  ; CHECK-NEXT: {{  $}}117  ; CHECK-NEXT: bb.7:118  ; CHECK-NEXT:   successors: %bb.8(0x80000000)119  ; CHECK-NEXT: {{  $}}120  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY [[DEF1]]121  ; CHECK-NEXT: {{  $}}122  ; CHECK-NEXT: bb.8:123  ; CHECK-NEXT:   successors: %bb.1(0x80000000)124  ; CHECK-NEXT: {{  $}}125  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gr32 = COPY [[COPY]]126  ; CHECK-NEXT:   JMP_1 %bb.1127  ; CHECK-NEXT: {{  $}}128  ; CHECK-NEXT: bb.9:129  ; CHECK-NEXT:   successors: %bb.6(0x80000000)130  ; CHECK-NEXT: {{  $}}131  ; CHECK-NEXT:   JMP_1 %bb.6132  bb.0:133    %0:gr32 = IMPLICIT_DEF134 135  bb.1:136    %1:gr32 = IMPLICIT_DEF137    JCC_1 %bb.3, 4, implicit killed undef $eflags138 139  bb.2:140    %2:gr32 = COPY killed %0141    JMP_1 %bb.9142 143  bb.3:144    JCC_1 %bb.5, 5, implicit killed undef $eflags145 146  bb.4:147    %3:gr32 = MOV32r0 implicit-def dead $eflags148    JMP_1 %bb.6149 150  bb.5:151    %2:gr32 = IMPLICIT_DEF152    JMP_1 %bb.9153 154  bb.6:155    JCC_1 %bb.8, 4, implicit killed undef $eflags156 157  bb.7:158    %1:gr32 = COPY killed %3159 160  bb.8:161    %4:gr32 = COPY killed %1162    %0:gr32 = COPY killed %4163    JMP_1 %bb.1164 165  bb.9:166    %3:gr32 = COPY killed %2167    JMP_1 %bb.6168 169...170 171# Still failed after patch for first 2 failures172 173---174name:            pr38795_verifier_error_reduced_3175tracksRegLiveness: true176body:             |177  ; CHECK-LABEL: name: pr38795_verifier_error_reduced_3178  ; CHECK: bb.0:179  ; CHECK-NEXT:   successors: %bb.5(0x40000000), %bb.1(0x40000000)180  ; CHECK-NEXT: {{  $}}181  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:gr32 = IMPLICIT_DEF182  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:gr32 = IMPLICIT_DEF183  ; CHECK-NEXT:   JCC_1 %bb.5, 4, implicit killed undef $eflags184  ; CHECK-NEXT: {{  $}}185  ; CHECK-NEXT: bb.1:186  ; CHECK-NEXT:   successors: %bb.4(0x40000000), %bb.5(0x40000000)187  ; CHECK-NEXT: {{  $}}188  ; CHECK-NEXT:   [[DEF2:%[0-9]+]]:gr32 = IMPLICIT_DEF189  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY [[DEF]]190  ; CHECK-NEXT:   [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags191  ; CHECK-NEXT:   JCC_1 %bb.4, 5, implicit killed undef $eflags192  ; CHECK-NEXT:   JMP_1 %bb.5193  ; CHECK-NEXT: {{  $}}194  ; CHECK-NEXT: bb.2:195  ; CHECK-NEXT:   successors: %bb.4(0x40000000), %bb.3(0x40000000)196  ; CHECK-NEXT: {{  $}}197  ; CHECK-NEXT:   TEST32rr undef [[COPY]], [[COPY]], implicit-def $eflags198  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:gr32 = IMPLICIT_DEF199  ; CHECK-NEXT:   JCC_1 %bb.4, 4, implicit killed undef $eflags200  ; CHECK-NEXT: {{  $}}201  ; CHECK-NEXT: bb.3:202  ; CHECK-NEXT:   successors: %bb.4(0x80000000)203  ; CHECK-NEXT: {{  $}}204  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gr32 = COPY [[MOV32r0_]]205  ; CHECK-NEXT: {{  $}}206  ; CHECK-NEXT: bb.4:207  ; CHECK-NEXT:   successors: %bb.1(0x80000000)208  ; CHECK-NEXT: {{  $}}209  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gr32 = COPY [[COPY1]]210  ; CHECK-NEXT:   JMP_1 %bb.1211  ; CHECK-NEXT: {{  $}}212  ; CHECK-NEXT: bb.5:213  ; CHECK-NEXT:   successors: %bb.2(0x80000000)214  ; CHECK-NEXT: {{  $}}215  ; CHECK-NEXT:   JMP_1 %bb.2216  bb.0:217    %0:gr32 = IMPLICIT_DEF218    %1:gr32 = IMPLICIT_DEF219    JCC_1 %bb.5, 4, implicit killed undef $eflags220 221  bb.1:222    %2:gr32 = IMPLICIT_DEF223    %1:gr32 = COPY killed %0224    %0:gr32 = MOV32r0 implicit-def dead $eflags225    JCC_1 %bb.4, 5, implicit killed undef $eflags226    JMP_1 %bb.5227 228  bb.2:229    TEST32rr undef %1, %1, implicit-def $eflags230    %2:gr32 = IMPLICIT_DEF231    JCC_1 %bb.4, 4, implicit killed undef $eflags232 233  bb.3:234    %2:gr32 = COPY killed %0235 236  bb.4:237    %0:gr32 = COPY killed %2238    JMP_1 %bb.1239 240  bb.5:241    JMP_1 %bb.2242 243...244