aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--c.c4
-rw-r--r--test/test4.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/c.c b/c.c
index aa9c024..ef4a7a1 100644
--- a/c.c
+++ b/c.c
@@ -2710,10 +2710,10 @@ getbits(struct function *fn, const union type ty, union ref addr, uint off, int
}
} else {
/* shift left and shift right arithmetic to propagate sign bit */
- int sh = 8*typesize(ty) - bitsiz - bitoff;
+ int sh = 8*cls2siz[k] - bitsiz - bitoff;
if (sh)
tmp = addinstr(fn, mkinstr(Oshl, k, .l = tmp, .r = mkintcon(KI4, sh)));
- sh = 8*typesize(ty) - sh + bitoff;
+ sh = 8*cls2siz[k] - sh + bitoff;
if (sh)
tmp = addinstr(fn, mkinstr(Osar, k, .l = tmp, .r = mkintcon(KI4, sh)));
}
diff --git a/test/test4.c b/test/test4.c
index 12d9ca4..c2dcd5f 100644
--- a/test/test4.c
+++ b/test/test4.c
@@ -14,8 +14,8 @@ int : 0;
short a:15;
};
-int bitf(struct foo q) {
- return q.x + q.y - q.k + q.a;
+int bitf(struct foo *q) {
+ return q->x + q->y - q->k + q->a;
}
int main() {