On Wed, May 2, 2012 at 3:06 AM, Michael Matz <m...@suse.de> wrote: > Hi, > > This patch gets rid of some easy gimple_seq_alloc calls that we don't even > need currently because most gimple_seq modifier will lazily allocate one. > Most of the time it's enough to simply initialize a seq to NULL and call > the respective routines like gimple_seq_add_{stmt,seq}. (A notable > exception is when the seq will be used in an iterator). > > As per [0/6] regstrapped together with the other five patches on > x86_64-linux. Okay for trunk?
Ok. Thanks, Richard. > > Ciao, > Michael. > ------------------------ > 2012-05-02 Michael Matz <m...@suse.de> > > * tree-phinodes.c (add_phi_node_to_bb): Tidy, don't use > gimple_seq_alloc. > * omp-low.c (finalize_task_copyfn): Don't use gimple_seq_alloc. > * tree-nested.c (walk_gimple_omp_for): Ditto. > * trans-mem.c (lower_transaction): Ditto. > * tree-eh.c (do_return_redirection): Ditto. > (do_goto_redirection): Ditto. > (lower_try_finally_switch): Ditto. > * gimplify.c (gimplify_stmt): Ditto. > (gimplify_scan_omp_clauses): Ditto. > (gimplify_omp_for): Ditto. > (gimplify_function_tree): Ditto. > * gimple-fold.c (gimplify_and_update_call_from_tree): Ditto. > * tree-mudflap.c (mf_decl_cache_locals): Ditto. > (mf_build_check_statement_for): Ditto. > (mx_register_decls): Ditto. > * graphite-sese-to-poly.c (remove_invariant_phi): Ditto, > and don't use itertors to append. > (insert_stmts): Ditto. > (insert_out_of_ssa_copy): Ditto. > (insert_out_of_ssa_copy_on_edge): Ditto. > > Index: tree-phinodes.c > =================================================================== > *** tree-phinodes.c.orig 2012-05-01 22:43:34.000000000 +0200 > --- tree-phinodes.c 2012-05-01 22:43:55.000000000 +0200 > *************** reserve_phi_args_for_new_edge (basic_blo > *** 356,368 **** > void > add_phi_node_to_bb (gimple phi, basic_block bb) > { > ! gimple_stmt_iterator gsi; > /* Add the new PHI node to the list of PHI nodes for block BB. */ > ! if (phi_nodes (bb) == NULL) > ! set_phi_nodes (bb, gimple_seq_alloc ()); > ! > ! gsi = gsi_last (phi_nodes (bb)); > ! gsi_insert_after (&gsi, phi, GSI_NEW_STMT); > > /* Associate BB to the PHI node. */ > gimple_set_bb (phi, bb); > --- 356,370 ---- > void > add_phi_node_to_bb (gimple phi, basic_block bb) > { > ! gimple_seq seq = phi_nodes (bb); > /* Add the new PHI node to the list of PHI nodes for block BB. */ > ! if (seq == NULL) > ! set_phi_nodes (bb, gimple_seq_alloc_with_stmt (phi)); > ! else > ! { > ! gimple_seq_add_stmt (&seq, phi); > ! gcc_assert (seq == phi_nodes (bb)); > ! } > > /* Associate BB to the PHI node. */ > gimple_set_bb (phi, bb); > Index: omp-low.c > =================================================================== > *** omp-low.c.orig 2012-05-01 22:43:34.000000000 +0200 > --- omp-low.c 2012-05-01 22:43:55.000000000 +0200 > *************** finalize_task_copyfn (gimple task_stmt) > *** 1231,1237 **** > { > struct function *child_cfun; > tree child_fn, old_fn; > ! gimple_seq seq, new_seq; > gimple bind; > > child_fn = gimple_omp_task_copy_fn (task_stmt); > --- 1231,1237 ---- > { > struct function *child_cfun; > tree child_fn, old_fn; > ! gimple_seq seq = NULL, new_seq; > gimple bind; > > child_fn = gimple_omp_task_copy_fn (task_stmt); > *************** finalize_task_copyfn (gimple task_stmt) > *** 1248,1260 **** > push_cfun (child_cfun); > current_function_decl = child_fn; > bind = gimplify_body (child_fn, false); > - seq = gimple_seq_alloc (); > gimple_seq_add_stmt (&seq, bind); > new_seq = maybe_catch_exception (seq); > if (new_seq != seq) > { > bind = gimple_build_bind (NULL, new_seq, NULL); > ! seq = gimple_seq_alloc (); > gimple_seq_add_stmt (&seq, bind); > } > gimple_set_body (child_fn, seq); > --- 1248,1259 ---- > push_cfun (child_cfun); > current_function_decl = child_fn; > bind = gimplify_body (child_fn, false); > gimple_seq_add_stmt (&seq, bind); > new_seq = maybe_catch_exception (seq); > if (new_seq != seq) > { > bind = gimple_build_bind (NULL, new_seq, NULL); > ! seq = NULL; > gimple_seq_add_stmt (&seq, bind); > } > gimple_set_body (child_fn, seq); > Index: tree-nested.c > =================================================================== > *** tree-nested.c.orig 2012-05-01 22:43:34.000000000 +0200 > --- tree-nested.c 2012-05-01 22:43:55.000000000 +0200 > *************** walk_gimple_omp_for (gimple for_stmt, > *** 617,623 **** > > walk_body (callback_stmt, callback_op, info, gimple_omp_for_pre_body_ptr > (for_stmt)); > > ! seq = gimple_seq_alloc (); > memset (&wi, 0, sizeof (wi)); > wi.info = info; > wi.gsi = gsi_last (seq); > --- 617,623 ---- > > walk_body (callback_stmt, callback_op, info, gimple_omp_for_pre_body_ptr > (for_stmt)); > > ! seq = NULL; > memset (&wi, 0, sizeof (wi)); > wi.info = info; > wi.gsi = gsi_last (seq); > *************** walk_gimple_omp_for (gimple for_stmt, > *** 646,654 **** > walk_tree (&TREE_OPERAND (t, 1), callback_op, &wi, NULL); > } > > ! if (gimple_seq_empty_p (seq)) > ! gimple_seq_free (seq); > ! else > { > gimple_seq pre_body = gimple_omp_for_pre_body (for_stmt); > annotate_all_with_location (seq, gimple_location (for_stmt)); > --- 646,653 ---- > walk_tree (&TREE_OPERAND (t, 1), callback_op, &wi, NULL); > } > > ! seq = gsi_seq (wi.gsi); > ! if (!gimple_seq_empty_p (seq)) > { > gimple_seq pre_body = gimple_omp_for_pre_body (for_stmt); > annotate_all_with_location (seq, gimple_location (for_stmt)); > Index: trans-mem.c > =================================================================== > *** trans-mem.c.orig 2012-05-01 22:43:34.000000000 +0200 > --- trans-mem.c 2012-05-01 22:43:55.000000000 +0200 > *************** lower_transaction (gimple_stmt_iterator > *** 1600,1606 **** > gimple_seq n_seq, e_seq; > > n_seq = gimple_seq_alloc_with_stmt (g); > ! e_seq = gimple_seq_alloc (); > > g = gimple_build_call (builtin_decl_explicit (BUILT_IN_EH_POINTER), > 1, integer_zero_node); > --- 1600,1606 ---- > gimple_seq n_seq, e_seq; > > n_seq = gimple_seq_alloc_with_stmt (g); > ! e_seq = NULL; > > g = gimple_build_call (builtin_decl_explicit (BUILT_IN_EH_POINTER), > 1, integer_zero_node); > Index: tree-eh.c > =================================================================== > *** tree-eh.c.orig 2012-05-01 22:43:34.000000000 +0200 > --- tree-eh.c 2012-05-01 22:43:55.000000000 +0200 > *************** do_return_redirection (struct goto_queue > *** 731,739 **** > > q->cont_stmt = q->stmt.g; > > - if (!q->repl_stmt) > - q->repl_stmt = gimple_seq_alloc (); > - > if (mod) > gimple_seq_add_seq (&q->repl_stmt, mod); > > --- 731,736 ---- > *************** do_goto_redirection (struct goto_queue_n > *** 750,757 **** > gimple x; > > gcc_assert (q->is_label); > - if (!q->repl_stmt) > - q->repl_stmt = gimple_seq_alloc (); > > q->cont_stmt = gimple_build_goto (VEC_index (tree, tf->dest_array, > q->index)); > > --- 747,752 ---- > *************** lower_try_finally_switch (struct leh_sta > *** 1306,1312 **** > int nlabels, ndests, j, last_case_index; > tree last_case; > VEC (tree,heap) *case_label_vec; > ! gimple_seq switch_body; > gimple x, eh_else; > tree tmp; > gimple switch_stmt; > --- 1301,1307 ---- > int nlabels, ndests, j, last_case_index; > tree last_case; > VEC (tree,heap) *case_label_vec; > ! gimple_seq switch_body = NULL; > gimple x, eh_else; > tree tmp; > gimple switch_stmt; > *************** lower_try_finally_switch (struct leh_sta > *** 1317,1323 **** > /* The location of the finally block. */ > location_t finally_loc; > > - switch_body = gimple_seq_alloc (); > finally = gimple_try_cleanup (tf->top_p); > eh_else = get_eh_else (finally); > > --- 1312,1317 ---- > *************** lower_try_finally_switch (struct leh_sta > *** 1426,1437 **** > entrance through a particular edge. */ > for (; q < qe; ++q) > { > ! gimple_seq mod; > int switch_id; > unsigned int case_index; > > - mod = gimple_seq_alloc (); > - > if (q->index < 0) > { > x = gimple_build_assign (finally_tmp, > --- 1420,1429 ---- > entrance through a particular edge. */ > for (; q < qe; ++q) > { > ! gimple_seq mod = NULL; > int switch_id; > unsigned int case_index; > > if (q->index < 0) > { > x = gimple_build_assign (finally_tmp, > Index: gimplify.c > =================================================================== > *** gimplify.c.orig 2012-05-01 22:39:07.000000000 +0200 > --- gimplify.c 2012-05-01 22:43:55.000000000 +0200 > *************** gimplify_stmt (tree *stmt_p, gimple_seq > *** 5607,5615 **** > { > gimple_seq_node last; > > - if (!*seq_p) > - *seq_p = gimple_seq_alloc (); > - > last = gimple_seq_last (*seq_p); > gimplify_expr (stmt_p, seq_p, NULL, is_gimple_stmt, fb_none); > return last != gimple_seq_last (*seq_p); > --- 5607,5612 ---- > *************** gimplify_scan_omp_clauses (tree *list_p, > *** 6106,6113 **** > gimplify_omp_ctxp = ctx; > push_gimplify_context (&gctx); > > ! OMP_CLAUSE_REDUCTION_GIMPLE_INIT (c) = gimple_seq_alloc (); > ! OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (c) = gimple_seq_alloc (); > > gimplify_and_add (OMP_CLAUSE_REDUCTION_INIT (c), > &OMP_CLAUSE_REDUCTION_GIMPLE_INIT (c)); > --- 6103,6110 ---- > gimplify_omp_ctxp = ctx; > push_gimplify_context (&gctx); > > ! OMP_CLAUSE_REDUCTION_GIMPLE_INIT (c) = NULL; > ! OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (c) = NULL; > > gimplify_and_add (OMP_CLAUSE_REDUCTION_INIT (c), > &OMP_CLAUSE_REDUCTION_GIMPLE_INIT (c)); > *************** gimplify_omp_for (tree *expr_p, gimple_s > *** 6443,6449 **** > gimplify_and_add (OMP_FOR_PRE_BODY (for_stmt), &for_pre_body); > OMP_FOR_PRE_BODY (for_stmt) = NULL_TREE; > > ! for_body = gimple_seq_alloc (); > gcc_assert (TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)) > == TREE_VEC_LENGTH (OMP_FOR_COND (for_stmt))); > gcc_assert (TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)) > --- 6440,6446 ---- > gimplify_and_add (OMP_FOR_PRE_BODY (for_stmt), &for_pre_body); > OMP_FOR_PRE_BODY (for_stmt) = NULL_TREE; > > ! for_body = NULL; > gcc_assert (TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)) > == TREE_VEC_LENGTH (OMP_FOR_COND (for_stmt))); > gcc_assert (TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)) > *************** gimplify_function_tree (tree fndecl) > *** 8279,8285 **** > > /* The tree body of the function is no longer needed, replace it > with the new GIMPLE body. */ > ! seq = gimple_seq_alloc (); > gimple_seq_add_stmt (&seq, bind); > gimple_set_body (fndecl, seq); > > --- 8276,8282 ---- > > /* The tree body of the function is no longer needed, replace it > with the new GIMPLE body. */ > ! seq = NULL; > gimple_seq_add_stmt (&seq, bind); > gimple_set_body (fndecl, seq); > > *************** gimplify_function_tree (tree fndecl) > *** 8328,8334 **** > > /* Replace the current function body with the body > wrapped in the try/finally TF. */ > ! seq = gimple_seq_alloc (); > gimple_seq_add_stmt (&seq, new_bind); > gimple_set_body (fndecl, seq); > } > --- 8325,8331 ---- > > /* Replace the current function body with the body > wrapped in the try/finally TF. */ > ! seq = NULL; > gimple_seq_add_stmt (&seq, new_bind); > gimple_set_body (fndecl, seq); > } > Index: gimple-fold.c > =================================================================== > *** gimple-fold.c.orig 2012-05-01 22:39:07.000000000 +0200 > --- gimple-fold.c 2012-05-01 22:43:55.000000000 +0200 > *************** gimplify_and_update_call_from_tree (gimp > *** 549,555 **** > tree lhs; > gimple stmt, new_stmt; > gimple_stmt_iterator i; > ! gimple_seq stmts = gimple_seq_alloc(); > struct gimplify_ctx gctx; > gimple last; > gimple laststore; > --- 549,555 ---- > tree lhs; > gimple stmt, new_stmt; > gimple_stmt_iterator i; > ! gimple_seq stmts = NULL; > struct gimplify_ctx gctx; > gimple last; > gimple laststore; > Index: graphite-sese-to-poly.c > =================================================================== > *** graphite-sese-to-poly.c.orig 2012-05-01 22:39:07.000000000 +0200 > --- graphite-sese-to-poly.c 2012-05-01 22:43:55.000000000 +0200 > *************** remove_invariant_phi (sese region, gimpl > *** 87,94 **** > edge e = gimple_phi_arg_edge (phi, entry); > tree var; > gimple stmt; > ! gimple_seq stmts; > ! gimple_stmt_iterator gsi; > > if (tree_contains_chrecs (scev, NULL)) > scev = gimple_phi_arg_def (phi, entry); > --- 87,93 ---- > edge e = gimple_phi_arg_edge (phi, entry); > tree var; > gimple stmt; > ! gimple_seq stmts = NULL; > > if (tree_contains_chrecs (scev, NULL)) > scev = gimple_phi_arg_def (phi, entry); > *************** remove_invariant_phi (sese region, gimpl > *** 97,107 **** > stmt = gimple_build_assign (res, var); > remove_phi_node (psi, false); > > ! if (!stmts) > ! stmts = gimple_seq_alloc (); > ! > ! gsi = gsi_last (stmts); > ! gsi_insert_after (&gsi, stmt, GSI_NEW_STMT); > gsi_insert_seq_on_edge (e, stmts); > gsi_commit_edge_inserts (); > SSA_NAME_DEF_STMT (res) = stmt; > --- 96,102 ---- > stmt = gimple_build_assign (res, var); > remove_phi_node (psi, false); > > ! gimple_seq_add_stmt (&stmts, stmt); > gsi_insert_seq_on_edge (e, stmts); > gsi_commit_edge_inserts (); > SSA_NAME_DEF_STMT (res) = stmt; > *************** insert_stmts (scop_p scop, gimple stmt, > *** 2088,2098 **** > gimple_stmt_iterator gsi; > VEC (gimple, heap) *x = VEC_alloc (gimple, heap, 3); > > ! if (!stmts) > ! stmts = gimple_seq_alloc (); > ! > ! gsi = gsi_last (stmts); > ! gsi_insert_after (&gsi, stmt, GSI_NEW_STMT); > for (gsi = gsi_start (stmts); !gsi_end_p (gsi); gsi_next (&gsi)) > VEC_safe_push (gimple, heap, x, gsi_stmt (gsi)); > > --- 2083,2089 ---- > gimple_stmt_iterator gsi; > VEC (gimple, heap) *x = VEC_alloc (gimple, heap, 3); > > ! gimple_seq_add_stmt (&stmts, stmt); > for (gsi = gsi_start (stmts); !gsi_end_p (gsi); gsi_next (&gsi)) > VEC_safe_push (gimple, heap, x, gsi_stmt (gsi)); > > *************** static void > *** 2107,2122 **** > insert_out_of_ssa_copy (scop_p scop, tree res, tree expr, gimple after_stmt) > { > gimple_seq stmts; > - gimple_stmt_iterator si; > gimple_stmt_iterator gsi; > tree var = force_gimple_operand (expr, &stmts, true, NULL_TREE); > gimple stmt = gimple_build_assign (res, var); > VEC (gimple, heap) *x = VEC_alloc (gimple, heap, 3); > > ! if (!stmts) > ! stmts = gimple_seq_alloc (); > ! si = gsi_last (stmts); > ! gsi_insert_after (&si, stmt, GSI_NEW_STMT); > for (gsi = gsi_start (stmts); !gsi_end_p (gsi); gsi_next (&gsi)) > VEC_safe_push (gimple, heap, x, gsi_stmt (gsi)); > > --- 2098,2109 ---- > insert_out_of_ssa_copy (scop_p scop, tree res, tree expr, gimple after_stmt) > { > gimple_seq stmts; > gimple_stmt_iterator gsi; > tree var = force_gimple_operand (expr, &stmts, true, NULL_TREE); > gimple stmt = gimple_build_assign (res, var); > VEC (gimple, heap) *x = VEC_alloc (gimple, heap, 3); > > ! gimple_seq_add_stmt (&stmts, stmt); > for (gsi = gsi_start (stmts); !gsi_end_p (gsi); gsi_next (&gsi)) > VEC_safe_push (gimple, heap, x, gsi_stmt (gsi)); > > *************** static void > *** 2167,2183 **** > insert_out_of_ssa_copy_on_edge (scop_p scop, edge e, tree res, tree expr) > { > gimple_stmt_iterator gsi; > ! gimple_seq stmts; > tree var = force_gimple_operand (expr, &stmts, true, NULL_TREE); > gimple stmt = gimple_build_assign (res, var); > basic_block bb; > VEC (gimple, heap) *x = VEC_alloc (gimple, heap, 3); > > ! if (!stmts) > ! stmts = gimple_seq_alloc (); > ! > ! gsi = gsi_last (stmts); > ! gsi_insert_after (&gsi, stmt, GSI_NEW_STMT); > for (gsi = gsi_start (stmts); !gsi_end_p (gsi); gsi_next (&gsi)) > VEC_safe_push (gimple, heap, x, gsi_stmt (gsi)); > > --- 2154,2166 ---- > insert_out_of_ssa_copy_on_edge (scop_p scop, edge e, tree res, tree expr) > { > gimple_stmt_iterator gsi; > ! gimple_seq stmts = NULL; > tree var = force_gimple_operand (expr, &stmts, true, NULL_TREE); > gimple stmt = gimple_build_assign (res, var); > basic_block bb; > VEC (gimple, heap) *x = VEC_alloc (gimple, heap, 3); > > ! gimple_seq_add_stmt (&stmts, stmt); > for (gsi = gsi_start (stmts); !gsi_end_p (gsi); gsi_next (&gsi)) > VEC_safe_push (gimple, heap, x, gsi_stmt (gsi)); > > Index: tree-mudflap.c > =================================================================== > *** tree-mudflap.c.orig 2012-05-01 22:39:07.000000000 +0200 > --- tree-mudflap.c 2012-05-01 22:43:55.000000000 +0200 > *************** static void > *** 472,478 **** > mf_decl_cache_locals (void) > { > gimple g; > ! gimple_seq seq = gimple_seq_alloc (); > > /* Build the cache vars. */ > mf_cache_shift_decl_l > --- 472,478 ---- > mf_decl_cache_locals (void) > { > gimple g; > ! gimple_seq seq = NULL; > > /* Build the cache vars. */ > mf_cache_shift_decl_l > *************** mf_build_check_statement_for (tree base, > *** 572,578 **** > mf_limit = make_rename_temp (mf_uintptr_type, "__mf_limit"); > > /* Build: __mf_base = (uintptr_t) <base address expression>. */ > ! seq = gimple_seq_alloc (); > t = fold_convert_loc (location, mf_uintptr_type, > unshare_expr (base)); > t = force_gimple_operand (t, &stmts, false, NULL_TREE); > --- 572,578 ---- > mf_limit = make_rename_temp (mf_uintptr_type, "__mf_limit"); > > /* Build: __mf_base = (uintptr_t) <base address expression>. */ > ! seq = NULL; > t = fold_convert_loc (location, mf_uintptr_type, > unshare_expr (base)); > t = force_gimple_operand (t, &stmts, false, NULL_TREE); > *************** mf_build_check_statement_for (tree base, > *** 683,689 **** > > This is the body of the conditional. */ > > ! seq = gimple_seq_alloc (); > /* u is a string, so it is already a gimple value. */ > u = mf_file_function_line_tree (location); > /* NB: we pass the overall [base..limit] range to mf_check. */ > --- 683,689 ---- > > This is the body of the conditional. */ > > ! seq = NULL; > /* u is a string, so it is already a gimple value. */ > u = mf_file_function_line_tree (location); > /* NB: we pass the overall [base..limit] range to mf_check. */ > *************** mf_build_check_statement_for (tree base, > *** 704,710 **** > gsi_insert_seq_after (&gsi, seq, GSI_CONTINUE_LINKING); > e = split_block (then_bb, g); > then_bb = e->dest; > ! seq = gimple_seq_alloc (); > } > > g = gimple_build_assign (mf_cache_shift_decl_l, mf_cache_shift_decl); > --- 704,710 ---- > gsi_insert_seq_after (&gsi, seq, GSI_CONTINUE_LINKING); > e = split_block (then_bb, g); > then_bb = e->dest; > ! seq = NULL; > } > > g = gimple_build_assign (mf_cache_shift_decl_l, mf_cache_shift_decl); > *************** mx_register_decls (tree decl, gimple_seq > *** 1114,1120 **** > if (finally_stmts != NULL) > { > gimple stmt = gimple_build_try (seq, finally_stmts, > GIMPLE_TRY_FINALLY); > ! gimple_seq new_seq = gimple_seq_alloc (); > > gimple_seq_add_stmt (&new_seq, stmt); > return new_seq; > --- 1114,1120 ---- > if (finally_stmts != NULL) > { > gimple stmt = gimple_build_try (seq, finally_stmts, > GIMPLE_TRY_FINALLY); > ! gimple_seq new_seq = NULL; > > gimple_seq_add_stmt (&new_seq, stmt); > return new_seq;