858:
load and relocation method(s) used, the individual features included, and the configuration options specified in the command line. Due to the large number of command line switches and options supported (around fifty switches with multiple possible settings) there is a high number of feature combinations with uncountable dependencies resulting in endless number of different target images. FreeKEYB's
Dynamic Dead Code Elimination technique manages to resolve these dependencies and remove dead code and data is not restricted to include or exclude a somewhat limited number of modules or whole sub-routines and fix up some dispatch tables as in classical TSR programming, but works at byte level able to remove individual instructions in the middle of larger routines distributed all over the code to handle a particular case or support a specific feature special tools are used to analyze the code and create fixup tables automated using conditional defines to declare the various cases not only optional at assembly time but at initialization time without the overhead of having at least some amount of dead code left in the runtime image to keep track of all the dependencies between these conditionals, dynamically build and relocate the runtime image, fix up all the references between these small, changing, and moving binary parts still allowing to use the tiny .COM/.SYS style model is done at initialization time API to import and export object structures between FreeKEYB and the calling application to transparently resize and move them internally at runtime
498:(for example different versions of an operating system, or different sets and combinations of drivers or services loaded in a particular target environment), which may require different sets of special cases in the code, but at the same time become conditionally dead code for the other cases. Also, the software (for example, a driver or resident service) may be configurable to include or exclude certain features depending on user preferences, rendering unused code portions useless in a particular scenario. While modular software may be developed to dynamically load libraries on demand only, in most cases, it is not possible to load only the relevant routines from a particular library, and even if this would be supported, a routine may still include code sections which can be considered dead code in a given scenario, but could not be ruled out at compile time, already.
1045:, so you can at installation time specify which components of the driver you want and which you don't. This goes to an extent of dynamic loadable modularization and late linkage I have not seen under DOS so far. If you do not like the screen saver, macros, the calculator, or mouse support, or <almost anything else>, you can specify this at the command line, and FreeKEYB, while taking all the dependencies between the routines into account, will completely remove all the code fragments, which deal with that feature and are not necessary to provide the requested functionality, before the driver relocates the image into the target location and makes itself resident. Removing some smaller features just saves a couple of bytes but excluding more complex components can save you half a Kb and more. You can also specify the size of the data areas
819:), or it can be disabled or enabled at any later time via API functions in case someone wants to keep a user from being able to reboot the machine. we are considering to add more synchronous cache flush calls Due to our Dynamic Dead Code Elimination method this would not cause any kind of bloating when not needed in a particular target configuration as a particular cache flush call would be included in FreeKEYB's runtime image only if the corresponding disk cache is loaded as well or FreeKEYB was told by command line switches to load the corresponding support.
857:
FreeKEYB builds the driver's runtime image at initialization time depending on the type of machine it is being loaded on, the type of keyboard, layout, country and code page used, the type of mouse and video adapter(s) installed, the other drivers loaded on that system, the operating system and the
1225:
technology which removes at byte level any code snippets unused in a particular given driver, user, or system configuration and hardware environment when the driver's installer builds and relocates the load image of itself, this would have no memory impact for non-GEOS users at all, so there's not
280:
Most advanced compilers have options to activate dead-code elimination, sometimes at varying levels. A lower level might only remove instructions that cannot be executed. A higher level might also not reserve space for unused variables. A yet higher level might determine instructions or functions
948:
depending on the underlying hardware, operating system, and driver configuration as well as the selected feature set and locale (about sixty configuration switches with hundreds of options for an almost unlimited number of possible combinations). This complexity and the dynamics are hidden from
995:, die die jeweils notwendigen Bestandteile des Treibers erst zum Installationszeitpunkt zusammenbastelt und reloziert, so daß keine ungenutzten Code- oder Datenbereiche mehr resident bleiben (z.B. wenn jemand ein bestimmtes FreeKEYB-Feature nicht benötigt).
455:
insert new computations into the code and render the older, more expensive computations dead. Subsequent dead-code elimination removes those calculations and completes the effect (without complicating the strength-reduction algorithm).
1396:
Johng, Yessong; Danielsson, Per; Ehnsiö, Per; Hermansson, Mats; Jolanki, Mika; Moore, Scott; Strander, Lars; Wettergren, Lars (2002-11-08). "Chapter 5. Java overview and iSeries implementation - 5.1.1. Miscellaneous components".
953:
widely distributed in
Germany at its time, with adaptations to a handful of other European languages available. It supported a sub-set of features already, but did not implement dynamic dead-code elimination.)
1082:
the loader will dynamically optimize the resident data areas and code sections at byte level to remove any redundancy from the driver depending on the given hardware/software/driver configuration and locale.
1400:
Intentia Movex Java on the IBM iSeries Server - An
Implementation Guide - Overview of Movex Java on the iSeries server - Movex Java on iSeries installation and configuration - Operational tips and techniques
246:
Furthermore, because the first return statement is executed unconditionally and there is no label after it which a "goto" could reach, no feasible execution path reaches the second assignment to
66:
size, an important consideration in some contexts, it reduces resource usage such as the number of bytes to be transferred and it allows the running program to avoid executing irrelevant
1694:
639:
Malavolta, Ivano et al. “JavaScript Dead Code
Identification, Elimination, and Empirical Assessment.” IEEE transactions on software engineering 49.7 (2023): 3692–3714. Web.
471:
form by Ron Cytron et al. Robert
Shillingsburg (aka Shillner) improved on the algorithm and developed a companion algorithm for removing useless control-flow operations.
1261:
1721:
1455:
440:, the code inside the if statement can never be executed, and dead-code elimination would remove it entirely from the optimized program. This technique is common in
1252:
1868:
451:
In practice, much of the dead code that an optimizer finds is created by other transformations in the optimizer. For example, the classic techniques for operator
1070:
501:
The techniques used to dynamically detect demand, identify and resolve dependencies, remove such conditionally dead code, and to recombine the remaining code at
1160:
1312:
273:
of this function. Furthermore, given the function returns a static value (96), it may be simplified to the value it returns (this simplification is called
1205:
1126:
979:
1902:
815:
any of the options can be "permanently" excluded at installation time (will also save the memory for the corresponding code excerpts due to our
1629:
949:
users, who deal with a single executable file just like they would do with a conventional driver. K3PLUS was an extended keyboard driver for
565:
1217:
I would be willing to add special hooks into FreeKEYB, our much advanced DOS keyboard driver, would it prove to improve the usability under
1714:
1647:
Muth, Robert; Debray, Saumya K.; Watterson, Scott; De
Bosschere, Koen (January 2001) . "alto: a link-time optimizer for the Compaq Alpha".
1372:
1029:
773:
1368:
1176:
to optimize its memory image for the target environment at load time, I would certainly like to add special support into FreeKEYB for
845:
1683:
1459:
2074:
1587:
1558:
1528:
1520:
1421:
269:
Also, even though some calculations are performed in the function, their values are not stored in locations accessible outside the
1951:
1852:
1597:
1415:
718:
694:
678:
654:
74:. It can also enable further optimizations by simplifying program structure. Dead code includes code that can never be executed (
2100:
1993:
1707:
1360:
650:
803:
1259:
570:
1670:
1888:
1328:
1222:
1173:
1042:
992:
925:
894:
816:
464:
1250:
1972:
585:
2023:
1988:
610:
1278:
444:
to optionally activate blocks of code; using an optimizer with dead-code elimination eliminates the need for using a
1058:
1912:
1787:
1613:
1580:
1550:
1148:
879:
1767:
1007:
620:
580:
544:
529:
1300:
1180:
which could be controlled by a command line option, so the extra code is only loaded when GEOS is used as well.
1488:
1245:
1117:[Loading drivers dynamically (Intra-segment offset relocation to load TSRs into the HMA)] (in German).
537:
91:
1193:
494:, which may not be known at the time of compilation or assembly. Such conditions may be imposed by different
1772:
1538:
1114:
967:
702:
662:
575:
1493:
Proceedings of the ACM SIGPLAN 1997 Conference on
Programming Language Design and Implementation (PLDI '97)
1920:
1897:
1873:
1802:
1656:
929:
917:
605:
2049:
2044:
1925:
1749:
1744:
528:, therefore software utilizing dynamic dead-code elimination is very rare in conjunction with languages
71:
55:
1353:
901:
as well as a framework of automatic pre- and post-processing analysis tools to generate dependency and
2079:
2003:
1847:
1508:
1449:"Virtualization Support for Application Runtime Specialization and Extension - Programming Languages"
1283:
62:(code that does not affect the program results). Removing such code has several benefits: it shrinks
490:
However, in practice it is also common for code sections to represent dead or unreachable code only
2059:
1930:
1822:
1730:
1661:
1621:
1339:
1066:
941:
937:
506:
495:
270:
1156:
2054:
2018:
1837:
1827:
1777:
1674:
1600:; Allen, Randy (2002). "Chapter 4.4. Data Flow Analysis - Chapter 4.4.2. Dead Code Elimination".
837:
520:
Most programming languages, compilers and operating systems offer no or little more support than
460:
452:
1021:
1935:
1759:
1635:
1625:
1583:
1554:
1524:
1411:
1308:
1003:
921:
769:
714:
674:
533:
483:. Therefore, it is reasonable attempting to remove dead code through dead-code elimination at
1115:"Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA)"
17:
2069:
2008:
1878:
1857:
1817:
1797:
1666:
1601:
1500:
1304:
1197:
1152:
1118:
1062:
971:
284:
A common use of dead-code elimination is as an alternative to optional code inclusion via a
274:
262:
elsewhere in the procedure, then a feasible execution path might exist to the assignment to
75:
1239:
543:
Although with a rather different focus, similar approaches are sometimes also utilized for
2064:
1448:
1398:
1324:
1265:
1256:
1201:
909:
898:
886:
765:
757:
735:
590:
521:
67:
31:
1602:
1122:
975:
795:
2039:
2013:
1812:
1807:
1792:
1609:
1572:
1436:
1241:
A Just in Time
Register Allocation and Code Optimization Framework for Embedded Systems
945:
615:
595:
560:
2094:
1543:
1513:
902:
710:
698:
670:
658:
437:
79:
740:
Efficiently
Computing Static Single Assignment Form and the Program Dependence Graph
1226:
much to worry about (memory footprint etc.) as in traditionally coded DOS drivers.
600:
548:
525:
484:
445:
285:
255:
1678:
459:
Historically, dead-code elimination was performed using information derived from
243:
and an optimizer can reclaim its storage space and eliminate its initialization.
1782:
913:
1862:
1568:
1504:
1364:
743:
63:
27:
Compiler optimization to remove code which does not affect the program results
1956:
1491:(June 1997). "Partial dead code elimination using slicing transformations".
1407:
933:
905:
890:
502:
441:
59:
998:(NB. This represents the first known implementation of byte-level granular
1604:
Optimizing
Compilers for Modern Architectures: A Dependence-Based Approach
1699:
1617:
82:(written to, but never read again), that is, irrelevant to the program.
1218:
1177:
882:
1285:
885:-based dynamically configurable successor of K3PLUS supporting most
1671:
10.1002/1097-024X(200101)31:1<67::AID-SPE357>3.0.CO;2-A
215:
Simple analysis of the uses of values would show that the value of
1639:
1338:, though only conceptually and with a focus on lazy evaluation in
1100:
FreeKEYB - Advanced international DOS keyboard and console driver
1703:
950:
697:(June 1981). "A Survey of Data-flow Analysis Techniques". In
1695:
How to trick C/C++ compilers into generating terrible code?
254:
and can be removed. If the procedure had a more complex
1093:
1091:
1575:; Jacobs, Ceriel J. H.; Langendoen, Koen G. (2000).
1354:"Dynamic Dead-Instruction Detection and Elimination"
1279:"Dynamic dead code elimination and hardware futures"
868:
866:
540:
may dynamically optimize for dead-code elimination.
2032:
1981:
1965:
1944:
1911:
1887:
1836:
1758:
1737:
1294:
1292:
1248:, Engineering: Computer Engineering. ucin982089462.
875:
FreeKEYB - Enhanced DOS keyboard and console driver
258:, such as a label after the return statement and a
1542:
1512:
1359:. San Jose, CA, USA: Computer Science Department,
944:to minimize its memory footprint downto close the
873:Paul, Matthias R.; Frinke, Axel C. (1997-10-13) ,
657:(June 1981). "Reduction of Operator Strength". In
1098:Paul, Matthias R.; Frinke, Axel C. (2006-01-16),
831:
829:
827:
467:(SSA) appears in the original journal article on
436:Because the expression 0 will always evaluate to
1456:Universite des Sciences et Technologies de Lille
1022:"[fd-dev] Changing codepages in FreeDOS"
961:
959:
789:
787:
785:
1334:(NB. Possibly the first public use of the term
707:Program Flow Analysis: Theory & Application
667:Program Flow Analysis: Theory & Application
1869:Induction variable recognition and elimination
738:; Rosen, Barry K.; Zadeck, F. Kenneth (1991).
219:after the first assignment is not used inside
1715:
8:
1515:Compilers - Principles, Techniques and Tools
924:, the driver implements byte-level granular
1545:Advanced Compiler Design and Implementation
1352:Butts, J. Adam; Sohi, Guri (October 2002).
1722:
1708:
1700:
1458:. pp. 111–124. HAL Id: tel-01251173.
536:. However, language implementations doing
281:that serve no purpose and eliminate them.
90:Consider the following example written in
1660:
1903:Sparse conditional constant propagation
1238:Thammanur, Sathyanarayan (2001-01-31).
1102:(User Manual) (v7 preliminary ed.)
968:"[ANN] FreeDOS beta 6 released"
632:
227:is declared as a local variable inside
1608:(2011 digital print of 1st ed.).
479:Dead code is normally considered dead
231:, so its value cannot be used outside
566:Simplification (symbolic computation)
7:
515:dynamic dead-instruction elimination
1194:"AltGr keyboard layer under GEOS?"
25:
1649:Software: Practice and Experience
1521:Addison Wesley Publishing Company
1059:"KEYBOARD.SYS internal structure"
993:dynamischen Dead-Code-Elimination
794:Paul, Matthias R. (2002-04-03) .
147:/* Assignment to dead variable */
1853:Common subexpression elimination
1192:Paul, Matthias R. (2002-03-15).
1147:Paul, Matthias R. (2002-02-24).
1113:Paul, Matthias R. (2002-02-02).
1057:Paul, Matthias R. (2001-12-30).
1020:Paul, Matthias R. (2001-08-21).
966:Paul, Matthias R. (2001-04-10).
836:Paul, Matthias R. (2002-04-06).
1994:Compile-time function execution
1465:from the original on 2017-06-23
1427:from the original on 2013-10-08
1378:from the original on 2019-04-20
1361:University of Wisconsin-Madison
1315:from the original on 2017-09-09
1208:from the original on 2019-04-20
1163:from the original on 2019-04-20
1129:from the original on 2017-09-09
1073:from the original on 2017-09-09
1032:from the original on 2019-04-19
982:from the original on 2017-09-09
848:from the original on 2019-04-27
838:"[fd-dev] Ctrl+Alt+Del"
806:from the original on 2017-09-09
796:"[fd-dev] Ctrl+Alt+Del"
288:. Consider the following code.
571:Partial-redundancy elimination
78:), and code that only affects
1:
1336:dynamic dead-code elimination
1329:dynamic dead code elimination
1299:Conway, Andrew (1995-12-04).
1223:Dynamic Dead Code Elimination
1221:Due to our sophisticated new
1174:dynamic dead-code-elimination
1043:dynamic dead code elimination
1000:dynamic dead-code elimination
926:dynamic dead-code elimination
897:. Utilizing an off-the-shelf
877:(User Manual) (v6.5 ed.)
817:Dynamic Dead Code Elimination
511:dynamic dead-code elimination
475:Dynamic dead-code elimination
465:static single-assignment form
18:Dynamic dead-code elimination
1973:Interprocedural optimization
586:Dynamic coupling (computing)
2024:Profile-guided optimization
1989:Bounds-checking elimination
1581:John Wiley & Sons, Inc.
1149:"GEOS/NDO info for RBIL62?"
1041:a unique feature we call
611:Profile-guided optimization
2117:
1788:Loop-invariant code motion
1614:Morgan Kaufmann Publishers
1551:Morgan Kaufmann Publishers
1447:Polito, Guillermo (2015).
760:; Torczon, Linda (2003) .
448:to perform the same task.
250:. Thus, the assignment is
1768:Automatic parallelization
1277:Glew, Andy (2011-03-02).
940:and reconfigurability at
621:Function multi-versioning
581:Dynamic software updating
545:dynamic software updating
1539:Muchnick, Steven Stanley
1301:"Cyclic data structures"
1246:University of Cincinnati
1172:Since FreeKEYB uses our
1067:comp.os.msdos.programmer
908:to be embedded into the
703:Muchnick, Steven Stanley
663:Muchnick, Steven Stanley
538:just-in-time compilation
492:under certain conditions
463:. An algorithm based on
290:
96:
1773:Automatic vectorization
1371:1-58113-574-2/02/0010.
1157:comp.os.geos.programmer
991:brandneue Feature, der
916:and a self-discarding,
576:Conjunction elimination
2101:Compiler optimizations
1921:Instruction scheduling
1898:Global value numbering
1874:Live-variable analysis
1803:Loop nest optimization
1731:Compiler optimizations
1577:Modern Compiler Design
1008:compiled ahead-of-time
762:Engineering a Compiler
606:Post-pass optimization
530:compiled ahead-of-time
198:/* Unreachable code */
2050:Control-flow analysis
2045:Array-access analysis
1999:Dead-code elimination
1957:Tail-call elimination
1926:Instruction selection
1750:Local value numbering
1745:Peephole optimization
1509:Ullman, Jeffrey David
235:. Thus, the variable
56:compiler optimization
36:dead-code elimination
2080:Value range analysis
2004:Expression templates
1848:Available expression
1340:functional languages
1309:comp.lang.functional
496:runtime environments
70:, which reduces its
2060:Dependence analysis
1931:Register allocation
1823:Software pipelining
938:self-modifying code
881:(NB. FreeKEYB is a
48:dead-code stripping
2055:Data-flow analysis
2019:Partial evaluation
1828:Strength reduction
1778:Induction variable
1487:BodĂk, Rastislav;
1264:2019-07-28 at the
1255:2019-07-28 at the
768:. pp. 498ff.
461:data-flow analysis
453:strength reduction
2088:
2087:
1936:Rematerialization
1631:978-1-55860-286-1
1501:Aho, Alfred Vaino
1202:comp.os.geos.misc
922:relocating loader
534:assembly language
524:of libraries and
44:dead-code removal
16:(Redirected from
2108:
2070:Pointer analysis
2009:Inline expansion
1879:Use-define chain
1858:Constant folding
1818:Loop unswitching
1798:Loop interchange
1724:
1717:
1710:
1701:
1682:
1664:
1643:
1624:, 145–147, 167.
1607:
1593:
1564:
1548:
1534:
1518:
1496:
1474:
1473:
1471:
1470:
1464:
1453:
1444:
1438:
1435:
1433:
1432:
1426:
1420:. SG24-6545-00.
1405:
1393:
1387:
1386:
1384:
1383:
1377:
1358:
1349:
1343:
1333:
1321:
1320:
1296:
1287:
1282:
1274:
1268:
1249:
1235:
1229:
1228:
1214:
1213:
1189:
1183:
1182:
1169:
1168:
1144:
1138:
1137:
1135:
1134:
1123:de.comp.os.msdos
1110:
1104:
1103:
1095:
1086:
1085:
1079:
1078:
1054:
1048:
1047:
1038:
1037:
1017:
1011:
997:
988:
987:
976:de.comp.os.msdos
963:
954:
887:keyboard layouts
878:
870:
861:
860:
854:
853:
833:
822:
821:
812:
811:
791:
780:
779:
775:978-1-55860698-2
758:Cooper, Keith D.
754:
748:
747:
736:Ferrante, Jeanne
734:Cytron, Ron K.;
731:
725:
724:
691:
685:
684:
649:Allen, Frances;
646:
640:
637:
432:
429:
426:
423:
420:
417:
414:
411:
408:
405:
402:
399:
396:
393:
390:
387:
384:
381:
378:
375:
372:
369:
366:
363:
360:
357:
354:
351:
348:
345:
342:
339:
336:
333:
330:
327:
324:
321:
318:
315:
312:
309:
306:
303:
300:
297:
294:
275:constant folding
265:
261:
249:
238:
234:
230:
226:
222:
218:
211:
208:
205:
202:
199:
196:
193:
190:
187:
184:
181:
178:
175:
172:
169:
166:
163:
160:
157:
154:
151:
148:
145:
142:
139:
136:
133:
130:
127:
124:
121:
118:
115:
112:
109:
106:
103:
100:
76:unreachable code
21:
2116:
2115:
2111:
2110:
2109:
2107:
2106:
2105:
2091:
2090:
2089:
2084:
2065:Escape analysis
2033:Static analysis
2028:
1977:
1961:
1940:
1913:Code generation
1907:
1883:
1839:
1832:
1754:
1733:
1728:
1691:
1646:
1632:
1596:
1590:
1573:Bal, Henri Elle
1567:
1561:
1537:
1531:
1499:
1486:
1483:
1481:Further reading
1478:
1477:
1468:
1466:
1462:
1451:
1446:
1445:
1441:
1430:
1428:
1424:
1418:
1403:
1395:
1394:
1390:
1381:
1379:
1375:
1356:
1351:
1350:
1346:
1325:Lazy evaluation
1318:
1316:
1298:
1297:
1290:
1276:
1275:
1271:
1266:Wayback Machine
1257:Wayback Machine
1237:
1236:
1232:
1211:
1209:
1191:
1190:
1186:
1166:
1164:
1146:
1145:
1141:
1132:
1130:
1112:
1111:
1107:
1097:
1096:
1089:
1076:
1074:
1056:
1055:
1051:
1035:
1033:
1019:
1018:
1014:
985:
983:
965:
964:
957:
910:executable file
899:macro assembler
872:
871:
864:
851:
849:
835:
834:
825:
809:
807:
793:
792:
783:
776:
766:Morgan Kaufmann
756:
755:
751:
733:
732:
728:
721:
693:
692:
688:
681:
648:
647:
643:
638:
634:
629:
591:Self-relocation
557:
522:dynamic loading
481:unconditionally
477:
434:
433:
430:
427:
424:
421:
418:
415:
412:
409:
406:
403:
400:
397:
394:
391:
388:
385:
382:
379:
376:
373:
370:
367:
364:
361:
358:
355:
352:
349:
346:
343:
340:
337:
334:
331:
328:
325:
322:
319:
316:
313:
310:
307:
304:
301:
298:
295:
292:
263:
259:
247:
236:
232:
228:
224:
223:. Furthermore,
220:
216:
213:
212:
209:
206:
203:
200:
197:
194:
191:
188:
185:
182:
179:
176:
173:
170:
167:
164:
161:
158:
155:
152:
149:
146:
143:
140:
137:
134:
131:
128:
125:
122:
119:
116:
113:
110:
107:
104:
101:
98:
88:
52:dead-code strip
32:compiler theory
28:
23:
22:
15:
12:
11:
5:
2114:
2112:
2104:
2103:
2093:
2092:
2086:
2085:
2083:
2082:
2077:
2075:Shape analysis
2072:
2067:
2062:
2057:
2052:
2047:
2042:
2040:Alias analysis
2036:
2034:
2030:
2029:
2027:
2026:
2021:
2016:
2014:Jump threading
2011:
2006:
2001:
1996:
1991:
1985:
1983:
1979:
1978:
1976:
1975:
1969:
1967:
1963:
1962:
1960:
1959:
1954:
1948:
1946:
1942:
1941:
1939:
1938:
1933:
1928:
1923:
1917:
1915:
1909:
1908:
1906:
1905:
1900:
1894:
1892:
1885:
1884:
1882:
1881:
1876:
1871:
1866:
1860:
1855:
1850:
1844:
1842:
1834:
1833:
1831:
1830:
1825:
1820:
1815:
1813:Loop unrolling
1810:
1808:Loop splitting
1805:
1800:
1795:
1793:Loop inversion
1790:
1785:
1780:
1775:
1770:
1764:
1762:
1756:
1755:
1753:
1752:
1747:
1741:
1739:
1735:
1734:
1729:
1727:
1726:
1719:
1712:
1704:
1698:
1697:
1690:
1689:External links
1687:
1686:
1685:
1662:10.1.1.33.4933
1644:
1630:
1610:Academic Press
1594:
1588:
1565:
1559:
1535:
1529:
1497:
1482:
1479:
1476:
1475:
1439:
1416:
1388:
1344:
1288:
1269:
1230:
1184:
1139:
1105:
1087:
1049:
1012:
955:
946:canonical form
932:techniques at
912:alongside the
862:
823:
781:
774:
749:
726:
719:
699:Jones, Neil D.
686:
679:
659:Jones, Neil D.
641:
631:
630:
628:
625:
624:
623:
618:
616:Superoptimizer
613:
608:
603:
598:
596:Software cruft
593:
588:
583:
578:
573:
568:
563:
561:Redundant code
556:
553:
532:or written in
476:
473:
291:
97:
87:
84:
80:dead variables
26:
24:
14:
13:
10:
9:
6:
4:
3:
2:
2113:
2102:
2099:
2098:
2096:
2081:
2078:
2076:
2073:
2071:
2068:
2066:
2063:
2061:
2058:
2056:
2053:
2051:
2048:
2046:
2043:
2041:
2038:
2037:
2035:
2031:
2025:
2022:
2020:
2017:
2015:
2012:
2010:
2007:
2005:
2002:
2000:
1997:
1995:
1992:
1990:
1987:
1986:
1984:
1980:
1974:
1971:
1970:
1968:
1964:
1958:
1955:
1953:
1952:Deforestation
1950:
1949:
1947:
1943:
1937:
1934:
1932:
1929:
1927:
1924:
1922:
1919:
1918:
1916:
1914:
1910:
1904:
1901:
1899:
1896:
1895:
1893:
1890:
1886:
1880:
1877:
1875:
1872:
1870:
1867:
1864:
1861:
1859:
1856:
1854:
1851:
1849:
1846:
1845:
1843:
1841:
1835:
1829:
1826:
1824:
1821:
1819:
1816:
1814:
1811:
1809:
1806:
1804:
1801:
1799:
1796:
1794:
1791:
1789:
1786:
1784:
1781:
1779:
1776:
1774:
1771:
1769:
1766:
1765:
1763:
1761:
1757:
1751:
1748:
1746:
1743:
1742:
1740:
1736:
1732:
1725:
1720:
1718:
1713:
1711:
1706:
1705:
1702:
1696:
1693:
1692:
1688:
1684:
1680:
1676:
1672:
1668:
1663:
1658:
1655:(1): 67–101.
1654:
1650:
1645:
1641:
1637:
1633:
1627:
1623:
1619:
1615:
1611:
1606:
1605:
1599:
1595:
1591:
1589:0-471-97697-0
1585:
1582:
1578:
1574:
1570:
1566:
1562:
1560:1-55860-320-4
1556:
1552:
1547:
1546:
1540:
1536:
1532:
1530:0-201-10194-7
1526:
1522:
1517:
1516:
1510:
1506:
1502:
1498:
1494:
1490:
1485:
1484:
1480:
1461:
1457:
1450:
1443:
1440:
1437:
1423:
1419:
1413:
1409:
1406:. Red Books.
1402:
1401:
1392:
1389:
1374:
1370:
1366:
1362:
1355:
1348:
1345:
1341:
1337:
1332:
1330:
1327:is basically
1326:
1314:
1310:
1306:
1302:
1295:
1293:
1289:
1286:
1284:
1280:
1273:
1270:
1267:
1263:
1260:
1258:
1254:
1251:
1247:
1244:(MS thesis).
1243:
1242:
1234:
1231:
1227:
1224:
1220:
1207:
1203:
1199:
1195:
1188:
1185:
1181:
1179:
1175:
1162:
1158:
1154:
1150:
1143:
1140:
1128:
1124:
1120:
1116:
1109:
1106:
1101:
1094:
1092:
1088:
1084:
1072:
1068:
1064:
1060:
1053:
1050:
1046:
1044:
1031:
1027:
1023:
1016:
1013:
1009:
1005:
1002:for software
1001:
996:
994:
981:
977:
973:
970:(in German).
969:
962:
960:
956:
952:
947:
943:
939:
935:
931:
927:
923:
919:
915:
911:
907:
904:
903:code morphing
900:
896:
895:country codes
892:
888:
884:
880:
876:
869:
867:
863:
859:
847:
843:
839:
832:
830:
828:
824:
820:
818:
805:
801:
797:
790:
788:
786:
782:
777:
771:
767:
763:
759:
753:
750:
745:
741:
737:
730:
727:
722:
716:
712:
711:Prentice-Hall
708:
704:
700:
696:
690:
687:
682:
676:
672:
671:Prentice-Hall
668:
664:
660:
656:
652:
645:
642:
636:
633:
626:
622:
619:
617:
614:
612:
609:
607:
604:
602:
599:
597:
594:
592:
589:
587:
584:
582:
579:
577:
574:
572:
569:
567:
564:
562:
559:
558:
554:
552:
550:
546:
541:
539:
535:
531:
527:
523:
518:
516:
512:
508:
504:
499:
497:
493:
488:
486:
482:
474:
472:
470:
466:
462:
457:
454:
449:
447:
443:
439:
289:
287:
282:
278:
276:
272:
267:
257:
253:
244:
242:
95:
93:
85:
83:
81:
77:
73:
69:
65:
61:
57:
53:
49:
45:
41:
37:
33:
19:
1998:
1652:
1648:
1603:
1598:Kennedy, Ken
1576:
1544:
1514:
1492:
1489:Gupta, Rajiv
1467:. Retrieved
1442:
1429:. Retrieved
1417:0-73842461-7
1410:p. 41.
1399:
1391:
1380:. Retrieved
1347:
1335:
1323:
1317:. Retrieved
1272:
1240:
1233:
1216:
1210:. Retrieved
1187:
1171:
1165:. Retrieved
1142:
1131:. Retrieved
1108:
1099:
1081:
1075:. Retrieved
1052:
1040:
1034:. Retrieved
1025:
1015:
999:
990:
984:. Retrieved
874:
856:
850:. Retrieved
841:
814:
808:. Retrieved
799:
761:
752:
739:
729:
720:0-13729681-9
706:
695:Kennedy, Ken
689:
680:0-13729681-9
666:
655:Kennedy, Ken
644:
635:
601:Tree shaking
549:hot patching
542:
526:late linking
519:
514:
510:
500:
491:
489:
485:compile time
480:
478:
468:
458:
450:
446:preprocessor
435:
286:preprocessor
283:
279:
268:
256:control flow
251:
245:
240:
214:
89:
72:running time
51:
47:
43:
39:
35:
29:
1865:elimination
1783:Loop fusion
1738:Basic block
1620:. pp.
1569:Grune, Dick
1505:Sethi, Ravi
1026:freedos-dev
936:as well as
914:binary code
842:freedos-dev
800:freedos-dev
651:Cocke, John
509:are called
392:/* DEBUG */
252:unreachable
1945:Functional
1863:Dead store
1640:2001092381
1495:: 682–694.
1469:2017-06-23
1431:2019-04-20
1382:2017-06-23
1319:2017-07-03
1212:2019-04-20
1167:2019-04-20
1133:2017-07-02
1077:2017-07-03
1036:2019-04-20
986:2017-07-02
930:relocation
891:code pages
852:2019-04-27
810:2017-09-09
744:ACM TOPLAS
627:References
68:operations
58:to remove
1838:Data-flow
1657:CiteSeerX
1408:IBM Corp.
1305:Newsgroup
1198:Newsgroup
1153:Newsgroup
1119:Newsgroup
1063:Newsgroup
1004:assembled
972:Newsgroup
934:load-time
906:meta data
442:debugging
60:dead code
2095:Category
1840:analysis
1618:Elsevier
1541:(1997).
1511:(1986).
1460:Archived
1422:Archived
1373:Archived
1313:Archived
1262:Archived
1253:Archived
1206:Archived
1161:Archived
1127:Archived
1071:Archived
1030:Archived
980:Archived
942:run-time
918:relaxing
846:Archived
804:Archived
705:(eds.).
665:(eds.).
555:See also
401:"%d
86:Examples
1307::
1200::
1155::
1121::
1065::
974::
883:Unicode
507:runtime
64:program
54:) is a
1966:Global
1891:-based
1679:442062
1677:
1659:
1638:
1628:
1586:
1557:
1527:
1414:
1365:ASPLOS
893:, and
772:
746:13(4).
717:
677:
422:return
407:"
395:printf
201:return
177:return
1982:Other
1675:S2CID
1463:(PDF)
1452:(PDF)
1425:(PDF)
1404:(PDF)
1376:(PDF)
1357:(PDF)
438:false
271:scope
50:, or
1760:Loop
1636:LCCN
1626:ISBN
1584:ISBN
1555:ISBN
1525:ISBN
1412:ISBN
1219:GEOS
1178:GEOS
928:and
920:and
770:ISBN
715:ISBN
675:ISBN
547:and
503:load
302:void
296:main
260:goto
241:dead
108:void
1889:SSA
1667:doi
1622:137
1369:ACM
1006:or
951:DOS
513:or
505:or
469:SSA
341:int
326:int
311:int
293:int
277:).
239:is
233:foo
229:foo
221:foo
150:int
132:int
117:int
102:foo
99:int
40:DCE
30:In
2097::
1673:.
1665:.
1653:31
1651:.
1634:.
1616:/
1612:/
1579:.
1571:;
1553:.
1549:.
1523:.
1519:.
1507:;
1503:;
1454:.
1367:X
1363:.
1342:.)
1331:.
1322:.
1311:.
1303:.
1291:^
1215:.
1204:.
1196:.
1170:.
1159:.
1151:.
1125:.
1090:^
1080:.
1069:.
1061:.
1039:.
1028:.
1024:.
1010:.)
989:.
978:.
958:^
889:,
865:^
855:.
844:.
840:.
826:^
813:.
802:.
798:.
784:^
764:.
742:.
713:.
709:.
701:;
673:.
669:.
661:;
653:;
551:.
517:.
487:.
416:);
404:\n
377:if
374:);
266:.
192:24
141:25
126:24
94:.
46:,
42:,
34:,
1723:e
1716:t
1709:v
1681:.
1669::
1642:.
1592:.
1563:.
1533:.
1472:.
1434:.
1385:.
1281:.
1136:.
778:.
723:.
683:.
431:}
428:;
425:c
419:}
413:c
410:,
398:(
389:{
386:)
383:0
380:(
371:2
368:/
365:b
362:(
359:*
356:a
353:=
350:c
347:;
344:c
338:;
335:6
332:=
329:b
323:;
320:5
317:=
314:a
308:{
305:)
299:(
264:b
248:b
237:b
225:b
217:b
210:}
207:;
204:0
195:;
189:=
186:b
183:;
180:c
174:;
171:4
168:*
165:a
162:=
159:c
156:;
153:c
144:;
138:=
135:b
129:;
123:=
120:a
114:{
111:)
105:(
92:C
38:(
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.