Improve error recovery in parse_asm_statement() and do not return an error statement.
[cparser] / entity.c
index d828c8a..528e3a1 100644 (file)
--- a/entity.c
+++ b/entity.c
@@ -43,7 +43,6 @@ const char *get_entity_kind_name(entity_kind_t kind)
        case ENTITY_LOCAL_LABEL:     return "local label";
        case ENTITY_TYPEDEF:         return "typedef";
        case ENTITY_NAMESPACE:       return "namespace";
-       case ENTITY_INVALID:         break;
        }
 
        panic("Invalid entity kind encountered in get_entity_kind_name");
@@ -105,3 +104,13 @@ elf_visibility_tag_t get_elf_visibility_from_string(const char *string)
                return ELF_VISIBILITY_ERROR;
        }
 }
+
+entity_t *skip_unnamed_bitfields(entity_t *entry)
+{
+       for (; entry != NULL; entry = entry->base.next) {
+               assert(entry->kind == ENTITY_COMPOUND_MEMBER);
+               if (!entry->compound_member.bitfield || entry->base.symbol != NULL)
+                       break;
+       }
+       return entry;
+}