This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: fragile test case ivopt_infer_2.c


On Wed, Jun 19, 2013 at 10:04 AM, Bin.Cheng <amker.cheng@gmail.com> wrote:
> Hi,
> For test case gcc.dg/tree-ssa/ivopt_inter_2.c
>
> #ifndef TYPE
> #define TYPE char*
> #endif
>
> extern char a[];
>
> /* Can not infer loop iteration from array -- exit test can not be replaced.  */
> void foo (unsigned int i_width, TYPE dst)
> {
>   unsigned long long i = 0;
>   unsigned long long j = 0;
>   for ( ; j < i_width; )
>     {
>       *dst = a[i];
>       dst++;
>       i += 2;
>       j += 1;
>     }
> }
>
> /* { dg-final { scan-tree-dump-times "Replacing" 0 "ivopts"} } */
> /* { dg-final { cleanup-tree-dump "ivopts" } } */
>
> It checks whether the test is eliminated by address iv candidate,
> which is fragile.
> Giving the ivopt dump file :
>
> foo (unsigned int i_width, char * dst)
> {
>   long long unsigned int j;
>   long long unsigned int i;
>   long long unsigned int _4;
>   char _9;
>   long long unsigned int _18;
>
>   <bb 2>:
>   _18 = (long long unsigned int) i_width_7(D);
>   if (_18 != 0)
>     goto <bb 3>;
>   else
>     goto <bb 7>;
>
>   <bb 3>:
>
>   <bb 4>:
>   # j_21 = PHI <j_13(5), 0(3)>
>   _9 = MEM[symbol: a, index: j_21, step: 2, offset: 0B];
>   MEM[base: dst_5(D), index: j_21, offset: 0B] = _9;
>   j_13 = j_21 + 1;
>   if (j_13 < _18)
>     goto <bb 5>;
>   else
>     goto <bb 6>;
>
>   <bb 5>:
>   goto <bb 4>;
>
>   <bb 6>:
>
>   <bb 7>:
>   return;
> }
>
> It's possible to have  "if (j_13 < _18)" eliminated into "if (j_13 !=
> _18)", and the case would fail because of dump message "Replacing exit
> test: if (j_13 < _18)"
>
> Same story for ivopt_mult_3.c
>
> Any idea how it should be handled?

Probably by checking for the real issue - I suppose at some point
the number of iterations was infered to be zero or one.

Richard.

> Thanks.
> bin
> --
> Best Regards.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]