diff options
author | Richard Guenther <rguenther@suse.de> | 2010-08-25 14:46:40 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-08-25 14:46:40 +0000 |
commit | 0ceb0201344a65bab37d6933601df77a512c334e (patch) | |
tree | c4d74b3812fa459819b2f5da7990bb89f3b7126b /gcc/c-family | |
parent | 22b139e167cdd083f3e38280e1db5880d05a130b (diff) | |
download | gcc-0ceb0201344a65bab37d6933601df77a512c334e.zip gcc-0ceb0201344a65bab37d6933601df77a512c334e.tar.gz gcc-0ceb0201344a65bab37d6933601df77a512c334e.tar.bz2 |
alias.c (get_alias_set): Assign a single alias-set to all pointers.
2010-08-25 Richard Guenther <rguenther@suse.de>
* alias.c (get_alias_set): Assign a single alias-set to
all pointers.
* gimple.c (gimple_get_alias_set): Remove special handling
for pointers.
c-family/
* c-common.c (c_common_get_alias_set): Remove special
handling for pointers.
* gcc.dg/alias-8.c: Adjust.
From-SVN: r163549
Diffstat (limited to 'gcc/c-family')
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 31 |
2 files changed, 5 insertions, 31 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 072aad4..165ec20 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2010-08-25 Richard Guenther <rguenther@suse.de> + + * c-common.c (c_common_get_alias_set): Remove special + handling for pointers. + 2010-08-20 Nathan Froyd <froydnj@codesourcery.com> * c-common.c: Use FOR_EACH_VEC_ELT. diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index e2c5d28..3a79968b 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -4087,37 +4087,6 @@ c_common_get_alias_set (tree t) if (t1 != t) return get_alias_set (t1); } - else if (POINTER_TYPE_P (t)) - { - tree t1; - - /* Unfortunately, there is no canonical form of a pointer type. - In particular, if we have `typedef int I', then `int *', and - `I *' are different types. So, we have to pick a canonical - representative. We do this below. - - Technically, this approach is actually more conservative that - it needs to be. In particular, `const int *' and `int *' - should 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 = ipp; - - 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. */ - t1 = build_type_no_quals (t); - if (t1 != t) - return get_alias_set (t1); - } /* Handle the case of multiple type nodes referring to "the same" type, which occurs with IMA. These share an alias set. FIXME: Currently only |