case 2: if(!b) return NULL;
case 1:
if(!a) {
- compile_error(fold_ctx(fold), "interal error: fold_op no operands to fold\n");
+ compile_error(fold_ctx(fold), "internal error: fold_op no operands to fold\n");
return NULL;
}
}
case opid2('=','='): return fold_op_cmp (fold, a, b, false);
case opid2('~','P'): return fold_op_bnot (fold, a);
}
- compile_error(fold_ctx(fold), "internal error: attempted to constant for unsupported operator");
+ compile_error(fold_ctx(fold), "internal error: attempted to constant-fold for unsupported operator");
return NULL;
}
#undef fold_can_2
#define isfloat(X) ((X)->vtype == TYPE_FLOAT)
-#define isstring(X) ((X)->vtype == TYPE_STRING)
-#define isvector(X) ((X)->vtype == TYPE_VECTOR)
+/*#define isstring(X) ((X)->vtype == TYPE_STRING)*/
+/*#define isvector(X) ((X)->vtype == TYPE_VECTOR)*/
#define fold_immvalue_float(X) ((X)->constval.vfloat)
-#define fold_immvalue_vector(X) ((X)->constval.vvec)
-#define fold_immvalue_string(X) ((X)->constval.vstring)
+/*#define fold_immvalue_vector(X) ((X)->constval.vvec)*/
+/*#define fold_immvalue_string(X) ((X)->constval.vstring)*/
#define fold_can_1(X) ((X)->hasvalue && (X)->cvq == CV_CONST)
-#define fold_can_2(X,Y) (fold_can_1(X) && fold_can_1(Y))
+/*#define fold_can_2(X,Y) (fold_can_1(X) && fold_can_1(Y))*/
int fold_cond(ir_value *condval, ast_function *func, ast_ifthen *branch) {
if (!ir_block_create_jump(func->curblock, ast_ctx(branch), elide))
return false;
/*
- * now the branch has been eliminates, and the correct block for the constant evaluation
+ * now the branch has been eliminated and the correct block for the constant evaluation
* is expanded into the current block for the function.
*/
func->curblock = elide;
+ ++opts_optimizationcount[OPTIM_CONST_FOLD_DCE];
return true;
}
return -1; /* nothing done */