* c-common.c (c_get_alias_set): Update comment.

From-SVN: r28780
This commit is contained in:
Mark Mitchell 1999-08-20 21:57:38 +00:00 committed by Mark Mitchell
parent f2655b99bc
commit b61148dd4f
2 changed files with 21 additions and 4 deletions

View File

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

View File

@ -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));