[LLVMdev] Register Alias Sets

David Greene greened at obbligato.org
Fri Apr 6 14:51:53 PDT 2007

I notice that in X86GenRegisterInfo.inc, the AliasSets do not
include the register being queried.  For example:

   const unsigned RAX_AliasSet[] = { X86::EAX, X86::AX, X86::AL, X86::AH,
0 };
   const unsigned EAX_AliasSet[] = { X86::RAX, X86::AX, X86::AL, 
X86::AH, 0 };

This makes it hard to do set comparisons.  RAX and EAX really have
equivalent alias sets but one wouldn't know that from these definitions.

Is there a specific reason that these registers are left out?  Would
things seriously break if they were added in?

I know RegAllocLinearScan.cpp does some checks for register aliasing
by looking for empty AliasSets.  I imagine that'll get us into trouble.


More information about the llvm-dev mailing list