fix transform_node_Cmp
[libfirm] / scripts / gen_ir.py
index 107ad81..bceca3a 100755 (executable)
@@ -59,7 +59,7 @@ def format_irgassign(node):
        if hasattr(node, "knownBlock"):
                return ""
        else:
-               return "ir_graph *irg = get_Block_irg(block);\n"
+               return "ir_graph *irg = get_irn_irg(block);\n"
 
 def format_curblock(node):
        if hasattr(node, "knownBlock"):
@@ -236,7 +236,7 @@ def preprocess_node(node):
                                name    = "arity",
                                comment = "size of additional inputs array"))
                arguments.append(dict(
-                               type    = "ir_node **",
+                               type    = "ir_node *const *",
                                name    = "in",
                                comment = "additional inputs"))
 
@@ -252,7 +252,6 @@ def preprocess_node(node):
                if "init" in attr:
                        continue
                arguments.append(attr)
-               #arguments.append(prepare_attr(attr))
 
        # dynamic pin state means more constructor arguments
        if is_dynamic_pinned(node):
@@ -420,17 +419,17 @@ void (set_{{node.name}}_{{attr.name}})(ir_node *node, {{attr.type}} {{attr.name}
 {% endfor -%}
 
 {%- for node in nodes %}
-{%- for in in node.ins %}
-ir_node *(get_{{node.name}}_{{in[0]}})(const ir_node *node)
+{%- for input in node.ins %}
+ir_node *(get_{{node.name}}_{{input[0]}})(const ir_node *node)
 {
        assert(is_{{node.name}}(node));
-       return get_irn_n(node, {{node.ins.index(in)}});
+       return get_irn_n(node, n_{{node.name}}_{{input[0]}});
 }
 
-void (set_{{node.name}}_{{in[0]}})(ir_node *node, ir_node *{{in[0]|escape_keywords}})
+void (set_{{node.name}}_{{input[0]}})(ir_node *node, ir_node *{{input[0]|escape_keywords}})
 {
        assert(is_{{node.name}}(node));
-       set_irn_n(node, {{node.ins.index(in)}}, {{in[0]|escape_keywords}});
+       set_irn_n(node, n_{{node.name}}_{{input[0]}}, {{input[0]|escape_keywords}});
 }
 {% endfor %}
 {% endfor %}
@@ -456,6 +455,9 @@ void init_op(void)
                        {{node|attr_size}}
                        NULL
                {% endfilter %});
+       {%- if "fragile" in node.flags: %}
+       ir_op_set_fragile_indices(op_{{node.name}}, n_{{node.name}}_mem, pn_{{node.name}}_X_regular, pn_{{node.name}}_X_except);
+       {%- endif -%}
        {%- endfor %}
 
        be_init_op();
@@ -483,6 +485,16 @@ nodeops_h_template = env.from_string(
  */
 
 {% for node in nodes -%}
+{% if node.ins %}
+/**
+ * Input numbers for {{node.name}} node
+ */
+typedef enum {
+       {%- for input in node.ins %}
+       n_{{node.name}}_{{input[0]}},
+       {%- endfor %}
+} n_{{node.name}};
+{% endif %}
 {% if node.outs %}
 /**
  * Projection numbers for result of {{node.name}} node (use for Proj nodes)
@@ -555,9 +567,9 @@ FIRM_API int is_{{node.name}}(const ir_node *node);
 {%- endfor %}
 
 {% for node in nodes %}
-{% for in in node.ins -%}
-FIRM_API ir_node *get_{{node.name}}_{{in[0]}}(const ir_node *node);
-void set_{{node.name}}_{{in[0]}}(ir_node *node, ir_node *{{in[0]|escape_keywords}});
+{% for input in node.ins -%}
+FIRM_API ir_node *get_{{node.name}}_{{input[0]}}(const ir_node *node);
+FIRM_API void set_{{node.name}}_{{input[0]}}(ir_node *node, ir_node *{{input[0]|escape_keywords}});
 {% endfor -%}
 {% for attr in node.attrs|hasnot("noprop") -%}
 FIRM_API {{attr.type}} get_{{node.name}}_{{attr.name}}(const ir_node *node);
@@ -568,6 +580,7 @@ FIRM_API void set_{{node.name}}_{{attr.name}}(ir_node *node, {{attr.type}} {{att
 /** @} */
 
 #endif
+
 ''')
 
 opcodes_h_template = env.from_string(
@@ -599,9 +612,8 @@ typedef enum ir_opcode {
        beo_IncSP,
        beo_Start,
        beo_FrameAddr,
-       beo_Barrier,
        /* last backend node number */
-       beo_Last = beo_Barrier,
+       beo_Last = beo_FrameAddr,
        iro_MaxOpcode
 } ir_opcode;
 
@@ -614,6 +626,7 @@ FIRM_API ir_op *get_op_{{node.name}}(void);
 {%- endfor %}
 
 #endif
+
 ''')
 
 #############################