We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Is there anyway to "skip" an optimization level on Keil C51 ver 5.20? I continually get linker warnings about recursive calls. I have read app note 129 (many projects ago, and now do what it suggests as second nature). If I drop the optimizations down to "Dead Code Elimination" (the one below "Data Overlay"), all my linker warnings go away. As I have more RAM than I'll ever need in this project, I'd like to just skip overlay entirely, and avoid its problems. Unfortunately, code space is limited, and I cannot do without the other optimizations. I know I can do optimizations on a file by file basis (and have), but I'd like to avoid this if possible, and it still leaves that one file unoptimized. BTW: What exactly does the "enable variable overlay" under the linker menu do anyway... I cannot tell any difference from the map file. -nelson
I assume that mean that my increase in xdata usage when I set compiler optimizations to below "data overlay" is because of moving idata variables to xdata? The compiler doesn't move IDATA vars to XDATA in any optimization (or lack of optimization) step. :-) There must be some other optimization that isn't making more efficient use of XDATA. Regardless, it sounds like my initial question's answer is NO, there is no way to skip an optimzation level. That's correct. There is no way to "skip" an optimization level. If I want to avoid the compiler warning, I'll have to do a #pragma optimize() around each function/file that is causing the problem.... unless someone has a better solution? I'd suggest using the linker optimize directive to remove the resursive reference to the function. This is discussed in App Note 129. It also sounds like version 6 might handle this issue better... I'm not too sure about that. The V6 optimizer is nearly identical to the V5 optimizer for the first 6 levels. The V6 tools, offer 3 new optimization levels. Also, V6 offers XDATA overlaying. Neglecting uVision, how much better is v6 over v5? Numerous customers report cutting application sizes by as much as 40%. We've consistently seen 30% on real applications (over 16K). I usually maintain the philosophy to avoid changing revs in the middle of a project, I tend to agree with you. legal issue: If you upgrade instead of purchase a new license, does that "legally" prevent you from using the older version? No. As long as it's the same user on the same machine. You can't give your old V5 compiler away to a friend. (Well, unless you also give him your V6 updated compiler as well :-) Jon