------- Comment #14 from rguenth at gcc dot gnu dot org  2006-12-07 20:48 
-------
sincos is not being used because we don't see that time is not aliased by the
writes to strain_tensor:

  #   VUSE <SMT.774_6041>;
  time.463_952 = time;
  D.3397_953 = time.463_952 *
6.283185307000000108246240415610373020172119140625e+0;
  D.3398_954 = D.3397_953 * D.3396_951;
  D.3399_955 = __builtin_sin (D.3398_954);
  coefficient_956 = D.3394_948 * D.3399_955;
  D.3279_957 = pretmp.823_106643;
  D.3400_958 = pretmp.824_106641;
  D.3407_969 = poissons_ratio_841 * coefficient_956;
  D.3408_970 = -D.3407_969;
  D.5048_106405 = (real8 *) ivtmp.923_106427;
  #   SMT.774_10649 = V_MAY_DEF <SMT.774_6041>;
  MEM[base: D.5048_106405, offset: -72B] = D.3408_970;
  D.5049_5994 = (real8 *) ivtmp.923_106427;
  #   SMT.774_10650 = V_MAY_DEF <SMT.774_10649>;
  MEM[base: D.5049_5994, offset: -40B] = D.3408_970;
  D.5050_6098 = (real8 *) ivtmp.923_106427;
  #   SMT.774_10651 = V_MAY_DEF <SMT.774_10650>;
  MEM[base: D.5050_6098, offset: -8B] = coefficient_956;
  D.5051_106649 = (<unnamed type>) n_lsm.835_6013;
  D.5052_106648 = (real8 *) D.5051_106649;
  D.5053_5998 = D.5052_106648 * -8B;
  D.5054_6102 = (real8 *) ivtmp.920_106432;
  D.5055_106892 = D.5053_5998 + D.5054_6102;
  D.5056_106891 = (int8) n_lsm.835_6013;
  D.5057_106890 = (real8 *) D.5056_106891;
  #   VUSE <SMT.774_10651>;
  D.3267_1009 = MEM[base: D.5055_106892, index: D.5057_106890, step: 8B,
offset: -8B];
  #   VUSE <SMT.774_10651>;
  radius_of_curvature.466_1010 = radius_of_curvature;
  D.3394_1011 = D.3267_1009 / radius_of_curvature.466_1010;
  #   VUSE <SMT.774_10651>;
  time.463_1015 = time;
  D.3397_1016 = time.463_1015 *
6.283185307000000108246240415610373020172119140625e+0;
  D.3398_1017 = D.3397_1016 * D.3396_951;
  D.3416_1018 = __builtin_cos (D.3398_1017);

which is because strain_tensor is allocated like

      allocate (strain_tensor(3,3,number_of_sample_points))

and the gfortran allocate does not have DECL_IS_MALLOC as it has the
not supported interface 'void allocate (void**, int)'.  Would we
be able to translate this 'allocate' call by using 'internal_malloc'
it would get a different aliasing tag and just work.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30038

Reply via email to