remove more unnecessary XXX_INVALID constants
[cparser] / mangle.c
index 4aacb56..780cb90 100644 (file)
--- a/mangle.c
+++ b/mangle.c
@@ -38,7 +38,7 @@ static void mangle_type(type_t *type);
 static char get_atomic_type_mangle(atomic_type_kind_t kind)
 {
        switch (kind) {
-       case ATOMIC_TYPE_INVALID: break;
+       case ATOMIC_TYPE_INVALID:     break;
        case ATOMIC_TYPE_VOID:        return 'v';
        case ATOMIC_TYPE_WCHAR_T:     return 'w';
        case ATOMIC_TYPE_BOOL:        return 'b';
@@ -211,17 +211,11 @@ static void mangle_type(type_t *orig_type)
        case TYPE_IMAGINARY:
                mangle_imaginary_type(&type->imaginary);
                return;
-       case TYPE_INVALID:
-               panic("invalid type encountered while mangling");
        case TYPE_ERROR:
                panic("error type encountered while mangling");
-       case TYPE_BUILTIN:
        case TYPE_TYPEDEF:
        case TYPE_TYPEOF:
                panic("typeref not resolved while manging?!?");
-
-       case TYPE_BITFIELD:
-               panic("no mangling for this type implemented yet");
        }
        panic("invalid type encountered while mangling");
 }
@@ -297,9 +291,6 @@ ident *create_name_win32(entity_t *entity)
                }
 
                switch (type->function.linkage) {
-               case LINKAGE_INVALID:
-                       panic("linkage type of function is invalid");
-
                case LINKAGE_C:
                        obstack_printf(o, "%s", entity->base.symbol->string);
                        break;
@@ -350,8 +341,6 @@ ident *create_name_linux_elf(entity_t *entity)
                type_t *type = skip_typeref(entity->declaration.type);
                assert(is_type_function(type));
                switch (type->function.linkage) {
-                       case LINKAGE_INVALID:
-                               panic("linkage type of function is invalid");
                        case LINKAGE_C:
                                if (entity->function.actual_name != NULL)
                                        name = entity->function.actual_name->string;
@@ -377,8 +366,13 @@ ident *create_name_macho(entity_t *entity)
        if (entity->kind == ENTITY_FUNCTION) {
                type_t *type = skip_typeref(entity->declaration.type);
                assert(is_type_function(type));
-               if (type->function.linkage == LINKAGE_INVALID)
-                       panic("linkage type of function is invalid");
+
+               switch (type->function.linkage) {
+                       default:
+                               if (entity->function.actual_name != NULL)
+                                       return new_id_from_str(entity->function.actual_name->string);
+                               break;
+               }
        }
 
        obstack_printf(&obst, "_%s", entity->base.symbol->string);