[llvm] [ci] Add ids workflow for checking llvm apis have been annotated with LLVM_ABI (PR #128370)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 12 07:59:42 PDT 2025
https://github.com/mcbarton updated https://github.com/llvm/llvm-project/pull/128370
>From fa63258759f4195b3b3ce20f4be6616de3d567a9 Mon Sep 17 00:00:00 2001
From: mcbarton <150042563+mcbarton at users.noreply.github.com>
Date: Tue, 7 Jan 2025 09:06:17 +0000
Subject: [PATCH 01/13] Add ids workflow (Ubuntu runner)
---
.github/workflows/ids-check.yml | 95 +++++++++++++++++++++++++++++++++
1 file changed, 95 insertions(+)
create mode 100644 .github/workflows/ids-check.yml
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
new file mode 100644
index 0000000000000..9b34aa5e7e678
--- /dev/null
+++ b/.github/workflows/ids-check.yml
@@ -0,0 +1,95 @@
+name: ids-check
+on:
+ pull_request:
+ types:
+ - opened
+ - synchronize
+ - reopened
+ - closed
+ push:
+ branches:
+ - 'main'
+ - 'release/**'
+
+permissions:
+ contents: read
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
+ cancel-in-progress: true
+
+jobs:
+ build:
+ if: github.repository_owner == 'llvm'
+ name: ids-check
+ runs-on: ubuntu-24.04
+
+ steps:
+ - uses: actions/checkout at 11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ repository: compnerd/ids
+ path: ${{ github.workspace }}/ids
+ fetch-depth: 0
+
+ - uses: actions/checkout at 11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: ${{ github.workspace }}/llvm-project
+ fetch-depth: 2
+
+ - name: install dependencies
+ run: |
+ sudo apt install -y clang-19 ninja-build libclang-19-dev
+ pip install lit
+
+ - name: Configure and build minimal LLVM for use by ids
+ run: |
+ cmake -B ${{ github.workspace }}/llvm-project/build/ \
+ -D CMAKE_BUILD_TYPE=Release \
+ -S ${{ github.workspace }}/llvm-project/llvm/ \
+ -D LLVM_ENABLE_PROJECTS=clang \
+ -D LLVM_TARGETS_TO_BUILD="host" \
+ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
+ -G Ninja
+ cd ${{ github.workspace }}/llvm-project/build/
+ ninja -t targets all | grep "CommonTableGen: phony$" | grep -v "/" | sed 's/:.*//'
+
+ - name: Configure ids
+ run: |
+ cmake -B ${{ github.workspace }}/ids/build/ \
+ -S ${{ github.workspace }}/ids/ \
+ -D CMAKE_BUILD_TYPE=Release \
+ -D CMAKE_C_COMPILER=clang \
+ -D CMAKE_CXX_COMPILER=clang++ \
+ -D CMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \
+ -D LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm/ \
+ -D Clang_DIR=/usr/lib/llvm-19/lib/cmake/clang/ \
+ -D FILECHECK_EXECUTABLE=$(which FileCheck-19) \
+ -D LIT_EXECUTABLE=$(which lit)
+
+ - name: Build ids
+ run: |
+ cmake --build ${{ github.workspace }}/ids/build \
+ --config Release \
+ --parallel $(nproc --all)
+
+ - name: Run ids over compilation database
+ run: |
+ cd ${{ github.workspace }}/llvm-project
+ export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/**/*.h' ':!llvm/include/llvm/Debuginfod/' ':!llvm/include/llvm/Demangle/' )
+ if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
+ for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ done
+ fi
+ export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm-c/**/*.h' )
+ if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
+ for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ done
+ fi
+ export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/Demangle/**/*.h' )
+ if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
+ for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ done
+ fi
>From a21b01dde2bd530ed73f1e2e93160268c62677e1 Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Thu, 14 Aug 2025 07:48:31 +0100
Subject: [PATCH 02/13] Show what happens when ids check workflow fails
---
llvm/include/llvm/ADT/Any.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/include/llvm/ADT/Any.h b/llvm/include/llvm/ADT/Any.h
index 88dbce96c2c3d..edcec8100afd6 100644
--- a/llvm/include/llvm/ADT/Any.h
+++ b/llvm/include/llvm/ADT/Any.h
@@ -25,7 +25,7 @@
namespace llvm {
-class LLVM_ABI Any {
+class Any {
// The `Typeid<T>::Id` static data member below is a globally unique
// identifier for the type `T`. It is explicitly marked with default
>From ea63601f81eea3d9649ef0927c4493bfe9d91297 Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Thu, 14 Aug 2025 11:31:54 +0100
Subject: [PATCH 03/13] Try to make ids workflow fail
---
.github/workflows/ids-check.yml | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index 9b34aa5e7e678..4c596d0fbf4e5 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -74,22 +74,23 @@ jobs:
- name: Run ids over compilation database
run: |
+ set -e
cd ${{ github.workspace }}/llvm-project
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/**/*.h' ':!llvm/include/llvm/Debuginfod/' ':!llvm/include/llvm/Demangle/' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm-c/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/Demangle/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
>From f6a906c74a10a09c058ca8185bd91a407439e586 Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Thu, 14 Aug 2025 11:44:11 +0100
Subject: [PATCH 04/13] (wip) change over to Windows runner
---
.github/workflows/ids-check.yml | 41 ++++++++++++++++++---------------
1 file changed, 23 insertions(+), 18 deletions(-)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index 4c596d0fbf4e5..c5eecb1fa4b6b 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -22,7 +22,7 @@ jobs:
build:
if: github.repository_owner == 'llvm'
name: ids-check
- runs-on: ubuntu-24.04
+ runs-on: windows-2025
steps:
- uses: actions/checkout at 11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -36,61 +36,66 @@ jobs:
path: ${{ github.workspace }}/llvm-project
fetch-depth: 2
- - name: install dependencies
+ - name: Install dependencies
+ shell: pwsh
run: |
- sudo apt install -y clang-19 ninja-build libclang-19-dev
- pip install lit
+ Invoke-WebRequest -Uri "https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.8/clang+llvm-20.1.8-x86_64-pc-windows-msvc.tar.xz" -OutFile "clang20.tar.xz"
+ & "C:\Program Files\Git\usr\bin\tar.exe" -xf .\clang20.tar.xz
+ pip install lit filecheck
- name: Configure and build minimal LLVM for use by ids
+ shell: bash
run: |
- cmake -B ${{ github.workspace }}/llvm-project/build/ \
+ cmake -B C:/a/llvm-project/llvm-project/llvm-project/build/ \
-D CMAKE_BUILD_TYPE=Release \
- -S ${{ github.workspace }}/llvm-project/llvm/ \
+ -S C:/a/llvm-project/llvm-project/llvm-project/llvm/ \
-D LLVM_ENABLE_PROJECTS=clang \
-D LLVM_TARGETS_TO_BUILD="host" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-G Ninja
- cd ${{ github.workspace }}/llvm-project/build/
+ cd C:/a/llvm-project/llvm-project/llvm-project/build/
ninja -t targets all | grep "CommonTableGen: phony$" | grep -v "/" | sed 's/:.*//'
- name: Configure ids
+ shell: bash
run: |
- cmake -B ${{ github.workspace }}/ids/build/ \
- -S ${{ github.workspace }}/ids/ \
+ cmake -B C:/a/llvm-project/llvm-project/ids/build/ \
+ -S C:/a/llvm-project/llvm-project/ids/ \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_C_COMPILER=clang \
-D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \
- -D LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm/ \
- -D Clang_DIR=/usr/lib/llvm-19/lib/cmake/clang/ \
- -D FILECHECK_EXECUTABLE=$(which FileCheck-19) \
+ -D LLVM_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-x86_64-pc-windows-msvc/lib/cmake/llvm/" \
+ -D Clang_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-x86_64-pc-windows-msvc/lib/cmake/clang/" \
+ -D FILECHECK_EXECUTABLE=$(which filecheck) \
-D LIT_EXECUTABLE=$(which lit)
- name: Build ids
+ shell: bash
run: |
- cmake --build ${{ github.workspace }}/ids/build \
+ cmake --build C:/a/llvm-project/llvm-project/ids/build \
--config Release \
--parallel $(nproc --all)
- name: Run ids over compilation database
+ shell: bash
run: |
- set -e
- cd ${{ github.workspace }}/llvm-project
+ cd C:/a/llvm-project/llvm-project/llvm-project
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/**/*.h' ':!llvm/include/llvm/Debuginfod/' ':!llvm/include/llvm/Demangle/' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm-c/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/Demangle/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
>From 9b99bb62ce97d419d8918296d1636aafc7f357b1 Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Thu, 14 Aug 2025 18:59:34 +0100
Subject: [PATCH 05/13] Use Ninja when configuring ids
---
.github/workflows/ids-check.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index c5eecb1fa4b6b..274565990d37d 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -69,6 +69,7 @@ jobs:
-D Clang_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-x86_64-pc-windows-msvc/lib/cmake/clang/" \
-D FILECHECK_EXECUTABLE=$(which filecheck) \
-D LIT_EXECUTABLE=$(which lit)
+ -G Ninja
- name: Build ids
shell: bash
>From 1071b78c209d4c58c16700dc7228b267e40ffec1 Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Thu, 14 Aug 2025 19:05:50 +0100
Subject: [PATCH 06/13] Debug ids-check.yml
---
.github/workflows/ids-check.yml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index 274565990d37d..5d465be009638 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -50,6 +50,8 @@ jobs:
-D CMAKE_BUILD_TYPE=Release \
-S C:/a/llvm-project/llvm-project/llvm-project/llvm/ \
-D LLVM_ENABLE_PROJECTS=clang \
+ -D CMAKE_C_COMPILER=clang \
+ -D CMAKE_CXX_COMPILER=clang++ \
-D LLVM_TARGETS_TO_BUILD="host" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-G Ninja
@@ -68,7 +70,7 @@ jobs:
-D LLVM_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-x86_64-pc-windows-msvc/lib/cmake/llvm/" \
-D Clang_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-x86_64-pc-windows-msvc/lib/cmake/clang/" \
-D FILECHECK_EXECUTABLE=$(which filecheck) \
- -D LIT_EXECUTABLE=$(which lit)
+ -D LIT_EXECUTABLE=$(which lit) \
-G Ninja
- name: Build ids
>From b38037c4afd682f4d76c40576379de859fe2ac6b Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Thu, 14 Aug 2025 19:40:32 +0100
Subject: [PATCH 07/13] Use Windows arm runner along with
visualstudio2022community install to get missing dia library
---
.github/workflows/ids-check.yml | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index 5d465be009638..a29700a509cd2 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -22,7 +22,7 @@ jobs:
build:
if: github.repository_owner == 'llvm'
name: ids-check
- runs-on: windows-2025
+ runs-on: windows-11-arm
steps:
- uses: actions/checkout at 11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -39,8 +39,9 @@ jobs:
- name: Install dependencies
shell: pwsh
run: |
- Invoke-WebRequest -Uri "https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.8/clang+llvm-20.1.8-x86_64-pc-windows-msvc.tar.xz" -OutFile "clang20.tar.xz"
+ Invoke-WebRequest -Uri "https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.8/clang+llvm-20.1.8-aarch64-pc-windows-msvc.tar.xz" -OutFile "clang20.tar.xz"
& "C:\Program Files\Git\usr\bin\tar.exe" -xf .\clang20.tar.xz
+ choco install visualstudio2022community
pip install lit filecheck
- name: Configure and build minimal LLVM for use by ids
@@ -67,8 +68,8 @@ jobs:
-D CMAKE_C_COMPILER=clang \
-D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \
- -D LLVM_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-x86_64-pc-windows-msvc/lib/cmake/llvm/" \
- -D Clang_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-x86_64-pc-windows-msvc/lib/cmake/clang/" \
+ -D LLVM_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/llvm/" \
+ -D Clang_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/clang/" \
-D FILECHECK_EXECUTABLE=$(which filecheck) \
-D LIT_EXECUTABLE=$(which lit) \
-G Ninja
>From 152e62407765af177a5779c8c90b9e75d6148500 Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Thu, 14 Aug 2025 20:54:27 +0100
Subject: [PATCH 08/13] Try compiling ids with downloaded clang/clang++
---
.github/workflows/ids-check.yml | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index a29700a509cd2..0fd6cccc1f586 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -65,8 +65,8 @@ jobs:
cmake -B C:/a/llvm-project/llvm-project/ids/build/ \
-S C:/a/llvm-project/llvm-project/ids/ \
-D CMAKE_BUILD_TYPE=Release \
- -D CMAKE_C_COMPILER=clang \
- -D CMAKE_CXX_COMPILER=clang++ \
+ -D CMAKE_C_COMPILER="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/bin/clang" \
+ -D CMAKE_CXX_COMPILER="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/bin/clang++" \
-D CMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \
-D LLVM_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/llvm/" \
-D Clang_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/clang/" \
@@ -78,8 +78,7 @@ jobs:
shell: bash
run: |
cmake --build C:/a/llvm-project/llvm-project/ids/build \
- --config Release \
- --parallel $(nproc --all)
+ --config Release
- name: Run ids over compilation database
shell: bash
>From ac71060040f9aebc41a81ab5e773b2a1bb504707 Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Thu, 14 Aug 2025 11:44:11 +0100
Subject: [PATCH 09/13] change over to Windows runner
---
.github/workflows/ids-check.yml | 54 +++++++++++++++++++--------------
1 file changed, 31 insertions(+), 23 deletions(-)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index 4c596d0fbf4e5..0fd6cccc1f586 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -22,7 +22,7 @@ jobs:
build:
if: github.repository_owner == 'llvm'
name: ids-check
- runs-on: ubuntu-24.04
+ runs-on: windows-11-arm
steps:
- uses: actions/checkout at 11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -36,61 +36,69 @@ jobs:
path: ${{ github.workspace }}/llvm-project
fetch-depth: 2
- - name: install dependencies
+ - name: Install dependencies
+ shell: pwsh
run: |
- sudo apt install -y clang-19 ninja-build libclang-19-dev
- pip install lit
+ Invoke-WebRequest -Uri "https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.8/clang+llvm-20.1.8-aarch64-pc-windows-msvc.tar.xz" -OutFile "clang20.tar.xz"
+ & "C:\Program Files\Git\usr\bin\tar.exe" -xf .\clang20.tar.xz
+ choco install visualstudio2022community
+ pip install lit filecheck
- name: Configure and build minimal LLVM for use by ids
+ shell: bash
run: |
- cmake -B ${{ github.workspace }}/llvm-project/build/ \
+ cmake -B C:/a/llvm-project/llvm-project/llvm-project/build/ \
-D CMAKE_BUILD_TYPE=Release \
- -S ${{ github.workspace }}/llvm-project/llvm/ \
+ -S C:/a/llvm-project/llvm-project/llvm-project/llvm/ \
-D LLVM_ENABLE_PROJECTS=clang \
+ -D CMAKE_C_COMPILER=clang \
+ -D CMAKE_CXX_COMPILER=clang++ \
-D LLVM_TARGETS_TO_BUILD="host" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-G Ninja
- cd ${{ github.workspace }}/llvm-project/build/
+ cd C:/a/llvm-project/llvm-project/llvm-project/build/
ninja -t targets all | grep "CommonTableGen: phony$" | grep -v "/" | sed 's/:.*//'
- name: Configure ids
+ shell: bash
run: |
- cmake -B ${{ github.workspace }}/ids/build/ \
- -S ${{ github.workspace }}/ids/ \
+ cmake -B C:/a/llvm-project/llvm-project/ids/build/ \
+ -S C:/a/llvm-project/llvm-project/ids/ \
-D CMAKE_BUILD_TYPE=Release \
- -D CMAKE_C_COMPILER=clang \
- -D CMAKE_CXX_COMPILER=clang++ \
+ -D CMAKE_C_COMPILER="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/bin/clang" \
+ -D CMAKE_CXX_COMPILER="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/bin/clang++" \
-D CMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \
- -D LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm/ \
- -D Clang_DIR=/usr/lib/llvm-19/lib/cmake/clang/ \
- -D FILECHECK_EXECUTABLE=$(which FileCheck-19) \
- -D LIT_EXECUTABLE=$(which lit)
+ -D LLVM_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/llvm/" \
+ -D Clang_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/clang/" \
+ -D FILECHECK_EXECUTABLE=$(which filecheck) \
+ -D LIT_EXECUTABLE=$(which lit) \
+ -G Ninja
- name: Build ids
+ shell: bash
run: |
- cmake --build ${{ github.workspace }}/ids/build \
- --config Release \
- --parallel $(nproc --all)
+ cmake --build C:/a/llvm-project/llvm-project/ids/build \
+ --config Release
- name: Run ids over compilation database
+ shell: bash
run: |
- set -e
- cd ${{ github.workspace }}/llvm-project
+ cd C:/a/llvm-project/llvm-project/llvm-project
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/**/*.h' ':!llvm/include/llvm/Debuginfod/' ':!llvm/include/llvm/Demangle/' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm-c/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/Demangle/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
>From e725ede7dc703016b3d62d27ba53def8511c8c4f Mon Sep 17 00:00:00 2001
From: mcbarton <150042563+mcbarton at users.noreply.github.com>
Date: Fri, 12 Sep 2025 09:18:41 +0100
Subject: [PATCH 10/13] Change back to Linux runner
---
.github/workflows/ids-check.yml | 54 ++++++++++++++-------------------
1 file changed, 23 insertions(+), 31 deletions(-)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index 0fd6cccc1f586..4c596d0fbf4e5 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -22,7 +22,7 @@ jobs:
build:
if: github.repository_owner == 'llvm'
name: ids-check
- runs-on: windows-11-arm
+ runs-on: ubuntu-24.04
steps:
- uses: actions/checkout at 11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -36,69 +36,61 @@ jobs:
path: ${{ github.workspace }}/llvm-project
fetch-depth: 2
- - name: Install dependencies
- shell: pwsh
+ - name: install dependencies
run: |
- Invoke-WebRequest -Uri "https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.8/clang+llvm-20.1.8-aarch64-pc-windows-msvc.tar.xz" -OutFile "clang20.tar.xz"
- & "C:\Program Files\Git\usr\bin\tar.exe" -xf .\clang20.tar.xz
- choco install visualstudio2022community
- pip install lit filecheck
+ sudo apt install -y clang-19 ninja-build libclang-19-dev
+ pip install lit
- name: Configure and build minimal LLVM for use by ids
- shell: bash
run: |
- cmake -B C:/a/llvm-project/llvm-project/llvm-project/build/ \
+ cmake -B ${{ github.workspace }}/llvm-project/build/ \
-D CMAKE_BUILD_TYPE=Release \
- -S C:/a/llvm-project/llvm-project/llvm-project/llvm/ \
+ -S ${{ github.workspace }}/llvm-project/llvm/ \
-D LLVM_ENABLE_PROJECTS=clang \
- -D CMAKE_C_COMPILER=clang \
- -D CMAKE_CXX_COMPILER=clang++ \
-D LLVM_TARGETS_TO_BUILD="host" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-G Ninja
- cd C:/a/llvm-project/llvm-project/llvm-project/build/
+ cd ${{ github.workspace }}/llvm-project/build/
ninja -t targets all | grep "CommonTableGen: phony$" | grep -v "/" | sed 's/:.*//'
- name: Configure ids
- shell: bash
run: |
- cmake -B C:/a/llvm-project/llvm-project/ids/build/ \
- -S C:/a/llvm-project/llvm-project/ids/ \
+ cmake -B ${{ github.workspace }}/ids/build/ \
+ -S ${{ github.workspace }}/ids/ \
-D CMAKE_BUILD_TYPE=Release \
- -D CMAKE_C_COMPILER="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/bin/clang" \
- -D CMAKE_CXX_COMPILER="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/bin/clang++" \
+ -D CMAKE_C_COMPILER=clang \
+ -D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \
- -D LLVM_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/llvm/" \
- -D Clang_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/clang/" \
- -D FILECHECK_EXECUTABLE=$(which filecheck) \
- -D LIT_EXECUTABLE=$(which lit) \
- -G Ninja
+ -D LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm/ \
+ -D Clang_DIR=/usr/lib/llvm-19/lib/cmake/clang/ \
+ -D FILECHECK_EXECUTABLE=$(which FileCheck-19) \
+ -D LIT_EXECUTABLE=$(which lit)
- name: Build ids
- shell: bash
run: |
- cmake --build C:/a/llvm-project/llvm-project/ids/build \
- --config Release
+ cmake --build ${{ github.workspace }}/ids/build \
+ --config Release \
+ --parallel $(nproc --all)
- name: Run ids over compilation database
- shell: bash
run: |
- cd C:/a/llvm-project/llvm-project/llvm-project
+ set -e
+ cd ${{ github.workspace }}/llvm-project
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/**/*.h' ':!llvm/include/llvm/Debuginfod/' ':!llvm/include/llvm/Demangle/' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm-c/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/Demangle/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
>From 973021812f939a6da8ea94766a56222fa116bc99 Mon Sep 17 00:00:00 2001
From: mcbarton <150042563+mcbarton at users.noreply.github.com>
Date: Fri, 12 Sep 2025 15:37:48 +0100
Subject: [PATCH 11/13] Debug why ids check workflow not working as expected
Linux runner
---
.github/workflows/ids-check.yml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index 4c596d0fbf4e5..97649f7ddeb45 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -77,20 +77,26 @@ jobs:
set -e
cd ${{ github.workspace }}/llvm-project
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/**/*.h' ':!llvm/include/llvm/Debuginfod/' ':!llvm/include/llvm/Demangle/' )
+ echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
+ echo $file
${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm-c/**/*.h' )
+ echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
+ echo $file
${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/Demangle/**/*.h' )
+ echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
+ echo $file
${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
>From e986879154cbf0b4001223abe4aaefb23c8c9071 Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Fri, 12 Sep 2025 15:40:49 +0100
Subject: [PATCH 12/13] Fix ids check workflow
---
.github/workflows/ids-check.yml | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index 97649f7ddeb45..d112f71a6e039 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -77,26 +77,26 @@ jobs:
set -e
cd ${{ github.workspace }}/llvm-project
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/**/*.h' ':!llvm/include/llvm/Debuginfod/' ':!llvm/include/llvm/Demangle/' )
- echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
+ echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- echo $file
+ echo $file
${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm-c/**/*.h' )
- echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
+ echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- echo $file
+ echo $file
${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/Demangle/**/*.h' )
- echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
+ echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- echo $file
+ echo $file
${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
>From b0c5abdf2690aecd336cfe99a011773b0108ef75 Mon Sep 17 00:00:00 2001
From: mcbarton <matthew.c.barton at hotmail.co.uk>
Date: Fri, 12 Sep 2025 15:59:27 +0100
Subject: [PATCH 13/13] Try to fix ids check workflow
---
.github/workflows/ids-check.yml | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/ids-check.yml b/.github/workflows/ids-check.yml
index d112f71a6e039..20299b01ba8e8 100644
--- a/.github/workflows/ids-check.yml
+++ b/.github/workflows/ids-check.yml
@@ -74,29 +74,28 @@ jobs:
- name: Run ids over compilation database
run: |
- set -e
cd ${{ github.workspace }}/llvm-project
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/**/*.h' ':!llvm/include/llvm/Debuginfod/' ':!llvm/include/llvm/Demangle/' )
- echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- echo $file
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --inplace --export-macro=LLVM_ABI --include-header="llvm/include/llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm-c/**/*.h' )
- echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- echo $file
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --inplace --export-macro=LLVM_C_ABI --include-header="llvm/include/llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/Demangle/**/*.h' )
- echo $H_OR_CPP_FILES_CHANGED_LAST_COMMIT
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
- echo $file
- ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
+ ${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --apply-fixits --inplace --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
+ git diff --quiet
+ if [ $? -ne 0 ]; then
+ echo "Apply the following diff to fix the LLVM_ABI annotations"
+ git diff
+ exit 1
+ fi
More information about the llvm-commits
mailing list