mirror of https://github.com/llvm/circt.git
82 lines
2.7 KiB
YAML
82 lines
2.7 KiB
YAML
name: Track LLVM Changes
|
|
|
|
on:
|
|
schedule:
|
|
# 10:00 AM UTC is 3AM Pacific Time
|
|
- cron: '0 10 * * *'
|
|
# Run this workflow on pull requests which change this workflow
|
|
pull_request:
|
|
paths:
|
|
- .github/workflows/trackLLVMChanges.yml
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
track-llvm-changes:
|
|
name: Track LLVM Changes
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
# Clone the CIRCT repo and its submodules. Do shallow clone to save clone
|
|
# time.
|
|
- name: Get CIRCT
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 2
|
|
submodules: "true"
|
|
|
|
- name: Configure Project
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake ../llvm/llvm \
|
|
-DLLVM_USE_LINKER=lld \
|
|
-DCMAKE_C_COMPILER=clang \
|
|
-DCMAKE_CXX_COMPILER=clang++ \
|
|
-DCMAKE_RULE_MESSAGES=OFF \
|
|
-DCMAKE_BUILD_TYPE=Debug \
|
|
-DBUILD_SHARED_LIBS=ON \
|
|
-DLLVM_ENABLE_PROJECTS=mlir \
|
|
-DLLVM_TARGETS_TO_BUILD=host \
|
|
-DLLVM_BUILD_EXAMPLES=OFF \
|
|
-DLLVM_INSTALL_UTILS=OFF \
|
|
-DLLVM_ENABLE_OCAMLDOC=OFF \
|
|
-DLLVM_ENABLE_BINDINGS=OFF \
|
|
-DLLVM_ENABLE_ASSERTIONS=ON \
|
|
-DLLVM_EXTERNAL_PROJECTS=circt \
|
|
-DLLVM_EXTERNAL_CIRCT_SOURCE_DIR=$PWD/..
|
|
|
|
- name: Build current LLVM commit
|
|
id: build-current-llvm-commit
|
|
run: |
|
|
cd llvm
|
|
echo "::set-output name=sha::$(git rev-parse HEAD)"
|
|
cmake --build ../build --config Debug --target check-circt -- -j$(nproc)
|
|
|
|
- name: Build latest LLVM commit
|
|
id: build-latest-llvm-commit
|
|
continue-on-error: true
|
|
run: |
|
|
cd llvm
|
|
git fetch origin main
|
|
git checkout --detach origin/main
|
|
echo "::set-output name=sha::$(git rev-parse HEAD)"
|
|
cmake --build ../build --config Debug --target check-circt -- -j$(nproc)
|
|
|
|
- name: Bisect commits
|
|
if: steps.build-latest-llvm-commit.outcome != 'success'
|
|
run: |
|
|
cd llvm
|
|
git bisect start ${{ steps.build-latest-llvm-commit.outputs.sha }} ${{ steps.build-current-llvm-commit.outputs.sha }} -- mlir llvm
|
|
git bisect run cmake --build ../build --config Debug --target check-circt -- -j$(nproc)
|
|
|
|
# Summarize Results (re-run tests to make the log easier to parse)
|
|
- name: Summarize Results
|
|
if: steps.build-latest-llvm-commit.outcome != 'success'
|
|
run: |
|
|
cd llvm
|
|
git bisect log
|
|
FIRST_BAD_COMMIT=$(git bisect log | sed -n 's/# first bad commit: \[\([0-9a-f]*\)\].*/\1/p')
|
|
git checkout $FIRST_BAD_COMMIT
|
|
cmake --build ../build --config Debug --target check-circt -- -j$(nproc)
|
|
|
|
# --- end of track-llvm-changes job.
|