summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-11-27 11:21:40 -0700
committerJosh Rahm <joshuarahm@gmail.com>2024-11-27 11:21:40 -0700
commit83cfdf2bd4f9815a67576a0e34ef8b2bf19492aa (patch)
tree2a9557cf8564ed07ef2978ab7591a3e2bd057343
parent7f5b64062ed975f856892d95e74b8d2f917ade66 (diff)
downloadfiddle-83cfdf2bd4f9815a67576a0e34ef8b2bf19492aa.tar.gz
fiddle-83cfdf2bd4f9815a67576a0e34ef8b2bf19492aa.tar.bz2
fiddle-83cfdf2bd4f9815a67576a0e34ef8b2bf19492aa.zip
Fix bug where fiddle was incorrectly calculating the size of sub-bitfields structs
-rw-r--r--goal.fiddle8
-rw-r--r--src/Language/Fiddle/Compiler/ConsistencyCheck.hs2
2 files changed, 8 insertions, 2 deletions
diff --git a/goal.fiddle b/goal.fiddle
index bf170ed..ed90ad3 100644
--- a/goal.fiddle
+++ b/goal.fiddle
@@ -251,7 +251,13 @@ package stm32l4.gpio {
asc_r : (16);
[[ export_as = "ascr_upper" ]]
- reserved (16);
+ union {
+ reserved (16);
+ struct {
+ reserved (8);
+ wo upper_8 : (8);
+ };
+ };
};
};
diff --git a/src/Language/Fiddle/Compiler/ConsistencyCheck.hs b/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
index c34007f..f85d9d4 100644
--- a/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
+++ b/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
@@ -258,7 +258,7 @@ advanceRegisterBody
Union {} -> do
checkJagged decls'
return $ maximum (map fst decls')
- Struct {} -> return structSize
+ Struct {} -> return (structSize - startOffset)
return (calcSize, RegisterBodyPattern us (map snd $ toList decls') a b)