diff options
-rw-r--r-- | expand.c | 4 | ||||
-rw-r--r-- | validation/expand/constant-union-flt2int.c | 1 | ||||
-rw-r--r-- | validation/expand/constant-union-int2flt.c | 1 |
3 files changed, 4 insertions, 2 deletions
@@ -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\\. |