It does not provide sufficient information to handle float in asm.
#ifndef NDEBUG
ia32_attr_t *attr = get_ia32_attr(res);
attr->attr_type |= IA32_ATTR_ia32_asm_attr_t;
-#else
- (void) res;
#endif
+
+ ir_graph *const irg = get_irn_irg(res);
+ ia32_request_x87_sim(irg); /* asm might have fp operands. */
}
static void init_ia32_immediate_attributes(ir_node *res, ir_entity *symconst,
*/
typedef struct ia32_asm_attr_t ia32_asm_attr_t;
struct ia32_asm_attr_t {
- ia32_x87_attr_t x87_attr;
+ ia32_attr_t attr; /**< the generic attribute */
ident *asm_text;
const ia32_asm_reg_t *register_map;
};
%init_attr = (
ia32_asm_attr_t =>
"\tinit_ia32_attributes(res, irn_flags_, in_reqs, n_res);\n".
- "\tinit_ia32_x87_attributes(res);".
"\tinit_ia32_asm_attributes(res);",
ia32_attr_t =>
"\tinit_ia32_attributes(res, irn_flags_, in_reqs, n_res);",