Skip to content

Commit

Permalink
fix clang-format for recent PRs and new rules
Browse files Browse the repository at this point in the history
Note that LLVM does not support proper version matching, since the
attempt to use it from cmake apparently failed: https://reviews.llvm.org/D99451.
  • Loading branch information
vtjnash committed Oct 17, 2024
1 parent 8c31246 commit 6e39fd8
Show file tree
Hide file tree
Showing 5 changed files with 147 additions and 142 deletions.
258 changes: 129 additions & 129 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,129 +1,129 @@
name: Build and Test

on:
workflow_dispatch:
pull_request:
push:
branches:
- "master"

permissions:
contents: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.ref_protected && github.run_id || github.event.pull_request.number || github.ref }}'
cancel-in-progress: true

jobs:
build:
strategy:
matrix:
include:
- os: ubuntu-latest
- os: macos-latest
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Setup LLVM (Linux)
if: ${{ runner.os == 'Linux' }}
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 19 all
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 160
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 160
sudo update-alternatives --install /usr/bin/lli lli /usr/bin/lli-19 160
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-19 160
- name: Setup LLVM and GCC (MacOS)
if: ${{ runner.os == 'macOS' }}
run: |
brew install llvm@19
echo "$(brew --prefix llvm@19)/bin" >> $GITHUB_PATH
echo "CC=$(brew --prefix llvm@19)/bin/clang" >> $GITHUB_ENV
echo "CXX=$(brew --prefix llvm@19)/bin/clang++" >> $GITHUB_ENV
cd /usr/local/bin
ln -s gcc-11 gcc
- name: Update Python
uses: actions/setup-python@v4
with:
python-version: '3.x'

- name: Install PyTest
run: |
python -m pip install --upgrade pip
pip install pytest pytest-xdist
- name: Check formatting
if: ${{ runner.os == 'Linux' }}
run: find . -iname '*.h' -o -iname '*.cpp' | xargs clang-format -Werror --dry-run --style=LLVM --verbose

- name: Build
run: |
mkdir build
cmake -S . -B build -DLLVM_INCLUDE_TESTS=On -DLLVM_DIR=/usr/lib/llvm-19/cmake
cmake --build build
- name: Test
run: |
gcc --version
pytest -n 16
# The llvm-dev package doesn't exist for Windows, so we need to build LLVM ourselves.
build-windows:
runs-on: windows-latest
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- name: Checkout LLVM
id: checkout-llvm
uses: actions/checkout@master
with:
repository: llvm/llvm-project
ref: llvmorg-19.1.1

- name: Checkout
uses: actions/checkout@v3
with:
path: ${{ github.workspace }}/llvm/projects/llvm-cbe

- name: Update Python
uses: actions/setup-python@v4
with:
python-version: '3.x'

- name: Install PyTest
run: |
python -m pip install --upgrade pip
pip install pytest pytest-xdist
- name: Initialize LLVM build cache
uses: mozilla-actions/[email protected]

- name: Build
shell: pwsh
run: |
$vsWhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'
$visualStudioInstallationPath = & $vsWhere -latest -property installationPath
Import-Module (Join-Path $visualStudioInstallationPath 'Common7\Tools\Microsoft.VisualStudio.DevShell.dll')
Enter-VsDevShell -VsInstallPath $visualStudioInstallationPath -DevCmdArguments '-arch=x64 -host_arch=x64'
cd ${{ github.workspace }}
if (!(Test-Path '${{ github.workspace }}\build\')) { mkdir '${{ github.workspace }}\build' }
cmake -S llvm -B build -G Ninja -DLLVM_INCLUDE_TESTS=On -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache
cmake --build build
- name: Test
shell: pwsh
run: |
$vsWhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'
$visualStudioInstallationPath = & $vsWhere -latest -property installationPath
Import-Module (Join-Path $visualStudioInstallationPath 'Common7\Tools\Microsoft.VisualStudio.DevShell.dll')
Enter-VsDevShell -VsInstallPath $visualStudioInstallationPath -DevCmdArguments '-arch=x64 -host_arch=x64'
cd (Join-Path '${{ github.workspace }}' 'llvm\projects\llvm-cbe')
$env:PATH=$env:Path + ";${{ github.workspace }}\build\bin"
$env:LLVMToolDir="${{ github.workspace }}\build\bin"
pytest -n 16
name: Build and Test

on:
workflow_dispatch:
pull_request:
push:
branches:
- "master"

permissions:
contents: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.ref_protected && github.run_id || github.event.pull_request.number || github.ref }}'
cancel-in-progress: true

jobs:
build:
strategy:
matrix:
include:
- os: ubuntu-latest
- os: macos-latest
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Setup LLVM (Linux)
if: ${{ runner.os == 'Linux' }}
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 19 all
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 160
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 160
sudo update-alternatives --install /usr/bin/lli lli /usr/bin/lli-19 160
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-19 160
- name: Setup LLVM and GCC (MacOS)
if: ${{ runner.os == 'macOS' }}
run: |
brew install llvm@19 gcc@14
echo "$(brew --prefix llvm@19)/bin" >> $GITHUB_PATH
echo "CC=$(brew --prefix llvm@19)/bin/clang" >> $GITHUB_ENV
echo "CXX=$(brew --prefix llvm@19)/bin/clang++" >> $GITHUB_ENV
cd /usr/local/bin
ln -s `which gcc-14` gcc
- name: Update Python
uses: actions/setup-python@v4
with:
python-version: '3.x'

- name: Install PyTest
run: |
python -m pip install --upgrade pip
pip install pytest pytest-xdist
- name: Check formatting
if: ${{ runner.os == 'Linux' }}
run: find . -iname '*.h' -o -iname '*.cpp' | xargs clang-format -Werror --dry-run --style=LLVM --verbose

- name: Build
run: |
mkdir build
cmake -S . -B build -DLLVM_INCLUDE_TESTS=On -DLLVM_DIR=/usr/lib/llvm-19/cmake
cmake --build build
- name: Test
run: |
gcc --version
pytest -n 16
# The llvm-dev package doesn't exist for Windows, so we need to build LLVM ourselves.
build-windows:
runs-on: windows-latest
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- name: Checkout LLVM
id: checkout-llvm
uses: actions/checkout@master
with:
repository: llvm/llvm-project
ref: llvmorg-19.1.1

- name: Checkout
uses: actions/checkout@v3
with:
path: ${{ github.workspace }}/llvm/projects/llvm-cbe

- name: Update Python
uses: actions/setup-python@v4
with:
python-version: '3.x'

- name: Install PyTest
run: |
python -m pip install --upgrade pip
pip install pytest pytest-xdist
- name: Initialize LLVM build cache
uses: mozilla-actions/[email protected]

- name: Build
shell: pwsh
run: |
$vsWhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'
$visualStudioInstallationPath = & $vsWhere -latest -property installationPath
Import-Module (Join-Path $visualStudioInstallationPath 'Common7\Tools\Microsoft.VisualStudio.DevShell.dll')
Enter-VsDevShell -VsInstallPath $visualStudioInstallationPath -DevCmdArguments '-arch=x64 -host_arch=x64'
cd ${{ github.workspace }}
if (!(Test-Path '${{ github.workspace }}\build\')) { mkdir '${{ github.workspace }}\build' }
cmake -S llvm -B build -G Ninja -DLLVM_INCLUDE_TESTS=On -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache
cmake --build build
- name: Test
shell: pwsh
run: |
$vsWhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'
$visualStudioInstallationPath = & $vsWhere -latest -property installationPath
Import-Module (Join-Path $visualStudioInstallationPath 'Common7\Tools\Microsoft.VisualStudio.DevShell.dll')
Enter-VsDevShell -VsInstallPath $visualStudioInstallationPath -DevCmdArguments '-arch=x64 -host_arch=x64'
cd (Join-Path '${{ github.workspace }}' 'llvm\projects\llvm-cbe')
$env:PATH=$env:Path + ";${{ github.workspace }}\build\bin"
$env:LLVMToolDir="${{ github.workspace }}\build\bin"
pytest -n 16
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
if (NOT DEFINED LLVM_VERSION_MAJOR)
project(llvm-cbe)
set (USE_SYSTEM_LLVM 1)
cmake_minimum_required(VERSION 3.4.3)
find_package(LLVM 19 REQUIRED CONFIG)
cmake_minimum_required(VERSION 3.20.0)
find_package(LLVM 19.1 REQUIRED CONFIG)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
message(STATUS "LLVM_INCLUDE_DIRS: ${LLVM_INCLUDE_DIRS}")
Expand Down
22 changes: 12 additions & 10 deletions lib/Target/CBackend/CBackend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1251,7 +1251,8 @@ void CWriter::printConstant(Constant *CPV, enum OperandContext Context) {
Out << " >> ";
break;
case Instruction::ICmp:
switch ((dyn_cast<ICmpInst>(CE->getAsInstruction()))->getUnsignedPredicate()) {
switch ((dyn_cast<ICmpInst>(CE->getAsInstruction()))
->getUnsignedPredicate()) {
case ICmpInst::ICMP_EQ:
Out << " == ";
break;
Expand Down Expand Up @@ -1286,8 +1287,8 @@ void CWriter::printConstant(Constant *CPV, enum OperandContext Context) {
case Instruction::FCmp: {
Out << '(';
bool NeedsClosingParens = printConstExprCast(CE);
FCmpInst *CmpInst = dyn_cast<FCmpInst>(CE->getAsInstruction());
const auto Pred = CmpInst -> getPredicate();
FCmpInst *CmpInst = dyn_cast<FCmpInst>(CE->getAsInstruction());
const auto Pred = CmpInst->getPredicate();
if (Pred == FCmpInst::FCMP_FALSE)
Out << "0";
else if (Pred == FCmpInst::FCMP_TRUE)
Expand Down Expand Up @@ -4645,7 +4646,7 @@ void CWriter::printIntrinsicDefinition(FunctionType *funT, unsigned Opcode,
cwriter_assert(cast<StructType>(retT)->getElementType(0) == elemT);
Out << " r.field1 = LLVMMul_sov(8 * sizeof(a), &a, &b, &r.field0);\n";
break;

case Intrinsic::uadd_sat:
// r = (a > XX_MAX - b) ? XX_MAX : a + b
cwriter_assert(retT == elemT);
Expand All @@ -4655,7 +4656,7 @@ void CWriter::printIntrinsicDefinition(FunctionType *funT, unsigned Opcode,
printLimitValue(*elemIntT, false, true, Out);
Out << " : a + b;\n";
break;

case Intrinsic::sadd_sat:
// r = (b > 0 && a > XX_MAX - b) ? XX_MAX : a + b;
// r = (b < 0 && a < XX_MIN - b) ? XX_MIN : r;
Expand All @@ -4671,15 +4672,15 @@ void CWriter::printIntrinsicDefinition(FunctionType *funT, unsigned Opcode,
printLimitValue(*elemIntT, true, false, Out);
Out << " : r;\n";
break;

case Intrinsic::usub_sat:
// r = (a < b) ? XX_MIN : a - b;
cwriter_assert(retT == elemT);
Out << " r = (a < b) ? ";
printLimitValue(*elemIntT, false, false, Out);
Out << " : a - b;\n";
break;

case Intrinsic::ssub_sat:
// r = (b > 0 && a < XX_MIN + b) ? XX_MIN : a - b;
// r = (b < 0 && a > XX_MAX + b) ? XX_MAX : r;
Expand All @@ -4697,7 +4698,8 @@ void CWriter::printIntrinsicDefinition(FunctionType *funT, unsigned Opcode,
break;

case Intrinsic::ushl_sat:
// There's no poison value handler in llvm-cbe yet, so this code don't consider that.
// There's no poison value handler in llvm-cbe yet, so this code don't
// consider that.
// r = (a > (XX_MAX >> b)) ? XX_MAX : a << b;
cwriter_assert(retT == elemT);
Out << " r = (a > (";
Expand All @@ -4708,8 +4710,8 @@ void CWriter::printIntrinsicDefinition(FunctionType *funT, unsigned Opcode,
break;

case Intrinsic::sshl_sat:
// (XX_MAX) = 0111... Therfore, shifting this value by b to the right yields the
// maximum/minimum value that can be shifted without overflow.
// (XX_MAX) = 0111... Therfore, shifting this value by b to the right
// yields the maximum/minimum value that can be shifted without overflow.
// r = (a >= 0 && a > (XX_MAX >> b)) ? XX_MAX : a << b;
// r = (a < 0 && a < ((XX_MAX >> b) | XX_MIN))) ? XX_MIN : r;
cwriter_assert(retT == elemT);
Expand Down
4 changes: 3 additions & 1 deletion test/cpp_tests/test_dtor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class Foo {

int main() {
int y = 0;
{ Foo f(&y); }
{
Foo f(&y);
}
return y;
}
1 change: 1 addition & 0 deletions test/test_cbe.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
'-Wall',
'-Wno-unused-function',
'-Wno-unused-variable',
'-Wno-uninitialized',
'-Werror',
]

Expand Down

0 comments on commit 6e39fd8

Please sign in to comment.