aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-12-03 07:36:14 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-12-03 07:36:14 +0000
commit3d109462bdd666cc5ce2d0b6b0c3b7a3c19b0b4c (patch)
treee034e10d36c612f5389b4e06249075063f5dad5e /gcc/tree-ssa.c
parent19d9824ba09dc798a622dd055825569423f9f020 (diff)
downloadgcc-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/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c5
1 files changed, 5 insertions, 0 deletions
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))),