2026-10-22 Christopher Bazley * src/SDCCgen.h (lineElem_t, lineNode): Record possible volatile accesses. * src/SDCCpeeph.c (mightHaveVolatileAccess, notVolatileVariable, notVolatile, replaceRule, peepHole): Preserve volatile-access information through peephole replacements, including SET_VALUE_AT_ADDRESS stores, protecting required accesses even when instruction iCode associations are lost or changed (bugs #4202, #4203 and #4204). Make the no-parameter notVolatile rule restriction use the preserved information instead of scanning the lines’ current iCode associations. 2026-10-22 Philipp Klaus Krause * src/z80/gen.c, support/regression/tests/bug-4186.c: Fix bug #4186. 2026-10-22 Christopher Bazley * src/SDCCpeeph.c (notVolatileVariable): Resolve exact Z80-family direct symbol operands through the symbol table when checking volatility. Retain the conservative fallback for indirect accesses, address expressions and unresolved symbols. Restore redundant-load elimination affected by bug #4149. 2026-10-22 Christopher Bazley * support/regression/MakeList: Enable qct/0036-notneg.c on MCS51 and DS390 (bug #3392). * support/regression/qct/0036-notneg.c: Identify the bug tested. * support/regression/tests/bug-3392.c: Remove the duplicate test. 2026-10-21 Christopher Bazley * src/SDCCicode.h (enum pointerCheckKind): Add POINTER_RELATIONAL. * src/SDCCicode.c (picPointerCheck, geniCodeLogic): Record relational pointer checks before the common type can add _Optional to the other operand (bug #4169). * src/SDCCopt.c (checkStaticArrayParams): Diagnose the recorded source operands instead of the converted comparison operands. * support/valdiag/tests/bug-4169.c: Test all four operators in both operand orders, checked and unchecked optional operands, equality comparisons and an explicit cast to an optional target type. 2026-10-21 Philipp Klaus Krause * src/z80/gen.c: Fix bug #4166, inspired by patch by Christopher Bazley. * support/regression/tests/bug-4166.c: Test for bug #4166, patch by Christopher Bazley. 2026-10-21 Maarten Brock * device/include/stdbit.h: fixed parentheses in macros, removed signed _BitInt(1) case because of warning 315, check __SDCC_BITINT_MAXWIDTH >= 64 for stdc_rotate_left/right, picked from patch for bug #4147 by zeynelsagcan * device/lib/__stdc_bit_ceilull.c, * device/lib/__stdc_bit_width.c, * device/lib/__stdc_count_ones.c, * device/lib/__stdc_first_leading_one.c, * device/lib/__stdc_first_trailing_one.c, * device/lib/__stdc_leading_zeros.c, * device/lib/__stdc_trailing_ones.c: define ULLONG_WIDTH if non-existent, always include assert.h * device/lib/pic16/libc/Makefile.am, * device/lib/pic16/libc/Makefile.in: added __stdc_* sources 2026-10-21 Christopher Bazley * support/valdiag/tests/bug-4051.c: Test diagnostics for the reported malformed declarations produced by an undefined concatenation macro (bug #4051). 2026-10-21 Christopher Bazley * support/regression/tests/bug-3862.c: Test a compound literal using inline function parameters and check the returned pointer and structure members (bug #3862). 2026-10-21 Philipp Klaus Krause * device/include/stdbit.h: Pick some bits from patch for bug #4147 by zeynelsagcan. 2026-10-21 Christopher Bazley * support/valdiag/tests/bug-3835.c: Compile both reduced memory-mapped member-access examples from the discussion without executing them (bug #3835). 2026-10-21 Christopher Bazley * support/regression/tests/bug-3470.c: Correct the test heading, check the returned value and enable the existing reproducer for MCS51 with stack parameters (bug #3470). 2026-10-21 Christopher Bazley