Seyrek koşullu sabit yayılma - Sparse conditional constant propagation

İçinde bilgisayar Bilimi, seyrek koşullu sabit yayılma sıklıkla uygulanan bir optimizasyondur derleyiciler dönüşümden sonra statik tek atama formu (SSA). Aynı anda bazı türlerini kaldırır ölü kod ve sabitleri yayar bir program boyunca. Ayrıca, ayrı ayrı uygulamaya kıyasla daha sabit değerler ve dolayısıyla daha fazla iyileştirme fırsatı bulabilir. ölü kod eleme ve sürekli yayılma herhangi bir sırayla veya herhangi bir sayıda tekrar.[1][2]

algoritma icra ederek çalışır soyut yorumlama SSA formundaki kodun. Soyut yorumlama sırasında, genellikle düz bir kafes değerler için sabitler ve SSA değişkenlerini bu kafesteki değerlere eşleyen genel bir ortam. Algoritmanın özü, şube talimatları. Karşılaşıldığında, bir şubenin koşulu değerlendirilir mümkün olan en iyi koşuldaki değişkenlere bağlı soyut değerlerin kesinliği verilir. Değerlerin tamamen kesin olması (ne üstte ne de altta) olabilir ve bu nedenle soyut yürütme hangi yönde dallanacağına karar verebilir. Değerler sabit değilse veya koşuldaki bir değişken tanımlanmamışsa, muhafazakar kalmak için her iki dal yönü de alınmalıdır.

Özet yorumunun tamamlanmasının ardından hiçbir zaman ulaşılamayan talimatlar ölü kod olarak işaretlenir. Sabit değerlere sahip olduğu bulunan SSA değişkenleri, daha sonra kullanım noktalarında satır içi (yayılır) olabilir.[örnek gerekli ]

Notlar

  1. ^ Wegman, Mark N. ve Zadeck, F. Kenneth. "Koşullu Dallarla Sürekli Yayılma." Programlama Dilleri ve Sistemlerinde ACM İşlemleri, 13 (2), Nisan 1991, sayfalar 181-210.
  2. ^ Click, Clifford ve Cooper, Keith. "Analizleri Birleştirmek, Optimizasyonları Birleştirmek ", Programlama Dilleri ve Sistemlerinde ACM İşlemleri, 17 (2), Mart 1995, sayfalar 181-196

Referanslar

  • Cooper, Keith D. ve Torczon, Linda. Derleyici Mühendisliği. Morgan Kaufmann. 2005.