This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Feature Request


L C wrote:
1) I don't think the ISO code and unecessary typecasting issues would be a concern since the requested compiler switch would obviously not be the default. You would have to intentionally enable it and therefore realize the ramifications.
One major concern I would have is that it's very easy to make mistakes that cause complete chaos in unexpected parts of gcc's infrastructure - the new switch would render most of the C torture test suite inoperable and thus the quality of the resultant code might be somewhat debatable at best - the solution I've taken allows me to continue to use the full testsuite and trap many otherwise subtle problems.

3) I think for a typical simple embedded systems program the savings would be greater than your 2-2.5%. I changed one arithmetic calculation on my AVR such that I casted every calc back to unsigned char and the code to do the calculation went from about 14 bytes to 4. It would also be especially valuable in interrupt service routines where small code size is key.
I think a lot depends on how you're code works - there are some pathalogical integer promotions but I guess it depends what your ratio of numeric code is to other code. I can point to examples where I've seen much larger reductions but overall within a pretty general OS, device driver, network protocol and application codebase the saving was under 3% - obviously some individual cases had savings of 50%+. The code in question probably does have some explicit typecasts but not too many.

I guess you could always ask Denis Chertykov his thoughts on this since he wrote the AVR port and he looks after the IP2k port in the FSF tree.


Regards,
Dave



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]