aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--expand.c4
-rw-r--r--validation/expand/constant-union-flt2int.c1
-rw-r--r--validation/expand/constant-union-int2flt.c1
3 files changed, 4 insertions, 2 deletions
diff --git a/expand.c b/expand.c
index 04b072c5..9ab259b1 100644
--- a/expand.c
+++ b/expand.c
@@ -694,6 +694,8 @@ static int expand_dereference(struct expression *expr)
if (ctype->bit_size != value->ctype->bit_size)
return UNSAFE;
if (value->type == EXPR_VALUE) {
+ if (!is_integral_type(ctype))
+ return UNSAFE;
if (is_bitfield_type(value->ctype))
return UNSAFE;
expr->type = EXPR_VALUE;
@@ -701,6 +703,8 @@ static int expand_dereference(struct expression *expr)
expr->taint = 0;
return 0;
} else if (value->type == EXPR_FVALUE) {
+ if (!is_float_type(ctype))
+ return UNSAFE;
expr->type = EXPR_FVALUE;
expr->fvalue = value->fvalue;
return 0;
diff --git a/validation/expand/constant-union-flt2int.c b/validation/expand/constant-union-flt2int.c
index 1c8f480b..5e25b592 100644
--- a/validation/expand/constant-union-flt2int.c
+++ b/validation/expand/constant-union-flt2int.c
@@ -13,7 +13,6 @@ static int foo(void)
* check-name: constant-union-float-to-int
* check description: must not infer the int value from the float
* check-command: test-linearize -fdump-ir $file
- * check-known-to-fail
*
* check-output-ignore
* check-output-pattern(1): setfval\\.
diff --git a/validation/expand/constant-union-int2flt.c b/validation/expand/constant-union-int2flt.c
index ff0a642a..16ce1c6f 100644
--- a/validation/expand/constant-union-int2flt.c
+++ b/validation/expand/constant-union-int2flt.c
@@ -13,7 +13,6 @@ static float foo(void)
* check-name: constant-union-int-to-float
* check description: must not infer the float value from the int
* check-command: test-linearize -fdump-ir $file
- * check-known-to-fail
*
* check-output-ignore
* check-output-pattern(1): load\\.