Hello.

I've been using SDCC (PIC port) for some time and using gputils to assemble and 
link.

Gplink has an option to remove dead sections -O2.

It crashed when using this option, but recently i've repported the bug and it 
has been quickly fixed.
(See details here: https://sourceforge.net/p/gputils/bugs/286/ )

The problem is -O2 removes code only from entire sections not used, and SDCC 
generates only one code section for all functions of each file. So code is only 
removed if no function of a file is used. 
This is not very useful, normally you have some libraries and use part of the 
functions of that files, all unused functions should be removed. This could be 
possible if each file had it's own code section. I have done some test with 
real projects (adding a code section for each function manually to the 
resulting asm) and i've seen very big memory savings after linking (up to 20%, 
very project dependent).

I suggest adding a new Option for the SDCC PIC port to create a code section 
for each function in every compiled file. I think it should be very easy to 
implement this option, it just adds a line for each function in the output 
file, i propose the following format (the one i used in my tests):

function_name (.c file function) -> _function_name (.asm file function) -> 
code_function_name (.asm file code section)

Just add "code" prefix to each generated asm function name and add new section 
line before the function start label, an example here:

--------------------------------------------------
;***
;  pBlock Stats: dbName = C
;***
;entry:  _serial_hw_init    ;Function
start
; 2 exit points
;has an exit
;; Starting pCode block
code_serial_hw_init    code   
;Function start
_serial_hw_init    ;Function start
; 2 exit points
;    .line    695;
"src/serial/serial_hw.c"   
pin_mode_input(SERIAL_HW_RX0);
    BANKSEL    _TRISB
    BSF    _TRISB,5

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to