------- Comment #2 from rguenth at gcc dot gnu dot org 2009-11-30 10:02 ------- Err - well. I can certainly paper over the problem by ignoring error_mark_node, but ... why does the bogus type survive until gimplification?
Thus, <function_type 0x7ffff6f0cdc8 type <void_type 0x7ffff7eeae70 void VOID align 8 symtab 0 alias set -1 canonical type 0x7ffff7eeae70 pointer_to_this <pointer_type 0x7ffff7eeaf18>> QI size <integer_cst 0x7ffff7ed5730 type <integer_type 0x7ffff7eea0a8 bit_size_type> constant 8> unit size <integer_cst 0x7ffff7ed5758 type <integer_type 0x7ffff7eea000 long unsigned int> constant 1> align 8 symtab 0 alias set -1 structural equality arg-types <tree_list 0x7ffff6f01a78 value <error_mark 0x7ffff7eddc90> chain <tree_list 0x7ffff7efb578 value <void_type 0x7ffff7eeae70 void>>> pointer_to_this <pointer_type 0x7ffff6f1e0a8>> as the type for foo in pf = (void (*<T3f1>) (void)) foo ? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42219