From 83cfdf2bd4f9815a67576a0e34ef8b2bf19492aa Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Wed, 27 Nov 2024 11:21:40 -0700 Subject: Fix bug where fiddle was incorrectly calculating the size of sub-bitfields structs --- goal.fiddle | 8 +++++++- src/Language/Fiddle/Compiler/ConsistencyCheck.hs | 2 +- 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) -- cgit