This is the mail archive of the 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: [lno] fix division by zero

I wrote:

Ah, OK, I was hoping that that was the problem - that the current implementation didn't support broadcasting scalars to arrays.

[next version]:

DIMENSION A(1000000), B(1000000), C(1000000)
A = LOG(X); B = LOG(Y); C = A + B
PRINT*, C(500000)

Now that I bootstrapped the lno branch again, and found the right flags to supply:

/usr/lno/bin/gfortran -static -g -O2 -S -fdump-tree-vect-details -fscalar-evolutions -ftree-vectorize -maltivec vector.f95

I get, in vector.f95.t34.vect:

<<<<<<< analyze_loop_nest >>>>>>>


Complicated exit condition.
loop_analyzer: bad loop form.

3 times, with the last loop being:

  if (S.10_18 > 1000000) goto L.3; else goto <L7>;

  T.16_112 = (*T.1_64)[S.10_18];
  T.17_113 = (*T.4_69)[S.10_18];
  T.18_114 = T.16_112 + T.17_113;
  (*T.9_78)[S.10_18] = T.18_114;
  S.10_120 = S.10_18 + 1;
  goto <bb 7> (<L6>);

Now the 64K question is: should the vectorization pass recognize these loop constructs, or should another loop pass simplify them to forms that the vectorizer can recognize ?


Toon Moene - - phoneto: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
Maintainer, GNU Fortran 77:
GNU Fortran 95: (under construction)

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