diff options
author | Richard Biener <rguenther@suse.de> | 2019-12-03 07:36:14 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-12-03 07:36:14 +0000 |
commit | 3d109462bdd666cc5ce2d0b6b0c3b7a3c19b0b4c (patch) | |
tree | e034e10d36c612f5389b4e06249075063f5dad5e /gcc | |
parent | 19d9824ba09dc798a622dd055825569423f9f020 (diff) | |
download | gcc-3d109462bdd666cc5ce2d0b6b0c3b7a3c19b0b4c.zip gcc-3d109462bdd666cc5ce2d0b6b0c3b7a3c19b0b4c.tar.gz gcc-3d109462bdd666cc5ce2d0b6b0c3b7a3c19b0b4c.tar.bz2 |
re PR tree-optimization/92645 (Hand written vector code is 450 times slower when compiled with GCC compared to Clang)
2019-12-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/92645
* tree-ssa.c (execute_update_addresses_taken): Avoid representing
a full def of a vector via a BIT_INSERT_EXPR.
From-SVN: r278920
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1766d6a..e06244c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-12-03 Richard Biener <rguenther@suse.de> + + PR tree-optimization/92645 + * tree-ssa.c (execute_update_addresses_taken): Avoid representing + a full def of a vector via a BIT_INSERT_EXPR. + 2019-12-02 Bill Schmidt <wschmidt@linux.ibm.com> * config/rs6000/rs6000-call.c (rs6000_invalid_builtin): Make diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 24dd8b3..8cabbf5 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1899,6 +1899,11 @@ execute_update_addresses_taken (void) && bitmap_bit_p (suitable_for_renaming, DECL_UID (sym)) && VECTOR_TYPE_P (TREE_TYPE (sym)) && TYPE_MODE (TREE_TYPE (sym)) != BLKmode + /* If it is a full replacement we can do better below. */ + && maybe_ne (wi::to_poly_offset + (TYPE_SIZE_UNIT (TREE_TYPE (lhs))), + wi::to_poly_offset + (TYPE_SIZE_UNIT (TREE_TYPE (sym)))) && known_ge (mem_ref_offset (lhs), 0) && known_gt (wi::to_poly_offset (TYPE_SIZE_UNIT (TREE_TYPE (sym))), |