2026-11-02 Christopher Bazley * src/SDCCsymt.h, src/SDCCsymt.c (newEnumType, mergeSpec): Preserve whether an enumeration has a fixed underlying type. * src/SDCC.y (simple_typed_enum_decl): Establish the tagged enumeration type in declarations without an enumerator list. (enum_specifier, simple_typed_enum_decl): Diagnose incompatible underlying types and changes of fixedness in the same scope (bug #4176). * src/SDCCerr.h, src/SDCCerr.c: Add E_ENUM_REDECL. * support/valdiag/tests/bug-4176.c: Check incompatible declarations, compatible typedefs, definitions, inner-scope shadowing and sibling blocks at equal nesting levels, including later redeclarations. * support/regression/tests/bug-4176.c: Check object widths, compatible underlying type and values before and after the enum definition. 2026-11-02 Christopher Bazley * src/SDCCast.c (hasConstMember, decorateType): Diagnose aggregate assignments with const-qualified members, recursively including nested aggregates and array elements. Stop at pointer members and allow initialisation (bug #4210). * support/valdiag/tests/bug-4210.c: Test nested structures, unions, arrays, const pointer members, pointers to const and valid initialisation and member assignments. 2026-11-02 Christopher Bazley * src/SDCCsymt.c (mergeDeclSpec): Apply qualifiers on an array typedef to its first non-array element. Put qualifiers on pointer elements rather than their targets (bug #4164). * support/regression/tests/bug-4164.c: Test const, volatile, restrict and _Optional qualification of array typedefs, multiple dimensions, pointer depth and preservation of qualified pointer targets. 2026-11-02 Christopher Bazley * src/SDCCutil.c, src/SDCCutil.h (parseEscape, escapeValueInRange, copyStrWithEscapeLimit, copyStr): Share escape decoding between character and string literals. Check numeric escapes before narrowing, including overflow in strtoul. Preserve unrestricted decoding for non-literal uses such as inline assembly (bug #4179). * src/SDCCval.c (literalEscapeLimit, strVal, charVal, constCharacterVal): Apply prefix-specific numeric escape limits. Distinguish numeric byte escapes from universal character names and require a u8 character literal to end after its single code unit. * src/SDCCerr.c: Reword warning 137 for numeric escapes. * support/valdiag/tests/bug-4179.c: Check numeric limits, overflow, malformed delimited escapes, trailing characters and valid escapes. Select tests by language features and wide-character limits. * support/regression/tests/bug-4179.c: Check stored literal values, simple escapes, delimited escapes and prefix-specific boundaries. Account for signed wchar_t when checking its unsigned escape value. 2026-11-02 Philipp Klaus Krause * src/pic16/pcode.c: Fix bug #4236 via patch by zeynelsagcan. * src/z80/gen.c, support/regression/tests/bug-4206.c: Fix bug #4206. 2026-11-02 Gabriele Gorla * configure, configure.ac, device/lib/Makefile.in, device/lib/ds390/Makefile.in, device/lib/ds400/Makefile.in, device/lib/incl.mk, src/ds390/main.c, support/regression/ports/ds390/spec.mk: Merge the ds390 and ds400 library into one file. * device/lib/f8/Makefile.in, device/lib/f8l/Makefile.in, device/lib/hc08/Makefile.in, device/lib/huc6280/Makefile.in, device/lib/mos6502/Makefile.in, device/lib/mos6502-stack-auto/Makefile.in, device/lib/mos65c02/Makefile.in, device/lib/mos65c02-stack-auto/Makefile.in, device/lib/pdk13/Makefile.in, device/lib/pdk14/Makefile.in, device/lib/pdk15/Makefile.in, device/lib/pdk15-stack-auto/Makefile.in, device/lib/s08/Makefile.in, device/lib/s08-stack-auto/Makefile.in, device/lib/sm83/Makefile.in, device/lib/stm8/Makefile.in, device/lib/stm8-large/Makefile.in: Cleanup library makefiles. * device/include/xa51, device/lib/ds390/examples: Remove obsolete files. 2026-11-02 Philipp Klaus Krause * src/SDCCsalloc.hpp: Fix bug #4214.