introduce more generic resource reservation debug helpers instead of old set_using_xx...
[libfirm] / ir / be / ia32 / ia32_common_transform.c
index d8eb5ac..d596b08 100644 (file)
@@ -24,6 +24,9 @@
  * @author      Matthias Braun, Sebastian Buchwald
  * @version     $Id: ia32_common_transform.c 21012 2008-08-06 13:35:17Z beck $
  */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
 #include "error.h"
 #include "irargs_t.h"
@@ -457,8 +460,12 @@ static void parse_asm_constraints(constraint_t *constraint, const char *c,
 ir_node *gen_ASM(ir_node *node)
 {
        ir_graph                   *irg       = current_ir_graph;
+#ifdef FIRM_GRGEN_BE
+       ir_node                    *new_block = get_nodes_block(node);
+#else
        ir_node                    *block     = get_nodes_block(node);
        ir_node                    *new_block = be_transform_node(block);
+#endif
        dbg_info                   *dbgi      = get_irn_dbg_info(node);
        int                         i, arity;
        int                         out_idx;
@@ -569,15 +576,17 @@ ir_node *gen_ASM(ir_node *node)
                const arch_register_req_t *req;
 
                parse_asm_constraints(&parsed_constraint, c, 0);
-               r_clobber_bits = clobber_bits[parsed_constraint.cls->index];
-               if (r_clobber_bits != 0) {
-                       if (parsed_constraint.all_registers_allowed) {
-                               parsed_constraint.all_registers_allowed = 0;
-                               be_abi_set_non_ignore_regs(env_cg->birg->abi,
-                                               parsed_constraint.cls,
-                                               &parsed_constraint.allowed_registers);
+               if (parsed_constraint.cls != NULL) {
+                       r_clobber_bits = clobber_bits[parsed_constraint.cls->index];
+                       if (r_clobber_bits != 0) {
+                               if (parsed_constraint.all_registers_allowed) {
+                                       parsed_constraint.all_registers_allowed = 0;
+                                       be_abi_set_non_ignore_regs(env_cg->birg->abi,
+                                                       parsed_constraint.cls,
+                                                       &parsed_constraint.allowed_registers);
+                               }
+                               parsed_constraint.allowed_registers &= ~r_clobber_bits;
                        }
-                       parsed_constraint.allowed_registers &= ~r_clobber_bits;
                }
 
                req = make_register_req(&parsed_constraint, n_out_constraints,
@@ -590,8 +599,12 @@ ir_node *gen_ASM(ir_node *node)
                }
 
                if (input == NULL) {
+#ifdef FIRM_GRGEN_BE
+                       input         = get_irn_n(node, i);
+#else
                        ir_node *pred = get_irn_n(node, i);
                        input         = be_transform_node(pred);
+#endif
 
                        if (parsed_constraint.cls == NULL
                                        && parsed_constraint.same_as < 0) {