fix a bunch of warnings reported by cparser
[libfirm] / ir / be / bespillslots.c
index dd0f505..b5a78e1 100644 (file)
@@ -74,6 +74,8 @@ struct be_fec_env_t {
        affinity_edge_t      **affinity_edges;
        set                   *memperms;
        set_frame_entity_func  set_frame_entity;
+       bool                   at_begin;  /**< frame entities should be allocate at
+                                              the beginning of the stackframe */
 };
 
 /** Compare 2 affinity edges (used in quicksort) */
@@ -197,15 +199,14 @@ void be_node_needs_frame_entity(be_fec_env_t *env, ir_node *node,
                                 const ir_mode *mode, int align)
 {
        ir_node *spillnode = get_memory_edge(node);
-       spill_t *spill;
 
        assert(spillnode != NULL);
 
        /* walk upwards and collect all phis and spills on this way */
        if (is_Phi(spillnode)) {
-               spill = collect_memphi(env, spillnode, mode, align);
+               collect_memphi(env, spillnode, mode, align);
        } else {
-               spill = collect_spill(env, spillnode, mode, align);
+               collect_spill(env, spillnode, mode, align);
        }
 
        ARR_APP1(ir_node *, env->reloads, node);
@@ -522,12 +523,10 @@ static memperm_t *get_memperm(be_fec_env_t *env, ir_node *block)
 
 static ir_entity* create_stack_entity(be_fec_env_t *env, spill_slot_t *slot)
 {
-       ir_graph *irg  = env->irg;
-       ir_type *frame = get_irg_frame_type(irg);
-       /* TODO: backend should be able to specify wether we want spill slots
-        * at begin or end of frame */
-       int        at_start = 1;
-       ir_entity *res = frame_alloc_area(frame, slot->size, slot->align, at_start);
+       ir_graph  *irg   = env->irg;
+       ir_type   *frame = get_irg_frame_type(irg);
+       ir_entity *res   = frame_alloc_area(frame, slot->size, slot->align,
+                                           env->at_begin);
 
        /* adjust size of the entity type... */
        ir_type *enttype = get_entity_type(res);
@@ -783,9 +782,11 @@ void be_free_frame_entity_coalescer(be_fec_env_t *env)
 }
 
 void be_assign_entities(be_fec_env_t *env,
-                        set_frame_entity_func set_frame_entity)
+                        set_frame_entity_func set_frame_entity,
+                        bool alloc_entities_at_begin)
 {
        env->set_frame_entity = set_frame_entity;
+       env->at_begin         = alloc_entities_at_begin;
 
        stat_ev_dbl("spillslots", set_count(env->spills));
 
@@ -800,7 +801,7 @@ void be_assign_entities(be_fec_env_t *env,
        create_memperms(env);
 }
 
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_spillslots);
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_spillslots)
 void be_init_spillslots(void)
 {
        FIRM_DBG_REGISTER(dbg, "firm.be.spillslots");