projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* src/SDCCsymt.c, src/SDCCglue.c,
[fw/sdcc]
/
src
/
SDCCsymt.c
diff --git
a/src/SDCCsymt.c
b/src/SDCCsymt.c
index 94ad4d70705893e2e8879f845a49f35395165c9f..a27c0ec60c9f80a5486768c1f2b253fbbb6ec088 100644
(file)
--- a/
src/SDCCsymt.c
+++ b/
src/SDCCsymt.c
@@
-1280,16
+1280,17
@@
compStructSize (int su, structdef * sdef)
if (!loop->etype->select.s.b_signed)
SPEC_USIGN(loop->etype) = 1;
if (!loop->etype->select.s.b_signed)
SPEC_USIGN(loop->etype) = 1;
- SPEC_BLEN (loop->etype) = loop->bitVar;
-
if (loop->bitVar == BITVAR_PAD) {
/* A zero length bitfield forces padding */
if (loop->bitVar == BITVAR_PAD) {
/* A zero length bitfield forces padding */
- SPEC_BSTR (loop->etype) = bitOffset;
SPEC_BLEN (loop->etype) = 0;
SPEC_BLEN (loop->etype) = 0;
- bitOffset = 8;
+ SPEC_BSTR (loop->etype) = bitOffset;
+ if (bitOffset > 0)
+ bitOffset = 8; /* padding is not needed when at bit 0 */
loop->offset = sum;
}
else {
loop->offset = sum;
}
else {
+ SPEC_BLEN (loop->etype) = loop->bitVar;
+
if (bitOffset == 8) {
bitOffset = 0;
sum++;
if (bitOffset == 8) {
bitOffset = 0;
sum++;