diff options
| author | Dan Gohman <gohman@apple.com> | 2009-04-16 20:57:10 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2009-04-16 20:57:10 +0000 |
| commit | 3027bb6953d7cebde7a10846636a67fb886d1971 (patch) | |
| tree | d97fca6ef3bb0863ecc5a8ea9fb0bd5c43e00a3b /llvm/lib/CodeGen | |
| parent | c1c2ba7a724fbb93b386eceb04ccce4dba2c9830 (diff) | |
| download | bcm5719-llvm-3027bb6953d7cebde7a10846636a67fb886d1971.tar.gz bcm5719-llvm-3027bb6953d7cebde7a10846636a67fb886d1971.zip | |
Handle SUBREG_TO_REG instructions with the same heuristics
as INSERT_SUBREG instructions in the list-burr scheduler.
llvm-svn: 69308
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp index 30dc4768aa0..d7a96362c24 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp @@ -1019,9 +1019,10 @@ namespace { // avoid spilling. return 0; if (Opc == TargetInstrInfo::EXTRACT_SUBREG || + Opc == TargetInstrInfo::SUBREG_TO_REG || Opc == TargetInstrInfo::INSERT_SUBREG) - // EXTRACT_SUBREG / INSERT_SUBREG should be close to its use to - // facilitate coalescing. + // EXTRACT_SUBREG, INSERT_SUBREG, and SUBREG_TO_REG nodes should be + // close to their uses to facilitate coalescing. return 0; if (SU->NumSuccs == 0 && SU->NumPreds != 0) // If SU does not have a register use, i.e. it doesn't produce a value @@ -1396,11 +1397,12 @@ void RegReductionPriorityQueue<SF>::AddPseudoTwoAddrDeps() { if (canClobberPhysRegDefs(SuccSU, SU, TII, TRI)) continue; } - // Don't constrain extract_subreg / insert_subreg; these may be - // coalesced away. We want them close to their uses. + // Don't constrain EXTRACT_SUBREG, INSERT_SUBREG, and SUBREG_TO_REG; + // these may be coalesced away. We want them close to their uses. unsigned SuccOpc = SuccSU->getNode()->getMachineOpcode(); if (SuccOpc == TargetInstrInfo::EXTRACT_SUBREG || - SuccOpc == TargetInstrInfo::INSERT_SUBREG) + SuccOpc == TargetInstrInfo::INSERT_SUBREG || + SuccOpc == TargetInstrInfo::SUBREG_TO_REG) continue; if ((!canClobber(SuccSU, DUSU) || (hasCopyToRegUse(SU) && !hasCopyToRegUse(SuccSU)) || |

