Index: typeck.c =================================================================== --- typeck.c (revision 120428) +++ typeck.c (working copy) @@ -1121,22 +1121,22 @@ comptypes (tree t1, tree t2, int strict) /* The two types are structurally equivalent, but their canonical types were different. This is a failure of the canonical type propagation code.*/ - warning(0, - "canonical types differ for identical types %T and %T", - t1, t2); + error ("canonical types differ for identical types %T and %T", + t1, t2); debug_tree (t1); debug_tree (t2); + gcc_unreachable (); } else if (!result && TYPE_CANONICAL (t1) == TYPE_CANONICAL (t2)) { /* Two types are structurally different, but the canonical types are the same. This means we were over-eager in assigning canonical types. */ - warning (0, - "same canonical type node for different types %T and %T", - t1, t2); + error ("same canonical type node for different types %T and %T", + t1, t2); debug_tree (t1); debug_tree (t2); + gcc_unreachable (); } return result;