Bad Register Number for libgcc

Jens Mehler jens.mehler@mni.thm.de
Sun Mar 10 16:56:00 GMT 2013


Am 10.03.2013 17:51, schrieb Ian Lance Taylor:
> On 3/10/13, Jens Mehler <jens.mehler@mni.thm.de> wrote:
>> I have ported the GCC-4.5.3 for a 32-bit CPU.
>> Building GCC works like charm, even assembling several tests I wrote
>> myself works.
>> After porting the Gnu-Binutils I took my first approach of building libgcc.
>> Poorly it runs into an error.
>>
>> ../../../gcc-4.5.3/libgcc/../gcc/libgcc2.c: In function '__powidf2':
>> ../../../gcc-4.5.3/libgcc/../gcc/libgcc2.c:1739:1: internal compiler
>> error: in use_type, at var-tracking.c:4903
>>
>> On var-tracking.c line 4903:
>> gcc_assert (REGNO (loc) < FIRST_PSEUDO_REGISTER);
>> loc is an RTX.
>>
>> Can someone please give me pointer where the problem might be.
>> If additional information is I will provide them.
> Well, there is something wrong with your port.  It's pretty hard to
> say what it is, though.  The var tracking pass runs after the register
> allocation pass, which means that at that point in the compilation
> there should not be any pseudo-registers, only hard registers.
> Somehow you have a pseudo-register left.  I don't know how.
>
> Ian
>
That's what I suspected but never actually got any proof of that.
>From what I gathered while working on that:
Whenever I change my the mask for GENERAL_REGS in REG_CLASS_CONTENTS the
error is in a different function is libgcc.
Maybe I should really split out some regs and create another class for
them, because right now all registers GCC can use are in the same class
: GENERAL_REGS.

I'll do that and see what happens.
Thanks for the reply :)

~ Jens



More information about the Gcc-help mailing list