#define IS_WRITTEN(a) ((a) & ptr_access_write)
#define IS_STORED(a) ((a) & ptr_access_store)
-/**
- * Supported image sections.
- * Currently only methods can be placed in different sections.
- */
-typedef enum {
- section_text, /**< The code segment. This is the default for methods. */
- section_constructors /**< The constructor section. */
-} ir_img_section;
-
-/** Returns the section of a method. */
-ir_img_section get_method_img_section(const ir_entity *method);
-
-/** Sets the section of a method. */
-void set_method_img_section(ir_entity *method, ir_img_section section);
-
-
/**
* @page tyop type operations
* This module specifies the kinds of types available in firm.
* upper 8 encode the calling conventions.
*/
typedef enum {
- cc_reg_param = 0x01000000, /**< Transmit parameters in registers, else the stack is used.
- This flag may be set as default on some architectures. */
- cc_last_on_top = 0x02000000, /**< The last non-register parameter is transmitted on top of
- the stack. This is equivalent to the pascal
- calling convention. If this flag is not set, the first
- non-register parameter is used (stdcall or cdecl
- calling convention) */
- cc_callee_clear_stk = 0x04000000, /**< The callee clears the stack. This forbids variadic
- function calls (stdcall). */
- cc_this_call = 0x08000000, /**< The first parameter is a this pointer and is transmitted
- in a special way. */
- cc_compound_ret = 0x10000000, /**< the method returns a compound
- type */
-
- cc_bits = (0xFF << 24) /**< the calling convention bits */
+ cc_reg_param = 0x01000000, /**< Transmit parameters in registers, else the stack is used.
+ This flag may be set as default on some architectures. */
+ cc_last_on_top = 0x02000000, /**< The last non-register parameter is transmitted on top of
+ the stack. This is equivalent to the pascal
+ calling convention. If this flag is not set, the first
+ non-register parameter is used (stdcall or cdecl
+ calling convention) */
+ cc_callee_clear_stk = 0x04000000, /**< The callee clears the stack. This forbids variadic
+ function calls (stdcall). */
+ cc_this_call = 0x08000000, /**< The first parameter is a this pointer and is transmitted
+ in a special way. */
+ cc_compound_ret = 0x10000000, /**< The method returns a compound type. */
+ cc_frame_on_caller_stk = 0x20000000, /**< The method did not allocate an own stack frame, instead the
+ caller must reserve size on its own stack. */
+ cc_bits = (0xFF << 24)/**< The calling convention bits. */
} calling_convention;
/* some often used cases: made as defines because firmjni cannot handle two
*/
ir_type *new_type_frame(ident *name);
+/**
+ * Makes a clone of a frame type.
+ * Sets entity links from old frame entities to new onces and
+ * vice versa.
+ */
+ir_type *clone_frame_type(ir_type *type);
+
/**
* Sets a lowered type for a type. This sets both associations
* and marks lowered_type as a "lowered" one.