gccint: Memory model

1 
1 13.5 Memory model
1 =================
1 
1 The memory model used by the middle-end models that of the C/C++
1 languages.  The middle-end has the notion of an effective type of a
1 memory region which is used for type-based alias analysis.
1 
1  The following is a refinement of ISO C99 6.5/6, clarifying the block
1 copy case to follow common sense and extending the concept of a dynamic
1 effective type to objects with a declared type as required for C++.
1 
1      The effective type of an object for an access to its stored value is
1      the declared type of the object or the effective type determined by
1      a previous store to it.  If a value is stored into an object through
1      an lvalue having a type that is not a character type, then the
1      type of the lvalue becomes the effective type of the object for that
1      access and for subsequent accesses that do not modify the stored value.
1      If a value is copied into an object using memcpy or memmove,
1      or is copied as an array of character type, then the effective type
1      of the modified object for that access and for subsequent accesses that
1      do not modify the value is undetermined.  For all other accesses to an
1      object, the effective type of the object is simply the type of the
1      lvalue used for the access.
1