X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftr%2Ftype.c;h=04ce12feb124a35584c45ba6aa6fc5fc5ef6f438;hb=d91fc73ffae404c44bda8152edf08c86a15be1af;hp=b937420f402a1eae14b72bd67ebaaaf4e8a16949;hpb=58ed1dbc91297e868c47ffb3b622c66f28065105;p=libfirm diff --git a/ir/tr/type.c b/ir/tr/type.c index b937420f4..04ce12feb 100644 --- a/ir/tr/type.c +++ b/ir/tr/type.c @@ -1287,7 +1287,7 @@ type *new_type_array (ident *name, int n_dimensions, current_ir_graph = rem; res->attr.aa.element_type = element_type; - new_entity(res, mangle_u(name, id_from_str("elem_ent", 8)), element_type); + new_entity(res, mangle_u(name, new_id_from_chars("elem_ent", 8)), element_type); return res; } @@ -1361,14 +1361,21 @@ void set_array_upper_bound_int (type *array, int dimension, int upper_bound) { new_Const(mode_Iu, new_tarval_from_long (upper_bound, mode_Iu))); current_ir_graph = rem; } -int has_array_lower_bound (type *array, int dimension) { +int has_array_lower_bound (type *array, int dimension) { assert(array && (array->type_op == type_array)); return (get_irn_op(array->attr.aa.lower_bound[dimension]) != op_Unknown); } -ir_node * get_array_lower_bound (type *array, int dimension) { +ir_node *get_array_lower_bound (type *array, int dimension) { assert(array && (array->type_op == type_array)); return array->attr.aa.lower_bound[dimension]; } +long get_array_lower_bound_int (type *array, int dimension) { + ir_node *node; + assert(array && (array->type_op == type_array)); + node = array->attr.aa.lower_bound[dimension]; + assert(get_irn_op(node) == op_Const); + return get_tarval_long(get_Const_tarval(node)); +} int has_array_upper_bound (type *array, int dimension) { assert(array && (array->type_op == type_array)); return (get_irn_op(array->attr.aa.upper_bound[dimension]) != op_Unknown); @@ -1377,6 +1384,13 @@ ir_node * get_array_upper_bound (type *array, int dimension) { assert(array && (array->type_op == type_array)); return array->attr.aa.upper_bound[dimension]; } +long get_array_upper_bound_int (type *array, int dimension) { + ir_node *node; + assert(array && (array->type_op == type_array)); + node = array->attr.aa.upper_bound[dimension]; + assert(get_irn_op(node) == op_Const); + return get_tarval_long(get_Const_tarval(node)); +} void set_array_order (type *array, int dimension, int order) { assert(array && (array->type_op == type_array));