This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Inlining bug on MIPS - both 2.95.3 and 3.0 branches
> Date: Sat, 10 Mar 2001 20:51:06 -0500
> From: Daniel Jacobowitz <dmj+@andrew.cmu.edu>
> Cc: gcc-bugs@gcc.gnu.org
> I see, thanks. Although I'm mystified by how the # and * don't cancel
> out - according to the documentation, # means "only used for register
> preferences" and * means "ignored for register preferences".
If you only use a '*X' for register preferences, you don't use it at
all...
> These do still require that I use a macro rather than an inline
> function, from what I can see, though. If I use the "i#*X" constraint
> inside the inline function, the compiler seems to first decide to
> prefer a register (before inlining?), and then attempt to satisfy the
> constraints when inlining. This fails, obviously:
>
> mips-vgacon.c: In function `vga_pal_blank':
> mips-vgacon.c:10: inconsistent operand constraints in an `asm'
>
> So unless there's something I'm missing about constraints, there is no
> way to say what I want to say here, and I need to use a macro.
Aah, I see. Reload is not determining that the register is always
equal to a constant. Oh well.
--
- Geoffrey Keating <geoffk@geoffk.org>