[Test] Optimizasyon — Constant Folding Doğrulama (--optimized Öncesi/Sonrası) #104
Labels
No Label
cli-ux
faz-plani
felsefe-gozden-gecir
ffi-builtin
fikir
gelecek-vizyon
ir-vm
kalite-mimari
moduller-import
test-senaryosu
tip-sistemi
tooling-lsp
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: saqut/saqut-compiler#104
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Giriş (Nedir, Neden Önemli?)
Faz 4'ün constant folding pass'i, sabit ifadeleri derleme zamanında hesaplayıp
Literaldüğümüyle değiştirmeli (bkz. roadmap Faz 4). Bu issue, "öncesi/sonrası" AST karşılaştırmasının tam olarak nasıl görünmesi gerektiğini somutlaştırır.Test Kodu (
examples/tests/opt_constant_folding.sqt)Beklenen Davranış
saqut ast examples/tests/opt_constant_folding.sqt(bayraksız): orijinal AST —x'in initializer'ıBinaryExpression(2, +, BinaryExpression(3, *, 4))olarak değişmeden görünür.saqut ast examples/tests/opt_constant_folding.sqt --optimized: klonlanmış AST'de:x'in initializer'ı →Literal(14)y'nin initializer'ı →Literal(3)z'nin initializer'ı →Literal(17)(zincirleme:xveyönce katlanmalı, sonraz = x + yde katlanabilmeli — bu, fixpoint döngüsünün gerekliliğinin kanıtıdır)w'nin initializer'ı → değişmez (10 / 0kalır), ve diagnostic çıktısındaW002(sıfıra bölme) uyarısı görünür.saqut run examples/tests/opt_constant_folding.sqtçıktısı (VM tamamlandığında):17ve ardından10 / 0çalışma-zamanı hatası (bu son satır, IR/VM tasarımınaE0xx/runtime-error kategorisi notu olarak düşülmeli).Açık Sorular / Bağlı Fazlar
z = x + y,xveykendileri katlanmış sabitlerden geliyor) tek bir fixpoint turunda mı yoksa birden fazla turda mı gerçekleşmeli — bu, ADR-009'daki fixpoint/iterasyon-tavanı kararının somut test sayısı olabilir (örn. "bu örnek 2 turda kararlı hale gelmeli").10 / 0ifadesinin derleme zamanında uyarı, çalışma zamanında hata ayrımı IR/VM tasarımına (#74-78) açıkça not edilmeli.İmza/Yorum: Bu test dosyası, Faz 4'ün "bitti" tanımının resmi kanıtı olabilir — roadmap'teki "Doğrulama" bölümüne doğrudan eklenebilir.
Golden test eklendi:
tests/golden/opt/folding.sqt. Sabit katlama (aritmetik, karşılaştırma, mantıksal) — beklenen çıktı doğrulandı. Beyaz-kutu IR karşılaştırması içinsaqut ir --optimizedile ayrıca manuel inceleme yapılabilir; siyah-kutu çıktı testi kilitleniyor.Yeniden yazıldı. Golden değer artık program çıktısı değil
saqut ir --optimizedIR dump'ı.2+3*4→LOAD_CONST s0 = 14(tek instruction),(10-4)/2→LOAD_CONST s1 = 3. Yanıltıcı run-output testi kaldırıldı. Ayrıca düzeltme: IR generator'dahasDirectValueokunmuyordu, katlanmış literal'lar 0 veriyordu — giderildi.