Jeffrey Law <law@xxxxxxxxxx> writes: >> As this screws up gcc's optimization big time, I actually wrote a gcc >> patch at one time that detected such "artifically static" variables and >> changed them into normal automatic variables (at the time I was >> comparing EEMBC results for gcc versus Greenhill's compiler -- the >> latter already dealt with such artifically static variables, though as I >> recall, it did so in an unsafe manner). > > "promoting" statics to autos certainly can be done by the compiler if > you're willing to do use & escape analysis. Nontrivial, but possible. The patch I wrote (if I recall correctly; it's been a long time) waited until after flow analysis had been done, and changed the variables to auto if no variable-use reached the beginning of the function (and also, I guess, their address hadn't been taken). This didn't work perfectly -- some early optimizations get lost because of the delayed conversion -- but it was fairly effective at sanitizing all those quirky EEMBC benchmarks, and it was easy to implement. -Miles -- Run away! Run away!