This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: asm operand requires impossible reload
- From: Ian Lance Taylor <iant at google dot com>
- To: Lars Poeschel <larsi at wh2 dot tu-dresden dot de>
- Cc: gcc-help at gcc dot gnu dot org
- Date: 31 Jan 2007 07:27:08 -0800
- Subject: Re: asm operand requires impossible reload
- References: <200701311041.17242.larsi@wh2.tu-dresden.de>
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