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@xxxxxxxxx> --- ssa.c | 3 +++ validation/mem2reg/packed-bitfield.c | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ssa.c b/ssa.c index 3f4fa1a831df..26d46baaa16c 100644 --- a/ssa.c +++ b/ssa.c @@ -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) { diff --git a/validation/mem2reg/packed-bitfield.c b/validation/mem2reg/packed-bitfield.c index 4eaf0befeaf5..f3ee259a62b8 100644 --- a/validation/mem2reg/packed-bitfield.c +++ b/validation/mem2reg/packed-bitfield.c @@ -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 -- 2.30.0