This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: asm operand requires impossible reload


Lars Poeschel <larsi@wh2.tu-dresden.de> writes:

> I have the following #define:
> 
> #define HAL_DISABLE_INTERRUPTS(_old_)           \
>     register int x ;                            \
>     asm volatile ("st   r1, @-r15 ;\n"          \
>          "mov   ps,     r1 ;\n"                 \
>          "ldi:8 #0x10,  %0 ;\n"                 \
>          "and   r1,     %0 ;\n"                 \
>          "lsr   #1,     %0 ;\n"                 \
>          "ld    @r15+,  r1 ;\n"                 \
>          "andccr #0xef \n"                      \
>          :      "=r" (x)                        \
>         );                                      \
>     (_old_) = (x);
> 
> and then a c-File using this macro.
> When I compile this c-File I get this error in the line, where the macro is 
> used:
> 
> asm operand requires impossible reload
> 
> What does this error message mean ?

It means that the compiler was unable to find a register to use.  It's
a strange error to get for an asm like this.  You may need to put
together a complete small test case.

> If I compile using the -S switch, the generated assembler file looks fine and 
> the inline assembler is inserted right.

That doesn't make sense.  If you get the error without -S, you should
get the error with -S.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]