projects
/
cparser
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add the field encoding to struct string_literal_t and merge T_WIDE_STRING_LITERAL...
[cparser]
/
type.c
diff --git
a/type.c
b/type.c
index
6a121d8
..
da737e5
100644
(file)
--- a/
type.c
+++ b/
type.c
@@
-1114,7
+1114,7
@@
unsigned get_type_size(type_t *type)
layout_struct_type(&type->compound);
return type->compound.compound->size;
case TYPE_FUNCTION:
layout_struct_type(&type->compound);
return type->compound.compound->size;
case TYPE_FUNCTION:
- return
0; /* non-const (but "address-const")
*/
+ return
1; /* strange GNU extensions: sizeof(function) == 1
*/
case TYPE_REFERENCE:
case TYPE_POINTER:
return pointer_properties.size;
case TYPE_REFERENCE:
case TYPE_POINTER:
return pointer_properties.size;
@@
-1504,6
+1504,7
@@
void layout_struct_type(compound_type_t *type)
return;
if (type->compound->layouted)
return;
return;
if (type->compound->layouted)
return;
+ compound->layouted = true;
il_size_t offset = 0;
il_alignment_t alignment = compound->alignment;
il_size_t offset = 0;
il_alignment_t alignment = compound->alignment;
@@
-1561,7
+1562,6
@@
next:
compound->size = offset;
compound->alignment = alignment;
compound->size = offset;
compound->alignment = alignment;
- compound->layouted = true;
}
void layout_union_type(compound_type_t *type)
}
void layout_union_type(compound_type_t *type)
@@
-1571,6
+1571,9
@@
void layout_union_type(compound_type_t *type)
compound_t *compound = type->compound;
if (! compound->complete)
return;
compound_t *compound = type->compound;
if (! compound->complete)
return;
+ if (compound->layouted)
+ return;
+ compound->layouted = true;
il_size_t size = 0;
il_alignment_t alignment = compound->alignment;
il_size_t size = 0;
il_alignment_t alignment = compound->alignment;