aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--linearize.c3
-rw-r--r--validation/bad-assignement.c6
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;
+}