- C99 feature removed
[libfirm] / ir / be / beabi.c
index 3c01256..4755c5a 100644 (file)
@@ -1110,7 +1110,9 @@ static int cmp_call_dependency(const void *c1, const void *c2)
        if (dependent_on(n2, n1))
                return 1;
 
-       return 0;
+       /* The nodes have no depth order, but we need a total order because qsort()
+        * is not stable. */
+       return get_irn_idx(n1) - get_irn_idx(n2);
 }
 
 /**
@@ -1782,16 +1784,20 @@ static void update_outer_frame_sels(ir_node *irn, void *env) {
 /**
  * Fix access to outer local variables.
  */
-static void fix_outer_variable_access(be_abi_irg_t *env, lower_frame_sels_env_t *ctx)
+static void fix_outer_variable_access(be_abi_irg_t *env,
+                                      lower_frame_sels_env_t *ctx)
 {
        int      i;
        ir_graph *irg;
+       (void) env;
 
        for (i = get_class_n_members(ctx->frame_tp) - 1; i >= 0; --i) {
                ir_entity *ent = get_class_member(ctx->frame_tp, i);
 
                if (! is_method_entity(ent))
                        continue;
+               if (get_entity_peculiarity(ent) == peculiarity_description)
+                       continue;
 
                /*
                 * FIXME: find the number of the static link parameter
@@ -2658,7 +2664,7 @@ void be_abi_fix_stack_bias(be_abi_irg_t *env)
        for (i = get_class_n_members(frame_tp) - 1; i >= 0; --i) {
                ir_entity *ent = get_class_member(frame_tp, i);
 
-               if (is_method_entity(ent)) {
+               if (is_method_entity(ent) && get_entity_peculiarity(ent) != peculiarity_description) {
                        ir_graph *irg = get_entity_irg(ent);
 
                        irg_walk_graph(irg, NULL, lower_outer_frame_sels, env);