Ownership in low-level intermediate representation
Siddharth Priya, Arie Gurfinkel

TL;DR
This paper introduces ownership semantics into low-level LLVM IR to improve program verification efficiency, reducing reliance on address maps and speeding up SMT solving for C programs.
Contribution
It develops and implements ownership semantics for LLVM IR, enabling more direct memory modeling and improving verification performance.
Findings
Speedup of 1.3x to 5x in SMT solving times
Effective modeling of memory accesses using ownership semantics
Reduction in address map usage for safe programs
Abstract
The concept of ownership in high level languages can aid both the programmer and the compiler to reason about the validity of memory operations. Previously, ownership semantics has been used successfully in high level automatic program verification to model a reference to data by a first order logic (FOL) representation of data instead of maintaining an address map. However, ownership semantics is not used in low level program verification. We have identified two challenges. First, ownership information is lost when a program is compiled to a low level intermediate representation (e.g., in LLVM IR). Second, pointers in low level programs point to bytes using an address map (e.g., in unsafe Rust) and thus the verification condition (VC) cannot always replace a pointer by its FOL abstraction. To remedy the situation, we develop ownership semantics for an LLVM like low level intermediate…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Security and Verification in Computing · Formal Methods in Verification
