diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2004-06-25 20:33:09 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2004-06-25 16:33:09 -0400 |
commit | 8f44bc38a5532e8d1ac357bf56aaef1fbd1899d3 (patch) | |
tree | 3d9c5cfe771b86fe61f70f6241520331fea18e67 /gcc/tree-outof-ssa.c | |
parent | e804f8229005019d5907146aaee4ff48df081535 (diff) | |
download | gcc-8f44bc38a5532e8d1ac357bf56aaef1fbd1899d3.zip gcc-8f44bc38a5532e8d1ac357bf56aaef1fbd1899d3.tar.gz gcc-8f44bc38a5532e8d1ac357bf56aaef1fbd1899d3.tar.bz2 |
tree-nested.c (build_addr): Merge real/imagpart with handled_component_p.
* tree-nested.c (build_addr): Merge real/imagpart with
handled_component_p.
(convert_nonlocal_reference, convert_local_reference): Process extra
args to COMPONENT_REF and ARRAY_REF.
* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Check for
lower bound and field offset being constant.
From-SVN: r83677
Diffstat (limited to 'gcc/tree-outof-ssa.c')
-rw-r--r-- | gcc/tree-outof-ssa.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c index f19afdd..517e2b8 100644 --- a/gcc/tree-outof-ssa.c +++ b/gcc/tree-outof-ssa.c @@ -1763,17 +1763,21 @@ discover_nonconstant_array_refs_r (tree * tp, int *walk_subtrees, if (TYPE_P (t) || DECL_P (t)) *walk_subtrees = 0; - else if (TREE_CODE (t) == ARRAY_REF || TREE_CODE (t) == ARRAY_RANGE_REF) + if (TREE_CODE (t) == ARRAY_REF || TREE_CODE (t) == ARRAY_RANGE_REF) { while (((TREE_CODE (t) == ARRAY_REF || TREE_CODE (t) == ARRAY_RANGE_REF) - && is_gimple_min_invariant (TREE_OPERAND (t, 1))) + && is_gimple_min_invariant (TREE_OPERAND (t, 1)) + && (!TREE_OPERAND (t, 2) + || is_gimple_min_invariant (TREE_OPERAND (t, 2)))) || (TREE_CODE (t) == COMPONENT_REF - || TREE_CODE (t) == BIT_FIELD_REF - || TREE_CODE (t) == REALPART_EXPR - || TREE_CODE (t) == IMAGPART_EXPR - || TREE_CODE (t) == VIEW_CONVERT_EXPR - || TREE_CODE (t) == NOP_EXPR - || TREE_CODE (t) == CONVERT_EXPR)) + && (!TREE_OPERAND (t,2) + || is_gimple_min_invariant (TREE_OPERAND (t, 2)))) + || TREE_CODE (t) == BIT_FIELD_REF + || TREE_CODE (t) == REALPART_EXPR + || TREE_CODE (t) == IMAGPART_EXPR + || TREE_CODE (t) == VIEW_CONVERT_EXPR + || TREE_CODE (t) == NOP_EXPR + || TREE_CODE (t) == CONVERT_EXPR) t = TREE_OPERAND (t, 0); if (TREE_CODE (t) == ARRAY_REF || TREE_CODE (t) == ARRAY_RANGE_REF) |