From 984f624fa605cbbf19bea5e2d0917142e93503da Mon Sep 17 00:00:00 2001 From: Theodoros Theodoridis Date: Tue, 11 Jun 2024 13:38:46 +0200 Subject: [PATCH 1/5] Allow building against LLVM17 and include python12 wheels --- build_python_wheel_docker.sh | 1 + python_src/program_markers/instrumenter.py | 2 +- src/ASTEdits.cpp | 7 ++++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/build_python_wheel_docker.sh b/build_python_wheel_docker.sh index e3ac804..99c9d36 100755 --- a/build_python_wheel_docker.sh +++ b/build_python_wheel_docker.sh @@ -20,6 +20,7 @@ sed -i "s~THIS_DIR~$(pwd)~g" setup.py "/opt/python/cp310-cp310/bin/python" -m build -w -o wheelhouse "/opt/python/cp311-cp311/bin/python" -m build -w -o wheelhouse +"/opt/python/cp312-cp312/bin/python" -m build -w -o wheelhouse function repair_wheel { diff --git a/python_src/program_markers/instrumenter.py b/python_src/program_markers/instrumenter.py index e9f9966..bad0991 100644 --- a/python_src/program_markers/instrumenter.py +++ b/python_src/program_markers/instrumenter.py @@ -115,7 +115,7 @@ def get_instrumenter( except: # noqa: E722 pass if not clang: - for clang_path in ("clang-16", "clang-15", "clang-14"): + for clang_path in ("clang-17", "clang-16", "clang-15", "clang-14"): try: clang = CompilerExe.from_path(Path(clang_path)) break diff --git a/src/ASTEdits.cpp b/src/ASTEdits.cpp index 112c013..c60eaf5 100644 --- a/src/ASTEdits.cpp +++ b/src/ASTEdits.cpp @@ -36,14 +36,15 @@ void RuleActionEditCollector::run( return; } -#if CLANG_VERSION_MAJOR == 15 || CLANG_VERSION_MAJOR == 16 +#if CLANG_VERSION_MAJOR == 15 || CLANG_VERSION_MAJOR == 16 || \ + CLANG_VERSION_MAJOR == 17 Expected> Edits = Rule.Cases[findSelectedCase(Result, Rule)].Edits(Result); #elif CLANG_VERSION_MAJOR == 14 Expected> Edits = findSelectedCase(Result, Rule).Edits(Result); #else -#error "Only versions 14, 15, and 16 are supported" +#error "Only versions 14, 15, 16, and 17 are supported" #endif if (!Edits) { @@ -54,7 +55,7 @@ void RuleActionEditCollector::run( auto SM = Result.SourceManager; for (const auto &T : *Edits) { assert(T.Kind == transformer::EditKind::Range); -#if CLANG_VERSION_MAJOR == 16 +#if CLANG_VERSION_MAJOR == 16 || CLANG_VERSION_MAJOR == 17 const auto *Metadata = T.Metadata.has_value() ? llvm::any_cast(&T.Metadata) : nullptr; From 31f8fceba25234fc0d5c58deca696a02e31735c7 Mon Sep 17 00:00:00 2001 From: Theodoros Theodoridis Date: Tue, 11 Jun 2024 13:43:50 +0200 Subject: [PATCH 2/5] Update CI Add LLVM 17 and remove 14 from testing. Also bump python version to 3.12. --- .github/workflows/format-cpp.yaml | 2 +- .github/workflows/lint-python.yaml | 8 ++++---- .github/workflows/test-cpp.yaml | 3 ++- .github/workflows/test-python.yaml | 5 +++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/format-cpp.yaml b/.github/workflows/format-cpp.yaml index 2d7e89e..2888b6f 100644 --- a/.github/workflows/format-cpp.yaml +++ b/.github/workflows/format-cpp.yaml @@ -15,5 +15,5 @@ jobs: - name: Run clang-format style check uses: jidicula/clang-format-action@v4.10.1 with: - clang-format-version: '16' + clang-format-version: '17' check-path: 'llvm-plugin' diff --git a/.github/workflows/lint-python.yaml b/.github/workflows/lint-python.yaml index 7fe6514..d2ce8a8 100644 --- a/.github/workflows/lint-python.yaml +++ b/.github/workflows/lint-python.yaml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.12' - run: python -m pip install mypy diopter pytest - name: run mypy run: python -m mypy --strict @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.12' - run: python -m pip install black - name: Check formating with black run: python -m black --check python_src/ @@ -33,7 +33,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.12' - run: python -m pip install . flake8 - name: run flake8 run: python -m flake8 python_src @@ -43,7 +43,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.12' - run: python -m pip install isort - name: Check imports with isort run: python -m isort --profile black --check python_src diff --git a/.github/workflows/test-cpp.yaml b/.github/workflows/test-cpp.yaml index e2481e6..5e2eeca 100644 --- a/.github/workflows/test-cpp.yaml +++ b/.github/workflows/test-cpp.yaml @@ -10,7 +10,7 @@ jobs: catchpp: strategy: matrix: - version: [14,15,16] + version: [15,16,17] runs-on: ubuntu-latest steps: - name: Checkout @@ -20,6 +20,7 @@ jobs: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 15CF4D18AF4F7421 sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main' sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main' + sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' sudo apt remove clang-15 clang-14 clang-13 clang-12 llvm-15 llvm-14 llvm-13 llvm-12 sudo apt-get update sudo apt-get install ninja-build catch2 clang-${{ matrix.version }} libclang-${{ matrix.version }}-dev libclang-cpp${{ matrix.version }}-dev diff --git a/.github/workflows/test-python.yaml b/.github/workflows/test-python.yaml index db1145a..912a80f 100644 --- a/.github/workflows/test-python.yaml +++ b/.github/workflows/test-python.yaml @@ -10,18 +10,19 @@ jobs: pytest: strategy: matrix: - version: [14,15,16] + version: [15,16,17] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.12' - name: build instrumenter run: | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 15CF4D18AF4F7421 sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main' sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main' + sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' sudo apt remove clang-15 clang-14 clang-13 clang-12 llvm-15 llvm-14 llvm-13 llvm-12 sudo apt-get update sudo apt-get install ninja-build catch2 clang-${{ matrix.version }} libclang-${{ matrix.version }}-dev libclang-cpp${{ matrix.version }}-dev From ed10699d32d56b27347b730d0ede0080469052cd Mon Sep 17 00:00:00 2001 From: Theodoros Theodoridis Date: Tue, 11 Jun 2024 13:45:31 +0200 Subject: [PATCH 3/5] Updat pre-commit config --- .pre-commit-config.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d069b9b..5792fef 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,28 +1,28 @@ repos: - repo: https://github.com/psf/black - rev: 23.7.0 + rev: 24.4.2 hooks: - id: black - repo: https://github.com/PyCQA/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort args: ['--profile', 'black'] - repo: https://github.com/PyCQA/flake8 - rev: 6.1.0 + rev: 7.0.0 hooks: - id: flake8 - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v16.0.6 + rev: v18.1.6 hooks: - id: clang-format args: ['--style=llvm'] - repo: https://github.com/koalaman/shellcheck-precommit - rev: v0.9.0 + rev: v0.10.0 hooks: - id: shellcheck - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.5.1 + rev: v1.10.0 hooks: - id: mypy additional_dependencies: [diopter==0.0.26, pytest==7.2.0] From 5d1a289addb1cecb77a91bf3a91b78d31d085240 Mon Sep 17 00:00:00 2001 From: Theodoros Theodoridis Date: Tue, 11 Jun 2024 13:46:47 +0200 Subject: [PATCH 4/5] Make black happy --- python_src/program_markers/iprogram.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python_src/program_markers/iprogram.py b/python_src/program_markers/iprogram.py index 62edb2f..b2c6afc 100644 --- a/python_src/program_markers/iprogram.py +++ b/python_src/program_markers/iprogram.py @@ -88,9 +88,9 @@ def collect_markers( current_marker_id += 1 new_markers.append(new_marker) new_directive_emitters[new_marker] = directive_emitters[marker] - replacements[ - (marker.macro_without_arguments(), marker.id) - ] = new_marker.macro_without_arguments() + replacements[(marker.macro_without_arguments(), marker.id)] = ( + new_marker.macro_without_arguments() + ) return tuple(new_markers), new_directive_emitters new_programs = [programs[0]] From 94729b2458d259574224c96d476ffea69532b7c9 Mon Sep 17 00:00:00 2001 From: Theodoros Theodoridis Date: Tue, 11 Jun 2024 16:13:22 +0200 Subject: [PATCH 5/5] Bump version --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 419f70c..308918e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = program-markers -version = 0.5.5b +version = 0.5.5b1 author = Theodoros Theodoridis author_email = theodort@inf.ethz.ch description = Inserts markers in C/C++ code. Markers expose information about the optimizations a compiler has applied, e.g., whether a piece of code was dead code eliminated.