------- Comment #2 from burnus at gcc dot gnu dot org  2009-06-30 09:46 -------
  array(:,1) = 0
would then become
  ARRAY_RANGE_REF <array, ...> = { }

and

  array(:,1) = [1,2,3]
would then become
  ARRAY_RANGE_REF <array, ...> = { 1,2,3 }

If I recall correctly, using memcopy/memset causes alias analysis problems as
  pointerOpteratingFunction(array,...)
marks "array" as maybe-aliasing, cf. PR 40168 and especially
http://gcc.gnu.org/ml/fortran/2009-05/msg00287.html

 * * *

ARRAY_REF
These nodes represent array accesses. The first operand is the array; the
second is the index. To calculate the address of the memory accessed, you must
scale the index by the size of the type of the array elements. The type of
these expressions must be the type of a component of the array. The third and
fourth operands are used after gimplification to represent the lower bound and
component size but should not be used directly; call array_ref_low_bound and
array_ref_element_size instead.

ARRAY_RANGE_REF
These nodes represent access to a range (or “slice”) of an array. The operands
are the same as that for ARRAY_REF and have the same meanings. The type of
these expressions must be an array whose component type is the same as that of
the first operand. The range of that array type determines the amount of data
these expressions access.

(from http://gcc.gnu.org/onlinedocs/gccint/Expression-trees.html)


-- 


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

Reply via email to