On Tue, 31 May 2016 00:09:01 +0200 (CEST) "Maarten Brock" <sourceforge.br...@dse.nl> wrote:
> Hello SDCC followers, > > Today the first Release Candidate (RC1) for SDCC 3.6.0 has been created. > As always it has been put online in our SourceForge File section. > https://sourceforge.net/projects/sdcc/files/ > > If you have the time, please verify it and report back with the positive > or negative results. The positive: l9x now builds without weird type errors that were present on 950x Code generation for compactness at least is again way better on Z80. The Bourne shell was 25762 bytes last time I looked and is now down to 24354 (assuming of course it still works when I get round to testing!) Almost everything still builds for the Fuzix C libraries and application set, which is becoming a fairly large chunk of code. The negative: calendar.c:233: warning 84: 'auto' variable 'retval' may be used before initialization Caught signal 11: SIGSEGV m4.c:485: error 9: FATAL Compiler Internal Error in file 'gen.c' line number '4224' : code generator internal error Contact Author with source code m4.c:485: error 9: FATAL Compiler Internal Error in file 'gen.c' line number '4224' : code generator internal error Contact Author with source code In one case code that used to build now errors (correctly due to the tightening up on type specifiers) but shows weird behaviour - some of the warnings are not displaying the correct line number and show "-" as the filename: exec.c:88: error 226: no type specifier for 'i' -:0: warning 85: in function setcmd unreferenced local variable : 'len' -:0: warning 85: in function setcmd unreferenced local variable : 'i' exec.c:524: warning 85: in function backup unreferenced local variable : 'p' -:0: warning 85: in function nextfile unreferenced local variable : 'what' None of these have obvious small reproducers - is there a preferred way to send you something to debug ? Minor An implicit declaration is now followed by a confusing report about auto variables man.c:590: warning 112: function 'build_headers' implicit declaration man.c:590: warning 84: 'auto' variable 'build_headers' may be used before initialization Warnings for the common expression for (tp = tbuf; tp < &tbuf[TSIZE]; tp++) where TSZIZE is the size of the struct. Although having quickly checked those don't appear to be that new I've not done any real runtime testing but I will try and do that and also pull out some of the workarounds I have for older sdcc and see how many of those still break. So far this all looks pretty good to me for a first release candidate. I still hit the following limits (unsurprisingly) - the speed of optimized compilation for Z80 (ok it is a bitch of a CPU to generate code for) - code generation (way better than any other Z80 compiler but still some real facepalm grade code generation in there and often for trivial easily optimised cases like 16bit equality compares with 0-255) (*) - inability to assign structs (even ones that fit an int or pointer size), which stops me from using sdcc with yacc when %union is used Also a question: I have some nice clean compiler patches for code banking but not yet good linker ones. I don't know if you are interested in them once 3.6 is out but basically they add a Z80 compiler option which - changes the calling sequence to expect arguments two bytes further up the stack - puts text constants in const not code (IMHO this is a bug fix) - generates push af call func pop af sequences for function calls. The smart linker then replaces inter-segment calls with call _helperfunc_a_b ; helperfunc is the right helper, a b ; are the banks defw func and the helpers use the extra two stack bytes to save/restore the banks when switching. Indirect calls via pointers are revectored via stubs generated by the linker. I've been using it for the Fuzix kernel on ZX Spectrum for a while and it seems to be fairly solid at this point. Thanks for all the work on the compiler Alan (*) In that case it's ld a,b dec a jr nz, false_path ld a,c or a .. where of course the second part should just or c knowing a is 0 ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user