571:
25:
146:
in data flow analysis terms. An expression is available at the start of a basic block if it is available at the end of each of the basic block's predecessors. This gives a set of equations in terms of available sets, which can be solved by an iterative algorithm.
137:
problem. A set of available expressions is maintained. Each statement is analysed to see whether it changes the operands of one or more available expressions. This yields sets of available expressions at the end of each
130:
at such a point. To be available on a program point, the operands of the expression should not be modified on any path from the occurrence of that expression to the program point.
192:
339:
35:
612:
373:
185:
545:
93:
422:
323:
151:
65:
641:
631:
464:
178:
50:
72:
359:
443:
636:
605:
494:
459:
79:
383:
258:
238:
61:
123:
243:
598:
391:
368:
344:
273:
520:
515:
469:
396:
220:
215:
115:
550:
474:
530:
401:
293:
201:
86:
525:
489:
308:
298:
248:
134:
406:
230:
582:
578:
540:
479:
349:
328:
288:
268:
535:
510:
484:
283:
278:
263:
625:
154:(CSE). If an expression is available at a point, there is no need to re-evaluate it.
122:
is an analysis algorithm that determines for each point in the program the set of
42:
253:
139:
24:
333:
427:
570:
170:
174:
126:
that need not be recomputed. Those expressions are said to be
18:
586:
46:
503:
452:
436:
415:
382:
358:
307:
229:
208:
150:Available expression analysis is used to do global
340:Induction variable recognition and elimination
606:
186:
165:Compilers – Principles, Techniques, and Tools
8:
51:introducing citations to additional sources
613:
599:
193:
179:
171:
16:Optimization method in software compilers
133:The analysis is an example of a forward
41:Relevant discussion may be found on the
374:Sparse conditional constant propagation
167:Addison-Wesley Publishing Company 1986
7:
567:
565:
585:. You can help Knowledge (XXG) by
14:
569:
324:Common subexpression elimination
152:common subexpression elimination
34:relies largely or entirely on a
23:
465:Compile-time function execution
1:
444:Interprocedural optimization
495:Profile-guided optimization
460:Bounds-checking elimination
658:
564:
259:Loop-invariant code motion
239:Automatic parallelization
163:Aho, Sethi & Ullman:
244:Automatic vectorization
642:Computer science stubs
632:Compiler optimizations
392:Instruction scheduling
369:Global value numbering
345:Live-variable analysis
274:Loop nest optimization
202:Compiler optimizations
116:compiler optimizations
62:"Available expression"
521:Control-flow analysis
516:Array-access analysis
470:Dead-code elimination
428:Tail-call elimination
397:Instruction selection
221:Local value numbering
216:Peephole optimization
120:available expressions
551:Value range analysis
475:Expression templates
319:Available expression
47:improve this article
531:Dependence analysis
402:Register allocation
294:Software pipelining
637:Data-flow analysis
526:Data-flow analysis
490:Partial evaluation
299:Strength reduction
249:Induction variable
135:data flow analysis
594:
593:
559:
558:
407:Rematerialization
112:
111:
97:
649:
615:
608:
601:
579:computer science
573:
566:
541:Pointer analysis
480:Inline expansion
350:Use-define chain
329:Constant folding
289:Loop unswitching
269:Loop interchange
195:
188:
181:
172:
114:In the field of
107:
104:
98:
96:
55:
27:
19:
657:
656:
652:
651:
650:
648:
647:
646:
622:
621:
620:
619:
562:
560:
555:
536:Escape analysis
504:Static analysis
499:
448:
432:
411:
384:Code generation
378:
354:
310:
303:
225:
204:
199:
160:
142:, known as the
108:
102:
99:
56:
54:
40:
28:
17:
12:
11:
5:
655:
653:
645:
644:
639:
634:
624:
623:
618:
617:
610:
603:
595:
592:
591:
574:
557:
556:
554:
553:
548:
546:Shape analysis
543:
538:
533:
528:
523:
518:
513:
511:Alias analysis
507:
505:
501:
500:
498:
497:
492:
487:
485:Jump threading
482:
477:
472:
467:
462:
456:
454:
450:
449:
447:
446:
440:
438:
434:
433:
431:
430:
425:
419:
417:
413:
412:
410:
409:
404:
399:
394:
388:
386:
380:
379:
377:
376:
371:
365:
363:
356:
355:
353:
352:
347:
342:
337:
331:
326:
321:
315:
313:
305:
304:
302:
301:
296:
291:
286:
284:Loop unrolling
281:
279:Loop splitting
276:
271:
266:
264:Loop inversion
261:
256:
251:
246:
241:
235:
233:
227:
226:
224:
223:
218:
212:
210:
206:
205:
200:
198:
197:
190:
183:
175:
169:
168:
159:
156:
110:
109:
45:. Please help
31:
29:
22:
15:
13:
10:
9:
6:
4:
3:
2:
654:
643:
640:
638:
635:
633:
630:
629:
627:
616:
611:
609:
604:
602:
597:
596:
590:
588:
584:
581:article is a
580:
575:
572:
568:
563:
552:
549:
547:
544:
542:
539:
537:
534:
532:
529:
527:
524:
522:
519:
517:
514:
512:
509:
508:
506:
502:
496:
493:
491:
488:
486:
483:
481:
478:
476:
473:
471:
468:
466:
463:
461:
458:
457:
455:
451:
445:
442:
441:
439:
435:
429:
426:
424:
423:Deforestation
421:
420:
418:
414:
408:
405:
403:
400:
398:
395:
393:
390:
389:
387:
385:
381:
375:
372:
370:
367:
366:
364:
361:
357:
351:
348:
346:
343:
341:
338:
335:
332:
330:
327:
325:
322:
320:
317:
316:
314:
312:
306:
300:
297:
295:
292:
290:
287:
285:
282:
280:
277:
275:
272:
270:
267:
265:
262:
260:
257:
255:
252:
250:
247:
245:
242:
240:
237:
236:
234:
232:
228:
222:
219:
217:
214:
213:
211:
207:
203:
196:
191:
189:
184:
182:
177:
176:
173:
166:
162:
161:
157:
155:
153:
148:
145:
141:
136:
131:
129:
125:
121:
117:
106:
95:
92:
88:
85:
81:
78:
74:
71:
67:
64: –
63:
59:
58:Find sources:
52:
48:
44:
38:
37:
36:single source
32:This article
30:
26:
21:
20:
587:expanding it
576:
561:
318:
164:
149:
143:
132:
127:
119:
113:
103:October 2023
100:
90:
83:
76:
69:
57:
33:
336:elimination
254:Loop fusion
209:Basic block
140:basic block
124:expressions
626:Categories
416:Functional
334:Dead store
158:References
73:newspapers
309:Data-flow
128:available
43:talk page
311:analysis
87:scholar
437:Global
362:-based
144:outset
89:
82:
75:
68:
60:
577:This
453:Other
94:JSTOR
80:books
583:stub
231:Loop
66:news
360:SSA
49:by
628::
118:,
614:e
607:t
600:v
589:.
194:e
187:t
180:v
105:)
101:(
91:·
84:·
77:·
70:·
53:.
39:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.