# RUN: llc -march=hexagon -run-pass postra-machine-sink,postrapseudos,if-converter -verify-machineinstrs -o - %s | FileCheck %s # 1. Post-RA machine sinking moves the copy (1) to block %bb.1. The # subregisters $r2 and $r3 of $d1 are not removed from the live-ins. # 2. Expand post-RA pseudos replaces the COPY with A2_tfrp which is # predicable. # 3. If-conversion predicates block %bb.1. Since $d1 (made of $r2 and $r3) # is in the live-in list to %bb.1, it assumes that $d1 in (1) is live, # and adds an implicit use of $d1 to the predicated copy. # This results in an invalid machine code, since the implicit use # refers to an undefined register. # Make sure that post-RA machine sinking removes subregisters from live-ins # to block bb.1. # CHECK: $d1 = A2_tfrpf $p0, $d0 # CHECK-NOT: implicit killed $d1 name: fred tracksRegLiveness: true body: | bb.0: liveins: $d0, $p0 renamable $d1 = COPY $d0 ;; (1) J2_jumpt $p0, %bb.2, implicit-def $pc bb.1: liveins: $r2, $r3 $r0 = A2_addi $r2, 1 bb.2: liveins: $r0 A2_nop J2_jumpr $r31, implicit-def $pc ...