diff options
| -rw-r--r-- | linearize.c | 3 | ||||
| -rw-r--r-- | validation/bad-assignement.c | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/linearize.c b/linearize.c index 185ae5e2..44521f60 100644 --- a/linearize.c +++ b/linearize.c @@ -1160,6 +1160,9 @@ static pseudo_t linearize_assignment(struct entrypoint *ep, struct expression *e }; int opcode; + if (!src) + return VOID; + oldvalue = cast_pseudo(ep, oldvalue, src->ctype, expr->ctype); opcode = opcode_sign(op_trans[expr->op - SPECIAL_BASE], src->ctype); dst = add_binary_op(ep, src->ctype, opcode, oldvalue, value); diff --git a/validation/bad-assignement.c b/validation/bad-assignement.c new file mode 100644 index 00000000..3b66a113 --- /dev/null +++ b/validation/bad-assignement.c @@ -0,0 +1,6 @@ +static int foo(int a) +{ + a |=\1; + + return a; +} |
