This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran 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: RFA: Revamp fortran array types


Hi Dominique,

On Tue, 18 Aug 2009, Dominique Dhumieres wrote:

> without the patch and
> 
> induct.f90:1660: note: Access function of PHI: {9, +, 4294967295}_3
> induct.f90:1660: note: step: 4294967295,  init: 9
> induct.f90:1660: note: Detected induction.
> induct.f90:1660: note: Analyze phi: l12_lower_10 = PHI <l12_lower_9(13), l12_lower_442(15)>
> 
> induct.f90:1660: note: reduction: multiple types: operation type: real(kind=8), operands types: real(kind=8),real(kind=8)
> induct.f90:1660: note: Unknown def-use cycle pattern.

Aha!  That's something else than I had assumed in my mail a few minutes 
ago.  The vectorizer doesn't see through some trivial "conversions".  The 
conversion here is:
  T1 foo;
  ... ((T2)foo) ...

where T1 and T2 are really the same type but with different alias sets (in 
this case it's both a variant of real(kind=8)).  Unfortunately the need 
for different alias sets means that the two types can't be really variants 
of each other, hence conversions between them are not useless, hence they 
aren't stripped away.  Of course they preserve values just fine, so in 
reality the conversion _can_ be stripped in such contexts.  Hmm.

> with it. Is this enough to explain the missed vectorizations with "not 
> vectorized: unsupported use in stmt."?

Yes.


Ciao,
Michael.


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