2026-10-19 Christopher Bazley * src/SDCCcse.c: A zero-offset structure member access introduces a pointer cast. Treating that cast as sensitive to signedness prevented pointer copy propagation and reuse of the result of a condition-guarded load of the first member's value. The dereference therefore used a different temporary from the one known to be non-null (bug #4148). Classify casts from pointer types as insensitive to signedness so that the result of such a member load can be reused. * support/valdiag/tests/bug-4148.c: Test guarded and unsafe member loads at zero and nonzero offsets. 2026-10-19 Christopher Bazley * src/SDCCicode.c (geniCodeStruct): Preserve volatility inherited from the enclosing structure on the member's outer qualifier (bug #4149). * src/SDCCcse.c (findCheaperOp): Do not discard volatile target qualification when substituting a pointer operand. * support/valdiag/tests/bug-4149.c: Test repeated volatile member reads at zero and nonzero offsets, direct qualification, and valid single-read local pointer guards. 2026-10-19 Christopher Bazley * src/SDCCast.c: Reject non-arithmetic, non-pointer increment operands (bug #4136). Check the operand type before marking it as an lvalue for increment or decrement. This rejects nullptr_t and aggregate operands for both prefix and postfix forms, while retaining arithmetic and pointer operations. * support/valdiag/tests/bug-4136.c: Negative tests for increment and decrement of nullptr_t. Negative tests for increment of an object of structure type and a const int. Positive tests for increment and decrement of pointer, float and int objects. 2026-10-19 Christopher Bazley * src/SDCCast.c, src/SDCCsymt.c, src/SDCCsymt.h, support/valdiag/tests/bug-4126.c, support/regression/tests/bug-4126.c: Diagnose incompatible pointer operands of conditional expressions (bug #4126). Apply array decay before checking the referenced types of operands of the conditional operator that have pointer type. The obvious way to fix this would be to reuse diagnoseDissimilarPtrTargetTypes but its style of output is inappropriate because there is no 'from' or 'to' ordering between the two operands. Instead, a new function, printWithTypes, is used for both W_INCOMPAT_PTYPES and the existing potential E_TYPE_MISMATCH. 2026-10-18 Gabriele Gorla * sdas/asxxsrc/asout.c Partially revert change #16948 to correct bug in lst/rst output. 2026-10-18 Christopher Bazley * support/regression/tests/bug-4107.c: Use explicitly nonbanked function pointers when testing the distinction from banked pointers (bug #4107). Functions are banked by default in MCS51 huge mode. 2026-10-18 Christopher Bazley * src/SDCCast.c, src/SDCCerr.c, src/SDCCerr.h: Diagnose compatible types in a generic association list, including unselected associations (bug #4134). Identify whichever is the later association and include the earlier file and line. Use type compatibility for the comparison so that unspecified and specified array bounds are handled correctly. * support/valdiag/tests/bug-4134.c: Check duplicate and distinct types, compatible array bounds and multiline diagnostic locations. 2026-10-18 Maarten Brock * src/mcs51/ralloc.c: fixed bug #4153 * support/regression/tests/bug-4153.c: from patch in bug #4153 * support/regression/tests/genptrs.c: fixed warning 2026-10-18 Gabriele Gorla * src/SDCCicode.c, src/mcs51/gen.c: Change true/false to lowercase, fix typo. * sdas/as6500/r65mch.c, sdas/as6500/r65pst.c, sdas/as6808/m08mch.c, sdas/as6808/m08pst.c, sdas/as8051/i51mch.c, sdas/as8051/i51pst.c, sdas/as8xcxxx/ds8pst.c, sdas/asgb/gbpst.c, sdas/asrab/rabpst.c, sdas/astlcs90/t90pst.c, sdas/asxxsrc/asmain.c, sdas/asxxsrc/asout.c,