SDCC 3.7.0 Release
|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 http://sourceforge.net/tracker/?group_id=599&atid=350599 or Bugs at http://sourceforge.net/tracker/?group_id=599&atid=100599 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|
|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|
|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|
|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|
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.