From: SourceForge.net <no...@so...> - 2011-02-20 20:41:30
|
Bugs item #3090354, was opened at 2010-10-19 11:21 Message generated for change (Comment added) made by maartenbrock You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3090354&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: mcs51(8051) target >Group: fixed >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Robert Beyer (beartm) >Assigned to: Maarten Brock (maartenbrock) Summary: C8051 - Code Size regression issue Initial Comment: Regression Issue - Compiled code size has increased by 2 bytes for every unsigned comparison For my application with 16K FLASH space, this change made an extra 148 bytes difference in code size. I believe the issue is in /trunk/sdcc/src/mcs51/gen.c - Lines 6050+ /* if unsigned char cmp with direct, do cjne A,right,zz */ ... The previous method without this added optimization was more efficient. Example output from resulting assembly below: --- C Code: bit bIRLevel; unsigned char nIRTime; if ((bIRLevel == HIGH) && ((nIRTime >= 70) && (nIRTime <= 75))) --- Build 3.0.0 - (6028) 0057 1651 00208$: 0057 1652 C$main.c$354$3$3 ==. 1653 ; C:\Projects\SS01\SS01\main.c:354: if ((bIRLevel == HIGH) && ((nIRTime >= 70) && (nIRTime <= 75))) 0057 20*33 03 1654 jb _PCA0_ISR_bIRLevel_2_2,00209$ 005A 02s01r71 1655 ljmp 00149$ 005D 1656 00209$: 005D BC 46 00 1657 cjne r4,#0x46,00210$ 0060 1658 00210$: 0060 50 03 1659 jnc 00211$ 0062 02s01r71 1660 ljmp 00149$ 0065 1661 00211$: 0065 74 4B 1662 mov a,#0x4B 0067 B5 0C 00 1663 cjne a,ar4,00212$ 006A 1664 00212$: 006A 50 03 1665 jnc 00213$ 006C 02s01r71 1666 ljmp 00149$ 006F 1667 00213$: 006F 1668 C$main.c$357$4$4 ==. --- Build 2.9.7 - (5862) 0057 1650 00208$: 0057 1651 C$main.c$354$3$3 ==. 1652 ; C:\Projects\SS01\SS01\main.c:354: if ((bIRLevel == HIGH) && ((nIRTime >= 70) && (nIRTime <= 75))) 0057 20*33 03 1653 jb _PCA0_ISR_bIRLevel_2_2,00209$ 005A 02s01r63 1654 ljmp 00149$ 005D 1655 00209$: 005D BC 46 00 1656 cjne r4,#0x46,00210$ 0060 1657 00210$: 0060 50 03 1658 jnc 00211$ 0062 02s01r63 1659 ljmp 00149$ 0065 1660 00211$: 0065 EC 1661 mov a,r4 0066 24 B4 1662 add a,#0xff - 0x4B 0068 50 03 1663 jnc 00212$ 006A 02s01r63 1664 ljmp 00149$ 006D 1665 00212$: 006D 1666 C$main.c$357$4$4 ==. --- ---------------------------------------------------------------------- >Comment By: Maarten Brock (maartenbrock) Date: 2011-02-20 21:41 Message: Reverted and removed the 'optimization' in SDCC 3.0.1 #6241. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3090354&group_id=599 |