http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48552
Summary: ICE with void type expressions in asm inputs/outputs Product: gcc Version: 4.6.0 URL: https://bugzilla.redhat.com/show_bug.cgi?id=693986 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c AssignedTo: ja...@gcc.gnu.org ReportedBy: ja...@gcc.gnu.org struct S; void f1 (void *x) { __asm volatile ("" : : "r" (*x)); } void f2 (void *x) { __asm volatile ("" : "=r" (*x)); } void f3 (void *x) { __asm volatile ("" : : "m" (*x)); } void f4 (void *x) { __asm volatile ("" : "=m" (*x)); } void f5 (void *x) { __asm volatile ("" : : "g" (*x)); } void f6 (void *x) { __asm volatile ("" : "=g" (*x)); } void f7 (struct S *x) { __asm volatile ("" : : "r" (*x)); } void f8 (struct S *x) { __asm volatile ("" : "=r" (*x)); } void f9 (void *x) { __asm ("" : : "r" (*x)); } void f10 (void *x) { __asm ("" : "=r" (*x)); } void f11 (void *x) { __asm ("" : : "m" (*x)); } void f12 (void *x) { __asm ("" : "=m" (*x)); } void f13 (void *x) { __asm ("" : : "g" (*x)); } void f14 (void *x) { __asm ("" : "=g" (*x)); } void f15 (struct S *x) { __asm ("" : : "r" (*x)); } void f16 (struct S *x) { __asm ("" : "=r" (*x)); } ICEs back to 3.2-ish gcc at least, correctly errors out with C++.