diff options
author | Martin Jambor <mjambor@suse.cz> | 2009-05-20 12:18:10 +0200 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2009-05-20 12:18:10 +0200 |
commit | 7ec492570b77735583dceb28b091b4fa71ea1320 (patch) | |
tree | c7a89b4084761b0c88e079e93dac65e6158c5343 /gcc/tree-sra.c | |
parent | 3f6f0eb2e4a89be2eed80ad57bf003c3fc0aa210 (diff) | |
download | gcc-7ec492570b77735583dceb28b091b4fa71ea1320.zip gcc-7ec492570b77735583dceb28b091b4fa71ea1320.tar.gz gcc-7ec492570b77735583dceb28b091b4fa71ea1320.tar.bz2 |
tree-flow.h (insert_edge_copies_seq): Undeclare.
2009-05-20 Martin Jambor <mjambor@suse.cz>
* tree-flow.h (insert_edge_copies_seq): Undeclare.
(sra_insert_before): Likewise.
(sra_insert_after): Likewise.
(sra_init_cache): Likewise.
(sra_type_can_be_decomposed_p): Likewise.
* tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
* tree-sra.c (sra_type_can_be_decomposed_p): Made static.
(sra_insert_before): Likewise.
(sra_insert_after): Likewise.
(sra_init_cache): Likewise.
(insert_edge_copies_seq): Made static and moved upwards.
* tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
case.
* tree-flow-inline.h (contains_view_convert_expr_p): New function.
* ipa-prop.c (get_ssa_def_if_simple_copy): New function.
(determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
simple copies.
From-SVN: r147733
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 626a253..0f68941 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -236,7 +236,7 @@ is_sra_scalar_type (tree type) instantiated, just that if we decide to break up the type into separate pieces that it can be done. */ -bool +static bool sra_type_can_be_decomposed_p (tree type) { unsigned int cache = TYPE_UID (TYPE_MAIN_VARIANT (type)) * 2; @@ -1267,6 +1267,26 @@ build_element_name (struct sra_elt *elt) return XOBFINISH (&sra_obstack, char *); } +/* Insert a gimple_seq SEQ on all the outgoing edges out of BB. Note that + if BB has more than one edge, STMT will be replicated for each edge. + Also, abnormal edges will be ignored. */ + +static void +insert_edge_copies_seq (gimple_seq seq, basic_block bb) +{ + edge e; + edge_iterator ei; + unsigned n_copies = -1; + + FOR_EACH_EDGE (e, ei, bb->succs) + if (!(e->flags & EDGE_ABNORMAL)) + n_copies++; + + FOR_EACH_EDGE (e, ei, bb->succs) + if (!(e->flags & EDGE_ABNORMAL)) + gsi_insert_seq_on_edge (e, n_copies-- > 0 ? gimple_seq_copy (seq) : seq); +} + /* Instantiate an element as an independent variable. */ static void @@ -2789,29 +2809,9 @@ generate_element_init (struct sra_elt *elt, tree init, gimple_seq *seq_p) return ret; } -/* Insert a gimple_seq SEQ on all the outgoing edges out of BB. Note that - if BB has more than one edge, STMT will be replicated for each edge. - Also, abnormal edges will be ignored. */ - -void -insert_edge_copies_seq (gimple_seq seq, basic_block bb) -{ - edge e; - edge_iterator ei; - unsigned n_copies = -1; - - FOR_EACH_EDGE (e, ei, bb->succs) - if (!(e->flags & EDGE_ABNORMAL)) - n_copies++; - - FOR_EACH_EDGE (e, ei, bb->succs) - if (!(e->flags & EDGE_ABNORMAL)) - gsi_insert_seq_on_edge (e, n_copies-- > 0 ? gimple_seq_copy (seq) : seq); -} - /* Helper function to insert LIST before GSI, and set up line number info. */ -void +static void sra_insert_before (gimple_stmt_iterator *gsi, gimple_seq seq) { gimple stmt = gsi_stmt (*gsi); @@ -2823,7 +2823,7 @@ sra_insert_before (gimple_stmt_iterator *gsi, gimple_seq seq) /* Similarly, but insert after GSI. Handles insertion onto edges as well. */ -void +static void sra_insert_after (gimple_stmt_iterator *gsi, gimple_seq seq) { gimple stmt = gsi_stmt (*gsi); @@ -3601,7 +3601,7 @@ debug_sra_elt_name (struct sra_elt *elt) fputc ('\n', stderr); } -void +static void sra_init_cache (void) { if (sra_type_decomp_cache) |