patch that caused regression PR c++/7916
Jan Hubicka
jh@suse.cz
Fri Dec 20 19:22:00 GMT 2002
> The regression reported in PR c++/7916 showed up starting with this
> patch:
>
> Wed Mar 14 22:26:10 CET 2001 Jan Hubicka <jh@suse.cz>
>
> * i386.c (ix86_cmodel_string, ix86_cmodel): Define.
> (override_options): Parse cmodel string.
> (x86_64_sign_extended_value, x86_64_zero_extended_value): New.
> * i386.h (TARGET_OPTIONS): Add "cmodel".
> (EXTRA_CONSTRAINT): Recognize 'e' and 'Z'.
> (enum cmodel): New.
> (ix86_cmodel_string, ix86_cmodel): Declare.
>
> Spot by Matt Kraai:
> * i386.h (GENERAL_REG_P): Add missing REG_P.
>
> Here's a small test case that causes the compiler to ICE when compiled
> on i686-linux. The PR is against C++, but my testing used cc1 rather
> than cc1plus.
>
> -------------------
> void foo(char *dst, char xchg, char cmp)
> {
> __asm__("lock" "\tcmpxchgb %1, (%2)\t\n"
> :"=al"(cmp)
> :"dl"(xchg), "r"(dst), "al"(cmp));
> }
> -------------------
>
> Output from the mainline compiler:
>
> 7916.c: In function `foo':
> 7916.c:6: internal compiler error: in instantiate_virtual_regs_1,
> at function.c:3898
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>
> I've added this information to the PR.
>
> Jan, if the testcase itself isn't valid then please add that
> information to the PR.
The testcase is nonsenical ("=al" was probably meant to be "=a")
but I will try to track down the reason for dying in
instantiate_virtual_regs_1. Thanks!
Honza
>
> Janis
More information about the Gcc
mailing list