@@ -32,6 +32,9 @@ static inline bool is_promotable(struct symbol *type)
case SYM_STRUCT:
// we allow a single scalar field
// but a run of bitfields count for 1
+ // (and packed bifields are excluded).
+ if (type->packed)
+ return 0;
nbr = 0;
bf_seen = 0;
FOR_EACH_PTR(type->symbol_list, member) {
@@ -12,7 +12,6 @@ static void foo(struct s s)
/*
* check-name: packed-bitfield
* check-command: test-linearize -fmem2reg $file
- * check-known-to-fail
*
* check-output-contains: store.32
* check-output-contains: load.16
Packed bitfields are incompatible with the SSA conversion which works on the assumption that memory operations are done on the whole symbol. So, directly exclude packed bitfields from the SSA conversion. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- ssa.c | 3 +++ validation/mem2reg/packed-bitfield.c | 1 - 2 files changed, 3 insertions(+), 1 deletion(-)