I know this is invalid, but: - it produces a warning, not an error; - reliable compilers never crash, do they? Testcase: -------------------------- void f(void) { register int x asm("eax"); g(&x); } -------------------------- objdir/gcc/xgcc -Bobjdir/gcc -c f.c f.c: In function ‘f’: f.c:5: warning: address of register variable ‘x’ requested f.c:5: warning: address of register variable ‘x’ requested f.c:5: internal compiler error: in expand_expr_addr_expr_1, at expr.c:5975 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. Sources checked out as of today morning (about 6 hours ago).
-- Summary: ICE on taking register variable address Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: alex dot neyman at auriga dot ru CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18160