Langsung ke konten

Arsip

LLVM

1 artikel
Rekayasa Perangkat Lunak 19 Sep 2026 5 min read

Nilai Poison LLVM Menunda Undefined Behavior di Sepanjang IR

LLVM IR tidak mengubah setiap kondisi aritmetika atau pointer yang tidak valid menjadi undefined behavior seketika. Banyak instruksi justru menghasilkan nilai poison. Nilai itu dapat mengalir ke instruksi berikutnya, sehingga optimizer tetap dapat bertumpu pada janji seperti “penjumlahan ini tidak overflow” tanpa menjadikan pelanggaran janji tersebut sebagai undefined behavior tepat pada instruksi asalnya. Perbedaan ini merupakan bagian dari semantik LLVM, bukan detail implementasi optimizer. Frontend yang menghasilkan nsw, nuw, inbounds, noundef, atau constraint terkait sedang menyatakan fakta yang boleh dipercaya oleh pass berikutnya.