From dde460d482fcf150d17b0baa2bc0b97714ec6365 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Fri, 2 Sep 2011 18:31:47 +0000 Subject: [PATCH] re PR middle-end/50260 (internal compiler error: Segmentation fault at ../../gcc/gcc/tree-ssa-live.c:88) PR middle-end/50260 * ipa-split.c (split_function): Call add_referenced_var. * tree-ssa-phiopt.c (cond_store_replacement): Don't call get_var_ann. (cond_if_else_store_replacement_1): Ditto. * tree-ssa-pre.c (get_representative_for): Ditto. (create_expression_by_pieces): Ditto. (insert_into_preds_of_block): Ditto. * tree-sra.c (create_access_replacement): Ditto. (get_replaced_param_substitute): Ditto. From-SVN: r178489 --- gcc/ChangeLog | 13 +++++++++++++ gcc/ipa-split.c | 3 +++ gcc/tree-sra.c | 2 -- gcc/tree-ssa-phiopt.c | 10 ++-------- gcc/tree-ssa-pre.c | 12 +++--------- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 268eabd37ae5..b6aeebb40f62 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2011-09-02 Michael Matz + + PR middle-end/50260 + * ipa-split.c (split_function): Call add_referenced_var. + + * tree-ssa-phiopt.c (cond_store_replacement): Don't call get_var_ann. + (cond_if_else_store_replacement_1): Ditto. + * tree-ssa-pre.c (get_representative_for): Ditto. + (create_expression_by_pieces): Ditto. + (insert_into_preds_of_block): Ditto. + * tree-sra.c (create_access_replacement): Ditto. + (get_replaced_param_substitute): Ditto. + 2011-09-02 Bernd Schmidt * config/c6x/c6x.md (collapse-ndfa, no-comb-vect): New diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c index 4373a1b423e1..d5e5c69b5d85 100644 --- a/gcc/ipa-split.c +++ b/gcc/ipa-split.c @@ -988,6 +988,9 @@ split_function (struct split_point *split_point) arg = gimple_default_def (cfun, parm); if (!arg) { + /* This parm wasn't used up to now, but is going to be used, + hence register it. */ + add_referenced_var (parm); arg = make_ssa_name (parm, gimple_build_nop ()); set_default_def (parm, arg); } diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 2d97845ffe67..203c4823db5e 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -1825,7 +1825,6 @@ create_access_replacement (struct access *access, bool rename) tree repl; repl = create_tmp_var (access->type, "SR"); - get_var_ann (repl); add_referenced_var (repl); if (rename) mark_sym_for_renaming (repl); @@ -4106,7 +4105,6 @@ get_replaced_param_substitute (struct ipa_parm_adjustment *adj) DECL_NAME (repl) = get_identifier (pretty_name); obstack_free (&name_obstack, pretty_name); - get_var_ann (repl); add_referenced_var (repl); adj->new_ssa_base = repl; } diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index 30eea319edcc..427534475753 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -1269,10 +1269,7 @@ cond_store_replacement (basic_block middle_bb, basic_block join_bb, /* 2) Create a temporary where we can store the old content of the memory touched by the store, if we need to. */ if (!condstoretemp || TREE_TYPE (lhs) != TREE_TYPE (condstoretemp)) - { - condstoretemp = create_tmp_reg (TREE_TYPE (lhs), "cstore"); - get_var_ann (condstoretemp); - } + condstoretemp = create_tmp_reg (TREE_TYPE (lhs), "cstore"); add_referenced_var (condstoretemp); /* 3) Insert a load from the memory of the store to the temporary @@ -1355,10 +1352,7 @@ cond_if_else_store_replacement_1 (basic_block then_bb, basic_block else_bb, /* 2) Create a temporary where we can store the old content of the memory touched by the store, if we need to. */ if (!condstoretemp || TREE_TYPE (lhs) != TREE_TYPE (condstoretemp)) - { - condstoretemp = create_tmp_reg (TREE_TYPE (lhs), "cstore"); - get_var_ann (condstoretemp); - } + condstoretemp = create_tmp_reg (TREE_TYPE (lhs), "cstore"); add_referenced_var (condstoretemp); /* 3) Create a PHI node at the join block, with one argument diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index d784bac6818d..6f3b03b3f98f 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -1399,7 +1399,7 @@ get_representative_for (const pre_expr e) if (!pretemp || exprtype != TREE_TYPE (pretemp)) { pretemp = create_tmp_reg (exprtype, "pretmp"); - get_var_ann (pretemp); + add_referenced_var (pretemp); } name = make_ssa_name (pretemp, gimple_build_nop ()); @@ -3178,10 +3178,7 @@ create_expression_by_pieces (basic_block block, pre_expr expr, /* Build and insert the assignment of the end result to the temporary that we will return. */ if (!pretemp || exprtype != TREE_TYPE (pretemp)) - { - pretemp = create_tmp_reg (exprtype, "pretmp"); - get_var_ann (pretemp); - } + pretemp = create_tmp_reg (exprtype, "pretmp"); temp = pretemp; add_referenced_var (temp); @@ -3441,10 +3438,7 @@ insert_into_preds_of_block (basic_block block, unsigned int exprnum, /* Now build a phi for the new variable. */ if (!prephitemp || TREE_TYPE (prephitemp) != type) - { - prephitemp = create_tmp_var (type, "prephitmp"); - get_var_ann (prephitemp); - } + prephitemp = create_tmp_var (type, "prephitmp"); temp = prephitemp; add_referenced_var (temp); -- 2.47.2