------- Additional Comments From pinskia at gcc dot gnu dot org 2005-08-15 14:50 ------- Confirmed, reduced testcase: template<typename T> bool cas(const T& test_val) { bool ret; __asm__ ("": :"r"(test_val)); } struct atomic_ptr { atomic_ptr(){} atomic_ptr(const volatile atomic_ptr& a) { } }; void pop() { atomic_ptr ne; cas(ne); }
This is invalid code as you are passing a struct to an inline-asm as a register (the code used to use "a" constriant but I changed it to a "r" constaint to make it general across targets). -- What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Component|other |inline-asm Ever Confirmed| |1 Keywords| |ice-on-invalid-code Known to fail| |2.95 3.0.4 3.2.2 4.0.0 3.4.0 | |3.3.3 Last reconfirmed|0000-00-00 00:00:00 |2005-08-15 14:51:00 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23399