#include "config.h"#include "system.h"#include "rtl.h"#include "tree.h"#include "tm_p.h"#include "function.h"#include "expr.h"#include "regs.h"#include "hard-reg-set.h"#include "basic-block.h"#include "flags.h"#include "output.h"#include "toplev.h"#include "cselib.h"#include "splay-tree.h"#include "ggc.h"#include "langhooks.h"#include "target.h"#include "gt-alias.h"

Go to the source code of this file.
Data Types | |
| type | alias_set_entry |
Defines | |
| #define | SIZE_FOR_MODE(X) (GET_MODE_SIZE (GET_MODE (X))) |
| #define | DIFFERENT_ALIAS_SETS_P(MEM1, MEM2) mems_in_disjoint_alias_sets_p (MEM1, MEM2) |
| #define | MAX_ALIAS_LOOP_PASSES 10 |
| #define | REG_BASE_VALUE(X) |
| #define | OUTGOING_REGNO(N) N |
Functions/Subroutines | |
| static int rtx_equal_for_memref_p | PARAMS ((rtx, rtx)) |
| static rtx find_symbolic_term | PARAMS ((rtx)) |
| static int memrefs_conflict_p | PARAMS ((int, rtx, int, rtx, HOST_WIDE_INT)) |
| static void record_set | PARAMS ((rtx, rtx, void *)) |
| static int base_alias_check | PARAMS ((rtx, rtx, enum machine_mode, enum machine_mode)) |
| static int insert_subset_children | PARAMS ((splay_tree_node, void *)) |
| static tree find_base_decl | PARAMS ((tree)) |
| static alias_set_entry get_alias_set_entry | PARAMS ((HOST_WIDE_INT)) |
| static rtx fixed_scalar_and_varying_struct_p | PARAMS ((rtx, rtx, rtx, rtx, int(*)(rtx, int))) |
| static bool nonoverlapping_component_refs_p | PARAMS ((tree, tree)) |
| static rtx adjust_offset_for_component_ref | PARAMS ((tree, rtx)) |
| static int write_dependence_p | PARAMS ((rtx, rtx, int)) |
| static int nonlocal_mentioned_p_1 | PARAMS ((rtx *, void *)) |
| static | GTY ((length("reg_base_value_size"))) |
| static int | mems_in_disjoint_alias_sets_p (rtx mem1, rtx mem2) |
| static int | insert_subset_children (splay_tree_node node, void *data) |
| int | alias_sets_conflict_p (HOST_WIDE_INT set1, HOST_WIDE_INT set2) |
| int | readonly_fields_p (tree type) |
| int | objects_must_conflict_p (tree t1, tree t2) |
| static tree | find_base_decl (tree t) |
| int | can_address_p (tree t) |
| HOST_WIDE_INT | get_alias_set (tree t) |
| HOST_WIDE_INT | new_alias_set () |
| void | record_alias_subset (HOST_WIDE_INT superset, HOST_WIDE_INT subset) |
| void | record_component_aliases (tree type) |
| HOST_WIDE_INT | get_varargs_alias_set () |
| HOST_WIDE_INT | get_frame_alias_set () |
| static rtx | find_base_value (rtx src) |
| static void | record_set (rtx dest, rtx set, data) |
| void | record_base_value (unsigned int regno, rtx val, int invariant) |
| void | clear_reg_alias_info (rtx reg) |
| rtx | canon_rtx (rtx x) |
| static int | rtx_equal_for_memref_p (rtx x, rtx y) |
| static rtx | find_symbolic_term (rtx x) |
| static rtx | find_base_term (rtx x) |
| static int | base_alias_check (rtx x, rtx y, enum machine_mode x_mode, enum machine_mode y_mode) |
| rtx | get_addr (rtx x) |
| rtx | addr_side_effect_eval (rtx addr, int size, int n_refs) |
| static int | memrefs_conflict_p (int xsize, rtx x, int ysize, rtx y, HOST_WIDE_INT c) |
| int | read_dependence (rtx mem, rtx x) |
| static rtx | fixed_scalar_and_varying_struct_p (rtx mem1, rtx mem2, rtx mem1_addr, rtx mem2_addr, int *varies_p) |
| static int | aliases_everything_p (rtx mem) |
| static bool | nonoverlapping_component_refs_p (tree x, tree y) |
| static tree | decl_for_component_ref (tree x) |
| static rtx | adjust_offset_for_component_ref (tree x, rtx offset) |
| static int | nonoverlapping_memrefs_p (rtx x, rtx y) |
| int | true_dependence (rtx mem, enum machine_mode mem_mode, rtx x, int *varies) |
| int | canon_true_dependence (rtx mem, enum machine_mode mem_mode, rtx mem_addr, rtx x, int *varies) |
| static int | write_dependence_p (rtx mem, rtx x, int writep) |
| int | anti_dependence (rtx mem, rtx x) |
| int | output_dependence (rtx mem, rtx x) |
| static int | nonlocal_mentioned_p_1 (rtx *loc, data) |
| static int | nonlocal_mentioned_p (rtx x) |
| static int | nonlocal_referenced_p_1 (rtx *loc, data) |
| static int | nonlocal_referenced_p (rtx x) |
| static int | nonlocal_set_p_1 (rtx *loc, data) |
| static int | nonlocal_set_p (rtx x) |
| void | mark_constant_function () |
| void | init_alias_once () |
| void | init_alias_analysis () |
| void | end_alias_analysis () |
Variables | |
| static char * | reg_seen |
| static int | unique_id |
| #define DIFFERENT_ALIAS_SETS_P | ( | MEM1, | |||
| MEM2 | ) | mems_in_disjoint_alias_sets_p (MEM1, MEM2) |
Definition at line 130 of file alias.c.
Referenced by canon_true_dependence(), true_dependence(), and write_dependence_p().
| #define MAX_ALIAS_LOOP_PASSES 10 |
| #define OUTGOING_REGNO | ( | N | ) | N |
| #define REG_BASE_VALUE | ( | X | ) |
Value:
Referenced by find_base_term(), and record_base_value().
Definition at line 124 of file alias.c.
Referenced by canon_true_dependence(), true_dependence(), and write_dependence_p().
Definition at line 1505 of file alias.c.
References GEN_INT, gen_rtx_PLUS, GET_CODE, GET_MODE, offset, and XEXP.
Referenced by memrefs_conflict_p().
Definition at line 1911 of file alias.c.
References BITS_PER_UNIT, DECL_FIELD_BIT_OFFSET, DECL_FIELD_OFFSET, GEN_INT, host_integerp(), HOST_WIDE_INT, INTVAL, NULL_RTX, TREE_CODE, tree_low_cst(), and TREE_OPERAND.
Referenced by nonoverlapping_memrefs_p().
| int alias_sets_conflict_p | ( | HOST_WIDE_INT | set1, | |
| HOST_WIDE_INT | set2 | |||
| ) |
Definition at line 261 of file alias.c.
Referenced by add_alias_set_conflicts(), build_c_cast(), gimplify_init_ctor_preeval_1(), may_alias_p(), mems_in_disjoint_alias_sets_p(), safe_from_p(), set_mem_alias_set(), set_uids_in_ptset(), strict_aliasing_warning(), and vect_base_addr_differ_p().
| static int aliases_everything_p | ( | rtx | mem | ) | [static] |
Definition at line 1823 of file alias.c.
References AND, GET_CODE, and XEXP.
Referenced by canon_true_dependence(), true_dependence(), and write_dependence_p().
Definition at line 2286 of file alias.c.
Referenced by cselib_mem_conflict_p(), insn_dead_p(), load_kills_store(), mark_used_regs(), memory_modified_1(), and sched_analyze_1().
| static int base_alias_check | ( | rtx | x, | |
| rtx | y, | |||
| enum machine_mode | x_mode, | |||
| enum machine_mode | y_mode | |||
| ) | [static] |
Definition at line 1399 of file alias.c.
References AND, canon_rtx(), find_base_term(), flag_argument_noalias, flag_expensive_optimizations, GET_CODE, GET_MODE, GET_MODE_UNIT_SIZE, INTVAL, Pmode, rtx_equal_p(), and XEXP.
Referenced by canon_true_dependence(), true_dependence(), and write_dependence_p().
| int can_address_p | ( | tree | t | ) |
Definition at line 422 of file alias.c.
References DECL_NONADDRESSABLE_P, get_alias_set(), handled_component_p(), TREE_CODE, TREE_OPERAND, TREE_TYPE, and TYPE_NONALIASED_COMPONENT.
Referenced by can_address_p(), expand_assignment(), get_alias_set(), and set_mem_attributes_minus_bitpos().
Definition at line 1067 of file alias.c.
Referenced by add_insn_mem_dependence(), addr_side_effect_eval(), base_alias_check(), canon_list_insert(), canon_rtx(), canon_true_dependence(), cselib_invalidate_mem(), init_propagate_block_info(), insn_dead_p(), invalidate(), mark_set_1(), memrefs_conflict_p(), rtx_equal_for_memref_p(), sched_analyze_1(), sched_analyze_2(), true_dependence(), and write_dependence_p().
| int canon_true_dependence | ( | rtx | mem, | |
| enum machine_mode | mem_mode, | |||
| rtx | mem_addr, | |||
| rtx | x, | |||
| int * | varies | |||
| ) |
Definition at line 2153 of file alias.c.
References aliases_everything_p(), AND, base_alias_check(), canon_rtx(), DIFFERENT_ALIAS_SETS_P, fixed_scalar_and_varying_struct_p(), get_addr(), GET_CODE, GET_MODE, GET_MODE_SIZE, MEM_VOLATILE_P, memrefs_conflict_p(), nonoverlapping_memrefs_p(), RTX_UNCHANGING_P, SIZE_FOR_MODE, and XEXP.
Referenced by check_dependence(), compute_transp(), and cselib_invalidate_mem().
Definition at line 1895 of file alias.c.
References DECL_P, NULL_TREE, TREE_CODE, and TREE_OPERAND.
Referenced by nonoverlapping_memrefs_p().
Definition at line 2909 of file alias.c.
Referenced by bypass_jumps(), cse_main(), gcse_after_reload_main(), gcse_main(), gmalloc(), life_analysis(), loop_optimize(), mark_constant_function(), reload_cse_regs_1(), ssa_const_prop(), store_motion(), and update_equiv_regs().
Definition at line 365 of file alias.c.
References d1, d2, error_mark_node, POINTER_TYPE_P, TREE_CODE, TREE_CODE_CLASS, TREE_OPERAND, and TREE_TYPE.
Referenced by find_base_decl(), and get_alias_set().
Definition at line 1266 of file alias.c.
References ADDRESSOF, AND, CONST, CONSTANT_P, convert_memory_address(), cselib_val, CSELIB_VAL_PTR, FIND_BASE_TERM, frame_pointer_rtx, GET_CODE, GET_MODE, GET_MODE_SIZE, INTVAL, MINUS, pic_offset_table_rtx, PLUS, Pmode, REG, REG_BASE_VALUE, REG_P, REG_POINTER, SIGN_EXTEND, tmp1, tmp2, TRUNCATE, val, and XEXP.
Referenced by base_alias_check(), find_base_term(), nonlocal_mentioned_p_1(), store_killed_in_insn(), true_dependence(), and write_dependence_p().
Definition at line 760 of file alias.c.
References AND, arg_pointer_rtx, CONST, CONSTANT_P, convert_memory_address(), fixed_regs, gen_rtx_ADDRESS, GET_CODE, GET_MODE, GET_MODE_SIZE, INTVAL, MEM, MINUS, PLUS, Pmode, REG, REG_N_SETS, REG_P, REG_POINTER, REGNO, SIGN_EXTEND, TRUNCATE, and XEXP.
Referenced by find_base_value(), record_base_value(), and record_set().
Definition at line 1235 of file alias.c.
References GET_CODE, GET_RTX_CLASS, GET_RTX_FORMAT, GET_RTX_LENGTH, i, and XEXP.
Referenced by find_symbolic_term().
| static rtx fixed_scalar_and_varying_struct_p | ( | rtx | mem1, | |
| rtx | mem2, | |||
| rtx | mem1_addr, | |||
| rtx | mem2_addr, | |||
| int * | varies_p | |||
| ) | [static] |
Definition at line 1796 of file alias.c.
References flag_strict_aliasing, MEM_IN_STRUCT_P, MEM_SCALAR_P, and NULL_RTX.
Referenced by canon_true_dependence(), true_dependence(), and write_dependence_p().
Definition at line 1480 of file alias.c.
Referenced by canon_list_insert(), canon_true_dependence(), cselib_invalidate_mem(), invalidate(), memrefs_conflict_p(), true_dependence(), and write_dependence_p().
| HOST_WIDE_INT get_alias_set | ( | tree | t | ) |
Definition at line 455 of file alias.c.
Referenced by access_can_touch_variable(), add_alias_set_conflicts(), assign_stack_temp_for_type(), build_c_cast(), c_common_get_alias_set(), can_address_p(), component_uses_parent_alias_set(), copy_rename_partition_coalesce(), create_alias_map_for(), cxx_get_alias_set(), expand_assignment(), expand_builtin_va_copy(), gen_mem_addressof(), get_alias_set(), get_tmt_for(), gimplify_init_constructor(), gimplify_init_ctor_preeval_1(), GTY(), may_propagate_copy(), merge_alias_info(), objects_must_conflict_p(), put_reg_into_stack(), record_component_aliases(), safe_from_p(), set_mem_attributes_minus_bitpos(), set_uids_in_ptset(), store_constructor(), strict_aliasing_warning(), and vect_base_addr_differ_p().
| HOST_WIDE_INT get_frame_alias_set | ( | void | ) |
Definition at line 747 of file alias.c.
Referenced by cris_expand_epilogue(), cris_expand_prologue(), expand_builtin_return_addr(), expand_function_start(), fix_lexical_addr(), gen_frame_mem(), gen_tmp_stack_mem(), h8300_return_addr_rtx(), restore_fpr(), restore_gprs(), s390_emit_epilogue(), s390_emit_prologue(), save_fpr(), save_gprs(), and setup_save_areas().
| HOST_WIDE_INT get_varargs_alias_set | ( | void | ) |
Definition at line 733 of file alias.c.
Referenced by alpha_setup_incoming_varargs(), arc_setup_incoming_varargs(), clipper_builtin_saveregs(), cris_expand_prologue(), expand_builtin_va_arg(), hppa_builtin_saveregs(), i960_setup_incoming_varargs(), ix86_gimplify_va_arg(), ix86_setup_incoming_varargs(), ix86_va_arg(), m32r_setup_incoming_varargs(), m88k_builtin_saveregs(), mips_setup_incoming_varargs(), mips_va_arg(), mn10300_builtin_saveregs(), rs6000_gimplify_va_arg(), rs6000_va_arg(), s390_gimplify_va_arg(), s390_va_arg(), save_fpr(), save_gprs(), setup_incoming_varargs(), sh_builtin_saveregs(), sparc_va_arg(), spill_restore_mem(), and v850_va_arg().
| static GTY | ( | (length("reg_base_value_size")) | ) | [static] |
Definition at line 156 of file alias.c.
References reg_known_equiv_p, reg_known_value, splay_tree_lookup(), and splay_tree_node_s::value.
Definition at line 2693 of file alias.c.
Referenced by bypass_jumps(), cse_main(), gcse_after_reload_main(), gcse_main(), gmalloc(), life_analysis(), loop_optimize(), mark_constant_function(), reload_cse_regs_1(), ssa_const_prop(), store_motion(), and update_equiv_regs().
| static int insert_subset_children | ( | splay_tree_node | node, | |
| void * | data | |||
| ) | [static] |
Definition at line 249 of file alias.c.
References splay_tree_insert().
Referenced by record_alias_subset().
Definition at line 2609 of file alias.c.
Referenced by rest_of_compilation(), and rest_of_handle_cfg().
Definition at line 1557 of file alias.c.
References addr_side_effect_eval(), ADDRESSOF, AND, canon_rtx(), CONST, CONSTANT_P, frame_pointer_rtx, get_addr(), GET_CODE, INTVAL, PLUS, REG, REGNO, rtx_equal_for_memref_p(), x0, x1, XEXP, y0(), and y1().
Referenced by canon_true_dependence(), memrefs_conflict_p(), true_dependence(), and write_dependence_p().
Definition at line 225 of file alias.c.
References abort, alias_sets_conflict_p(), flag_strict_aliasing, and MEM_ALIAS_SET.
| HOST_WIDE_INT new_alias_set | ( | void | ) |
Definition at line 606 of file alias.c.
Referenced by alter_reg(), cris_expand_pic_call_address(), emit_colors(), expand_builtin_longjmp(), expand_builtin_setjmp_setup(), gen_edge_profiler(), get_alias_set(), get_frame_alias_set(), get_TOC_alias_set(), get_varargs_alias_set(), init_varasm_once(), ix86_GOT_alias_set(), override_options(), rs6000_override_options(), rtl_coverage_counter_ref(), and sparc_override_options().
| static int nonlocal_mentioned_p | ( | rtx | x | ) | [static] |
Definition at line 2407 of file alias.c.
References CALL_INSN_FUNCTION_USAGE, CONST_OR_PURE_CALL_P, for_each_rtx(), GET_CODE, INSN_P, nonlocal_mentioned_p_1(), NULL, and PATTERN.
Referenced by nonlocal_referenced_p_1(), and nonlocal_set_p_1().
Definition at line 2307 of file alias.c.
References arg_pointer_rtx, base, CONST, CONSTANT_POOL_ADDRESS_P, find_base_term(), FRAME_POINTER_REGNUM, frame_pointer_rtx, GET_CODE, GET_MODE, global_regs, HARD_FRAME_POINTER_REGNUM, hard_frame_pointer_rtx, MEM, MEM_VOLATILE_P, PC, Pmode, REG, REGNO, stack_pointer_rtx, SUBREG_REG, subreg_regno(), x, and XEXP.
Referenced by nonlocal_mentioned_p().
| static int nonlocal_referenced_p | ( | rtx | x | ) | [static] |
Definition at line 2505 of file alias.c.
References CALL_INSN_FUNCTION_USAGE, CONST_OR_PURE_CALL_P, for_each_rtx(), GET_CODE, INSN_P, nonlocal_referenced_p_1(), NULL, and PATTERN.
Referenced by mark_constant_function().
Definition at line 2432 of file alias.c.
References GET_CODE, GET_MODE, GET_MODE_SIZE, MEM, MEM_VOLATILE_P, nonlocal_mentioned_p(), PC, REG, SET, SET_DEST, SET_SRC, SUBREG_REG, UNITS_PER_WORD, USE, x, and XEXP.
Referenced by nonlocal_referenced_p().
| static int nonlocal_set_p | ( | rtx | x | ) | [static] |
Definition at line 2585 of file alias.c.
References CALL_INSN_FUNCTION_USAGE, CONST_OR_PURE_CALL_P, for_each_rtx(), GET_CODE, INSN_P, nonlocal_set_p_1(), NULL, and PATTERN.
Referenced by mark_constant_function(), and nonlocal_set_p_1().
Definition at line 2530 of file alias.c.
References GET_CODE, MEM_VOLATILE_P, nonlocal_mentioned_p(), nonlocal_set_p(), SET, SET_DEST, SET_SRC, USE, x, and XEXP.
Referenced by nonlocal_set_p().
Definition at line 1838 of file alias.c.
References DECL_FIELD_CONTEXT, TREE_CODE, and TREE_OPERAND.
Referenced by nonoverlapping_memrefs_p().
Definition at line 1942 of file alias.c.
References adjust_offset_for_component_ref(), CONSTANT_P, decl_for_component_ref(), DECL_P, DECL_RTL, flag_argument_noalias, GET_CODE, GET_MODE, GET_MODE_SIZE, HOST_WIDE_INT, int, INTVAL, MEM, MEM_EXPR, MEM_OFFSET, MEM_SIZE, nonoverlapping_component_refs_p(), PLUS, REG_P, REGNO, REGNO_PTR_FRAME_P, rtx_equal_p(), TREE_CODE, TREE_OPERAND, and XEXP.
Referenced by canon_true_dependence(), true_dependence(), and write_dependence_p().
Definition at line 323 of file alias.c.
Referenced by add_alias_set_conflicts(), and assign_stack_temp_for_type().
Definition at line 2296 of file alias.c.
Referenced by frv_registers_conflict_p_1(), memory_modified_1(), sched_analyze_1(), and store_killed_in_insn().
| static rtx fixed_scalar_and_varying_struct_p PARAMS | ( | (rtx, rtx, rtx, rtx, int(*)(rtx, int)) | ) | [static] |
| static alias_set_entry get_alias_set_entry PARAMS | ( | (HOST_WIDE_INT) | ) | [static] |
| static int insert_subset_children PARAMS | ( | (splay_tree_node, void *) | ) | [static] |
| static int base_alias_check PARAMS | ( | (rtx, rtx, enum machine_mode, enum machine_mode) | ) | [static] |
Definition at line 1780 of file alias.c.
Referenced by Is_There_OP_Dependence(), and sched_analyze_2().
| int readonly_fields_p | ( | tree | type | ) |
Definition at line 299 of file alias.c.
References TREE_CHAIN, TREE_CODE, TREE_READONLY, TREE_TYPE, and TYPE_FIELDS.
Referenced by expand_expr(), objects_must_conflict_p(), and readonly_fields_p().
| static void record_alias_subset | ( | HOST_WIDE_INT | superset, | |
| HOST_WIDE_INT | subset | |||
| ) |
Definition at line 626 of file alias.c.
Referenced by get_alias_set(), and record_component_aliases().
Definition at line 1024 of file alias.c.
Referenced by copy_loop_body(), final_biv_value(), final_giv_value(), find_splittable_givs(), find_splittable_regs(), loop_regs_update(), and unroll_loop().
Definition at line 931 of file alias.c.
References abort, AND, find_base_value(), fixed_regs, GEN_INT, gen_rtx_ADDRESS, GET_CODE, MINUS, NULL_RTX, PLUS, Pmode, REG, REGNO, SET_SRC, src, and XEXP.
Referenced by init_alias_analysis().
Definition at line 1106 of file alias.c.
References abort, ADDRESSOF, canon_rtx(), CSELIB_VAL_PTR, EQ, GET_CODE, GET_MODE, GET_RTX_CLASS, GET_RTX_FORMAT, GET_RTX_LENGTH, i, NE, REG, REGNO, strcmp(), XEXP, XINT, XSTR, XVECEXP, and XVECLEN.
Referenced by memrefs_conflict_p(), and rtx_equal_for_memref_p().
| int true_dependence | ( | rtx | mem, | |
| enum machine_mode | mem_mode, | |||
| rtx | x, | |||
| int * | varies | |||
| ) |
Definition at line 2069 of file alias.c.
References aliases_everything_p(), AND, base, base_alias_check(), canon_rtx(), CONSTANT_POOL_ADDRESS_P, DIFFERENT_ALIAS_SETS_P, find_base_term(), fixed_scalar_and_varying_struct_p(), get_addr(), GET_CODE, GET_MODE, GET_MODE_SIZE, MEM_VOLATILE_P, memrefs_conflict_p(), nonoverlapping_memrefs_p(), RTX_UNCHANGING_P, SIZE_FOR_MODE, and XEXP.
Referenced by check_dependence(), find_mem_conflicts(), frv_registers_conflict_p_1(), load_kills_store(), load_mems(), loop_invariant_p(), memref_referenced_p(), mems_conflict_for_gcse_p(), replace_loop_mems(), safe_from_p(), sched_analyze_2(), and validate_equiv_mem_from_store().
Definition at line 2217 of file alias.c.
References aliases_everything_p(), base, base_alias_check(), canon_rtx(), CONSTANT_POOL_ADDRESS_P, DIFFERENT_ALIAS_SETS_P, find_base_term(), fixed_scalar_and_varying_struct_p(), get_addr(), GET_CODE, GET_MODE, MEM_VOLATILE_P, memrefs_conflict_p(), nonoverlapping_memrefs_p(), rtx_addr_varies_p(), RTX_UNCHANGING_P, SIZE_FOR_MODE, and XEXP.
Referenced by anti_dependence(), and output_dependence().
1.5.6