switch (kind) {
case ATOMIC_TYPE_INVALID: break;
case ATOMIC_TYPE_VOID: return 'v';
+ case ATOMIC_TYPE_WCHAR_T: return 'w';
case ATOMIC_TYPE_BOOL: return 'b';
case ATOMIC_TYPE_CHAR: return 'c';
case ATOMIC_TYPE_SCHAR: return 'a';
case TYPE_BITFIELD:
panic("no mangling for this type implemented yet");
- break;
}
panic("invalid type encountered while mangling");
}
assert(is_declaration(entity));
- if (entity->declaration.modifiers & DM_DLLIMPORT) {
- /* add prefix for imported symbols */
- obstack_printf(o, "__imp_");
- }
-
if (entity->kind == ENTITY_FUNCTION) {
+ if (entity->declaration.modifiers & DM_DLLIMPORT)
+ /* add prefix for imported symbols */
+ obstack_printf(o, "__imp_");
+
cc_kind_t cc = entity->declaration.type->function.calling_convention;
/* calling convention prefix */
switch (entity->declaration.type->function.linkage) {
case LINKAGE_INVALID:
- break;
+ panic("linkage type of function is invalid");
case LINKAGE_C:
obstack_printf(o, "%s", entity->base.symbol->string);
if (entity->kind == ENTITY_FUNCTION) {
switch (entity->declaration.type->function.linkage) {
- case LINKAGE_INVALID: break;
+ case LINKAGE_INVALID:
+ panic("linkage type of function is invalid");
+
case LINKAGE_C: break;
case LINKAGE_CXX: needs_mangling = true; break;
}
*/
ident *create_name_macho(entity_t *entity)
{
+ if (entity->kind == ENTITY_FUNCTION && entity->declaration.type->function.linkage == LINKAGE_INVALID)
+ panic("linkage type of function is invalid");
+
obstack_printf(&obst, "_%s", entity->base.symbol->string);
return make_id_from_obst();
}