As reported here: http://gcc.gnu.org/ml/gcc-bugs/2006-03/msg00589.html
Confirmed. Fails since GCC 4.0.0. However, this has nothing to do with templates or inline asm as the reduced testcase shows: ================================== struct A { A(const A&); A& operator=(const A&); static void bar(); void foo() volatile {} void baz() volatile; }; void A::baz() volatile { foo(); bar(); } ================================== -- Summary: [4.0/4.1/4.2 regression] ICE in cp_expr_size with volatile Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, monitored Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26577