mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
cb5702dc04
Introduce the ArithmeticToGEP canonicalisation pass. It detects pointers (LLVM-typed pointer values, model pointers flagged by the "revng.pointers" metadata, and pointer-tagged extract values) and rewrites integer arithmetic computed on top of them as i8 GEPs, followed by a ptrtoint when the original use needs an integer. For each obvious pointer the pass also walks backwards through Add chains and disambiguates the pointer operand of each Add when the other operand cannot be a pointer, so the rewrite extends to integer arithmetic that only later flows into a pointer use.
rev.ng python package
This python package provides classes that can be used to represent, serialize and deserialize rev.ng models.
It also contains other modules related to various revng CLI tools.
How to install
You probably want to install this package in a virtualenv:
python -m venv <virtualenv_dir>
source <virtualenv_dir>/bin/activate
Installation
To build and install from source:
pip install .
Creating redistributable packages
This command will create a redistributable package in dist:
python setup.py bdist_wheel
The package can be installed using pip:
pip install dist/revng*.whl