#include "irnode_t.h"
#include "irgraph_t.h"
#include "irprog_t.h"
+#include "irmemory_t.h"
#include "irmemory.h"
#include "irflag.h"
#include "hashptr.h"
/**
* Check if a given Const node is greater or equal a given size.
*
+ * @param cns a Const node
+ * @param size a integer size
+ *
* @return ir_no_alias if the Const is greater, ir_may_alias else
*/
static ir_alias_relation check_const(ir_node *cns, int size) {
/**
* Treat idx1 and idx2 as integer indexes and check if they differ always more than size.
*
+ * @param idx1 a node representing the first index
+ * @param idx2 a node representing the second index
+ * @param size an integer size
+ *
* @return ir_sure_alias iff idx1 == idx2
* ir_no_alias iff they ALWAYS differ more than size
* ir_may_alias else
if (tp1 != tp2) {
#if 0
- if (is_Pointer_type(tp1) && is_Pointer_type(tp2)) {
- /* do deref until no pointer types are found */
- do {
- tp1 = get_pointer_points_to_type(tp1);
- tp2 = get_pointer_points_to_type(tp2);
- } while (is_Pointer_type(tp1) && is_Pointer_type(tp2));
+ /* do deref until no pointer types are found */
+ while (is_Pointer_type(tp1) && is_Pointer_type(tp2)) {
+ tp1 = get_pointer_points_to_type(tp1);
+ tp2 = get_pointer_points_to_type(tp2);
}
#endif
* @param addr2 pointer address of the second memory operation
* @param mode2 the mode of the accessed data through addr2
*
- * @return foudn memory relation
+ * @return found memory relation
*/
static ir_alias_relation _get_alias_relation(
ir_graph *irg,
adr1 = skip_Bitfield_Sels(adr1);
adr2 = skip_Bitfield_Sels(adr2);
- /* skip sels */
+ /* skip Sels */
base1 = adr1;
base2 = adr2;
ent1 = NULL;
base2 = find_base_adr(adr2, &ent2);
}
- /* same base address -> compare sel entities */
+ /* same base address -> compare Sel entities */
if (base1 == base2 && ent1 != NULL && ent2 != NULL) {
if (ent1 != ent2)
return ir_no_alias;
return;
}
}
- panic("invalid initialzier found");
-}
+ panic("invalid initializer found");
+} /* check_initializer_nodes */
/**
- * Mark all entities used in the initializer for the given entity as address taken
+ * Mark all entities used in the initializer for the given entity as address taken.
+ *
+ * @param ent the entity
*/
static void check_initializer(ir_entity *ent) {
ir_node *n;
if (get_entity_variability(ent) == variability_uninitialized)
return;
- /* Beware: Methods initialized with "themself". This does not count as a taken
- address. */
+ /* Beware: Methods are always initialized with "themself". This does not
+ count as a taken address. */
if (is_Method_type(get_entity_type(ent)))
return;
/**
- * Mark all entities used in initializers as address taken
+ * Mark all entities used in initializers as address taken.
+ *
+ * @param tp a compound type
*/
static void check_initializers(ir_type *tp) {
int i;
#ifdef DEBUG_libfirm
/**
* Print the address taken state of all entities of a given type for debugging.
+ *
+ * @param tp a compound type
*/
static void print_address_taken_state(ir_type *tp) {
int i;
static void analyse_irp_globals_address_taken(void) {
int i;
- FIRM_DBG_REGISTER(dbg, "firm.ana.irmemory");
-
init_taken_flag(get_glob_type());
init_taken_flag(get_tls_type());
analyse_irp_globals_address_taken();
} /* assure_irp_globals_address_taken_computed */
+void firm_init_memory_disambiguator(void) {
+ FIRM_DBG_REGISTER(dbg, "firm.ana.irmemory");
+}
+
#include <adt/pmap.h>
#include "typerep.h"
/**
* Clone a method type if not already cloned.
+ *
+ * @param tp the type to clone
*/
static ir_type *clone_type_and_cache(ir_type *tp) {
static ident *prefix = NULL;
} /* clone_type_and_cache */
/**
- * Copy the calling conventions from the entities to the call type.
+ * Walker: clone all call types of Calls to methods having the
+ * mtp_property_private property set.
*/
static void update_calls_to_private(ir_node *call, void *env) {
(void) env;