diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2005-12-06 04:22:11 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@gcc.gnu.org> | 2005-12-06 04:22:11 +0000 |
commit | 326eda4b252e23e9c9b2ee1f0ad484c2175e7534 (patch) | |
tree | 88dba83e793d94c96e1d4866470453d1f88073c6 /gcc/tree-flow-inline.h | |
parent | 45c76dbb43ff77f9d8fd89271033784a9bfbd4c5 (diff) | |
download | gcc-326eda4b252e23e9c9b2ee1f0ad484c2175e7534.zip gcc-326eda4b252e23e9c9b2ee1f0ad484c2175e7534.tar.gz gcc-326eda4b252e23e9c9b2ee1f0ad484c2175e7534.tar.bz2 |
In gcc/ 2005-12-05 Daniel Berlin <dberlin@dberlin.org>
In gcc/
2005-12-05 Daniel Berlin <dberlin@dberlin.org>
* print-tree.c (print_node): Ditto.
* tree-dfa.c (add_referenced_var): Tag's don't have DECL_INITIAL.
* tree-dump.c (dequeue_and_dump): Check for decl_common structure
before accessing DECL_ARTIFICIAL.
Handle new tag tree codes.
* tree-flow-inline.h (clear_call_clobbered): Update for tag
changes.
(unmodifiable_var_p): Ditto.
* tree-flow.h (mem_tag_kind): Remove.
(struct var_ann_d): Remove mem_tag_kind member.
* tree-gimple.c (is_gimple_reg): Tags are not gimple registers.
* tree-pretty-print.c (dump_generic_node): Handle memory tags.
* tree-ssa-alias.c (init_alias_info): Update for memory tag changes.
(group_aliases): Ditto.
(setup_pointers_and_addressables): Ditto.
(is_escape_site): Ditto.
(may_alias_p): Ditto.
(create_tag_raw): New function.
(create_memory_tag): Use it.
(dump_alias_info): Update for tags.
(may_be_aliased): Ditto.
(add_type_alias): Ditto.
(new_type_alias): Ditto.
(create_sft): Ditto.
(create_structure_vars): Ditto.
* tree-ssa-ccp.c (get_default_value): Ditto.
* tree-ssa-operands.c (get_expr_operands): Ditto.
(add_stmt_operand): Ditto.
(add_call_clobber_ops): Remove duplicated condition.
* tree-ssa.c (verify_flow_insensitive_alias_info): Update for
tags.
* tree-tailcall.c (suitable_for_tail_opt_p): Ditto.
* tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
* tree.c (init_ttree): Update structures for new tree codes.
(tree_code_size): Update sizes for new tree codes.
(make_node_stat): Don't try to set common things on minimal
structures.
(tree_node_structure): Update for tags.
(is_global_var): Ditto.
* tree.def: Add new tree codes.
* tree.h (MTAG_P): New macro.
(TREE_MEMORY_TAG_CHECK): Ditto.
(SSA_VAR_P): Update for tags.
(struct tree_memory_tag): New structure.
(MTAG_GLOBAL): New macro.
(union tree_node): Add memory tag member.
* treestruct.def (TS_MEMORY_TAG): New.
In gcc/cp
2005-12-05 Daniel Berlin <dberlin@dberlin.org>
* ptree.c (cxx_print_decl): Update to check for decl_common
structure.
From-SVN: r108102
Diffstat (limited to 'gcc/tree-flow-inline.h')
-rw-r--r-- | gcc/tree-flow-inline.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index e1c19fc..ddfa77a 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -845,13 +845,12 @@ is_call_clobbered (tree var) static inline void mark_call_clobbered (tree var) { - var_ann_t ann = var_ann (var); /* If VAR is a memory tag, then we need to consider it a global variable. This is because the pointer that VAR represents has been found to point to either an arbitrary location or to a known location in global memory. */ - if (ann->mem_tag_kind != NOT_A_TAG && ann->mem_tag_kind != STRUCT_FIELD) - DECL_EXTERNAL (var) = 1; + if (MTAG_P (var) && TREE_CODE (var) != STRUCT_FIELD_TAG) + MTAG_GLOBAL (var) = 1; bitmap_set_bit (call_clobbered_vars, DECL_UID (var)); ssa_call_clobbered_cache_valid = false; ssa_ro_call_cache_valid = false; @@ -861,9 +860,8 @@ mark_call_clobbered (tree var) static inline void clear_call_clobbered (tree var) { - var_ann_t ann = var_ann (var); - if (ann->mem_tag_kind != NOT_A_TAG && ann->mem_tag_kind != STRUCT_FIELD) - DECL_EXTERNAL (var) = 0; + if (MTAG_P (var) && TREE_CODE (var) != STRUCT_FIELD_TAG) + MTAG_GLOBAL (var) = 0; bitmap_clear_bit (call_clobbered_vars, DECL_UID (var)); ssa_call_clobbered_cache_valid = false; ssa_ro_call_cache_valid = false; @@ -1404,6 +1402,10 @@ unmodifiable_var_p (tree var) { if (TREE_CODE (var) == SSA_NAME) var = SSA_NAME_VAR (var); + + if (MTAG_P (var)) + return TREE_READONLY (var) && (TREE_STATIC (var) || MTAG_GLOBAL (var)); + return TREE_READONLY (var) && (TREE_STATIC (var) || DECL_EXTERNAL (var)); } |