2026-10-20 Christopher Bazley * src/SDCCval.c: Preserve signed integer values when converting a constexpr initialiser from integer to float type (bug #4144). Obtain the value as double through floatFromVal, which respects the source integer type's signedness. Leave integer conversions unchanged. * support/regression/tests/bug-4144.c: Test six failing return-context conversions and six cases that pass before and after the fix. 2026-10-20 Christopher Bazley * src/SDCC.y: Diagnose non-integer subscripts in designated initialisers using E_IDX_NOT_INT (bug #4143). * support/valdiag/tests/bug-4143.c: Test subscripts of floating-point type, negative and nonconstant subscripts, ordinary array subscripting and valid test cases with integer expressions and explicit casts. 2026-10-20 Christopher Bazley * src/SDCCicode.c (geniCodeStruct): Apply inherited volatile qualification to the element type of array members, including arrays of pointers (bug #4161). * support/valdiag/tests/optional-volatile.c: Test volatile pointer reads and valid single-read copies. Include the reported pointer array member example. 2026-10-20 Philipp Klaus Krause * support/regression/tests/bug-4153.c: Further tests for z80 peephole optimizer rules, towards fixing bug #4123. * src/z80/peeph.def: Remove peephole optimizer rule for which no tests were found. 2026-10-19 Maarten Brock * src/ds390/ralloc.c, * src/mcs51/ralloc.c: replaced useReg() & open code by allocThisReg(), (spillThis): fix bug #4154 * support/regression/tests/bug-4154.c: from patch in bug #4154 2026-10-19 Philipp Klaus Krause * support/regression/tests/bug-4153.c: Disable test for pdk14, where it fails due to lack of memory. * src/z80/peeph.def: Remove peephole optimizer rule for which no tests were found. 2026-10-19 Christopher Bazley * src/SDCC.y: Diagnose invalid atomic array and function types before accessing specifier fields, and recover with int (bug #4132). Inspect qualifiers through the type chain and set the atomic flag on pointer declarators for pointer types. * support/valdiag/tests/bug-4132.c: Test rejection of invalid atomic types and unsupported atomics, and valid non-atomic declarations. 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,