http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44970
--- Comment #99 from dave at hiauly1 dot hia.nrc.ca 2010-11-14 23:12:25 UTC --- On Sun, 14 Nov 2010, bonzini at gnu dot org wrote: > Minimized testcase: > > int f (unsigned long arg, int *cr) > { > int *p = (int *) arg; > int x = *cr; > long pu_err = 0; > if (x) > asm volatile ("stw %2,0(%1)": "=r" (pu_err): "r" (p), "r" (x)); > > asm volatile ("stw %2,0(%%sr3,%1)": "=r" (pu_err): "r" (p), "r" (x)); > return pu_err; > } > > Fails at -O2. Cool! The reduced code no longer makes any sense but it should compile. I'm sure this was a fair bit of work. Dave