Home | History | Annotate | Download | only in Hexagon
      1 # RUN: llc -march=hexagon -run-pass if-converter -o - %s -verify-machineinstrs | FileCheck %s
      2 
      3 # The register r23 is live on the path bb.0->bb.2->bb.3. Make sure we add
      4 # an implicit use of r23 to the predicated redefinition:
      5 # CHECK: $r23 = A2_tfrt killed $p0, killed $r1, implicit killed $r23
      6 
      7 # LivePhysRegs::addPristines could accidentally remove a callee-saved
      8 # register, if it determined that it wasn't pristine. Doing that caused
      9 # r23 in this testcase to be dropped from the Redefs set, and subsequently
     10 # the necessary implicit use was not added for it.
     11 
     12 ---
     13 name: foo
     14 tracksRegLiveness: true
     15 fixedStack:
     16   - { id: 0, offset: 0, size: 4, alignment: 4, callee-saved-register: '$r23' }
     17 body: |
     18   bb.0:
     19     successors: %bb.1, %bb.2
     20     liveins: $r0, $r1, $r23
     21       $p0 = C2_cmpgti killed $r0, 0
     22       J2_jumpf killed $p0, %bb.2, implicit-def $pc
     23 
     24   bb.1:
     25     successors: %bb.3
     26     liveins: $r1
     27       $r23 = A2_tfr killed $r1
     28       J2_jump %bb.3, implicit-def $pc
     29 
     30   bb.2:
     31     successors: %bb.3
     32     liveins: $r1, $r23
     33       $r0 = A2_tfr $r1
     34 
     35   bb.3:
     36     liveins: $r23
     37 ...
     38