libFirm
irmemory.h
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5 
12 #ifndef FIRM_ANA_IRMEMORY_H
13 #define FIRM_ANA_IRMEMORY_H
14 
15 #include "firm_types.h"
16 #include "begin.h"
17 
28 typedef enum ir_alias_relation {
33 
39 
43  aa_opt_always_alias = 1u << 0,
45  aa_opt_type_based = 1u << 1,
48  aa_opt_no_alias = 1u << 3,
50  aa_opt_inherited = 1u << 4,
52 ENUM_BITSET(ir_disambiguator_options)
53 
54 
57 FIRM_API const char *get_ir_alias_relation_name(ir_alias_relation rel);
58 
72  const ir_node *addr1, const ir_type *type1, unsigned size1,
73  const ir_node *addr2, const ir_type *type2, unsigned size2);
74 
83 FIRM_API void assure_irg_entity_usage_computed(ir_graph *irg);
84 
89 
96 
109 FIRM_API void assure_irp_globals_entity_usage_computed(void);
110 
117 
125  ir_disambiguator_options options);
126 
134 
140 FIRM_API void mark_private_methods(void);
141 
144 #include "end.h"
145 
146 #endif
Unknown state, may alias.
Definition: irmemory.h:30
ir_entity_usage_computed_state
The state of the entity usage flags.
Definition: irmemory.h:35
ir_alias_relation get_alias_relation(const ir_node *addr1, const ir_type *type1, unsigned size1, const ir_node *addr2, const ir_type *type2, unsigned size2)
Determine if two memory addresses may point to the same memory location.
ir_disambiguator_options
Possible options for the memory disambiguator.
Definition: irmemory.h:41
void assure_irg_entity_usage_computed(ir_graph *irg)
Assure that the entity usage flags have been computed for the given graph.
ir_disambiguator_options get_irg_memory_disambiguator_options(const ir_graph *irg)
Returns the memory disambiguator options for a graph.
struct ir_type ir_type
Type.
Definition: firm_types.h:71
ir_entity_usage_computed_state get_irp_globals_entity_usage_state(void)
Returns the current address taken state of the globals.
const char * get_ir_alias_relation_name(ir_alias_relation rel)
Returns a human readable name for an alias relation.
void assure_irp_globals_entity_usage_computed(void)
Assure that the address taken flag is computed for the global and TLS entities (variables).
if type based analysis is enabled bytes types may alias other types
Definition: irmemory.h:45
different addresses NEVER alias
Definition: irmemory.h:48
ir_alias_relation
The alias relation of two memory addresses.
Definition: irmemory.h:28
No alias.
Definition: irmemory.h:29
void mark_private_methods(void)
Mark all private methods, i.e.
Sure alias.
Definition: irmemory.h:31
void set_irg_memory_disambiguator_options(ir_graph *irg, ir_disambiguator_options options)
Sets the memory disambiguator options for a graph.
void set_irp_memory_disambiguator_options(ir_disambiguator_options options)
Sets the global disambiguator options for all graphs not having local options.
no options, use defaults
Definition: irmemory.h:42
struct ir_node ir_node
Procedure Graph Node.
Definition: firm_types.h:53
always assume aliasing
Definition: irmemory.h:43
void set_irp_globals_entity_usage_state(ir_entity_usage_computed_state state)
Sets the current address taken state of the globals.
struct ir_graph ir_graph
Procedure Graph.
Definition: firm_types.h:74