aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2017-05-27 22:44:53 +0200
committerMichael Matz <matz@suse.de>2017-05-27 22:44:53 +0200
commit31e5ad789a51be34fe4fb8c7f18bd8f36c6c28c0 (patch)
tree9db04ead4392804bd08e373a54d67fa699b62c15
parent7cd1ae7710aefad30e2f9893fbf6d3db29f8ae01 (diff)
downloadtinycc-31e5ad789a51be34fe4fb8c7f18bd8f36c6c28c0.tar.gz
tinycc-31e5ad789a51be34fe4fb8c7f18bd8f36c6c28c0.tar.bz2
Limit access end-of-struct warning a bit
Only warn if the struct has a non-zero size. You can't create objects of zero-sized structs, but they can be used inside sizeof (e.g. "sizeof (struct {int :0;})". The warning would always trigger for these, but as no objects can be created no accesses can ever happen.
-rw-r--r--tccgen.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tccgen.c b/tccgen.c
index 9eb29f6..1a8ba3d 100644
--- a/tccgen.c
+++ b/tccgen.c
@@ -3471,7 +3471,7 @@ static void struct_layout(CType *type, AttributeDef *ad)
type->ref->c = (c + (pcc ? (bit_pos + 7) >> 3 : 0)
+ maxalign - 1) & -maxalign;
type->ref->r = maxalign;
- if (offset + size > type->ref->c)
+ if (offset + size > type->ref->c && type->ref->c)
tcc_warning("will touch memory past end of the struct (internal limitation)");
}