mirror of git://gcc.gnu.org/git/gcc.git
tree-data-ref.c (initialize_data_dependence_relation): Handle mismatching number of dimensions properly.
2010-07-02 Richard Guenther <rguenther@suse.de> * tree-data-ref.c (initialize_data_dependence_relation): Handle mismatching number of dimensions properly. * g++.dg/torture/20100702-1.C: New testcase. From-SVN: r161705
This commit is contained in:
parent
2334baf490
commit
1936833358
|
@ -1,3 +1,8 @@
|
|||
2010-07-02 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-data-ref.c (initialize_data_dependence_relation): Handle
|
||||
mismatching number of dimensions properly.
|
||||
|
||||
2010-07-02 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
|
||||
|
||||
PR target/44707
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2010-07-02 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* g++.dg/torture/20100702-1.C: New testcase.
|
||||
|
||||
2010-07-02 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
|
||||
|
||||
PR target/44707
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
// { dg-do compile }
|
||||
// { dg-options "-fprefetch-loop-arrays -w" }
|
||||
|
||||
class ggPoint3 {
|
||||
public:
|
||||
ggPoint3();
|
||||
inline double &x() {
|
||||
return e[0];
|
||||
}
|
||||
inline double &y() {
|
||||
return e[1];
|
||||
}
|
||||
ggPoint3(const ggPoint3 &p);
|
||||
double e[3];
|
||||
};
|
||||
class ggBox3 {
|
||||
public:
|
||||
ggPoint3 min() const;
|
||||
};
|
||||
class ggHAffineMatrix3;
|
||||
ggPoint3 operator*(const ggHAffineMatrix3 &m, const ggPoint3 &v);
|
||||
void foo (ggPoint3 *);
|
||||
void SetMatrix(ggHAffineMatrix3& toworld, ggBox3& box)
|
||||
{
|
||||
ggPoint3 p[2][2][2];
|
||||
int i, j, k;
|
||||
for (i = 0; i < 2; j++)
|
||||
for (k = 0; k < 2; k++)
|
||||
{
|
||||
if (i == 0)
|
||||
p[i][j][k].x() = box.min().x();
|
||||
if (j == 0)
|
||||
p[i][j][k].y() = box.min().y();
|
||||
p[i][j][k] = toworld * p[i][j][k];
|
||||
}
|
||||
foo (&p[0][0][0]);
|
||||
}
|
|
@ -1452,7 +1452,14 @@ initialize_data_dependence_relation (struct data_reference *a,
|
|||
return res;
|
||||
}
|
||||
|
||||
gcc_assert (DR_NUM_DIMENSIONS (a) == DR_NUM_DIMENSIONS (b));
|
||||
/* If the number of dimensions of the access to not agree we can have
|
||||
a pointer access to a component of the array element type and an
|
||||
array access while the base-objects are still the same. Punt. */
|
||||
if (DR_NUM_DIMENSIONS (a) != DR_NUM_DIMENSIONS (b))
|
||||
{
|
||||
DDR_ARE_DEPENDENT (res) = chrec_dont_know;
|
||||
return res;
|
||||
}
|
||||
|
||||
DDR_AFFINE_P (res) = true;
|
||||
DDR_ARE_DEPENDENT (res) = NULL_TREE;
|
||||
|
|
Loading…
Reference in New Issue