* c-common.c (c_get_alias_set): Update comment.
From-SVN: r28780
This commit is contained in:
parent
f2655b99bc
commit
b61148dd4f
@ -1,3 +1,7 @@
|
||||
Fri Aug 20 15:02:10 1999 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* c-common.c (c_get_alias_set): Update comment.
|
||||
|
||||
1999-08-20 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||
|
||||
* linux.h (LIB_SPEC): Added.
|
||||
|
@ -3411,11 +3411,24 @@ c_get_alias_set (t)
|
||||
`I *' are different types. So, we have to pick a canonical
|
||||
representative. We do this below.
|
||||
|
||||
Note that this approach is actually more conservative that it
|
||||
needs to be. In particular, `const int *' and `int *' should
|
||||
be in different alias sets, but this approach puts them in
|
||||
the same alias set. */
|
||||
Technically, this approach is actually more conservative that
|
||||
it needs to be. In particular, `const int *' and `int *'
|
||||
chould be in different alias sets, according to the C and C++
|
||||
standard, since their types are not the same, and so,
|
||||
technically, an `int **' and `const int **' cannot point at
|
||||
the same thing.
|
||||
|
||||
But, the standard is wrong. In particular, this code is
|
||||
legal C++:
|
||||
|
||||
int *ip;
|
||||
int **ipp = &ip;
|
||||
const int* const* cipp = &ip;
|
||||
|
||||
And, it doesn't make sense for that to be legal unless you
|
||||
can dereference IPP and CIPP. So, we ignore cv-qualifiers on
|
||||
the pointed-to types. This issue has been reported to the
|
||||
C++ committee. */
|
||||
t = TYPE_MAIN_VARIANT (TREE_TYPE (type));
|
||||
t = ((TREE_CODE (type) == POINTER_TYPE)
|
||||
? build_pointer_type (t) : build_reference_type (t));
|
||||
|
Loading…
Reference in New Issue
Block a user