------- Additional Comments From pinskia at gcc dot gnu dot org 2005-02-25 05:15 ------- I think the patch for PR 19633 caused this bug. For the code below which is just a modifed version: void link_error(); struct aa { char a[10]; }; void f(char *a) { struct aa *a1 = (struct aa *)a; if (*a == 0) asm("":"=m"(*a1)); if (*a ==0) link_error (); } int main(void) { char a = 0; f(&a); }
We get before (20050113): a1_2, is dereferenced, points-to anything After: a1_2, its value escapes, points-to anything This is wrong, its value does not escape but is dereferenced in the asm. -- What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |critical Priority|P2 |P1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20188