From cdc497201418c6b78ed9b28b343165d95e9fb69b Mon Sep 17 00:00:00 2001 From: Jay Krell Date: Tue, 17 Sep 2019 03:23:19 -0700 Subject: [PATCH] [interp] Use +=, *= etc. Seems to generate identical code though. (mono/mono#16848) i.e. a = a op b is *not* double evaluating a. Commit migrated from https://github.com/mono/mono/commit/fb71d475437ffab6fbfb97962f375af5571c775f --- src/mono/mono/mini/interp/interp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mono/mono/mini/interp/interp.c b/src/mono/mono/mini/interp/interp.c index aabb03f..97c02a93 100644 --- a/src/mono/mono/mini/interp/interp.c +++ b/src/mono/mono/mini/interp/interp.c @@ -4157,7 +4157,7 @@ common_vcall: MINT_IN_BREAK; #define BINOP(datamem, op) \ --sp; \ - sp [-1].data.datamem = sp [-1].data.datamem op sp [0].data.datamem; \ + sp [-1].data.datamem op ## = sp [0].data.datamem; \ ++ip; MINT_IN_CASE(MINT_ADD_I4) BINOP(i, +); @@ -4303,7 +4303,7 @@ common_vcall: #define SHIFTOP(datamem, op) \ --sp; \ - sp [-1].data.datamem = sp [-1].data.datamem op sp [0].data.i; \ + sp [-1].data.datamem op ## = sp [0].data.i; \ ++ip; MINT_IN_CASE(MINT_SHL_I4) -- 2.7.4