ref: 9c48e4c895915eea3d7d7ee7b3287d23b9766da5
parent: 849389558d7c989902662f32ba956e34ac4e21c5
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Tue Nov 26 15:54:09 EST 2024
remove unused 'op' variable when using computed goto
--- a/flisp.c
+++ b/flisp.c
@@ -856,7 +856,6 @@
// temporary variables (not necessary to preserve across calls)
size_t isz;
- uint8_t op;
uint32_t i, ipd;
symbol_t *sym;
cons_t *c;
@@ -888,7 +887,7 @@
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#define OP(x) op_##x:
-#define NEXT_OP goto *ops[op = *ip++]
+#define NEXT_OP goto *ops[*ip++]
#define GOTO_OP_OFFSET(op) [op] = &&op_##op
static const void *ops[] = {
GOTO_OP_OFFSET(OP_LOADA0),
@@ -989,7 +988,7 @@
#else
#define OP(x) case x:
#define NEXT_OP break
- op = *ip++;
+ uint8_t op = *ip++;
while(1){
switch(op){
#endif
@@ -1066,10 +1065,10 @@
case OP_MUL: goto apply_mul;
case OP_DIV: goto apply_div;
default:
- op = i;
#if defined(COMPUTED_GOTO)
goto *ops[i];
#else
+ op = i;
continue;
#endif
}