summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_codegen_gcc/.github/workflows/ci.yml
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_codegen_gcc/.github/workflows/ci.yml')
-rw-r--r--compiler/rustc_codegen_gcc/.github/workflows/ci.yml111
1 files changed, 66 insertions, 45 deletions
diff --git a/compiler/rustc_codegen_gcc/.github/workflows/ci.yml b/compiler/rustc_codegen_gcc/.github/workflows/ci.yml
index 8ebdabe82..d2b7724a2 100644
--- a/compiler/rustc_codegen_gcc/.github/workflows/ci.yml
+++ b/compiler/rustc_codegen_gcc/.github/workflows/ci.yml
@@ -4,36 +4,72 @@ on:
- push
- pull_request
+permissions:
+ contents: read
+
+env:
+ # Enable backtraces for easier debugging
+ RUST_BACKTRACE: 1
+
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
- libgccjit_version: ["libgccjit.so", "libgccjit_without_int128.so", "libgccjit12.so"]
+ libgccjit_version:
+ - { gcc: "libgccjit.so", extra: "", env_extra: "", artifacts_branch: "master" }
+ - { gcc: "libgccjit_without_int128.so", extra: "", env_extra: "", artifacts_branch: "master-without-128bit-integers" }
+ - { gcc: "libgccjit12.so", extra: "--no-default-features", env_extra: "TEST_FLAGS='-Cpanic=abort -Zpanic-abort-tests'", artifacts_branch: "gcc12" }
+ commands: [
+ "--mini-tests",
+ "--std-tests",
+ # FIXME: re-enable asm tests when GCC can emit in the right syntax.
+ # "--asm-tests",
+ "--test-libcore",
+ "--extended-rand-tests",
+ "--extended-regex-example-tests",
+ "--extended-regex-tests",
+ "--test-successful-rustc --nb-parts 2 --current-part 0",
+ "--test-successful-rustc --nb-parts 2 --current-part 1",
+ "--test-failing-rustc",
+ ]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
repository: llvm/llvm-project
path: llvm
- name: Install packages
- run: sudo apt-get install ninja-build ripgrep
+ # `llvm-14-tools` is needed to install the `FileCheck` binary which is used for asm tests.
+ run: sudo apt-get install ninja-build ripgrep llvm-14-tools
+
+ - name: Install libgccjit12
+ if: matrix.libgccjit_version.gcc == 'libgccjit12.so'
+ run: sudo apt-get install libgccjit-12-dev
- name: Download artifact
+ if: matrix.libgccjit_version.gcc != 'libgccjit12.so'
uses: dawidd6/action-download-artifact@v2
with:
workflow: main.yml
- name: ${{ matrix.libgccjit_version }}
+ name: ${{ matrix.libgccjit_version.gcc }}
path: gcc-build
repo: antoyo/gcc
+ branch: ${{ matrix.libgccjit_version.artifacts_branch }}
+ event: push
search_artifacts: true # Because, instead, the action only check the last job ran and that won't work since we want multiple artifacts.
- name: Setup path to libgccjit
+ if: matrix.libgccjit_version.gcc == 'libgccjit12.so'
+ run: echo /usr/lib/gcc/x86_64-linux-gnu/12 > gcc_path
+
+ - name: Setup path to libgccjit
+ if: matrix.libgccjit_version.gcc != 'libgccjit12.so'
run: |
echo $(readlink -f gcc-build) > gcc_path
# NOTE: the filename is still libgccjit.so even when the artifact name is different.
@@ -48,49 +84,44 @@ jobs:
- name: Set RUST_COMPILER_RT_ROOT
run: echo "RUST_COMPILER_RT_ROOT="${{ env.workspace }}/llvm/compiler-rt >> $GITHUB_ENV
- # https://github.com/actions/cache/issues/133
- - name: Fixup owner of ~/.cargo/
- # Don't remove the trailing /. It is necessary to follow the symlink.
- run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/
-
- name: Cache cargo installed crates
- uses: actions/cache@v1.1.2
+ uses: actions/cache@v3
with:
path: ~/.cargo/bin
key: cargo-installed-crates2-ubuntu-latest
- name: Cache cargo registry
- uses: actions/cache@v1
+ uses: actions/cache@v3
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry2-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
- uses: actions/cache@v1
+ uses: actions/cache@v3
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo target dir
- uses: actions/cache@v1.1.2
+ uses: actions/cache@v3
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('rust-toolchain') }}
- - name: Build
- if: matrix.libgccjit_version != 'libgccjit12.so'
- run: |
- ./prepare_build.sh
- ./build.sh
- cargo test
- ./clean_all.sh
+ #- name: Cache rust repository
+ ## We only clone the rust repository for rustc tests
+ #if: ${{ contains(matrix.commands, 'rustc') }}
+ #uses: actions/cache@v3
+ #id: cache-rust-repository
+ #with:
+ #path: rust
+ #key: ${{ runner.os }}-packages-${{ hashFiles('rust/.git/HEAD') }}
- name: Build
- if: matrix.libgccjit_version == 'libgccjit12.so'
run: |
./prepare_build.sh
- ./build.sh --no-default-features
- cargo test --no-default-features
+ ${{ matrix.libgccjit_version.env_extra }} ./build.sh ${{ matrix.libgccjit_version.extra }}
+ ${{ matrix.libgccjit_version.env_extra }} cargo test ${{ matrix.libgccjit_version.extra }}
./clean_all.sh
- name: Prepare dependencies
@@ -106,26 +137,16 @@ jobs:
command: build
args: --release
- - name: Test
- if: matrix.libgccjit_version != 'libgccjit12.so'
- run: |
- # Enable backtraces for easier debugging
- export RUST_BACKTRACE=1
-
- # Reduce amount of benchmark runs as they are slow
- export COMPILE_RUNS=2
- export RUN_RUNS=2
+ - name: Add more failing tests for GCC 12
+ if: ${{ matrix.libgccjit_version.gcc == 'libgccjit12.so' }}
+ run: cat failing-ui-tests12.txt >> failing-ui-tests.txt
- ./test.sh --release
-
- - name: Test
- if: matrix.libgccjit_version == 'libgccjit12.so'
+ - name: Run tests
run: |
- # Enable backtraces for easier debugging
- export RUST_BACKTRACE=1
-
- # Reduce amount of benchmark runs as they are slow
- export COMPILE_RUNS=2
- export RUN_RUNS=2
+ ${{ matrix.libgccjit_version.env_extra }} ./test.sh --release --clean --build-sysroot ${{ matrix.commands }} ${{ matrix.libgccjit_version.extra }}
- ./test.sh --release --no-default-features
+ duplicates:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - run: python tools/check_intrinsics_duplicates.py