Skip to content
  1. Dec 15, 2010
    • Jakob Stoklund Olesen's avatar
      6a5bf778
    • Jakob Stoklund Olesen's avatar
      Introduce TargetRegisterInfo::getOverlaps(Reg), returning a list of all · 757f0e37
      Jakob Stoklund Olesen authored
      registers that alias Reg, including itself. This is almost the same as the
      existing getAliasSet() method, except for the inclusion of Reg.
      
      The name matches the reflexive TRI::regsOverlap(x, y) relation.
      
      It is very common to do stuff to a register and all its aliases:
      
        stuff(Reg)
        for (const unsigned *Alias = TRI->getAliasSet(Reg); *Alias; ++Alias)
          stuff(*Alias);
      
      That can now be written as the simpler:
      
        for (const unsigned *Alias = TRI->getOverlaps(Reg); *Alias; ++Alias)
          stuff(*Alias);
      
      This change requires a bit more constant space for the alias lists because Reg
      is included and because the empty alias list cannot be shared any longer.
      
      If the getAliasSet method is eventually removed, this space can be reclaimed by
      sharing overlap lists. For instance, %rax and %eax have identical overlap sets.
      
      llvm-svn: 121800
      757f0e37
  2. Dec 14, 2010
Loading