template <class T1, typename T2, typename T3> struct A { typedef T2 (T1::*m) (T3); A (m) {} }; struct B; struct C { void foo (B *); }; typedef A <C, void, B *> D; typedef void (C::*E) (B *); struct F; typedef void (C::*G) (F); D d ((E) (G) & C::foo);
ICEs with -m32: rh511229.ii: In function 'void __static_initialization_and_destruction_0(int, int)': rh511229.ii:16:22: internal compiler error: tree check: expected class 'expression', have 'constant' (ptrmem_cst) in gimplify_conversion, at gimplify.c:1831 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. The ICE started between r140129 and r140150. -- Summary: [4.4/4.5 Regression] ICE in gimplify_conversion Product: gcc Version: 4.4.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org GCC target triplet: i686-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40780