aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2021-04-15 13:03:21 +0200
committerRichard Biener <rguenther@suse.de>2021-04-26 11:04:00 +0200
commitb972e036f40c12b106f9070c3e8adea0eb8a45fa (patch)
treec7ea13fc150948db248df196e567eac1c4ddd729 /gcc/tree-cfg.c
parent152334cfb7a17bb3f1356f31a2e808d3ee459605 (diff)
downloadgcc-b972e036f40c12b106f9070c3e8adea0eb8a45fa.zip
gcc-b972e036f40c12b106f9070c3e8adea0eb8a45fa.tar.gz
gcc-b972e036f40c12b106f9070c3e8adea0eb8a45fa.tar.bz2
Move gimplify_buildN API local to only remaining user
This moves the legacy gimplify_buildN API to tree-vect-generic.c, its only user and elides the gimplification step, making it a wrapper around gimple_build, adjusting tree_vec_extract for this. I've noticed that vector CTOR expansion doesn't deal with unfolded {} and thus this makes it more resilent. I've also adjusted the match.pd vector CTOR extraction code to make sure it doesn't produce a CTOR when folding would make it a vector constant. 2021-04-15 Richard Biener <rguenther@suse.de> * tree-cfg.h (gimplify_build1): Remove. (gimplify_build2): Likewise. (gimplify_build3): Likewise. * tree-cfg.c (gimplify_build1): Move to tree-vect-generic.c. (gimplify_build2): Likewise. (gimplify_build3): Likewise. * tree-vect-generic.c (gimplify_build1): Move from tree-cfg.c. Modernize. (gimplify_build2): Likewise. (gimplify_build3): Likewise. (tree_vec_extract): Use resimplify with following SSA edges. (expand_vector_parallel): Avoid passing NULL size/bitpos to tree_vec_extract. * expr.c (store_constructor): Deal with zero-element CTORs. * match.pd (bit_field_ref <vector CTOR>): Make sure to produce vector constants when possible.
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c43
1 files changed, 0 insertions, 43 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 316aa83..f8d15ff 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -9198,49 +9198,6 @@ insert_cond_bb (basic_block bb, gimple *stmt, gimple *cond,
return new_bb;
}
-/* Build a ternary operation and gimplify it. Emit code before GSI.
- Return the gimple_val holding the result. */
-
-tree
-gimplify_build3 (gimple_stmt_iterator *gsi, enum tree_code code,
- tree type, tree a, tree b, tree c)
-{
- tree ret;
- location_t loc = gimple_location (gsi_stmt (*gsi));
-
- ret = fold_build3_loc (loc, code, type, a, b, c);
- return force_gimple_operand_gsi (gsi, ret, true, NULL, true,
- GSI_SAME_STMT);
-}
-
-/* Build a binary operation and gimplify it. Emit code before GSI.
- Return the gimple_val holding the result. */
-
-tree
-gimplify_build2 (gimple_stmt_iterator *gsi, enum tree_code code,
- tree type, tree a, tree b)
-{
- tree ret;
-
- ret = fold_build2_loc (gimple_location (gsi_stmt (*gsi)), code, type, a, b);
- return force_gimple_operand_gsi (gsi, ret, true, NULL, true,
- GSI_SAME_STMT);
-}
-
-/* Build a unary operation and gimplify it. Emit code before GSI.
- Return the gimple_val holding the result. */
-
-tree
-gimplify_build1 (gimple_stmt_iterator *gsi, enum tree_code code, tree type,
- tree a)
-{
- tree ret;
-
- ret = fold_build1_loc (gimple_location (gsi_stmt (*gsi)), code, type, a);
- return force_gimple_operand_gsi (gsi, ret, true, NULL, true,
- GSI_SAME_STMT);
-}
-
/* Given a basic block B which ends with a conditional and has