34 lines · plain
1# RUN: llc -mtriple=hexagon -run-pass postra-machine-sink,postrapseudos,if-converter -verify-machineinstrs -o - %s | FileCheck %s2 3# 1. Post-RA machine sinking moves the copy (1) to block %bb.1. The4# 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 is6# 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 use11# refers to an undefined register.12 13# Make sure that post-RA machine sinking removes subregisters from live-ins14# to block bb.1.15 16# CHECK: $d1 = A2_tfrpf $p0, $d017# CHECK-NOT: implicit killed $d118 19name: fred20tracksRegLiveness: true21body: |22 bb.0:23 liveins: $d0, $p024 renamable $d1 = COPY $d0 ;; (1)25 J2_jumpt $p0, %bb.2, implicit-def $pc26 bb.1:27 liveins: $r2, $r328 $r0 = A2_addi $r2, 129 bb.2:30 liveins: $r031 A2_nop32 J2_jumpr $r31, implicit-def $pc33...34