diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-07-29 11:44:09 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2009-07-29 11:44:09 +0000 |
commit | aa267a453af67fed68cdcbc1a893ea1ddd071657 (patch) | |
tree | 682c32a53b5a0711af8d6c763162d9d8957d098b /gcc/tree-object-size.c | |
parent | e66916ac4702dd1e1c6a24475cdfc3470532ee02 (diff) |
svn merge -r150069:150068 svn+ssh://gcc.gnu.org/svn/gcc/trunk
svn merge -r150015:150014 svn+ssh://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_4-branch
svn merge -r149860:149859 svn+ssh://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_4-branch
svn merge -r149391:149390 svn+ssh://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_4-branch
svn merge -r149235:149234 svn+ssh://gcc.gnu.org/svn/gcc/trunk
svn merge -r149158:149157 svn+ssh://gcc.gnu.org/svn/gcc/trunk
svn merge -r149150:149149 svn+ssh://gcc.gnu.org/svn/gcc/trunk
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/redhat/fc11-4_4-branch@150208 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-object-size.c')
-rw-r--r-- | gcc/tree-object-size.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index a54fa06893f..981236dc6da 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -216,7 +216,7 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, && TREE_CODE (var) != IMAGPART_EXPR) var = TREE_OPERAND (var, 0); if (var != pt_var && TREE_CODE (var) == ARRAY_REF) - var = TREE_OPERAND (var, 0); + var = TREE_OPERAND (var, 0); if (! TYPE_SIZE_UNIT (TREE_TYPE (var)) || ! host_integerp (TYPE_SIZE_UNIT (TREE_TYPE (var)), 1) || (pt_var_size @@ -261,17 +261,8 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, v = NULL_TREE; break; } - while (v != pt_var && TREE_CODE (v) == COMPONENT_REF) - if (TREE_CODE (TREE_TYPE (TREE_OPERAND (v, 0))) - != UNION_TYPE - && TREE_CODE (TREE_TYPE (TREE_OPERAND (v, 0))) - != QUAL_UNION_TYPE) - break; - else - v = TREE_OPERAND (v, 0); - if (TREE_CODE (v) == COMPONENT_REF - && TREE_CODE (TREE_TYPE (TREE_OPERAND (v, 0))) - == RECORD_TYPE) + if (TREE_CODE (TREE_TYPE (TREE_OPERAND (v, 0))) + == RECORD_TYPE) { tree fld_chain = TREE_CHAIN (TREE_OPERAND (v, 1)); for (; fld_chain; fld_chain = TREE_CHAIN (fld_chain)) @@ -283,17 +274,18 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, v = NULL_TREE; break; } - v = TREE_OPERAND (v, 0); } - while (v != pt_var && TREE_CODE (v) == COMPONENT_REF) - if (TREE_CODE (TREE_TYPE (TREE_OPERAND (v, 0))) - != UNION_TYPE - && TREE_CODE (TREE_TYPE (TREE_OPERAND (v, 0))) - != QUAL_UNION_TYPE) + + if (TREE_CODE (TREE_TYPE (TREE_OPERAND (v, 0))) + == RECORD_TYPE) + v = TREE_OPERAND (v, 0); + while (v && v != pt_var && TREE_CODE (v) == COMPONENT_REF) + if (TREE_CODE (TREE_TYPE (v)) != UNION_TYPE + && TREE_CODE (TREE_TYPE (v)) != QUAL_UNION_TYPE) break; else v = TREE_OPERAND (v, 0); - if (v != pt_var) + if (v && v != pt_var) v = NULL_TREE; else v = pt_var; |