Add ALLOCAN() and ALLOCANZ().
[libfirm] / ir / be / betranshlp.c
index f5d88f6..d8835ca 100644 (file)
@@ -24,9 +24,7 @@
  * @date        14.06.2007
  * @version     $Id$
  */
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include "pdeq.h"
 #include "irop_t.h"
@@ -64,7 +62,7 @@ int be_is_transformed(const ir_node *node) {
        return irn_visited(node);
 }
 
-static INLINE ir_node *be_get_transformed_node(ir_node *old_node) {
+static inline ir_node *be_get_transformed_node(ir_node *old_node) {
        if (irn_visited(old_node)) {
                ir_node *new_node = get_irn_link(old_node);
                assert(new_node != NULL);
@@ -85,6 +83,14 @@ void be_duplicate_deps(ir_node *old_node, ir_node *new_node) {
        }
 }
 
+void be_dep_on_frame(ir_node *const node)
+{
+       ir_graph *const irg = current_ir_graph;
+
+       if (get_irg_start_block(irg) == get_nodes_block(node))
+               add_irn_dep(node, get_irg_frame(irg));
+}
+
 ir_node *be_duplicate_node(ir_node *node) {
        ir_node  *block = be_transform_node(get_nodes_block(node));
        ir_graph *irg   = env.irg;
@@ -103,7 +109,7 @@ ir_node *be_duplicate_node(ir_node *node) {
                        add_irn_n(new_node, in);
                }
        } else {
-               ir_node **ins = alloca(arity * sizeof(ins[0]));
+               ir_node **ins = ALLOCAN(ir_node*, arity);
                for (i = 0; i < arity; ++i) {
                        ir_node *in = get_irn_n(node, i);
                        ins[i] = be_transform_node(in);