From 11fc42759850498a535a03418e667a57461fab91 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 3 Jul 2006 20:14:18 +0000 Subject: tree.c (range_in_array_bounds_p): New predicate. * tree.c (range_in_array_bounds_p): New predicate. * tree.h (range_in_array_bounds_p): Declare it. * tree-eh.c (tree_could_trap_p) : Use it to return a less conservative answer. * tree-sra.c (struct sra_elt): Add new pointer field 'groups' and flag 'is_group'. (IS_ELEMENT_FOR_GROUP): New macro. (FOR_EACH_ACTUAL_CHILD): Likewise. (next_child_for_group): New helper function. (can_completely_scalarize_p): Take into account groups. (sra_hash_tree): Handle RANGE_EXPR. (sra_elt_eq): Likewise. (lookup_element): Be prepared for handling groups. (is_valid_const_index): Delete. (maybe_lookup_element_for_expr) : Use in_array_bounds_p instead of is_valid_const_index. : New case. (sra_walk_expr) : Use in_array_bounds_p instead of is_valid_const_index. : Do not unconditionally punt. (scan_dump): Dump info for groups too. (decide_instantiation_1): Likewise. (decide_block_copy): Assert that the element is not a group. Propagate decision to groups. (generate_one_element_ref): Handle RANGE_EXPR. (mark_no_warning): Iterate over actual childs. (generate_copy_inout): Likewise. (generate_element_copy): Likewise. (generate_element_zero): Likewise. (generate_element_init_1): Likewise. (dump_sra_elt_name): Handle RANGE_EXPR. From-SVN: r115160 --- gcc/tree.h | 1 + 1 file changed, 1 insertion(+) (limited to 'gcc/tree.h') diff --git a/gcc/tree.h b/gcc/tree.h index 792ae10..a6a8f43 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -3576,6 +3576,7 @@ extern tree build_complex_type (tree); extern tree build_resx (int); extern tree array_type_nelts (tree); extern bool in_array_bounds_p (tree); +extern bool range_in_array_bounds_p (tree); extern tree value_member (tree, tree); extern tree purpose_member (tree, tree); -- cgit v1.1