Harva ehdollisen vakion eteneminen - Sparse conditional constant propagation

In Computer Science , harva ehdollinen jatkuva lisääminen on optimointi usein sovellettu kerääjiä muuntamisen jälkeen staattinen yhden tehtävän muoto (SSA). Se poistaa samanaikaisesti eräitä kuolleita koodeja ja levittää vakioita koko ohjelman ajan. Lisäksi se voi löytää vakioarvoja ja siten enemmän mahdollisuuksia parannuksille kuin kuolleen koodin eliminoinnin ja jatkuvan etenemisen soveltaminen erikseen missä tahansa järjestyksessä tai toistojen lukumäärässä.

Algoritmi toimii suorittamalla abstrakti tulkinta koodi SSA muodossa. Abstraktin tulkinnan aikana se käyttää tyypillisesti tasaista vakiohilaa arvoille ja globaalia ympäristöä, joka kartoittaa SSA-muuttujat tämän hilan arvoihin. Ydin algoritmin tulee, miten se käsittelee tulkintaa haara ohjeet . Haaran olosuhteita arvioidaan parhaiten ottaen huomioon olosuhteessa oleviin muuttujiin sidottujen abstraktien arvojen tarkkuuden perusteella. Voi olla, että arvot ovat täysin tarkkoja (ei ylä- eikä alaosa), ja siksi abstrakti suorittaminen voi päättää mihin suuntaan haarautua. Jos arvot eivät ole vakioita tai olosuhteessa olevaa muuttujaa ei ole määritelty, niin molempien haarasuuntien on pidettävä konservatiivisina.

Kun abstrakti tulkinta on suoritettu, ohjeet, joita ei koskaan saavutettu, merkitään kuolleeksi. SSA-muuttujat, joilla havaitaan olevan vakioarvot, voidaan sitten viivata (eteenpäin) niiden käyttökohtaan.

Huomautuksia

  1. ^ Wegman, Mark N. ja Zadeck, F. Kenneth. " Jatkuva eteneminen ehdollisten sivuliikkeiden kanssa ." Ohjelmointikieliä ja -järjestelmiä koskevat ACM-tapahtumat , 13 (2), huhtikuu 1991, sivut 181–210.
  2. ^ Napsauta, Clifford ja Cooper, Keith. " Analyysien yhdistäminen, optimointien yhdistäminen ", Ohjelmointikielten ja -järjestelmien ACM-tapahtumat , 17 (2), maaliskuu 1995, sivut 181–196

Viitteet

  • Cooper, Keith D. ja Torczon, Linda. Kääntäjän suunnittelu . Morgan Kaufmann. 2005.