aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2015-10-21 20:00:30 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2015-10-21 18:00:30 +0000
commitb6d3c0311a633503f63884eb8eec3679256ace2c (patch)
tree2bfe7b1e099bea665cddc4e5183b26a96c308ecc /gcc/tree.c
parente9122ef60858058cb474b3d3bb51507b7fd1d14c (diff)
downloadgcc-b6d3c0311a633503f63884eb8eec3679256ace2c.zip
gcc-b6d3c0311a633503f63884eb8eec3679256ace2c.tar.gz
gcc-b6d3c0311a633503f63884eb8eec3679256ace2c.tar.bz2
re PR middle-end/67966 (ICE in convert_move, at expr.c:282)
PR middle-end/67966 * tree.c (verify_type): Verify that TYPE_MODE match between TYPE_CANONICAL and type. * expr.c (store_expr_with_bounds): Revert my previous change. * expmed.c (store_bit_field_1): Revert prevoius change. * gimple-expr.c (useless_type_conversion_p): Require TYPE_MODE to match for all types. From-SVN: r229132
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 6c75699..adc8748 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -13408,6 +13408,14 @@ verify_type (const_tree t)
error_found = true;
}
+ if (COMPLETE_TYPE_P (t) && TYPE_CANONICAL (t)
+ && TYPE_MODE (t) != TYPE_MODE (TYPE_CANONICAL (t)))
+ {
+ error ("TYPE_MODE of TYPE_CANONICAL is not compatible");
+ debug_tree (ct);
+ error_found = true;
+ }
+
/* Check various uses of TYPE_MINVAL. */
if (RECORD_OR_UNION_TYPE_P (t))