+static GMQCC_INLINE ast_expression *fold_op_andor(fold_t *fold, ast_value *a, ast_value *b, bool isor) {
+ if (fold_possible(a) && fold_possible(b)) {
+ if (OPTS_FLAG(PERL_LOGIC)) {
+ if (fold_immediate_true(fold, b))
+ return (ast_expression*)b;
+ } else {
+ return ((isor) ? (fold_immediate_true(fold, a) || fold_immediate_true(fold, b))
+ : (fold_immediate_true(fold, a) && fold_immediate_true(fold, b)))
+ ? (ast_expression*)fold->imm_float[1] /* 1.0f */
+ : (ast_expression*)fold->imm_float[0]; /* 0.0f */
+ }
+ }
+ return NULL;
+}
+