------- 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