[Bug target/52554] Variable called $1 causes invalid asm to be generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52554 Andrew Pinski changed: What|Removed |Added Resolution|--- |DUPLICATE Status|UNCONFIRMED |RESOLVED --- Comment #9 from Andrew Pinski --- Dup of bug 31782. *** This bug has been marked as a duplicate of bug 31782 ***
[Bug target/52554] Variable called $1 causes invalid asm to be generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52554 Lukas Mai changed: What|Removed |Added Status|RESOLVED|UNCONFIRMED Resolution|INVALID | --- Comment #8 from Lukas Mai 2012-04-04 03:37:48 UTC --- According to the documentation this is a valid bug. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52554#c6.
[Bug target/52554] Variable called $1 causes invalid asm to be generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52554 --- Comment #7 from openhardware 2012-03-29 13:40:14 UTC --- "Alternatively, change the documentation to the effect that invalid assembly code and valid (but semantically wrong) assembly code aren't necessarily compiler bugs." Its a "windows-approach" Not a bug but a feature. Intel calls their errata sheets for silicon bugs "specification update" That's really sweet, so whats a spec for? Please fix it in gcc to be a syntax error, or at least throw a warning like "Illegal variable name found in line # might cause illegal assembly code and thus unpredictable results!". This would be the best, so if one has a special "geeks-assembler", that allows a $ to be send to the assembler, so one could use it, for what special geeks-reason ever (may be, to have a hack to illegally allign a variable in memory between the rails of the processors word length in order to smear it into two registers [highbyte of lower register and lowbyte of upper register] of some IO or to do some other dirty stuff directly from hell)
[Bug target/52554] Variable called $1 causes invalid asm to be generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52554 --- Comment #6 from Lukas Mai 2012-03-29 11:26:12 UTC --- >From the gcc documentation: | However, dollar signs in identifiers are not supported on a few target | machines, typically because the target assembler does not allow them. That's nice, but: | * If the compiler produces invalid assembly code, for any input | whatever (except an `asm' statement), that is a compiler bug, | unless the compiler reports errors (not just warnings) which would | ordinarily prevent the assembler from being run. | * If the compiler produces valid assembly code that does not | correctly execute the input source code, that is a compiler bug. If my target assembler (gas) doesn't allow them, you must produce an error. Making up asm syntax and handing it to the assembler is not an option. Alternatively, change the documentation to the effect that invalid assembly code and valid (but semantically wrong) assembly code aren't necessarily compiler bugs.
[Bug target/52554] Variable called $1 causes invalid asm to be generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52554 webmaster at openhardware dot de changed: What|Removed |Added CC||webmaster at openhardware ||dot de --- Comment #5 from webmaster at openhardware dot de 2012-03-28 09:36:47 UTC --- Hi, I tested the 42 it mit older gcc, and it behaved better: gcc --version gcc (GCC) 4.2.4 (Gentoo 4.2.4 p1.0) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. cat >try.c int $42 = 0; int main(void) { return $42; } gcc try.c; ./a.out; echo $? /tmp/ccY61UFa.s: Assembler messages: /tmp/ccY61UFa.s:18: Error: junk `(%rip)' after expression bash: ./a.out: No such file or directory 127 gcc -O2 try.c; ./a.out; echo $? /tmp/ccXk0zWe.s: Assembler messages: /tmp/ccXk0zWe.s:8: Error: junk `(%rip)' after expression bash: ./a.out: No such file or directory 127 But I would expect an syntax error thrown by gcc here.
[Bug target/52554] Variable called $1 causes invalid asm to be generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52554 Florian Weimer changed: What|Removed |Added Keywords|accepts-invalid, wrong-code | Status|UNCONFIRMED |RESOLVED CC||fw at gcc dot gnu.org Resolution||INVALID --- Comment #4 from Florian Weimer 2012-03-28 05:38:56 UTC --- Some platforms (such as VMS) support $ in identifiers, similar to _. It seems that your assembler doesn't: http://gcc.gnu.org/onlinedocs/gcc/Dollar-Signs.html (If you compile with -pedantic, you'll get a warning.) This is not much different from platforms where global symbols are case-insensitive or severely limited in length.