http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61094
--- Comment #3 from Marc Glisse <glisse at gcc dot gnu.org> --- template <typename> struct A { unsigned _width, _height, _depth, _spectrum; template <typename t> A(t p1) { int a = p1.size(); if (a) { _width = p1._width; _depth = _height = _spectrum = p1._spectrum; } } long size() { return (long)_width * _height * _depth * _spectrum; } }; int d; void fn1(void *); A<int> *fn2(); void fn3() { int b; for (;;) { A<char> c(*fn2()); fn1(&c); if (d || !b) throw; } } a.ii: In function 'void fn3()': a.ii:24:1: error: insn does not satisfy its constraints: } ^ (insn 67 20 62 3 (set (reg:DI 21 xmm0) (reg:DI 2 cx)) 89 {*movdi_internal} (expr_list:REG_DEAD (reg:DI 2 cx) (nil))) a.ii:24:1: internal compiler error: in copyprop_hardreg_forward_1, at regcprop.c:775