Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!cbatt!ihnp4!inuxc!pur-ee!uiucdcs!uiucdcsm!grunwald From: grunwald@uiucdcsm.UUCP Newsgroups: comp.arch Subject: Re: Optimization vs. the programmer Message-ID: <3300003@uiucdcsm> Date: Thu, 9-Apr-87 22:35:00 EST Article-I.D.: uiucdcsm.3300003 Posted: Thu Apr 9 22:35:00 1987 Date-Received: Sat, 11-Apr-87 23:38:25 EST References: <479@danews.ATT.COM> Lines: 16 Nf-ID: #R:danews.ATT.COM:479:uiucdcsm:3300003:000:888 Nf-From: uiucdcsm.cs.uiuc.edu!grunwald Apr 9 21:35:00 1987 Strength reduction is replacement of operations such as "i = j * 8" by "i = j << 3", or "i = j % 8" by "i = j & 0x3" (if j is unsigned). As for source-to-source translation: not for me. A lot of the optimizations (dead-code analysis, colored register allocation, etc) isn't at the level of the source code. It is this class of optimization which kills statements such as "n = n;". You could recognize ``useless'' statements like this & warn the person about it, but I think it would be better to simply dis-able the optimizations at that point and/or code that little-needed routine in assembly code. Vector & concurrentization optimizations can usually be done in a source-source fashion, but this stuff would just fill your source files up with meaningless garbage which is impossible to edit/maintain. The only ``source'' which it would be reasonable to convert it to is assembler.