diff options
author | andreao <andreao@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-16 16:09:38 +0000 |
---|---|---|
committer | andreao <andreao@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-16 16:09:38 +0000 |
commit | 747d15bd053719f4ecaed0779d31c5542e5366d6 (patch) | |
tree | ee2fe32ce15e743a88fff9f6b719ef264b900e1d | |
parent | 6a6542d59a55b3ceca663614099caf6015ff5c0d (diff) |
emit_cil.c: simplify dump_type (use type_to_cil)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/st/cli-be@149711 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/config/cil32/cil-dump.c | 2 | ||||
-rw-r--r-- | gcc/config/cil32/emit-cil.c | 136 |
2 files changed, 58 insertions, 80 deletions
diff --git a/gcc/config/cil32/cil-dump.c b/gcc/config/cil32/cil-dump.c index 0873fb108f8..bef41f9e3a7 100644 --- a/gcc/config/cil32/cil-dump.c +++ b/gcc/config/cil32/cil-dump.c @@ -168,7 +168,7 @@ dump_type (const_tree type) } else { - cil_type_t cil_type = scalar_to_cil (type); + cil_type_t cil_type = type_to_cil (type); switch (cil_type) { case CIL_VALUE_TYPE: diff --git a/gcc/config/cil32/emit-cil.c b/gcc/config/cil32/emit-cil.c index 06dc20039d6..793a56fe515 100644 --- a/gcc/config/cil32/emit-cil.c +++ b/gcc/config/cil32/emit-cil.c @@ -562,7 +562,7 @@ dump_complex_type (FILE *file, tree node) case CIL_INT16: fprintf (file, "short"); break; case CIL_INT32: fprintf (file, "int"); break; case CIL_INT64: fprintf (file, "long"); break; - + case CIL_UNSIGNED_INT8: fprintf (file, "uchar"); break; case CIL_UNSIGNED_INT16: fprintf (file, "ushort"); break; case CIL_UNSIGNED_INT32: fprintf (file, "uint"); break; @@ -758,7 +758,7 @@ emit_valuetype_decl (FILE *file, tree t) static void dump_type (FILE *file, tree type, bool ref, bool qualif) { - unsigned HOST_WIDE_INT size; + cil_type_t cil_type; if (type == NULL_TREE || type == error_mark_node) return; @@ -768,92 +768,70 @@ dump_type (FILE *file, tree type, bool ref, bool qualif) fprintf (file, "valuetype [mscorlib]System.ArgIterator"); return; } - - switch (TREE_CODE (type)) + else if (TREE_CODE (type) == VOID_TYPE) { - /* Incomplete and variable-length arrays are pointers and - they must be dealt with as such. */ - case ARRAY_TYPE: - if (!TYPE_DOMAIN (type) || ARRAY_TYPE_VARLENGTH (type)) - goto pointer; - - case ENUMERAL_TYPE: - case RECORD_TYPE: - case UNION_TYPE: - case QUAL_UNION_TYPE: - /* Reference the type if told to do so */ - if (ref) - mark_referenced_type (TYPE_MAIN_VARIANT (type)); - - /* Print the name of the structure. */ - fprintf (file, "valuetype "); - dump_valuetype_name (file, TYPE_MAIN_VARIANT (type)); - break; - - case VOID_TYPE: fprintf (file, "void"); - break; + return; + } - case INTEGER_TYPE: - fprintf (file, "%s", TYPE_UNSIGNED (type) ? "unsigned " : ""); - size = tree_low_cst (TYPE_SIZE (type), 1); + cil_type = type_to_cil (type); - switch (size) + if (cil_vector_p (cil_type)) + dump_vector_type (file, type); + else if (TREE_CODE (type) == COMPLEX_TYPE) + dump_complex_type (file, type); + else + switch (cil_type) + { + case CIL_VALUE_TYPE: + /* Reference the type if told to do so */ + if (ref) + mark_referenced_type (TYPE_MAIN_VARIANT (type)); + + /* Print the name of the structure. */ + fprintf (file, "valuetype "); + dump_valuetype_name (file, TYPE_MAIN_VARIANT (type)); + break; + + case CIL_INT8: fprintf (file, "int8"); break; + case CIL_INT16: fprintf (file, "int16"); break; + case CIL_INT32: fprintf (file, "int32"); break; + case CIL_INT64: fprintf (file, "int64"); break; + + case CIL_UNSIGNED_INT8: fprintf (file, "unsigned int8"); break; + case CIL_UNSIGNED_INT16: fprintf (file, "unsigned int16"); break; + case CIL_UNSIGNED_INT32: fprintf (file, "unsigned int32"); break; + case CIL_UNSIGNED_INT64: fprintf (file, "unsigned int64"); break; + + case CIL_FLOAT32: fprintf (file, "float32"); break; + case CIL_FLOAT64: fprintf (file, "float64"); break; + + case CIL_FLOAT: { - case 8: fprintf (file, "int8"); break; - case 16: fprintf (file, "int16"); break; - case 32: fprintf (file, "int32"); break; - case 64: fprintf (file, "int64"); break; - default: - internal_error ("Unsupported integer size " - HOST_WIDE_INT_PRINT_UNSIGNED"\n", size); - } - break; - - case REAL_TYPE: - size = tree_low_cst (TYPE_SIZE (type), 1); + unsigned HOST_WIDE_INT size = tree_low_cst (TYPE_SIZE (type), 1); - gcc_assert (size == 32 || size == 64); - fprintf (file, "float" HOST_WIDE_INT_PRINT_UNSIGNED, size); - break; - - case BOOLEAN_TYPE: - fprintf (file, "int8"); - break; - -pointer: - case POINTER_TYPE: - if (TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE) - { - fprintf (file, "method "); - dump_fun_type (file, TREE_TYPE (type), NULL, " * ", ref); + gcc_assert (size == 32 || size == 64); + fprintf (file, "float" HOST_WIDE_INT_PRINT_UNSIGNED, size); } - else - { - dump_type (file, TREE_TYPE (type), ref, qualif); - fprintf (file, " *"); - } - break; - - case FUNCTION_TYPE: -/* FIXME? - dump_fun_type (file, node, NULL, NULL, ref); */ - gcc_unreachable (); - break; + break; - case VECTOR_TYPE: - dump_vector_type (file, type); - break; - - case COMPLEX_TYPE: - dump_complex_type (file, type); - break; - - case REFERENCE_TYPE: + case CIL_POINTER: + if (TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE) + { + fprintf (file, "method "); + dump_fun_type (file, TREE_TYPE (type), NULL, " * ", ref); + } + else + { + dump_type (file, TREE_TYPE (type), ref, qualif); + fprintf (file, " *"); + } + break; - default: - gcc_unreachable (); - } + default: + gcc_unreachable (); + break; + } if (qualif) { |