------- Comment #6 from pinskia at gcc dot gnu dot org 2006-07-30 14:45 ------- Even without the volatile, it ICEs: typedef unsigned long int ulong; typedef struct { int counter; }atomic_t; static ulong Cversion = 0; void sp_cache_invalidate () { atomic_t * v1 = (atomic_t *)& Cversion; atomic_t * v = v1; __asm__ __volatile__ ("lock ; incl %0":"=m" (v->counter):"m" (v->counter)); }
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28544