Knowledge (XXG)

Use-define chain

Source 📝

66: 168: 25: 1648:
with all possible read accesses which could be reached. In this case, only the code beyond line 10 is relevant. Line 7, for example, cannot be reached again. For your understanding, you can imagine 2 different variables
400:
should indicate that its current value must have come from line B (and its value at line B must have come from line A). Contrariwise, at the point marked "2", the use-def chain for
678: 880: 2291: 1208: 2170: 2115: 2077: 2002: 1360: 1324: 1288: 1239: 1167: 1122: 1073: 1032: 991: 954: 917: 833: 800: 743: 710: 657: 543: 2438: 2044: 583: 2472: 2257: 2284: 2134:(DAG) is created on the variable uses and definitions. The DAG specifies a data dependency among assignment statements, as well as a 182: 178: 2644: 2227:
Searle, Aaron; Gough, John; Abramson, David (2003). "DUCT: An Interactive Define-Use Chain Navigation Tool for Relative Debugging".
219: 149: 83: 52: 38: 2521: 2422: 307: 2670: 2563: 2277: 130: 102: 87: 2458: 1623:
Repeat these steps in the following style: combine each write access with each read access (but NOT the other way round).
499: 261: 2542: 109: 2675: 2593: 2558: 2482: 2357: 260:
of that variable that can reach that use without any other intervening definitions. A UD Chain generally means the
396:
is assigned a value at three points (marked A, B, and C). However, at the point marked "1", the use-def chain for
194: 116: 76: 2337: 613: 98: 2342: 1382: 1244: 2490: 2467: 2443: 2372: 2131: 495: 253: 2619: 2614: 2568: 2495: 2319: 2314: 299: 44: 1248: 322:, so that logical representations of all the variables can be identified and tracked through the code. 2649: 2573: 2417: 2179: 303: 291: 2629: 2500: 2392: 2300: 1252: 2624: 2588: 2407: 2397: 2347: 2228: 295: 298:. Knowing the use-def and def-use chains for a program or subprogram is a prerequisite for many 850: 2505: 2329: 2253: 319: 123: 2639: 2578: 2427: 2387: 2367: 2209: 1174: 233: 2634: 2146: 2091: 2053: 1978: 1336: 1300: 1264: 1256: 1215: 1143: 1098: 1049: 1008: 967: 930: 893: 809: 776: 719: 686: 662: 633: 519: 2609: 2583: 2382: 2377: 2362: 245: 2017: 556: 2664: 2213: 2135: 404:
indicates that its current value must have come from line C. Since the value of the
616:
form, use-define chains are explicit because each chain contains a single element.)
2352: 592: 65: 2432: 2526: 1644:
could be redefined. This is why you have to recombine this write access on
661:. In general, a declaration of a variable can be in an outer scope (e.g., a 612:
Every variable is assumed to have a definition in the context or scope. (In
287:
reachable from that definition without any other intervening definitions.
2269: 628:(italic capital letter), and for short, its declaration is identified as 2200:
Kennedy, Ken (January 1978). "Use-definition chains with applications".
1584:
To find out all def-use-chains for variable d, do the following steps:
1243:
is a simple but powerful concept: theoretical and practical results in
412:
might as well be a different variable there; practically speaking, it
408:
in block 2 does not depend on any definitions in block 1 or earlier,
510:
The list of statements determines a strong order among statements.
2233: 2178:
variable assignments. If only one assignment is live, for example,
1588:
Search for the first time the variable is defined (write access).
1036:, and what can now be observed as the computation at statement, 2273: 1633:
You have to take care, if the variable is changed by the time.
1385:. (It is not important to understand what this function does.) 161: 59: 18: 1660:
As a result, you could get something like this. The variable
1636:
For example: From line 7 down to line 13 in the source code,
1003:
Consider the sequential execution of the list of statements,
1381:
This example is based on a Java algorithm for finding the
1675:* @param(a, b) The values used to calculate the divisor. 1393:* @param(a, b) The values used to calculate the divisor. 514:
Statements are labeled using the following conventions:
318:
Making the use-define or define-use chains is a step in
190: 16:
Data structure that tracks variable use and definitions
2149: 2094: 2056: 2020: 1981: 1612:
Write down this information in the following style:
1339: 1303: 1267: 1218: 1177: 1146: 1101: 1052: 1011: 970: 933: 896: 853: 812: 779: 722: 689: 636: 559: 522: 290:
Both UD and DU chains are created by using a form of
2602: 2551: 2535: 2514: 2481: 2457: 2406: 2328: 2307: 2048:, find live definitions that have use in statement 1616: 1604: 1592: 90:. Unsourced material may be challenged and removed. 2164: 2126:With this algorithm, two things are accomplished: 2109: 2071: 2038: 1996: 1354: 1318: 1282: 1233: 1202: 1161: 1116: 1067: 1026: 985: 948: 911: 874: 827: 794: 755:) has at least one definition by its declaration ( 737: 704: 651: 577: 537: 1678:* @return The greatest common divisor of a and b. 1396:* @return The greatest common divisor of a and b. 1600:Search for the first time the variable is read. 854: 2439:Induction variable recognition and elimination 2250:A Programmer's Companion to Algorithm Analysis 2285: 8: 1134:. The set of alive definitions at statement 53:Learn how and when to remove these messages 2292: 2278: 2270: 597:Variables are identified in italic (e.g., 2232: 2148: 2138:(therefore parallelism among statements). 2093: 2055: 2019: 1980: 1338: 1302: 1266: 1217: 1195: 1178: 1176: 1145: 1100: 1051: 1010: 969: 932: 895: 852: 811: 778: 721: 688: 635: 558: 521: 220:Learn how and when to remove this message 150:Learn how and when to remove this message 1640:is not redefined / changed. At line 14, 325:Consider the following snippet of code: 193:by adding descriptive text and removing 2473:Sparse conditional constant propagation 2192: 1171:and the number of alive definitions as 2083:Make a link among definitions and uses 494:into two separate variables is called 2248:Leiss, Ernst L. (26 September 2006). 416:a different variable — call it 7: 681:of an assignment statement, such as 88:adding citations to reliable sources 1377:Execution example for def-use-chain 624:, its declaration is identified as 591:is the number of statements in the 279:), which consists of a definition 14: 1093:, if it has a use at a statement 34:This article has multiple issues. 2423:Common subexpression elimination 921:(or, in short, when a variable, 308:common subexpression elimination 166: 64: 23: 2564:Compile-time function execution 2174:is reached, there is a list of 925:, is on the RHS of a statement 283:of a variable and all the uses 75:needs additional citations for 42:or discuss these issues on the 2159: 2153: 2104: 2098: 2066: 2060: 2033: 2021: 1991: 1985: 1349: 1343: 1313: 1307: 1277: 1271: 1228: 1222: 1196: 1192: 1186: 1179: 1156: 1150: 1111: 1105: 1062: 1056: 1021: 1015: 980: 974: 943: 937: 906: 900: 869: 857: 822: 816: 789: 783: 732: 726: 699: 693: 646: 640: 572: 560: 532: 526: 1: 1973:Set definitions in statement 884:, that it is a definition of 771:, is on the RHS of statement 500:static single assignment form 264:of some value to a variable. 2543:Interprocedural optimization 2214:10.1016/0096-0551(78)90009-7 387:/* 2, some more uses of x */ 2594:Profile-guided optimization 2559:Bounds-checking elimination 2692: 2358:Loop-invariant code motion 1331:all previous definitions ( 1295:A definition at statement 1259:exploitation are based on 1044:A definition at statement 256:, and all the definitions 2338:Automatic parallelization 2122:Kill previous definitions 2119:, as definition statement 1372:) for the same variables. 875:{\displaystyle \min(j-i)} 490:The process of splitting 1669: 1655: 1628: 1387: 804:, there is a statement, 669:Definition of a variable 620:For a variable, such as 614:static single assignment 485:/* 2, some uses of x2 */ 422: 327: 2343:Automatic vectorization 1245:space complexity theory 962:has a use at statement 759:) (or initialization). 464:/* 1, some uses of x */ 369:/* 1, some uses of x */ 248:that consists of a use 195:less pertinent examples 2671:Compiler optimizations 2491:Instruction scheduling 2468:Global value numbering 2444:Live-variable analysis 2373:Loop nest optimization 2301:Compiler optimizations 2166: 2132:directed acyclic graph 2111: 2073: 2040: 1998: 1626:The result should be: 1356: 1320: 1284: 1235: 1204: 1203:{\displaystyle |A(i)|} 1163: 1118: 1069: 1028: 987: 950: 913: 876: 829: 796: 739: 706: 653: 579: 539: 300:compiler optimizations 2620:Control-flow analysis 2615:Array-access analysis 2569:Dead-code elimination 2527:Tail-call elimination 2496:Instruction selection 2320:Local value numbering 2315:Peephole optimization 2167: 2112: 2074: 2041: 1999: 1960:Method of building a 1664:would be replaced by 1357: 1321: 1285: 1236: 1205: 1164: 1119: 1070: 1029: 988: 951: 914: 877: 830: 797: 740: 707: 654: 580: 540: 2650:Value range analysis 2574:Expression templates 2418:Available expression 2180:constant propagation 2165:{\displaystyle s(i)} 2147: 2110:{\displaystyle s(i)} 2092: 2072:{\displaystyle s(i)} 2054: 2018: 1997:{\displaystyle s(0)} 1979: 1615:In this case it is: 1603:In this case it is " 1591:In this case it is " 1355:{\displaystyle s(k)} 1337: 1319:{\displaystyle s(i)} 1301: 1283:{\displaystyle A(i)} 1265: 1234:{\displaystyle A(i)} 1216: 1175: 1162:{\displaystyle A(i)} 1144: 1117:{\displaystyle s(k)} 1099: 1068:{\displaystyle s(i)} 1050: 1027:{\displaystyle s(i)} 1009: 986:{\displaystyle s(j)} 968: 949:{\displaystyle s(j)} 931: 912:{\displaystyle s(j)} 894: 888:and it has a use at 851: 828:{\displaystyle s(i)} 810: 795:{\displaystyle s(j)} 777: 738:{\displaystyle s(j)} 720: 705:{\displaystyle s(j)} 687: 652:{\displaystyle s(0)} 634: 557: 538:{\displaystyle s(i)} 520: 496:live range splitting 304:constant propagation 292:static code analysis 273:definition-use chain 238:use-definition chain 84:improve this article 2630:Dependence analysis 2501:Register allocation 2393:Software pipelining 1253:register allocation 747:is a definition of 267:A counterpart of a 191:improve the article 2676:Data-flow analysis 2625:Data-flow analysis 2589:Partial evaluation 2398:Strength reduction 2348:Induction variable 2202:Computer Languages 2162: 2107: 2086:Set the statement 2069: 2036: 1994: 1352: 1316: 1280: 1251:(I/O complexity), 1231: 1200: 1159: 1114: 1065: 1024: 983: 946: 909: 872: 825: 792: 751:. Every variable ( 735: 702: 649: 575: 535: 296:data flow analysis 99:"Use-define chain" 2658: 2657: 2506:Rematerialization 2259:978-1-4200-1170-8 1249:access complexity 763:Use of a variable 673:When a variable, 551:is an integer in 320:liveness analysis 230: 229: 222: 212: 211: 160: 159: 152: 134: 57: 2683: 2640:Pointer analysis 2579:Inline expansion 2449:Use-define chain 2428:Constant folding 2388:Loop unswitching 2368:Loop interchange 2294: 2287: 2280: 2271: 2264: 2263: 2245: 2239: 2238: 2236: 2224: 2218: 2217: 2197: 2173: 2171: 2169: 2168: 2163: 2118: 2116: 2114: 2113: 2108: 2080: 2078: 2076: 2075: 2070: 2047: 2045: 2043: 2042: 2039:{\displaystyle } 2037: 2011: 2005: 2003: 2001: 2000: 1995: 1955: 1952: 1949: 1946: 1943: 1940: 1937: 1934: 1931: 1928: 1925: 1922: 1919: 1916: 1913: 1910: 1907: 1904: 1901: 1898: 1895: 1892: 1889: 1886: 1883: 1880: 1877: 1874: 1871: 1868: 1865: 1862: 1859: 1856: 1853: 1850: 1847: 1844: 1841: 1838: 1835: 1832: 1829: 1826: 1823: 1820: 1817: 1814: 1811: 1808: 1805: 1802: 1799: 1796: 1793: 1790: 1787: 1784: 1781: 1778: 1775: 1772: 1769: 1766: 1763: 1760: 1757: 1754: 1751: 1748: 1745: 1742: 1739: 1736: 1733: 1730: 1727: 1724: 1721: 1718: 1715: 1712: 1709: 1706: 1703: 1700: 1697: 1694: 1691: 1688: 1685: 1682: 1679: 1676: 1673: 1667: 1663: 1652: 1647: 1643: 1639: 1617: 1606: 1594: 1580: 1577: 1574: 1571: 1568: 1565: 1562: 1559: 1556: 1553: 1550: 1547: 1544: 1541: 1538: 1535: 1532: 1529: 1526: 1523: 1520: 1517: 1514: 1511: 1508: 1505: 1502: 1499: 1496: 1493: 1490: 1487: 1484: 1481: 1478: 1475: 1472: 1469: 1466: 1463: 1460: 1457: 1454: 1451: 1448: 1445: 1442: 1439: 1436: 1433: 1430: 1427: 1424: 1421: 1418: 1415: 1412: 1409: 1406: 1403: 1400: 1397: 1394: 1391: 1363: 1361: 1359: 1358: 1353: 1327: 1325: 1323: 1322: 1317: 1291: 1289: 1287: 1286: 1281: 1242: 1240: 1238: 1237: 1232: 1209: 1207: 1206: 1201: 1199: 1182: 1170: 1168: 1166: 1165: 1160: 1125: 1123: 1121: 1120: 1115: 1076: 1074: 1072: 1071: 1066: 1035: 1033: 1031: 1030: 1025: 994: 992: 990: 989: 984: 957: 955: 953: 952: 947: 920: 918: 916: 915: 910: 883: 881: 879: 878: 873: 836: 834: 832: 831: 826: 803: 801: 799: 798: 793: 746: 744: 742: 741: 736: 713: 711: 709: 708: 703: 660: 658: 656: 655: 650: 586: 584: 582: 581: 578:{\displaystyle } 576: 546: 544: 542: 541: 536: 493: 486: 483: 480: 477: 474: 471: 468: 465: 462: 459: 456: 453: 450: 447: 444: 441: 438: 435: 432: 429: 426: 419: 411: 407: 403: 399: 395: 388: 385: 382: 379: 376: 373: 370: 367: 364: 361: 358: 355: 352: 349: 346: 343: 340: 337: 334: 331: 234:computer science 225: 218: 207: 204: 198: 170: 169: 162: 155: 148: 144: 141: 135: 133: 92: 68: 60: 49: 27: 26: 19: 2691: 2690: 2686: 2685: 2684: 2682: 2681: 2680: 2661: 2660: 2659: 2654: 2635:Escape analysis 2603:Static analysis 2598: 2547: 2531: 2510: 2483:Code generation 2477: 2453: 2409: 2402: 2324: 2303: 2298: 2268: 2267: 2260: 2247: 2246: 2242: 2226: 2225: 2221: 2199: 2198: 2194: 2189: 2145: 2144: 2142: 2141:When statement 2090: 2089: 2087: 2052: 2051: 2049: 2016: 2015: 2013: 2009: 1977: 1976: 1974: 1970: 1957: 1956: 1953: 1950: 1947: 1944: 1941: 1938: 1935: 1932: 1929: 1926: 1923: 1920: 1917: 1914: 1911: 1908: 1905: 1902: 1899: 1896: 1893: 1890: 1887: 1884: 1881: 1878: 1875: 1872: 1869: 1866: 1863: 1860: 1857: 1854: 1851: 1848: 1845: 1842: 1839: 1836: 1833: 1830: 1827: 1824: 1821: 1818: 1815: 1812: 1809: 1806: 1803: 1800: 1797: 1794: 1791: 1788: 1785: 1782: 1779: 1776: 1773: 1770: 1767: 1764: 1761: 1758: 1755: 1752: 1749: 1746: 1743: 1740: 1737: 1734: 1731: 1728: 1725: 1722: 1719: 1716: 1713: 1710: 1707: 1704: 1701: 1698: 1695: 1692: 1689: 1686: 1683: 1680: 1677: 1674: 1671: 1665: 1661: 1658: 1657: 1650: 1645: 1641: 1637: 1631: 1630: 1582: 1581: 1578: 1575: 1572: 1569: 1566: 1563: 1560: 1557: 1554: 1551: 1548: 1545: 1542: 1539: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1476: 1473: 1470: 1467: 1464: 1461: 1458: 1455: 1452: 1449: 1446: 1443: 1440: 1437: 1434: 1431: 1428: 1425: 1422: 1419: 1416: 1413: 1410: 1407: 1404: 1401: 1398: 1395: 1392: 1389: 1379: 1335: 1334: 1332: 1299: 1298: 1296: 1263: 1262: 1260: 1214: 1213: 1211: 1173: 1172: 1142: 1141: 1139: 1097: 1096: 1094: 1048: 1047: 1045: 1007: 1006: 1004: 1001: 966: 965: 963: 929: 928: 926: 892: 891: 889: 849: 848: 846: 808: 807: 805: 775: 774: 772: 765: 718: 717: 715: 685: 684: 682: 671: 663:global variable 632: 631: 629: 555: 554: 552: 518: 517: 515: 508: 491: 488: 487: 484: 481: 478: 475: 472: 469: 466: 463: 460: 457: 454: 451: 448: 445: 442: 439: 436: 433: 430: 427: 424: 417: 409: 405: 401: 397: 393: 390: 389: 386: 383: 380: 377: 374: 371: 368: 365: 362: 359: 356: 353: 350: 347: 344: 341: 338: 335: 332: 329: 316: 226: 215: 214: 213: 208: 202: 199: 188: 171: 167: 156: 145: 139: 136: 93: 91: 81: 69: 28: 24: 17: 12: 11: 5: 2689: 2687: 2679: 2678: 2673: 2663: 2662: 2656: 2655: 2653: 2652: 2647: 2645:Shape analysis 2642: 2637: 2632: 2627: 2622: 2617: 2612: 2610:Alias analysis 2606: 2604: 2600: 2599: 2597: 2596: 2591: 2586: 2584:Jump threading 2581: 2576: 2571: 2566: 2561: 2555: 2553: 2549: 2548: 2546: 2545: 2539: 2537: 2533: 2532: 2530: 2529: 2524: 2518: 2516: 2512: 2511: 2509: 2508: 2503: 2498: 2493: 2487: 2485: 2479: 2478: 2476: 2475: 2470: 2464: 2462: 2455: 2454: 2452: 2451: 2446: 2441: 2436: 2430: 2425: 2420: 2414: 2412: 2404: 2403: 2401: 2400: 2395: 2390: 2385: 2383:Loop unrolling 2380: 2378:Loop splitting 2375: 2370: 2365: 2363:Loop inversion 2360: 2355: 2350: 2345: 2340: 2334: 2332: 2326: 2325: 2323: 2322: 2317: 2311: 2309: 2305: 2304: 2299: 2297: 2296: 2289: 2282: 2274: 2266: 2265: 2258: 2240: 2219: 2208:(3): 163–179. 2191: 2190: 2188: 2185: 2184: 2183: 2182:might be used. 2161: 2158: 2155: 2152: 2139: 2124: 2123: 2120: 2106: 2103: 2100: 2097: 2084: 2081: 2068: 2065: 2062: 2059: 2035: 2032: 2029: 2026: 2023: 2006: 1993: 1990: 1987: 1984: 1969: 1958: 1670: 1656: 1629: 1621: 1620: 1619: 1618: 1610: 1609: 1608: 1598: 1597: 1596: 1388: 1378: 1375: 1374: 1373: 1351: 1348: 1345: 1342: 1315: 1312: 1309: 1306: 1293: 1279: 1276: 1273: 1270: 1257:cache locality 1230: 1227: 1224: 1221: 1198: 1194: 1191: 1188: 1185: 1181: 1158: 1155: 1152: 1149: 1138:is denoted as 1113: 1110: 1107: 1104: 1064: 1061: 1058: 1055: 1023: 1020: 1017: 1014: 1000: 997: 982: 979: 976: 973: 945: 942: 939: 936: 908: 905: 902: 899: 871: 868: 865: 862: 859: 856: 824: 821: 818: 815: 791: 788: 785: 782: 764: 761: 734: 731: 728: 725: 701: 698: 695: 692: 670: 667: 648: 645: 642: 639: 618: 617: 610: 595: 574: 571: 568: 565: 562: 534: 531: 528: 525: 507: 504: 423: 328: 315: 312: 246:data structure 228: 227: 210: 209: 174: 172: 165: 158: 157: 72: 70: 63: 58: 32: 31: 29: 22: 15: 13: 10: 9: 6: 4: 3: 2: 2688: 2677: 2674: 2672: 2669: 2668: 2666: 2651: 2648: 2646: 2643: 2641: 2638: 2636: 2633: 2631: 2628: 2626: 2623: 2621: 2618: 2616: 2613: 2611: 2608: 2607: 2605: 2601: 2595: 2592: 2590: 2587: 2585: 2582: 2580: 2577: 2575: 2572: 2570: 2567: 2565: 2562: 2560: 2557: 2556: 2554: 2550: 2544: 2541: 2540: 2538: 2534: 2528: 2525: 2523: 2522:Deforestation 2520: 2519: 2517: 2513: 2507: 2504: 2502: 2499: 2497: 2494: 2492: 2489: 2488: 2486: 2484: 2480: 2474: 2471: 2469: 2466: 2465: 2463: 2460: 2456: 2450: 2447: 2445: 2442: 2440: 2437: 2434: 2431: 2429: 2426: 2424: 2421: 2419: 2416: 2415: 2413: 2411: 2405: 2399: 2396: 2394: 2391: 2389: 2386: 2384: 2381: 2379: 2376: 2374: 2371: 2369: 2366: 2364: 2361: 2359: 2356: 2354: 2351: 2349: 2346: 2344: 2341: 2339: 2336: 2335: 2333: 2331: 2327: 2321: 2318: 2316: 2313: 2312: 2310: 2306: 2302: 2295: 2290: 2288: 2283: 2281: 2276: 2275: 2272: 2261: 2255: 2252:. CRC Press. 2251: 2244: 2241: 2235: 2230: 2223: 2220: 2215: 2211: 2207: 2203: 2196: 2193: 2186: 2181: 2177: 2156: 2150: 2140: 2137: 2136:partial order 2133: 2129: 2128: 2127: 2121: 2101: 2095: 2085: 2082: 2063: 2057: 2030: 2027: 2024: 2007: 1988: 1982: 1972: 1971: 1967: 1963: 1959: 1668: 1654: 1634: 1627: 1624: 1614: 1613: 1611: 1602: 1601: 1599: 1590: 1589: 1587: 1586: 1585: 1386: 1384: 1376: 1371: 1367: 1346: 1340: 1330: 1310: 1304: 1294: 1274: 1268: 1258: 1254: 1250: 1246: 1225: 1219: 1189: 1183: 1153: 1147: 1137: 1133: 1129: 1108: 1102: 1092: 1088: 1084: 1080: 1059: 1053: 1043: 1042: 1041: 1039: 1018: 1012: 998: 996: 977: 971: 961: 940: 934: 924: 903: 897: 887: 866: 863: 860: 844: 840: 819: 813: 786: 780: 770: 767:If variable, 762: 760: 758: 754: 750: 729: 723: 696: 690: 680: 676: 668: 666: 664: 643: 637: 627: 623: 615: 611: 608: 604: 600: 596: 594: 590: 569: 566: 563: 550: 529: 523: 513: 512: 511: 505: 503: 501: 497: 421: 415: 326: 323: 321: 313: 311: 309: 305: 301: 297: 293: 288: 286: 282: 278: 274: 270: 265: 263: 259: 255: 251: 247: 243: 239: 235: 224: 221: 206: 203:February 2024 196: 192: 186: 184: 180: 175:This article 173: 164: 163: 154: 151: 143: 140:February 2024 132: 129: 125: 122: 118: 115: 111: 108: 104: 101: –  100: 96: 95:Find sources: 89: 85: 79: 78: 73:This article 71: 67: 62: 61: 56: 54: 47: 46: 41: 40: 35: 30: 21: 20: 2448: 2249: 2243: 2222: 2205: 2201: 2195: 2175: 2125: 1965: 1961: 1659: 1635: 1632: 1625: 1622: 1583: 1380: 1369: 1365: 1328: 1135: 1131: 1127: 1090: 1086: 1082: 1078: 1037: 1002: 959: 922: 885: 842: 838: 768: 766: 756: 752: 748: 677:, is on the 674: 672: 625: 621: 619: 606: 602: 598: 588: 548: 509: 489: 413: 392:Notice that 391: 324: 317: 302:, including 289: 284: 280: 276: 272: 268: 266: 257: 249: 241: 237: 231: 216: 200: 189:Please help 177:may contain 176: 146: 137: 127: 120: 113: 106: 94: 82:Please help 77:verification 74: 50: 43: 37: 36:Please help 33: 2435:elimination 2353:Loop fusion 2308:Basic block 593:basic block 498:. See also 2665:Categories 2515:Functional 2433:Dead store 2234:cs/0311037 2187:References 262:assignment 183:irrelevant 110:newspapers 39:improve it 2408:Data-flow 2008:For each 999:Execution 864:− 294:known as 179:excessive 45:talk page 2410:analysis 1605:return d 547:, where 277:DU chain 269:UD Chain 254:variable 242:UD chain 185:examples 2172:⁠ 2143:⁠ 2117:⁠ 2088:⁠ 2079:⁠ 2050:⁠ 2046:⁠ 2014:⁠ 2004:⁠ 1975:⁠ 1968:) chain 1962:use-def 1595:" (l.7) 1362:⁠ 1333:⁠ 1326:⁠ 1297:⁠ 1290:⁠ 1261:⁠ 1241:⁠ 1212:⁠ 1169:⁠ 1140:⁠ 1124:⁠ 1095:⁠ 1075:⁠ 1046:⁠ 1034:⁠ 1005:⁠ 993:⁠ 964:⁠ 958:, then 956:⁠ 927:⁠ 919:⁠ 890:⁠ 882:⁠ 847:⁠ 835:⁠ 806:⁠ 802:⁠ 773:⁠ 745:⁠ 716:⁠ 714:, then 712:⁠ 683:⁠ 659:⁠ 630:⁠ 585:⁠ 553:⁠ 545:⁠ 516:⁠ 482:/* C */ 461:/* B */ 440:/* A */ 384:/* C */ 366:/* B */ 345:/* A */ 314:Purpose 252:, of a 244:) is a 232:Within 124:scholar 2536:Global 2461:-based 2256:  1945:return 1756:return 1570:return 1480:return 587:; and 126:  119:  112:  105:  97:  2552:Other 2229:arXiv 1861:while 1489:while 1368:< 1364:with 1329:kills 1126:with 1087:alive 1081:< 1077:with 841:< 837:with 506:Setup 271:is a 131:JSTOR 117:books 2330:Loop 2254:ISBN 2176:live 1964:(or 1918:else 1891:> 1840:else 1795:> 1546:else 1519:> 1255:and 1210:. ( 845:and 605:and 306:and 275:(or 240:(or 236:, a 103:news 2459:SSA 2210:doi 2012:in 1729:int 1714:int 1702:int 1693:int 1687:gcd 1684:int 1681:**/ 1672:/** 1593:d=b 1447:int 1432:int 1420:int 1411:int 1405:gcd 1402:int 1390:/** 1383:gcd 1089:at 1085:is 995:). 855:min 679:LHS 665:). 467:int 425:int 330:int 181:or 86:by 2667:: 2204:. 2130:A 1966:ud 1882:if 1870:!= 1786:if 1774:!= 1765:if 1747:== 1738:if 1662:d1 1653:: 1510:if 1498:!= 1471:== 1462:if 1399:*/ 1292:.) 1247:, 1130:≥ 1040:: 502:. 476:35 470:x2 420:. 418:x2 414:is 378:35 310:. 48:. 2293:e 2286:t 2279:v 2262:. 2237:. 2231:: 2216:. 2212:: 2206:3 2160:) 2157:i 2154:( 2151:s 2105:) 2102:i 2099:( 2096:s 2067:) 2064:i 2061:( 2058:s 2034:] 2031:n 2028:, 2025:1 2022:[ 2010:i 1992:) 1989:0 1986:( 1983:s 1954:} 1951:; 1948:c 1942:} 1939:} 1936:; 1933:c 1930:- 1927:d 1924:= 1921:d 1915:; 1912:d 1909:- 1906:c 1903:= 1900:c 1897:) 1894:d 1888:c 1885:( 1879:{ 1876:) 1873:0 1867:d 1864:( 1858:; 1855:c 1852:- 1849:b 1846:= 1843:d 1837:} 1834:; 1831:b 1828:= 1825:d 1822:; 1819:b 1816:- 1813:c 1810:= 1807:c 1804:{ 1801:) 1798:b 1792:c 1789:( 1783:{ 1780:) 1777:0 1771:b 1768:( 1762:; 1759:b 1753:) 1750:0 1744:c 1741:( 1735:; 1732:d 1726:; 1723:a 1720:= 1717:c 1711:{ 1708:) 1705:b 1699:, 1696:a 1690:( 1666:b 1651:d 1646:d 1642:d 1638:d 1607:" 1579:} 1576:; 1573:c 1567:} 1564:; 1561:c 1558:- 1555:d 1552:= 1549:d 1543:; 1540:d 1537:- 1534:c 1531:= 1528:c 1525:) 1522:d 1516:c 1513:( 1507:{ 1504:) 1501:0 1495:d 1492:( 1486:; 1483:d 1477:) 1474:0 1468:c 1465:( 1459:; 1456:b 1453:= 1450:d 1444:; 1441:a 1438:= 1435:c 1429:{ 1426:) 1423:b 1417:, 1414:a 1408:( 1370:i 1366:k 1350:) 1347:k 1344:( 1341:s 1314:) 1311:i 1308:( 1305:s 1278:) 1275:i 1272:( 1269:A 1229:) 1226:i 1223:( 1220:A 1197:| 1193:) 1190:i 1187:( 1184:A 1180:| 1157:) 1154:i 1151:( 1148:A 1136:i 1132:j 1128:k 1112:) 1109:k 1106:( 1103:s 1091:j 1083:j 1079:i 1063:) 1060:i 1057:( 1054:s 1038:j 1022:) 1019:i 1016:( 1013:s 981:) 978:j 975:( 972:s 960:v 944:) 941:j 938:( 935:s 923:v 907:) 904:j 901:( 898:s 886:v 870:) 867:i 861:j 858:( 843:j 839:i 823:) 820:i 817:( 814:s 790:) 787:j 784:( 781:s 769:v 757:V 753:v 749:v 733:) 730:j 727:( 724:s 700:) 697:j 694:( 691:s 675:v 647:) 644:0 641:( 638:s 626:V 622:v 609:) 607:t 603:u 601:, 599:v 589:n 573:] 570:n 567:, 564:1 561:[ 549:i 533:) 530:i 527:( 524:s 492:x 479:; 473:= 458:; 455:y 452:+ 449:x 446:= 443:x 437:; 434:0 431:= 428:x 410:x 406:x 402:x 398:x 394:x 381:; 375:= 372:x 363:; 360:y 357:+ 354:x 351:= 348:x 342:; 339:0 336:= 333:x 285:U 281:D 258:D 250:U 223:) 217:( 205:) 201:( 197:. 187:. 153:) 147:( 142:) 138:( 128:· 121:· 114:· 107:· 80:. 55:) 51:(

Index

improve it
talk page
Learn how and when to remove these messages

verification
improve this article
adding citations to reliable sources
"Use-define chain"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
excessive
irrelevant
improve the article
less pertinent examples
Learn how and when to remove this message
computer science
data structure
variable
assignment
static code analysis
data flow analysis
compiler optimizations
constant propagation
common subexpression elimination
liveness analysis
live range splitting

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.