diff --git a/Gen.pas b/Gen.pas index 176b44d..b8b6011 100644 --- a/Gen.pas +++ b/Gen.pas @@ -621,7 +621,8 @@ NeedsCondition := opcode in [pc_and,pc_ior,pc_cui,pc_cup,pc_lor,pc_lnd,pc_ldl,pc_lil,pc_lld, pc_lli,pc_gil,pc_gli,pc_gdl,pc_gld,pc_iil,pc_ili,pc_idl,pc_ild, pc_cop,pc_cpo,pc_cpi,pc_dvi,pc_mpi,pc_adi,pc_sbi,pc_mod,pc_bno, - pc_udi,pc_uim,pc_umi,pc_cnv,pc_rbo]; + pc_udi,pc_uim,pc_umi,pc_cnv,pc_rbo,pc_shl,pc_shr,pc_usr,pc_lbf, + pc_lbu,pc_cbf,pc_tri]; end; {NeedsCondition} diff --git a/cc.notes b/cc.notes index f49955c..6711887 100644 --- a/cc.notes +++ b/cc.notes @@ -1863,6 +1863,8 @@ int foo(int[42]); 200. Arithmetic operations on unsigned integer types should give the low-order bits of the true mathematical result in the event of overflow, but 16-bit unsigned multiplication did not always do this. +201. When certain expressions were used for the condition in an if statement, loop, or conditional expression, the conditional branch might be evaluated incorrectly, leading to incorrect control flow. The affected condition expressions included shifts, loads or stores of bit-fields, and ? : expressions. + -- Bugs from C 2.1.0 that have been fixed ----------------------------------- 1. In some situations, fread() reread the first 1K or so of the file.