Skip to content
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 104 additions & 0 deletions .github/workflows/ids-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
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: windows-11-arm

steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: compnerd/ids
path: ${{ github.workspace }}/ids
fetch-depth: 0

- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
path: ${{ github.workspace }}/llvm-project
fetch-depth: 2

- 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-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 C:/a/llvm-project/llvm-project/llvm-project/build/ \
-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
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 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="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/" \
-D FILECHECK_EXECUTABLE=$(which filecheck) \
-D LIT_EXECUTABLE=$(which lit) \
-G Ninja

- name: Build ids
shell: bash
run: |
cmake --build C:/a/llvm-project/llvm-project/ids/build \
--config Release

- name: Run ids over compilation database
shell: bash
run: |
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 --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
2 changes: 1 addition & 1 deletion llvm/include/llvm/ADT/Any.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

namespace llvm {

class LLVM_ABI Any {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change will be reverted before the PR goes in. It has only been made for now as the workflow should fail when changes like this are made.

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
Expand Down
Loading