------- Comment #12 from hp at gcc dot gnu dot org 2006-06-15 16:50 ------- In reply to comment #11, "i" *is* an appropriate constraint, if any. I see the problem with the reduced test-case in comment #3, so I'm going to limit the scope of my involvement to fixing that.
Hopefully we can leave the discussion on macro expansion for now, or at least any specific problems with e.g. __FUNCTION__ would be subject to a separate PR. (Though it's interesting if it works but __FILE__ doesn't.) The address of a string constant is for all normal use expressed as a local label, hence "symbolic constant" when it comes to assembly code. As a GCC backend guy, I know that "i" is a constraint useful in a GCC machine description when there's any constant symbol or label, possibly offset by a numeric constant. (Constraints are used for both machine descriptions and asms.) Besides bug.h in asm-ppc and asm-ppc64, I see this construct for asm-x86_64, asm-alpha, asm-ppc64, asm-i386 too. Not as not an argument for correctness, just an observation that contradicts the "only used with powerpc" statement. That is, except for use of __FUNCTION__. Hm. I think I need reconfirmation that we see the same problem: Is the code in comment #3 really a reduced test-case, i.e. does the code in comment #3 cause a warning for the compiler and options (filename replaced) for which you originally reported the problem? (If not, I'd like to know for what version it causes the same warning.) Thanks for your patience. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27528