aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--ssa.c4
-rw-r--r--validation/mem2reg/init-local32.c2
2 files changed, 2 insertions, 4 deletions
diff --git a/ssa.c b/ssa.c
index 1c1ec695..3e880050 100644
--- a/ssa.c
+++ b/ssa.c
@@ -30,8 +30,6 @@ static inline bool is_promotable(struct symbol *type)
case SYM_RESTRICT: // OK, always integer types
return 1;
case SYM_STRUCT:
- if (type->bit_size > long_ctype.bit_size)
- return 0;
// we allow a single scalar field
// but a run of bitfields count for 1
nbr = 0;
@@ -49,6 +47,8 @@ static inline bool is_promotable(struct symbol *type)
if (nbr++)
return 0;
} END_FOR_EACH_PTR(member);
+ if (bf_seen && (type->bit_size > long_ctype.bit_size))
+ return 0;
return 1;
case SYM_UNION:
// FIXME: should be like struct but has problem
diff --git a/validation/mem2reg/init-local32.c b/validation/mem2reg/init-local32.c
index c988bb6e..9a65c205 100644
--- a/validation/mem2reg/init-local32.c
+++ b/validation/mem2reg/init-local32.c
@@ -21,8 +21,6 @@ double sdouble(void)
/*
* check-name: init-local32
* check-command: test-linearize -Wno-decl -m32 -fdump-ir=mem2reg $file
- * check-known-to-fail
- *
* check-output-ignore
* check-output-excludes: load\\.
* check-output-excludes: store\\.