aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/bc.c60
1 files changed, 21 insertions, 39 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index 5ede8598d..e7f48fcea 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -5943,6 +5943,7 @@ static BcStatus bc_program_logical(char inst)
5943 5943
5944 s = zbc_program_binOpPrep(&opd1, &n1, &opd2, &n2, false); 5944 s = zbc_program_binOpPrep(&opd1, &n1, &opd2, &n2, false);
5945 if (s) return s; 5945 if (s) return s;
5946
5946 bc_num_init_DEF_SIZE(&res.d.n); 5947 bc_num_init_DEF_SIZE(&res.d.n);
5947 5948
5948 if (inst == BC_INST_BOOL_AND) 5949 if (inst == BC_INST_BOOL_AND)
@@ -5950,50 +5951,31 @@ static BcStatus bc_program_logical(char inst)
5950 else if (inst == BC_INST_BOOL_OR) 5951 else if (inst == BC_INST_BOOL_OR)
5951 cond = bc_num_cmp(n1, &G.prog.zero) || bc_num_cmp(n2, &G.prog.zero); 5952 cond = bc_num_cmp(n1, &G.prog.zero) || bc_num_cmp(n2, &G.prog.zero);
5952 else { 5953 else {
5953
5954 cmp = bc_num_cmp(n1, n2); 5954 cmp = bc_num_cmp(n1, n2);
5955
5956 switch (inst) { 5955 switch (inst) {
5957 5956 case BC_INST_REL_EQ:
5958 case BC_INST_REL_EQ: 5957 cond = cmp == 0;
5959 { 5958 break;
5960 cond = cmp == 0; 5959 case BC_INST_REL_LE:
5961 break; 5960 cond = cmp <= 0;
5962 } 5961 break;
5963 5962 case BC_INST_REL_GE:
5964 case BC_INST_REL_LE: 5963 cond = cmp >= 0;
5965 { 5964 break;
5966 cond = cmp <= 0; 5965 case BC_INST_REL_NE:
5967 break; 5966 cond = cmp != 0;
5968 } 5967 break;
5969 5968 case BC_INST_REL_LT:
5970 case BC_INST_REL_GE: 5969 cond = cmp < 0;
5971 { 5970 break;
5972 cond = cmp >= 0; 5971 case BC_INST_REL_GT:
5973 break; 5972 cond = cmp > 0;
5974 } 5973 break;
5975
5976 case BC_INST_REL_NE:
5977 {
5978 cond = cmp != 0;
5979 break;
5980 }
5981
5982 case BC_INST_REL_LT:
5983 {
5984 cond = cmp < 0;
5985 break;
5986 }
5987
5988 case BC_INST_REL_GT:
5989 {
5990 cond = cmp > 0;
5991 break;
5992 }
5993 } 5974 }
5994 } 5975 }
5995 5976
5996 (cond ? bc_num_one : bc_num_zero)(&res.d.n); 5977 if (cond) bc_num_one(&res.d.n);
5978 //else bc_num_zero(&res.d.n); - already is
5997 5979
5998 bc_program_binOpRetire(&res); 5980 bc_program_binOpRetire(&res);
5999 5981