mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-12 12:50:39 +08:00
re PR tree-optimization/52571 (vectorizer changes alignment of common symbols)
2012-03-14 Richard Guenther <rguenther@suse.de> PR tree-optimization/52571 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Move flag_section_anchors check ... (vect_can_force_dr_alignment_p): ... here. Do not re-align DECL_COMMON variables. * gcc.dg/vect/vect-2.c: Initialize arrays. * gcc.dg/vect/no-section-anchors-vect-34.c: Likewise. * gcc.target/i386/recip-vec-divf.c: Use -fno-common. * gcc.target/i386/recip-vec-sqrtf.c: Likewise. From-SVN: r185380
This commit is contained in:
parent
26c71b9368
commit
c205d0b3f5
@ -1,3 +1,11 @@
|
||||
2012-03-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/52571
|
||||
* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Move
|
||||
flag_section_anchors check ...
|
||||
(vect_can_force_dr_alignment_p): ... here. Do not re-align
|
||||
DECL_COMMON variables.
|
||||
|
||||
2012-03-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree.h (DECL_BIT_FIELD_REPRESENTATIVE): New define.
|
||||
|
@ -1,3 +1,11 @@
|
||||
2012-03-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/52571
|
||||
* gcc.dg/vect/vect-2.c: Initialize arrays.
|
||||
* gcc.dg/vect/no-section-anchors-vect-34.c: Likewise.
|
||||
* gcc.target/i386/recip-vec-divf.c: Use -fno-common.
|
||||
* gcc.target/i386/recip-vec-sqrtf.c: Likewise.
|
||||
|
||||
2012-03-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/52080
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
struct {
|
||||
char ca[N];
|
||||
} s;
|
||||
} s = {};
|
||||
char cb[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
|
||||
|
||||
__attribute__ ((noinline))
|
||||
|
@ -6,7 +6,7 @@
|
||||
#define N 16
|
||||
|
||||
char cb[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
|
||||
char ca[N];
|
||||
char ca[N] = {};
|
||||
|
||||
__attribute__ ((noinline))
|
||||
int main1 ()
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse -mfpmath=sse -mrecip" } */
|
||||
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse -mfpmath=sse -mrecip -fno-common" } */
|
||||
|
||||
float a[4];
|
||||
float b[4];
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse -mfpmath=sse -mrecip" } */
|
||||
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse -mfpmath=sse -mrecip -fno-common" } */
|
||||
|
||||
float a[4];
|
||||
float b[4];
|
||||
|
@ -872,10 +872,7 @@ vect_compute_data_ref_alignment (struct data_reference *dr)
|
||||
|
||||
if (!base_aligned)
|
||||
{
|
||||
/* Do not change the alignment of global variables if
|
||||
flag_section_anchors is enabled. */
|
||||
if (!vect_can_force_dr_alignment_p (base, TYPE_ALIGN (vectype))
|
||||
|| (TREE_STATIC (base) && flag_section_anchors))
|
||||
if (!vect_can_force_dr_alignment_p (base, TYPE_ALIGN (vectype)))
|
||||
{
|
||||
if (vect_print_dump_info (REPORT_DETAILS))
|
||||
{
|
||||
@ -4546,12 +4543,22 @@ vect_can_force_dr_alignment_p (const_tree decl, unsigned int alignment)
|
||||
if (TREE_CODE (decl) != VAR_DECL)
|
||||
return false;
|
||||
|
||||
if (DECL_EXTERNAL (decl))
|
||||
/* We cannot change alignment of common or external symbols as another
|
||||
translation unit may contain a definition with lower alignment.
|
||||
The rules of common symbol linking mean that the definition
|
||||
will override the common symbol. */
|
||||
if (DECL_EXTERNAL (decl)
|
||||
|| DECL_COMMON (decl))
|
||||
return false;
|
||||
|
||||
if (TREE_ASM_WRITTEN (decl))
|
||||
return false;
|
||||
|
||||
/* Do not change the alignment of global variables if flag_section_anchors
|
||||
is enabled. */
|
||||
if (TREE_STATIC (decl) && flag_section_anchors)
|
||||
return false;
|
||||
|
||||
if (TREE_STATIC (decl))
|
||||
return (alignment <= MAX_OFILE_ALIGNMENT);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user