1# RUN: llc -march=hexagon -run-pass postra-machine-sink,postrapseudos,if-converter -verify-machineinstrs -o - %s | FileCheck %s 2 3# 1. Post-RA machine sinking moves the copy (1) to block %bb.1. The 4# subregisters $r2 and $r3 of $d1 are not removed from the live-ins. 5# 2. Expand post-RA pseudos replaces the COPY with A2_tfrp which is 6# predicable. 7# 3. If-conversion predicates block %bb.1. Since $d1 (made of $r2 and $r3) 8# is in the live-in list to %bb.1, it assumes that $d1 in (1) is live, 9# and adds an implicit use of $d1 to the predicated copy. 10# This results in an invalid machine code, since the implicit use 11# refers to an undefined register. 12 13# Make sure that post-RA machine sinking removes subregisters from live-ins 14# to block bb.1. 15 16# CHECK: $d1 = A2_tfrpf $p0, $d0 17# CHECK-NOT: implicit killed $d1 18 19name: fred 20tracksRegLiveness: true 21body: | 22 bb.0: 23 liveins: $d0, $p0 24 renamable $d1 = COPY $d0 ;; (1) 25 J2_jumpt $p0, %bb.2, implicit-def $pc 26 bb.1: 27 liveins: $r2, $r3 28 $r0 = A2_addi $r2, 1 29 bb.2: 30 liveins: $r0 31 A2_nop 32 J2_jumpr $r31, implicit-def $pc 33... 34