- add ir_graph to loop element, preventing the ugly casting
[libfirm] / include / libfirm / irmemory.h
index 2fbe025..f18a0a0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -60,6 +60,11 @@ typedef ir_alias_relation (*DISAMBIGUATOR_FUNC)(
        ir_node *adr1, ir_mode *mode1,
        ir_node *adr2, ir_mode *mode2);
 
+/**
+ * Returns a human readable name for an alias relation.
+ */
+const char *get_ir_alias_relation_name(ir_alias_relation rel);
+
 /**
  * Determine the alias relation between two addresses.
  *
@@ -72,11 +77,17 @@ typedef ir_alias_relation (*DISAMBIGUATOR_FUNC)(
  * The memory disambiguator tries to determine the alias state between
  * two memory addresses. The following rules are used:
  *
- * - variables from different segments never alias (R1)
+ * - different variable from the same segment never alias (R1 a)
+ * - variables from different segments never alias when:
  *   - a global variable and a local one never alias (R1 b)
  *   - a global variable and a TLS one never alias (R1 c)
  *   - a local variable and a TLS one never alias (R1 d)
  *   - a local variable and a parameter never alias (R1 e)
+ *   - a global variable and the result of a malloc routine never alias (R1 f)
+ *   - a local variable and the result of a malloc routine never alias (R1 g)
+ *   - a TLS variable and the result of a malloc routine never alias (R1 h)
+ *   - a parameter and the result of a malloc routine (obtained in the
+ *     same routine as the parameter) never alias (R1 i)
  * - two different variables never alias (R2)
  * - if one is a variable whose address has never been taken
  *   there is no alias (R3)
@@ -202,4 +213,11 @@ void set_irg_memory_disambiguator_options(ir_graph *irg, unsigned options);
  */
 void set_irp_memory_disambiguator_options(unsigned options);
 
+/**
+ * Mark all private methods, i.e. those of which all call sites are known.
+ * We use a very convervative estimation yet: If the address of a method is
+ * never taken AND its visibility is visibility_local, then it's private.
+ */
+void mark_private_methods(void);
+
 #endif /* FIRM_ANA_IRMEMORY_H */