https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80072

--- Comment #4 from rguenther at suse dot de <rguenther at suse dot de> ---
On Wed, 22 Mar 2017, jakub at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80072
> 
> --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
> This is quite impossible to reduce, after 16 hours of creduce I've reduced 22%
> from the original size.
> I've tried to build a testcase based on what I see in the reassociation, but
> void bar (int);
> unsigned long int vx, vx2, vx3;
> 
> unsigned long int
> foo (unsigned long int _55062, unsigned long int _55063,
>      unsigned long int _55172, unsigned long int _55171,
>      int u, int v, int w, int x)
> {
>   unsigned long int _55173 = _55171 * _55172;
>   _Bool t1, t2;
>   if (u == 35)
>     t1 = 1;
>   else if (u == 27)
>     t1 = 0;
>   else if (v == 12)
>     {
>       bar (4);
>       t1 = 1;
>     }
>   else if (v == 24)
>     {
>       bar (5);
>       t1 = 1;
>     }
>   else
>     {
>       bar (6);
>       t1 = 1;
>     }
>   unsigned long int _55001 = vx2;
>   unsigned long int _55053 = t1;
>   unsigned long int _55054 = _55001 * _55053;
>   unsigned long int _55064 = _55062 * _55063;
>   unsigned long int _55060 = vx;
>   unsigned long int _55065 = -_55064;
>   unsigned long int _55066 = _55060 * _55065;
>   unsigned long int _55067 = _55054 * _55066;
>   if (w == 35)
>     t2 = 1;
>   else if (w == 27)
>     t2 = 0;
>   else if (x == 12)
>     {
>       bar (4);
>       t2 = 1;
>     }
>   else if (x == 24)
>     {
>       bar (5);
>       t2 = 1;
>     }
>   else
>     {
>       bar (6);
>       t2 = 1;
>     }
>   unsigned long int _55119 = vx3;
>   unsigned long int _55225 = t2;
>   unsigned long int _55226 = _55173 * _55225;
>   unsigned long int _55227 = _55119 * _55226;
>   unsigned long int _55228 = _55067 * _55227;
>   unsigned long int _55229 = _55228 * 9323891652267032265ULL;
>   return _55229;
> }
> 
> has different ranks and so while it gives the same ops order after
> linearize_expr_tree, the following sorting changes it.

Did you try -fdump-<pass-before-reassoc>-gimple and create a gimple
testcase out of the affected function IL?

Reply via email to