diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-10-01 02:25:31 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-10-01 19:29:05 +0900 |
| commit | 0a94c69cc391092470c0c209f62752d0a8149e76 (patch) | |
| tree | 9d30c38f07e977fd9712b7e54e9217e42229be4c /mrbgems/mruby-compiler | |
| parent | cb76ed8ec43b32b9e389b7904ac9d68fcb771d2b (diff) | |
| download | mruby-0a94c69cc391092470c0c209f62752d0a8149e76.tar.gz mruby-0a94c69cc391092470c0c209f62752d0a8149e76.zip | |
optimize if statement with constant condition
Diffstat (limited to 'mrbgems/mruby-compiler')
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index f2bbf3497..d9a8e463e 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1330,6 +1330,17 @@ codegen(codegen_scope *s, node *tree, int val) int pos1, pos2; node *e = tree->cdr->cdr->car; + switch ((intptr_t)tree->car->car) { + case NODE_TRUE: + case NODE_INT: + case NODE_STR: + codegen(s, tree->cdr->car, val); + return; + case NODE_FALSE: + case NODE_NIL: + codegen(s, e, val); + return; + } codegen(s, tree->car, VAL); pop(); pos1 = genop_peep(s, MKOP_AsBx(OP_JMPNOT, cursp(), 0), NOVAL); |
