[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 --- 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)