diff options
author | Roger Sayle <roger@eyesopen.com> | 2005-03-16 02:20:05 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2005-03-16 02:20:05 +0000 |
commit | 0ebfd2c928fda823acdd4b5b073a84e5ce92ba39 (patch) | |
tree | 3750c12eff0b65397727b2016b257f02c6c89e51 /gcc | |
parent | c79e602b6302889036c04a7ca530afc5ae97e053 (diff) | |
download | gcc-0ebfd2c928fda823acdd4b5b073a84e5ce92ba39.zip gcc-0ebfd2c928fda823acdd4b5b073a84e5ce92ba39.tar.gz gcc-0ebfd2c928fda823acdd4b5b073a84e5ce92ba39.tar.bz2 |
re PR tree-optimization/17454 (ICE with --enable-checking=fold)
PR tree-optimization/17454
* tree.c (tree_size): Add case for TREE_BINFO.
* fold-const.c (fold_checksum_tree): Only clear the overloaded
field TYPE_CACHED_VALUES if TYPE_CACHED_VALUES_P is set.
From-SVN: r96548
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fold-const.c | 7 | ||||
-rw-r--r-- | gcc/tree.c | 4 |
3 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dc9540c..cb2ec2a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2005-03-15 Roger Sayle <roger@eyesopen.com> + PR tree-optimization/17454 + * tree.c (tree_size): Add case for TREE_BINFO. + * fold-const.c (fold_checksum_tree): Only clear the overloaded + field TYPE_CACHED_VALUES if TYPE_CACHED_VALUES_P is set. + +2005-03-15 Roger Sayle <roger@eyesopen.com> + * optabs.c (expand_doubleword_mult): Avoid clobbering op0 and op1 whilst expanding the signed widenening multiply variant. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 6a00abe..13e9153 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -10049,8 +10049,11 @@ fold_checksum_tree (tree expr, struct md5_ctx *ctx, htab_t ht) expr = (tree) buf; TYPE_POINTER_TO (expr) = NULL; TYPE_REFERENCE_TO (expr) = NULL; - TYPE_CACHED_VALUES_P (expr) = 0; - TYPE_CACHED_VALUES (expr) = NULL; + if (TYPE_CACHED_VALUES_P (expr)) + { + TYPE_CACHED_VALUES_P (expr) = 0; + TYPE_CACHED_VALUES (expr) = NULL; + } } md5_process_bytes (expr, tree_size (expr), ctx); fold_checksum_tree (TREE_TYPE (expr), ctx, ht); @@ -243,6 +243,10 @@ tree_size (tree node) return (sizeof (struct tree_phi_node) + (PHI_ARG_CAPACITY (node) - 1) * sizeof (struct phi_arg_d)); + case TREE_BINFO: + return (offsetof (struct tree_binfo, base_binfos) + + VEC_embedded_size (tree, BINFO_N_BASE_BINFOS (node))); + case TREE_VEC: return (sizeof (struct tree_vec) + (TREE_VEC_LENGTH (node) - 1) * sizeof(char *)); |