diff options
author | Richard Biener <rguenther@suse.de> | 2021-04-15 13:03:21 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2021-04-26 11:04:00 +0200 |
commit | b972e036f40c12b106f9070c3e8adea0eb8a45fa (patch) | |
tree | c7ea13fc150948db248df196e567eac1c4ddd729 /gcc/tree-cfg.c | |
parent | 152334cfb7a17bb3f1356f31a2e808d3ee459605 (diff) | |
download | gcc-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.c | 43 |
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 |