This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/42846] New: GCC sometimes ignores information about pointer target alignment
- From: "bredelin at ucla dot edu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 Jan 2010 15:11:56 -0000
- Subject: [Bug tree-optimization/42846] New: GCC sometimes ignores information about pointer target alignment
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
GCC sometimes loses alignment information.
If we declare an aligned pointer type:
// These two lines work (together)
typedef real aligned_real __attribute__((aligned(16)));
typedef const aligned_real* SSE_PTR;
Then gcc generates aligned access here:
// This function uses ALIGNED accesses
real f(SSE_PTR p, SSE_PTR q,int n)
{
real sum = 0;
for(int i=0; i<n;i++)
sum += p[i] * q[i];
return sum;
}
But not here:
real f2a(const double* p_, const double* q_,int n)
{
SSE_PTR __restrict__ p = p_;
SSE_PTR __restrict__ q = q_;
real sum = 0;
for(int i=0; i<n;i++)
sum += p[i] * q[i];
return sum;
}
This could matter when the user know which things are aligned.
gcc version 4.5.0 20100119 (experimental) [trunk revision 156049] (Ubuntu
20100119-0ubuntu1)
gcc-4.5 -g -c test.C -O3 -ffast-math -msse3 -mtune=barcelona
-ftree-vectorizer-verbose=4
--
Summary: GCC sometimes ignores information about pointer target
alignment
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bredelin at ucla dot edu
GCC build triplet: x86_64-linux-gnu
GCC host triplet: x86_64-linux-gnu
GCC target triplet: x86_64-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42846