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