Fix PR46928: handle "A[p] == A[p]" in data dep analysis with p a parameter of the loop.
2010-12-14 Sebastian Pop <sebastian.pop@amd.com> PR tree-optimization/46928 * tree-data-ref.c (analyze_overlapping_iterations): Handle "A[p] == A[p]" in data dependence analysis with p a parameter of the loop. * gcc.dg/tree-ssa/ldist-17.c: New. From-SVN: r167843
This commit is contained in:
parent
ab2210870b
commit
3e6f8b5606
|
@ -1,3 +1,9 @@
|
|||
2010-12-14 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR tree-optimization/46928
|
||||
* tree-data-ref.c (analyze_overlapping_iterations): Handle "A[p] == A[p]"
|
||||
in data dependence analysis with p a parameter of the loop.
|
||||
|
||||
2010-12-14 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR tree-optimization/45948
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2010-12-14 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR tree-optimization/46928
|
||||
* gcc.dg/tree-ssa/ldist-17.c: New.
|
||||
|
||||
2010-12-14 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR tree-optimization/45948
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -ftree-loop-distribution -fdump-tree-ldist-details" } */
|
||||
|
||||
typedef int mad_fixed_t;
|
||||
struct mad_pcm
|
||||
{
|
||||
unsigned int samplerate;
|
||||
unsigned short channels;
|
||||
unsigned short length;
|
||||
mad_fixed_t samples[2][1152];
|
||||
};
|
||||
struct mad_synth
|
||||
{
|
||||
mad_fixed_t filter[2][2][2][16][8];
|
||||
unsigned int phase;
|
||||
struct mad_pcm pcm;
|
||||
};
|
||||
void mad_synth_mute (struct mad_synth *synth);
|
||||
void
|
||||
mad_synth_mute (struct mad_synth *synth)
|
||||
{
|
||||
unsigned int ch;
|
||||
unsigned int s;
|
||||
unsigned int v;
|
||||
|
||||
ch = 0U;
|
||||
while (ch < 2U)
|
||||
{
|
||||
s = 0U;
|
||||
while (s < 16U)
|
||||
{
|
||||
v = 0U;
|
||||
while (v < 8U)
|
||||
{
|
||||
synth->filter[ch][1][1][s][v] = 0;
|
||||
synth->filter[ch][1][0][s][v] = 0;
|
||||
synth->filter[ch][0][1][s][v] = 0;
|
||||
synth->filter[ch][0][0][s][v] = 0;
|
||||
v++;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
ch++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "distributed: split to 4" "ldist" } } */
|
||||
/* { dg-final { scan-tree-dump-times "__builtin_memset" 8 "ldist" } } */
|
||||
/* { dg-final { cleanup-tree-dump "ldist" } } */
|
|
@ -2653,7 +2653,8 @@ analyze_overlapping_iterations (tree chrec_a,
|
|||
/* If they are the same chrec, and are affine, they overlap
|
||||
on every iteration. */
|
||||
else if (eq_evolutions_p (chrec_a, chrec_b)
|
||||
&& evolution_function_is_affine_multivariate_p (chrec_a, lnn))
|
||||
&& (evolution_function_is_affine_multivariate_p (chrec_a, lnn)
|
||||
|| operand_equal_p (chrec_a, chrec_b, 0)))
|
||||
{
|
||||
dependence_stats.num_same_subscript_function++;
|
||||
*overlap_iterations_a = conflict_fn (1, affine_fn_cst (integer_zero_node));
|
||||
|
@ -2662,7 +2663,7 @@ analyze_overlapping_iterations (tree chrec_a,
|
|||
}
|
||||
|
||||
/* If they aren't the same, and aren't affine, we can't do anything
|
||||
yet. */
|
||||
yet. */
|
||||
else if ((chrec_contains_symbols (chrec_a)
|
||||
|| chrec_contains_symbols (chrec_b))
|
||||
&& (!evolution_function_is_affine_multivariate_p (chrec_a, lnn)
|
||||
|
|
Loading…
Reference in New Issue