Skip to content

Commit 081eb74

Browse files
committed
Merge branch 'master' into 2022-08-26_sync_from_rust
2 parents 5b1229e + b4eb2c3 commit 081eb74

28 files changed

+3883
-570
lines changed

.github/workflows/ci.yml

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,32 @@ on:
44
- push
55
- pull_request
66

7+
env:
8+
# Enable backtraces for easier debugging
9+
RUST_BACKTRACE: 1
10+
711
jobs:
812
build:
913
runs-on: ubuntu-latest
1014

1115
strategy:
1216
fail-fast: false
1317
matrix:
14-
libgccjit_version: ["libgccjit.so", "libgccjit_without_int128.so", "libgccjit12.so"]
18+
libgccjit_version:
19+
- { gcc: "libgccjit.so", extra: "" }
20+
- { gcc: "libgccjit_without_int128.so", extra: "" }
21+
- { gcc: "libgccjit12.so", extra: "--no-default-features" }
22+
commands: [
23+
"--mini-tests",
24+
"--std-tests",
25+
"--test-libcore",
26+
"--extended-rand-tests",
27+
"--extended-regex-example-tests",
28+
"--extended-regex-tests",
29+
"--test-successful-rustc --nb-parts 2 --current-part 0",
30+
"--test-successful-rustc --nb-parts 2 --current-part 1",
31+
"--test-failing-rustc",
32+
]
1533

1634
steps:
1735
- uses: actions/checkout@v2
@@ -28,7 +46,7 @@ jobs:
2846
uses: dawidd6/action-download-artifact@v2
2947
with:
3048
workflow: main.yml
31-
name: ${{ matrix.libgccjit_version }}
49+
name: ${{ matrix.libgccjit_version.gcc }}
3250
path: gcc-build
3351
repo: antoyo/gcc
3452
search_artifacts: true # Because, instead, the action only check the last job ran and that won't work since we want multiple artifacts.
@@ -38,13 +56,11 @@ jobs:
3856
echo $(readlink -f gcc-build) > gcc_path
3957
# NOTE: the filename is still libgccjit.so even when the artifact name is different.
4058
ln gcc-build/libgccjit.so gcc-build/libgccjit.so.0
41-
4259
- name: Set env
4360
run: |
4461
echo "LIBRARY_PATH=$(cat gcc_path)" >> $GITHUB_ENV
4562
echo "LD_LIBRARY_PATH=$(cat gcc_path)" >> $GITHUB_ENV
4663
echo "workspace="$GITHUB_WORKSPACE >> $GITHUB_ENV
47-
4864
- name: Set RUST_COMPILER_RT_ROOT
4965
run: echo "RUST_COMPILER_RT_ROOT="${{ env.workspace }}/llvm/compiler-rt >> $GITHUB_ENV
5066

@@ -77,55 +93,42 @@ jobs:
7793
path: target
7894
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('rust-toolchain') }}
7995

80-
- name: Build
81-
if: matrix.libgccjit_version != 'libgccjit12.so'
82-
run: |
83-
./prepare_build.sh
84-
./build.sh
85-
cargo test
86-
./clean_all.sh
96+
- name: Cache rust repository
97+
# We only clone the rust repository for rustc tests
98+
if: ${{ contains(matrix.commands, 'rustc') }}
99+
uses: actions/cache@v2
100+
id: cache-rust-repository
101+
with:
102+
path: rust
103+
key: ${{ runner.os }}-packages-${{ hashFiles('rust/.git/HEAD') }}
87104

88105
- name: Build
89-
if: matrix.libgccjit_version == 'libgccjit12.so'
90106
run: |
91107
./prepare_build.sh
92-
./build.sh --no-default-features
93-
cargo test --no-default-features
108+
./build.sh ${{ matrix.libgccjit_version.extra }}
109+
cargo test ${{ matrix.libgccjit_version.extra }}
94110
./clean_all.sh
95-
96111
- name: Prepare dependencies
97112
run: |
98113
git config --global user.email "user@example.com"
99114
git config --global user.name "User"
100115
./prepare.sh
101-
102116
# Compile is a separate step, as the actions-rs/cargo action supports error annotations
103117
- name: Compile
104118
uses: actions-rs/cargo@v1.0.3
105119
with:
106120
command: build
107121
args: --release
108122

109-
- name: Test
110-
if: matrix.libgccjit_version != 'libgccjit12.so'
111-
run: |
112-
# Enable backtraces for easier debugging
113-
export RUST_BACKTRACE=1
114-
115-
# Reduce amount of benchmark runs as they are slow
116-
export COMPILE_RUNS=2
117-
export RUN_RUNS=2
118-
119-
./test.sh --release
123+
- name: Add more failing tests for GCC 12
124+
if: ${{ matrix.libgccjit_version.gcc == 'libgccjit12.so' }}
125+
run: cat failing-ui-tests12.txt >> failing-ui-tests.txt
120126

121-
- name: Test
122-
if: matrix.libgccjit_version == 'libgccjit12.so'
127+
- name: Run tests
123128
run: |
124-
# Enable backtraces for easier debugging
125-
export RUST_BACKTRACE=1
126-
127-
# Reduce amount of benchmark runs as they are slow
128-
export COMPILE_RUNS=2
129-
export RUN_RUNS=2
130-
131-
./test.sh --release --no-default-features
129+
./test.sh --release --clean --build-sysroot ${{ matrix.commands }} ${{ matrix.libgccjit_version.extra }}
130+
duplicates:
131+
runs-on: ubuntu-latest
132+
steps:
133+
- uses: actions/checkout@v2
134+
- run: python tools/check_intrinsics_duplicates.py

Cargo.lock

Lines changed: 9 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ gccjit = { git = "https://github.com/antoyo/gccjit.rs" }
2727
# Local copy.
2828
#gccjit = { path = "../gccjit.rs" }
2929

30+
smallvec = { version = "1.6.1", features = ["union", "may_dangle"] }
3031
target-lexicon = "0.10.0"
3132

3233
ar = "0.8.0"

Readme.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,10 @@ To get the `rustc` command to run in `gdb`, add the `--verbose` flag to `cargo b
127127
* Build the stage2 compiler (`rustup toolchain link debug-current build/x86_64-unknown-linux-gnu/stage2`).
128128
* Clean and rebuild the codegen with `debug-current` in the file `rust-toolchain`.
129129

130+
### How to use [mem-trace](https://github.com/antoyo/mem-trace)
131+
132+
`rustc` needs to be built without `jemalloc` so that `mem-trace` can overload `malloc` since `jemalloc` is linked statically, so a `LD_PRELOAD`-ed library won't a chance to intercept the calls to `malloc`.
133+
130134
### How to build a cross-compiling libgccjit
131135

132136
#### Building libgccjit
@@ -142,6 +146,5 @@ To get the `rustc` command to run in `gdb`, add the `--verbose` flag to `cargo b
142146
* Since rustc doesn't support this architecture yet, set it back to `TARGET_TRIPLE="mips-unknown-linux-gnu"` (or another target having the same attributes). Alternatively, create a [target specification file](https://book.avr-rust.com/005.1-the-target-specification-json-file.html) (note that the `arch` specified in this file must be supported by the rust compiler).
143147
* Set `linker='-Clinker=m68k-linux-gcc'`.
144148
* Set the path to the cross-compiling libgccjit in `gcc_path`.
145-
* Disable the 128-bit integer types if the target doesn't support them by using `let i128_type = context.new_type::<i64>();` in `context.rs` (same for u128_type).
146149
* Comment the line: `context.add_command_line_option("-masm=intel");` in src/base.rs.
147150
* (might not be necessary) Disable the compilation of libstd.so (and possibly libcore.so?).

failing-ui-tests.txt

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
src/test/ui/alloc-error/default-alloc-error-hook.rs
2+
src/test/ui/allocator/custom-in-block.rs
3+
src/test/ui/allocator/custom-in-submodule.rs
4+
src/test/ui/allocator/custom.rs
5+
src/test/ui/allocator/hygiene.rs
6+
src/test/ui/allocator/no_std-alloc-error-handler-custom.rs
7+
src/test/ui/allocator/no_std-alloc-error-handler-default.rs
8+
src/test/ui/allocator/xcrate-use.rs
9+
src/test/ui/allocator/xcrate-use2.rs
10+
src/test/ui/asm/may_unwind.rs
11+
src/test/ui/asm/x86_64/const.rs
12+
src/test/ui/asm/x86_64/multiple-clobber-abi.rs
13+
src/test/ui/async-await/async-fn-size-moved-locals.rs
14+
src/test/ui/async-await/async-fn-size-uninit-locals.rs
15+
src/test/ui/backtrace.rs
16+
src/test/ui/cfg/cfg-panic.rs
17+
src/test/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs
18+
src/test/ui/functions-closures/parallel-codegen-closures.rs
19+
src/test/ui/generator/size-moved-locals.rs
20+
src/test/ui/issues/issue-32518.rs
21+
src/test/ui/issues/issue-47364.rs
22+
src/test/ui/issues/issue-74564-if-expr-stack-overflow.rs
23+
src/test/ui/linkage-attr/linkage1.rs
24+
src/test/ui/lto/dylib-works.rs
25+
src/test/ui/mir/mir_heavy_promoted.rs
26+
src/test/ui/numbers-arithmetic/saturating-float-casts.rs
27+
src/test/ui/polymorphization/promoted-function.rs
28+
src/test/ui/runtime/rt-explody-panic-payloads.rs
29+
src/test/ui/sepcomp/sepcomp-cci.rs
30+
src/test/ui/sepcomp/sepcomp-extern.rs
31+
src/test/ui/sepcomp/sepcomp-fns-backwards.rs
32+
src/test/ui/sepcomp/sepcomp-fns.rs
33+
src/test/ui/sepcomp/sepcomp-lib.rs
34+
src/test/ui/sepcomp/sepcomp-statics.rs
35+
src/test/ui/simd/generics.rs
36+
src/test/ui/simd/intrinsic/float-math-pass.rs
37+
src/test/ui/simd/intrinsic/float-minmax-pass.rs
38+
src/test/ui/simd/intrinsic/generic-arithmetic-pass.rs
39+
src/test/ui/simd/intrinsic/generic-as.rs
40+
src/test/ui/simd/intrinsic/generic-bitmask-pass.rs
41+
src/test/ui/simd/intrinsic/generic-comparison-pass.rs
42+
src/test/ui/simd/intrinsic/generic-gather-pass.rs
43+
src/test/ui/simd/intrinsic/generic-reduction-pass.rs
44+
src/test/ui/simd/intrinsic/generic-select-pass.rs
45+
src/test/ui/simd/issue-17170.rs
46+
src/test/ui/simd/issue-39720.rs
47+
src/test/ui/simd/issue-85915-simd-ptrs.rs
48+
src/test/ui/simd/issue-89193.rs
49+
src/test/ui/simd/libm_std_can_float.rs
50+
src/test/ui/simd/simd-bitmask.rs
51+
src/test/ui/simd/type-generic-monomorphisation-extern-nonnull-ptr.rs
52+
src/test/ui/sse2.rs
53+
src/test/ui/statics/issue-91050-1.rs
54+
src/test/ui/statics/issue-91050-2.rs
55+
src/test/ui/target-feature/missing-plusminus.rs

failing-ui-tests12.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
src/test/ui/intrinsics/const-eval-select-x86_64.rs
2+
src/test/ui/packed/packed-struct-drop-aligned.rs
3+
src/test/ui/packed/packed-struct-generic-layout.rs
4+
src/test/ui/packed/packed-struct-layout.rs
5+
src/test/ui/packed/packed-struct-optimized-enum.rs
6+
src/test/ui/packed/packed-struct-size.rs
7+
src/test/ui/packed/packed-struct-vec.rs
8+
src/test/ui/packed/packed-tuple-struct-layout.rs
9+
src/test/ui/simd/array-type.rs
10+
src/test/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs
11+
src/test/ui/simd/intrinsic/generic-cast-pass.rs
12+
src/test/ui/simd/intrinsic/generic-cast-pointer-width.rs
13+
src/test/ui/simd/intrinsic/generic-elements-pass.rs
14+
src/test/ui/simd/intrinsic/inlining-issue67557-ice.rs
15+
src/test/ui/simd/intrinsic/inlining-issue67557.rs
16+
src/test/ui/simd/monomorphize-shuffle-index.rs
17+
src/test/ui/simd/shuffle.rs
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
From c3821e02fbd6cb5ad6e06d759fccdc9073712375 Mon Sep 17 00:00:00 2001
2+
From: Antoni Boucher <bouanto@zoho.com>
3+
Date: Tue, 7 Jun 2022 21:40:13 -0400
4+
Subject: [PATCH] Add stdarch Cargo.toml for testing
5+
6+
---
7+
library/stdarch/Cargo.toml | 20 ++++++++++++++++++++
8+
1 file changed, 20 insertions(+)
9+
create mode 100644 library/stdarch/Cargo.toml
10+
11+
diff --git a/library/stdarch/Cargo.toml b/library/stdarch/Cargo.toml
12+
new file mode 100644
13+
index 0000000..fbe0a95
14+
--- /dev/null
15+
+++ b/library/stdarch/Cargo.toml
16+
@@ -0,0 +1,20 @@
17+
+[workspace]
18+
+members = [
19+
+ "crates/core_arch",
20+
+ "crates/std_detect",
21+
+ "crates/stdarch-gen",
22+
+ "examples/"
23+
+]
24+
+exclude = [
25+
+ "crates/wasm-assert-instr-tests"
26+
+]
27+
+
28+
+[profile.release]
29+
+debug = true
30+
+opt-level = 3
31+
+incremental = true
32+
+
33+
+[profile.bench]
34+
+debug = 1
35+
+opt-level = 3
36+
+incremental = true
37+
--
38+
2.26.2.7.g19db9cfb68.dirty
39+

src/allocator.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#[cfg(feature="master")]
2+
use gccjit::FnAttribute;
13
use gccjit::{FunctionType, GlobalKind, ToRValue};
24
use rustc_ast::expand::allocator::{AllocatorKind, AllocatorTy, ALLOCATOR_METHODS};
35
use rustc_middle::bug;
@@ -50,7 +52,8 @@ pub(crate) unsafe fn codegen(tcx: TyCtxt<'_>, mods: &mut GccContext, _module_nam
5052
let func = context.new_function(None, FunctionType::Exported, output.unwrap_or(void), &args, name, false);
5153

5254
if tcx.sess.target.options.default_hidden_visibility {
53-
// TODO(antoyo): set visibility.
55+
#[cfg(feature="master")]
56+
func.add_attribute(FnAttribute::Visibility(gccjit::Visibility::Hidden));
5457
}
5558
if tcx.sess.must_emit_unwind_tables() {
5659
// TODO(antoyo): emit unwind tables.
@@ -61,7 +64,8 @@ pub(crate) unsafe fn codegen(tcx: TyCtxt<'_>, mods: &mut GccContext, _module_nam
6164
.map(|(index, typ)| context.new_parameter(None, *typ, &format!("param{}", index)))
6265
.collect();
6366
let callee = context.new_function(None, FunctionType::Extern, output.unwrap_or(void), &args, callee, false);
64-
// TODO(antoyo): set visibility.
67+
#[cfg(feature="master")]
68+
callee.add_attribute(FnAttribute::Visibility(gccjit::Visibility::Hidden));
6569

6670
let block = func.new_block("entry");
6771

@@ -90,6 +94,11 @@ pub(crate) unsafe fn codegen(tcx: TyCtxt<'_>, mods: &mut GccContext, _module_nam
9094
.collect();
9195
let func = context.new_function(None, FunctionType::Exported, void, &args, name, false);
9296

97+
if tcx.sess.target.default_hidden_visibility {
98+
#[cfg(feature="master")]
99+
func.add_attribute(FnAttribute::Visibility(gccjit::Visibility::Hidden));
100+
}
101+
93102
let kind =
94103
if has_alloc_error_handler {
95104
AllocatorKind::Global
@@ -102,7 +111,8 @@ pub(crate) unsafe fn codegen(tcx: TyCtxt<'_>, mods: &mut GccContext, _module_nam
102111
.map(|(index, typ)| context.new_parameter(None, *typ, &format!("param{}", index)))
103112
.collect();
104113
let callee = context.new_function(None, FunctionType::Extern, void, &args, callee, false);
105-
//llvm::LLVMRustSetVisibility(callee, llvm::Visibility::Hidden);
114+
#[cfg(feature="master")]
115+
callee.add_attribute(FnAttribute::Visibility(gccjit::Visibility::Hidden));
106116

107117
let block = func.new_block("entry");
108118

0 commit comments

Comments
 (0)