fix some warnings, represent mode size as unsigned value
[libfirm] / ir / tr / type.c
index 444933c..f72a4f5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -1184,7 +1184,7 @@ build_value_type(ident *name, int len, tp_ent_pair *tps) {
 ir_type *new_d_type_method(ident *name, int n_param, int n_res, dbg_info *db) {
        ir_type *res;
 
-       assert((get_mode_size_bytes(mode_P_code) != -1) && "unorthodox modes not implemented");
+       assert((get_mode_size_bits(mode_P_code) % 8 != 0) && "unorthodox modes not implemented");
        res = new_type(type_method, mode_P_code, name, db);
        res->flags                       |= tf_layout_fixed;
        res->size                         = get_mode_size_bytes(mode_P_code);
@@ -1218,7 +1218,7 @@ ir_type *clone_type_method(ir_type *tp, ident *prefix) {
 
        name = tp->name;
        if (prefix != NULL)
-               mangle(prefix, name);
+               name = mangle(prefix, name);
 
        mode     = tp->mode;
        n_params = tp->attr.ma.n_params;
@@ -1229,9 +1229,11 @@ ir_type *clone_type_method(ir_type *tp, ident *prefix) {
 
        res->flags                         = tp->flags;
        res->size                          = tp->size;
+       res->attr.ma.n_params              = n_params;
        res->attr.ma.params                = xcalloc(n_params, sizeof(res->attr.ma.params[0]));
        memcpy(res->attr.ma.params, tp->attr.ma.params, n_params * sizeof(res->attr.ma.params[0]));
        res->attr.ma.value_params          = tp->attr.ma.value_params;
+       res->attr.ma.n_res                 = n_res;
        res->attr.ma.res_type              = xcalloc(n_res, sizeof(res->attr.ma.res_type[0]));
        memcpy(res->attr.ma.res_type, tp->attr.ma.res_type, n_res * sizeof(res->attr.ma.res_type[0]));
        res->attr.ma.value_ress            = tp->attr.ma.value_ress;
@@ -1872,7 +1874,7 @@ ir_type *new_d_type_pointer(ident *name, ir_type *points_to, ir_mode *ptr_mode,
        assert(mode_is_reference(ptr_mode));
        res = new_type(type_pointer, ptr_mode, name, db);
        res->attr.pa.points_to = points_to;
-       assert((get_mode_size_bytes(res->mode) != -1) && "unorthodox modes not implemented");
+       assert((get_mode_size_bits(res->mode) % 8 != 0) && "unorthodox modes not implemented");
        res->size = get_mode_size_bytes(res->mode);
        res->flags |= tf_layout_fixed;
        hook_new_type(res);