[cfe-dev] PPC asm register definitions

Richard Pennington rich at pennware.com
Mon Sep 14 16:46:02 PDT 2009


Mike Stump wrote:
> On Sep 14, 2009, at 3:01 PM, Richard Pennington wrote:
>> I filed bug http://llvm.org/bugs/show_bug.cgi?id=4976 this morning. Dale
>> Johannesen mentioned that "3" is not a valid register name
> 
> Actually, he didn't say exactly that.  He said that there is a bug in 
> llvm that prevents "3" from working.
> 
>> for the LLVM  PPC code generator, it wants "r3".
>>
>> Should I change Targets.cpp to use "r0"... instead?
> 
> I think it would be reasonable to add r0 as the canonical spelling (I 
> don't think any assemblers we support can't support r0, do they?), but a 
> ppc assembly expert might have a better idea.  Note, we still have to 
> support 3 as a register name, you can't just remove it.
> 
>> Also, the names GCCReg* don't seem right. Wouldn't LLVMRegNames* fit 
>> better?
> 
> The naming comes from gcc's naming convention.  This convention is at 
> times necessary to follow as these names can be exposed in the source 
> code.  Changing it to LLVMRegNames just obscures that fact.
> 

The point is the canonical form in clang is "3". The PPC code generator 
recognizes "r3".

What I was saying is that where register names are normalized and 
aliased in Targets.cpp perhaps "r3" should be returned instead of "3".

That change would mean that "3" could still be used, it would just be 
translated to "r3", just as "r3" is translated to "3" now.

I'm not sure I understand the GCC naming convention, but it really 
doesn't matter to me.

-Rich



More information about the cfe-dev mailing list