diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-23 20:43:44 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-23 20:43:44 +0000 |
commit | b24423db5b258d251c2f58f447182ae03e1e4f4f (patch) | |
tree | 78c56d654a5d59c1b915116b930d92efc18f678e /gcc/alias.c | |
parent | 8548c4ad9777bf538d830b418f6457d7b7d4ccb1 (diff) | |
download | gcc-b24423db5b258d251c2f58f447182ae03e1e4f4f.tar.gz |
* alias.c (get_alias_set): Add support for TYPE_REF_CAN_ALIAS_ALL.
* c-common.c (handle_mode_attribute): Add extra arg to
build_pointer_type_for_mode and build_reference_type_for_mode.
* c-typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
for INTEGER_CST.
* tree.c (build_pointer_type_for_mode): Add arg CAN_ALIAS_ALL.
Chain pointers via TYPE_NEXT_PTR_TO.
(build_reference_type_for_mode): Similarly.
(build_type_no_quals): Add extra arg to build_pointer_type_for_mode
and build_reference_type_for_mode.
(tree_check4_failed): New function.
* tree.h (TREE_CHECK4, PTR_OR_REF_CHECK): New macros.
(TYPE_REF_CAN_ALIAS_ALL, TYPE_NEXT_PTR_TO, TYPE_NEXT_REF_TO): Likewise.
(TREE_NO_UNSUED_WARNING, TREE_VIA_VIRTUAL, TREE_CONSTANT_OVERFLOW):
Add check.
* cp/typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
for INTEGER_CST.
* ada/decl.c (gnat_to_gnu_entity, case E_Access_Type): Pass value
of No_Strict_Aliasing to build_pointer_type_for_mode.
* ada/utils.c (update_pointer_to): Walk pointer and ref chains.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79873 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/alias.c')
-rw-r--r-- | gcc/alias.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/alias.c b/gcc/alias.c index be10ba688a6..22e1e70ade4 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -533,8 +533,11 @@ get_alias_set (tree t) } /* If we have an INDIRECT_REF via a void pointer, we don't - know anything about what that might alias. */ - else if (TREE_CODE (TREE_TYPE (inner)) == VOID_TYPE) + know anything about what that might alias. Likewise if the + pointer is marked that way. */ + else if (TREE_CODE (TREE_TYPE (inner)) == VOID_TYPE + || (TYPE_REF_CAN_ALIAS_ALL + (TREE_TYPE (TREE_OPERAND (inner, 0))))) return 0; } |