From dc6a7436ee06bc147b6d1e6e22929b8f37c2bd48 Mon Sep 17 00:00:00 2001 From: Dale Weiler Date: Sat, 27 Apr 2013 15:20:01 +0000 Subject: [PATCH] Expression has undefined behavior (left operand modifies code->globals->used, used by right operand): (code->globals)[(((vector_t*)((void *)code->globals)) - 1)->used++] = (code_genstring(code, global->constval.vstring)) Code has unspecified behavior. Order of evaluation of function parameters or subexpressions is not defined, so if a value is used and modified in different places not separated by a sequence point constraining evaluation order, then the result of the expression is unspecified. --- ir.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ir.c b/ir.c index 82dcb9b..a124bd1 100644 --- a/ir.c +++ b/ir.c @@ -3418,7 +3418,8 @@ static bool ir_builder_gen_global(code_t *code, ir_builder *self, ir_value *glob { ir_value_code_setaddr(global, vec_size(code->globals)); if (global->hasvalue) { - vec_push(code->globals, code_genstring(code, global->constval.vstring)); + uint32_t load = code_genstring(code, global->constval.vstring); + vec_push(code->globals, load); } else { vec_push(code->globals, 0); }