[Bug c/46477] New: GCC doesn't understand %c in asm instruction with -mcmodel=large
_kirpichev_ at mail dot ru
gcc-bugzilla@gcc.gnu.org
Sun Nov 14 23:24:00 GMT 2010
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46477
Summary: GCC doesn't understand %c in asm instruction with
-mcmodel=large
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: _kirpichev_@mail.ru
Hi,
I'm trying to compile the following code snippet:
#ifdef CONFIG_X86_32
# define __BUG_C0 "2:\t.long 1b, %c0\n"
#else
# define __BUG_C0 "2:\t.long 1b - 2b, %c0 - 2b\n"
#endif
#define BUG() \
do { \
asm volatile("1:\tud2\n" \
".pushsection __bug_table,\"a\"\n" \
__BUG_C0 \
"\t.word %c1, 0\n" \
"\t.org 2b+%c2\n" \
".popsection" \
: : "i" (__FILE__), "i" (__LINE__), \
"i" (10*sizeof(int))); \
} while (0)
int main()
{
BUG();
}
And everything is ok until -mcmodel=large is used.
When I'm trying to use -mcmodel=large the following error appears:
main.c:24:9: error: invalid 'asm': operand is neither a constant nor a
condition code, invalid operand code 'c'
gcc -dumpversion
4.5
BTW, if I change %c on %P then everything is ok and generated code looks the
same, but I didn't find any documentation about %P.
More information about the Gcc-bugs
mailing list