SDCC 3.7.0 Release

From SDCC wiki
Jump to: navigation, search

Release schedule

Delivery Planned date Actual date
SDCC 3.7.0 RC1
SDCC 3.7.0 RC2
SDCC 3.7.0 Release

See the SDCC 3.7.0 Release Plan.


If you think there is a functionality that should be included or a bug that needs to be fixed in the release, please submit it to the Feature Requests at or Bugs at and copy Request ID and Summary fields to the following table, where:

Request ID: Request ID from Feature Requests or Bugs
Summary: Summary from Feature Requests or Bugs
Proposed by: Who proposed the feature or bug fix
Time: Estimate of the implementation time
Developer: Who will implement the feature or bug fix
Status: Current status

Request ID Summary Proposed by Time Developer Status
2870755 Accessing the stack spth POSTPONED
sdas merge with asxxxx 5.0 borutr a lot more borutr/maarten work in progress
2085 mcs51/ds390 bool fails when bit type is not allowed spth epetrich DONE
1710546 struct: aggregate assignment spth POSTPONED
674638 structures cannot be passed as function parameters spth POSTPONED
3326880 float classification macros spth POSTPONED
3486540 gcc-torture-execute-pr38212 fails spth
3486535 gcc-torture-execute-pr20466-1 fails spth
3502632 gcc-torture-execute-20010224-1 fails for z80-related spth epetrich DONE
3289630 variable length arrays spth POSTPONED
3495899 CSE ignores pointer aliasing problems. spth
3573141 Handle static vars like global ones in initialization spth
327 mcs51 code in device/lib spth
1731 More sdcdb bugs spth
403 Regression testing for pic16 spth POSTPONED
1866 [PIC16] Global variables not initialized to 0 by default (maybe enable crt0iz as default) DiegoHerranz QUASIDONE
2241 wrong code generated for a function call inside nested loops spth epetrich DONE
451 Intermingled declarations and code spth POSTPONED
165 C99 compliance: for (int i=0; ... spth spth DONE
332 Compound literals spth POSTPONED
450 K & R function style spth POSTPONED
2545 signed enum comparisons fail spth maarten DONE
2559 Wrong operand in left shift by literal spth epetrich DONE
2539 expression with bool result assigned to bitfield generates wrong code spth spth DONE
2542 Cast overwrites lower byte of 16-bit result (andgets wrong upper byte) spth spth DONE
2585 Wrong result in left shift of int by int spth maarten DONE
2657 Invalid asm generated spth benshi DONE
2643 Initialization of anonymous union inside struct broken spth spth DONE
2560 _Bool addition issues in ds390 spth
2609 No doc snapshots since July 2016 spth spth DONE
1995 Z80 very long compile even with low --max-allocs-per-node spth spth DONE
539 Make debugging with gdb work well for stm8 spth spth DONE
2680 Possible GPL violation: Binary snapshots only spth DONE
2685 huge mcs51 memory model not working on 32-bit Windows spth maarten DONE

Feature List

There is always a problem to create a list of new features when a new SDCC release is announced. The following list is an attempt to create such a list "on the fly". Every time a new feature which is visible or interesting for the SDCC users is implemented, it should be added to the following list.

  • Changed putchar() prototype from void putchar(char) to int putchar(int) to improve standard-compliance and allow error reporting.
  • Various speed improvements in stm8 backend - Dhrystone score more than doubled, resulting in SDCC achieving the highest Dhrystone scores among STM8 C implementations.
  • Various speed improvements for multiplications resulting in SDCC achieving the highest Coremark scores among STM8 C implementations.
  • Declarations in for loops (ISO C99).
  • 64-bit integers (long long) for the mcs51 and ds390 backends (now long long is fully supported in SDCC except for the pic14 and pic16 backends).
  • Full _Bool support for mcs51 and ds390 backend (now _Bool is fully supported in SDCC regardless of backend).
  • Additional wide character library functions: mbstowcs() and wcstombs(), btowc() and wctob(), wcscmp(), wcslen().
  • Changed PRNG for rand() from LCG to xorshift to improve speed and quality.
  • Support for Small-C calling convention on the callee side (i.e. function definitions with Small-C calling convention).
  • The obsolete macro SDCC (which used to contain the version number encoded as an integer) has finally been removed (except for mcs51, where it will survive a little bit longer for SiLabs IDE compability).
  • New deviced supported by simulator (TLCS-90, and the 517, F380, XC88X mcs51-variants along with dual-dptr and MDU support).
  • Timer, UART (incl. interrupt) and I/O support in STM8 simulator.
  • Simulator support for banked memory and bit banding.
  • Various simulator improvements: Conditional breakpoints, breakpoints by function name from SDCC debug output, OMF input, VCD output, simulator interface for simulated program and new operators in expressions.
  • Deprecated --nojtbound and the corresponding pragma.
  • Faster register allocator reduces compilation time by about 25% (does not apply to mcs51, ds390 which use a different register allocator).
  • Execution count guessing and use of execution count guesses in stm8 register allocation improve optimization for code speed.
  • Changed getchar() prototype from char getchar(void) to int getchar(void) to improve standard-compliance and allow error reporting.
  • Type qualifiers in array parameters (ISO C99).
  • static in array parameters (ISO C99).
  • Improved support for DWARFv2 debug info in ELF output (stm8, hc08, s08).
  • Various improvements in z80/z180/gbz80/tlcs90/r2k/r3ka code generation, in particular for mixed 16-/32-bit code.
  • __z88dk_fastcall function pointer support for --reserve-regs-iy.
  • tlcs90 is now a fully supported backend, no longer work in progress.
  • --data-seg to specify the segment for non-initialized data in the z80, z180, gbz80, tlcs90, r2k and r3ka backends.
  • New methods to obtain tree-decompositions of control-flow graphs improve compilation time / code-quality trade-off.
Personal tools