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

--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> ---
(this PR is vaguely related to PR 57974)

Unrelated, but I am surprised we don't end up computing at compile-time in this
example. We vectorize sqrt before unrolling the first loop and getting the
constants. And by the time we see

  a[0] = 1.00000003593912982384429052190829644815948084413615813091e-36;
  a[1] = 9.99999991097578965450144252348949782882164643167775990862e-38;
  a[2] = 9.99999935045640392457461415399766451285519391957298315801e-39;
  a[3] = 1.0000002153053332574208756001456831092687456480096866911e-39;
  vect__5.2_42 = MEM[(float *)&a];
  vect__6.3_39 = SQRT (vect__5.2_42);

it is too late for SLP to create a constant vector. Store merging merges the
stores by pairs, not good enough, and anyway this is the end of the pipeline,
we wouldn't have any passes left to optimize the result.

Reply via email to