mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-03 14:21:30 +00:00 
			
		
		
		
	Revert 127368 and 127371 for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127376 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		@@ -588,13 +588,11 @@ public:
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// getCrossCopyRegClass - Returns a legal register class to copy a register
 | 
			
		||||
  /// in the specified class to or from. If it is possible to copy the register
 | 
			
		||||
  /// directly without using a cross register class copy, return the specified
 | 
			
		||||
  /// RC. Returns NULL if it is not possible to copy between a two registers of
 | 
			
		||||
  /// the specified class.
 | 
			
		||||
  /// in the specified class to or from. Returns NULL if it is possible to copy
 | 
			
		||||
  /// between a two registers of the specified class.
 | 
			
		||||
  virtual const TargetRegisterClass *
 | 
			
		||||
  getCrossCopyRegClass(const TargetRegisterClass *RC) const {
 | 
			
		||||
    return RC;
 | 
			
		||||
    return NULL;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// getRegPressureLimit - Return the register pressure "high water mark" for
 | 
			
		||||
 
 | 
			
		||||
@@ -570,20 +570,13 @@ void ScheduleDAGFast::ListScheduleBottomUp() {
 | 
			
		||||
          TRI->getMinimalPhysRegClass(Reg, VT);
 | 
			
		||||
        const TargetRegisterClass *DestRC = TRI->getCrossCopyRegClass(RC);
 | 
			
		||||
 | 
			
		||||
        // If cross copy register class is the same as RC, then it must be
 | 
			
		||||
        // possible copy the value directly. Do not try duplicate the def.
 | 
			
		||||
        // If cross copy register class is not the same as RC, then it's
 | 
			
		||||
        // possible to copy the value but it require cross register class copies
 | 
			
		||||
        // and it is expensive.
 | 
			
		||||
        // If cross copy register class is null, then it's not possible to copy
 | 
			
		||||
        // the value at all.
 | 
			
		||||
        // If cross copy register class is null, then it must be possible copy
 | 
			
		||||
        // the value directly. Do not try duplicate the def.
 | 
			
		||||
        SUnit *NewDef = 0;
 | 
			
		||||
        if (DestRC != RC) {
 | 
			
		||||
        if (DestRC)
 | 
			
		||||
          NewDef = CopyAndMoveSuccessors(LRDef);
 | 
			
		||||
          if (!DestRC && !NewDef)
 | 
			
		||||
            report_fatal_error("Can't handle live physical "
 | 
			
		||||
                               "register dependency!");
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
          DestRC = RC;
 | 
			
		||||
        if (!NewDef) {
 | 
			
		||||
          // Issue copies, these can be expensive cross register class copies.
 | 
			
		||||
          SmallVector<SUnit*, 2> Copies;
 | 
			
		||||
 
 | 
			
		||||
@@ -1140,19 +1140,13 @@ SUnit *ScheduleDAGRRList::PickNodeToScheduleBottomUp() {
 | 
			
		||||
      TRI->getMinimalPhysRegClass(Reg, VT);
 | 
			
		||||
    const TargetRegisterClass *DestRC = TRI->getCrossCopyRegClass(RC);
 | 
			
		||||
 | 
			
		||||
    // If cross copy register class is the same as RC, then it must be possible
 | 
			
		||||
    // copy the value directly. Do not try duplicate the def.
 | 
			
		||||
    // If cross copy register class is not the same as RC, then it's possible to
 | 
			
		||||
    // copy the value but it require cross register class copies and it is
 | 
			
		||||
    // expensive.
 | 
			
		||||
    // If cross copy register class is null, then it's not possible to copy
 | 
			
		||||
    // the value at all.
 | 
			
		||||
    // If cross copy register class is null, then it must be possible copy
 | 
			
		||||
    // the value directly. Do not try duplicate the def.
 | 
			
		||||
    SUnit *NewDef = 0;
 | 
			
		||||
    if (DestRC != RC) {
 | 
			
		||||
    if (DestRC)
 | 
			
		||||
      NewDef = CopyAndMoveSuccessors(LRDef);
 | 
			
		||||
      if (!DestRC && !NewDef)
 | 
			
		||||
        report_fatal_error("Can't handle live physical register dependency!");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
      DestRC = RC;
 | 
			
		||||
    if (!NewDef) {
 | 
			
		||||
      // Issue copies, these can be expensive cross register class copies.
 | 
			
		||||
      SmallVector<SUnit*, 2> Copies;
 | 
			
		||||
 
 | 
			
		||||
@@ -337,7 +337,7 @@ X86RegisterInfo::getCrossCopyRegClass(const TargetRegisterClass *RC) const {
 | 
			
		||||
    else
 | 
			
		||||
      return &X86::GR32RegClass;
 | 
			
		||||
  }
 | 
			
		||||
  return RC;
 | 
			
		||||
  return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
unsigned
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user