remove the deprecated and unused construct of a value_res_base entities in method...
[libfirm] / ir / be / sparc / sparc_transform.c
index fea974b..62fd6b7 100644 (file)
@@ -26,6 +26,7 @@
 #include "config.h"
 
 #include <stdint.h>
+#include <stdbool.h>
 
 #include "irnode_t.h"
 #include "irgraph_t.h"
@@ -70,9 +71,14 @@ static ir_mode               *mode_fp2;
 //static ir_mode               *mode_fp4;
 static pmap                  *node_to_stack;
 
-static inline int mode_needs_gp_reg(ir_mode *mode)
+static inline bool mode_needs_gp_reg(ir_mode *mode)
 {
-       return mode_is_int(mode) || mode_is_reference(mode);
+       if (mode_is_int(mode) || mode_is_reference(mode)) {
+               /* we should only see 32bit code */
+               assert(get_mode_size_bits(mode) <= 32);
+               return true;
+       }
+       return false;
 }
 
 /**
@@ -239,6 +245,9 @@ static ir_node *gen_helper_binop_args(ir_node *node,
        }
        mode1 = get_irn_mode(op1);
        mode2 = get_irn_mode(op2);
+       /* we shouldn't see 64bit code */
+       assert(get_mode_size_bits(mode1) <= 32);
+       assert(get_mode_size_bits(mode2) <= 32);
 
        if (is_imm_encodeable(op2)) {
                ir_node *new_op1   = be_transform_node(op1);
@@ -511,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,
@@ -551,12 +564,17 @@ 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);
                new_store = create_stf(dbgi, block, new_val, address.ptr, new_mem,
                                       mode, address.entity, address.offset, false);
        } else {
+               assert(get_mode_size_bits(mode) <= 32);
                match_address(ptr, &address, true);
                if (address.ptr2 != NULL) {
                        assert(address.entity == NULL && address.offset == 0);
@@ -1951,7 +1969,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;
        }