summaryrefslogtreecommitdiff
path: root/gcc/symtab.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2015-03-10 05:24:21 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2015-03-10 04:24:21 +0000
commitcaf2df93de6eda7d35f78e31517a13a3676b1f5c (patch)
tree6649fcc416406122c827c2e5a9961675ab392c9a /gcc/symtab.c
parent57ace19f92d886930470b037f7b3cd8ef4cafae4 (diff)
re PR tree-optimization/65355 (vectorizer increase alignment of symbols already placed in anchors)
PR tree-optimization/65355 * varasm.c (notice_global_symbol): Do not produce RTL. * symtab.c (symtab_node::can_increase_alignment_p): Check for section anchor. * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Do not check for section anchors. * gcc.dg/vect/section-anchors-vect-69.c: Update template. From-SVN: r221297
Diffstat (limited to 'gcc/symtab.c')
-rw-r--r--gcc/symtab.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/symtab.c b/gcc/symtab.c
index 38337349d15..88e168bd193 100644
--- a/gcc/symtab.c
+++ b/gcc/symtab.c
@@ -1924,6 +1924,13 @@ symtab_node::can_increase_alignment_p (void)
if (TREE_ASM_WRITTEN (target->decl))
return false;
+ /* If target is already placed in an anchor, we can not touch its
+ alignment. */
+ if (DECL_RTL_SET_P (target->decl)
+ && MEM_P (DECL_RTL (target->decl))
+ && SYMBOL_REF_HAS_BLOCK_INFO_P (XEXP (DECL_RTL (target->decl), 0)))
+ return false;
+
/* Constant pool entries may be shared. */
if (DECL_IN_CONSTANT_POOL (target->decl))
return false;