Merge branch 'kaps-included' into master
[libfirm] / ir / be / sparc / sparc_transform.c
index b3f817c..29b2e52 100644 (file)
@@ -520,6 +520,10 @@ static ir_node *gen_Load(ir_node *node)
        ir_node  *new_load = NULL;
        address_t address;
 
+       if (get_Load_unaligned(node) == align_non_aligned) {
+               panic("sparc: transformation of unaligned Loads not implemented yet");
+       }
+
        if (mode_is_float(mode)) {
                match_address(ptr, &address, false);
                new_load = create_ldf(dbgi, block, address.ptr, new_mem, mode,
@@ -560,6 +564,10 @@ static ir_node *gen_Store(ir_node *node)
        ir_node  *new_store = NULL;
        address_t address;
 
+       if (get_Store_unaligned(node) == align_non_aligned) {
+               panic("sparc: transformation of unaligned Stores not implemented yet");
+       }
+
        if (mode_is_float(mode)) {
                /* TODO: variants with reg+reg address mode */
                match_address(ptr, &address, false);
@@ -1271,7 +1279,6 @@ static void create_stacklayout(ir_graph *irg)
        layout->arg_type       = arg_type;
        layout->initial_offset = 0;
        layout->initial_bias   = 0;
-       layout->stack_dir      = -1;
        layout->sp_relative    = cconv->omit_fp;
 
        assert(N_FRAME_TYPES == 3);
@@ -1293,7 +1300,7 @@ static ir_node *gen_Start(ir_node *node)
        dbg_info  *dbgi          = get_irn_dbg_info(node);
        ir_node   *mem;
        ir_node   *start;
-       ir_node   *sp;
+ir_node   *sp;
        size_t     i;
 
        /* stackpointer is important at function prolog */
@@ -1327,6 +1334,7 @@ static ir_node *gen_Start(ir_node *node)
        }
 
        start = be_prolog_create_start(abihelper, dbgi, new_block);
+#if 0
        mem   = be_prolog_get_memory(abihelper);
        sp    = be_prolog_get_reg_value(abihelper, sp_reg);
 
@@ -1343,6 +1351,7 @@ static ir_node *gen_Start(ir_node *node)
        arch_irn_add_flags(sp, arch_irn_flags_prolog);
        be_prolog_set_reg_value(abihelper, sp_reg, sp);
        be_prolog_set_memory(abihelper, mem);
+#endif
 
        return start;
 }
@@ -1416,6 +1425,7 @@ static ir_node *gen_Return(ir_node *node)
                }
        }
 
+#if 0
        /* we need a restore instruction */
        if (!cconv->omit_fp) {
                ir_node *fp      = be_prolog_get_reg_value(abihelper, fp_reg);
@@ -1431,10 +1441,9 @@ static ir_node *gen_Return(ir_node *node)
                arch_irn_add_flags(sp, arch_irn_flags_epilog);
                be_epilog_set_reg_value(abihelper, sp_reg, sp);
        }
+#endif
 
        bereturn = be_epilog_create_return(abihelper, dbgi, new_block);
-       arch_irn_add_flags(bereturn, arch_irn_flags_epilog);
-
        return bereturn;
 }
 
@@ -1879,8 +1888,6 @@ static ir_node *gen_Proj_Start(ir_node *node)
                return new_r_Bad(get_irn_irg(block));
        case pn_Start_P_frame_base:
                return get_frame_base();
-       case pn_Start_P_tls:
-               return new_r_Bad(current_ir_graph);
        case pn_Start_max:
                break;
        }
@@ -1961,7 +1968,6 @@ static ir_node *gen_Proj_Call(ir_node *node)
        case pn_Call_X_regular:
        case pn_Call_X_except:
        case pn_Call_T_result:
-       case pn_Call_P_value_res_base:
        case pn_Call_max:
                break;
        }