supression of 'matching constraint does not allow a register' warning

Jim Wilson wilson@specifixinc.com
Sat May 1 06:29:00 GMT 2004


Daniel Jacobowitz wrote:
> Er, except I'm not sure that's right; something was said about operands
> unreferenced in the asm text being a bad idea.

The optimizer never looks at the asm text, so whether an operand is used 
has no effect on how the compiler will optimize.  The asm text is only 
used when we emit assembly to the .s file.

If this really matters, one could always add "; %2" assuming ; is the 
assembler comment character, but I doubt that will do anything useful.

The only thing I can think of is that if an operand has side effects, 
and the compiler makes assuptions about those side-effects, then whether 
an operand is used could make a difference.  However, there are so many 
other issues here, the operand could be used multiple times, the operand 
might not actually be used by the instruction, or we might be using the 
operand in a special way.  The optimizer really can't make any 
assumptions about what is happening here, so it shouldn't make any 
difference whether or not the operand is used.

The only thing I can immediately think of that has side-effects is 
auto-inc addresses, and you could avoid them if necessary by using an o 
constraint instead of a m constraint.

In the absence of an actual bug report, I don't think there is anything 
wrong with unreferenced operands.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



More information about the Gcc mailing list