diff mbox series

[3/4] ssa: avoid SSA conversion of packed bitfields

Message ID 20210309234232.50889-4-luc.vanoostenryck@gmail.com (mailing list archive)
State Mainlined, archived
Headers show
Series fix SSA conversion of mismatched memops | expand

Commit Message

Luc Van Oostenryck March 9, 2021, 11:42 p.m. UTC
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(-)
diff mbox series

Patch

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