mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-02-21 10:51:10 +00:00
Fix fold-dce for if(0)
This commit is contained in:
parent
40bcec5044
commit
ee428b9081
1 changed files with 9 additions and 2 deletions
11
fold.c
11
fold.c
|
@ -707,8 +707,15 @@ int fold_cond(ir_value *condval, ast_function *func, ast_ifthen *branch) {
|
|||
bool isfalse = (fold_immvalue_float(condval) == 0.0f && branch->on_false);
|
||||
ast_expression *path = (istrue) ? branch->on_true :
|
||||
(isfalse) ? branch->on_false : NULL;
|
||||
if (!path)
|
||||
return false;
|
||||
if (!path) {
|
||||
/*
|
||||
* no path to take implies that the evaluation is if(0) and there
|
||||
* is no else block. so eliminate all the code.
|
||||
*/
|
||||
++opts_optimizationcount[OPTIM_CONST_FOLD_DCE];
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!(elide = ir_function_create_block(ast_ctx(branch), func->ir_func, ast_function_label(func, ((istrue) ? "ontrue" : "onfalse")))))
|
||||
return false;
|
||||
if (!(*(cgen = path->codegen))((ast_expression*)path, func, false, &dummy))
|
||||
|
|
Loading…
Reference in a new issue