From 4db24e3f2b145934e9a28398d416ca39121c4c1b Mon Sep 17 00:00:00 2001 From: Philip Herron Date: Tue, 9 Aug 2022 15:33:31 +0100 Subject: [PATCH 1/4] Add in -m32,-m64 configuration to make check-rust This is to gate PR's which might break builds on 32bit systems. Addresses #1439 --- .github/workflows/ccpp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 6fdfd9748b8..b49d525ad54 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -67,7 +67,7 @@ jobs: - name: Run Tests run: | cd gccrs-build; \ - make check-rust + make check-rust RUNTESTFLAGS="--target_board=unix\{-m32,-m64}" - name: Archive check-rust results uses: actions/upload-artifact@v2 with: From fefd8633dc6524edc69cce411c0f8c1759fa0ee3 Mon Sep 17 00:00:00 2001 From: Philip Herron Date: Tue, 9 Aug 2022 16:18:33 +0100 Subject: [PATCH 2/4] Remove 128bit code generation from test case 128 bit integer support is not always available for every GCC arch and we will need to rely on runtime libraries for these operations in the future. Addresses #1439 --- gcc/testsuite/rust/compile/torture/issue-1432.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/gcc/testsuite/rust/compile/torture/issue-1432.rs b/gcc/testsuite/rust/compile/torture/issue-1432.rs index 2a238e14744..d3d72fbea46 100644 --- a/gcc/testsuite/rust/compile/torture/issue-1432.rs +++ b/gcc/testsuite/rust/compile/torture/issue-1432.rs @@ -67,6 +67,5 @@ impl_uint!( u16 = "u16", u32 = "u32", u64 = "u64", - u128 = "u128", usize = "usize" ); From 6496291f34b929764d90ce5a6d0b05ca4753d53f Mon Sep 17 00:00:00 2001 From: Philip Herron Date: Tue, 9 Aug 2022 16:35:37 +0100 Subject: [PATCH 3/4] Enforce win64 abi test to always run on -m64 mode Fixes #1439 --- gcc/testsuite/rust/debug/win64-abi.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/rust/debug/win64-abi.rs b/gcc/testsuite/rust/debug/win64-abi.rs index 9d8de406b0b..b2b08cd5114 100644 --- a/gcc/testsuite/rust/debug/win64-abi.rs +++ b/gcc/testsuite/rust/debug/win64-abi.rs @@ -1,10 +1,10 @@ +// { dg-do compile { target { x86_64-*-* } } } +// { dg-options "-gdwarf-5 -dA -w -O1 -m64" } pub extern "win64" fn square(num: i32) -> i32 { num * num } fn main() { - // { dg-do compile { target { x86_64-*-* } } } - // { dg-options "-gdwarf-5 -dA -w -O1" } // MS ABI dictates that the first argument is ecx instead of edi from the sysv world // { dg-final { scan-assembler "%ecx, %ecx" } } square(1); From 50bb06ce3b990c2e282b7245b5fdcea119f6385f Mon Sep 17 00:00:00 2001 From: Philip Herron Date: Wed, 10 Aug 2022 10:48:15 +0100 Subject: [PATCH 4/4] Seperate 64 and 32 bit testing combos into seperate jobs Change the CI requirements to have seperate jobs for 64 and 32 bit testing. It also runs both combinations on the gcc4.8 build job. Bors only requires the normal build check 64bit job to pass to minimize impact. --- .github/bors.toml | 2 +- .github/workflows/ccpp.yml | 85 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 82 insertions(+), 5 deletions(-) diff --git a/.github/bors.toml b/.github/bors.toml index 89486ef159b..36914c2cc65 100644 --- a/.github/bors.toml +++ b/.github/bors.toml @@ -1,5 +1,5 @@ status = [ - "build-and-check" + "build-and-check-ubuntu-64bit" ] # Uncomment this to use a two hour timeout. # The default is one hour. diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index b49d525ad54..c88674033e7 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -1,4 +1,4 @@ -name: C/C++ CI +name: GCC Rust build and test on: push: @@ -9,7 +9,7 @@ on: branches: [ master ] jobs: - build-and-check: + build-and-check-ubuntu-64bit: env: # Force locale, in particular for reproducible results re '.github/bors_log_expected_warnings' (see below). @@ -67,7 +67,84 @@ jobs: - name: Run Tests run: | cd gccrs-build; \ - make check-rust RUNTESTFLAGS="--target_board=unix\{-m32,-m64}" + make check-rust RUNTESTFLAGS="--target_board=unix\{-m64}" + - name: Archive check-rust results + uses: actions/upload-artifact@v2 + with: + name: check-rust-logs + path: | + gccrs-build/gcc/testsuite/rust/ + - name: Check regressions + run: | + cd gccrs-build; \ + if grep -e "unexpected" -e "unresolved" -e "ERROR:" gcc/testsuite/rust/rust.sum;\ + then \ + echo "::error title=Regression test failed::some tests are not correct"; \ + perl -n ../.github/emit_test_errors.pl < gcc/testsuite/rust/rust.sum; \ + exit 1; \ + else \ + exit 0; \ + fi + + build-and-check-ubuntu-32bit: + + env: + # Force locale, in particular for reproducible results re '.github/bors_log_expected_warnings' (see below). + LC_ALL: C.UTF-8 + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Install Deps + run: | + sudo apt-get update; + sudo apt-get install -y \ + automake \ + autoconf \ + libtool \ + autogen \ + bison \ + flex \ + libgmp3-dev \ + libmpfr-dev \ + libmpc-dev \ + build-essential \ + gcc-multilib \ + g++-multilib \ + dejagnu + + - name: Configure + run: | + mkdir -p gccrs-build; + cd gccrs-build; + ../configure \ + --enable-languages=rust \ + --disable-bootstrap \ + --enable-multilib + + - name: Build + shell: bash + run: | + cd gccrs-build; \ + make -Otarget -j $(nproc) 2>&1 | tee log + + - name: Check for new warnings + run: | + cd gccrs-build + < log grep 'warning: ' | sort > log_warnings + if diff -U0 ../.github/bors_log_expected_warnings log_warnings; then + : + else + echo 'See .' + exit 1 + fi >&2 + + - name: Run Tests + run: | + cd gccrs-build; \ + make check-rust RUNTESTFLAGS="--target_board=unix\{-m32}" - name: Archive check-rust results uses: actions/upload-artifact@v2 with: @@ -131,7 +208,7 @@ jobs: - name: Run Tests run: | cd gccrs-build; \ - make check-rust + make check-rust RUNTESTFLAGS="--target_board=unix\{-m32,-m64}" - name: Archive check-rust results uses: actions/upload-artifact@v2