optimize_graph_df():
[libfirm] / ir / ir / irmode.h
index 9c973b7..f6e3e6e 100644 (file)
 #ifndef _IRMODE_H_
 #define _IRMODE_H_
 
+#include "firm_types.h"
 #include "ident.h"
 
-#ifndef _TARVAL_TYPEDEF_
-#define _TARVAL_TYPEDEF_
-  typedef struct tarval tarval;
-#endif
-
 /**
  * Contains relevant information about a mode.
  *
- * Neccessary information about a mode is stored in this struct
+ * Necessary information about a mode is stored in this struct
  * which is used by the tarval module to perform calculations
  * and comparisons of values of a such described mode.
  *
  * ATTRIBUTES:
- *  -  modecode code:           An unambigous int (enum) for the mode
+ *  -  modecode code:           An unambiguous int (enum) for the mode
  *  -  ident *name:             Name of this mode. Two modes are different if the name is different.
  *  -  mode_sort sort:          sort of mode specifying possible usage categories
  *  -  int    size:             size of the mode in Bits.
  *    The tech report 1999-44 describing FIRM and predefined modes
  *    tarval.h
  */
+#ifndef _IR_MODE_TYPEDEF_
+#define _IR_MODE_TYPEDEF_
 typedef struct ir_mode ir_mode;
+#endif
 
 /* ********** Predefined modes ********** */
 
@@ -321,8 +320,11 @@ extern ir_mode *mode_C;  /**< 8 bit char */
 extern ir_mode *mode_U;  /**< 16 bit unicode char */
 
 extern ir_mode *mode_P;  /**< pointer */
-extern ir_mode *mode_P_mach; /**< A pointer mode that is set by the client of libfirm.  This mode
-                              represents the pointer size of the target machine. Is initialized
+extern ir_mode *mode_P_code; /**< A pointer mode that is set by the client of libfirm.  This mode
+                              represents the pointer size of the target machine code addresses. Is initialized
+                              to mode_P. */
+extern ir_mode *mode_P_data; /**< A pointer mode that is set by the client of libfirm.  This mode
+                              represents the pointer size of the target machine data addresses. Is initialized
                               to mode_P. */
 
 /* -- Auxiliary modes necessary for the Firm representation -- */
@@ -359,14 +361,23 @@ ir_mode *get_modeT(void);
 ir_mode *get_modeANY(void);
 ir_mode *get_modeBAD(void);
 
-/** Returns the machine specific pointer mode. */
-ir_mode *get_modeP_mach(void);
+/** Returns the machine specific pointer mode for code addresses. */
+ir_mode *get_modeP_code(void);
+
+/** Returns the machine specific pointer mode for data addresses. */
+ir_mode *get_modeP_data(void);
+
+/**
+ * Sets the machine specific pointer mode for code addresses.
+ * If not set, the predefined mode mode_P will be used.
+ */
+void set_modeP_code(ir_mode *p);
 
 /**
- * Sets the machine specific pointer mode.
+ * Sets the machine specific pointer mode for data addresses.
  * If not set, the predefined mode mode_P will be used.
  */
-void set_modeP_mach(ir_mode *p);
+void set_modeP_data(ir_mode *p);
 
 /**
    Functions to check, whether a modecode is signed, float, int, character,