1399 Commits

Author SHA1 Message Date
bjorn3
acf93987bc Rustfmt 2022-05-06 18:54:13 +02:00
bjorn3
74b9232ee8 Fix assert_assignable for array types
Fixes #1226
2022-05-06 18:26:20 +02:00
bjorn3
f52162f75c Fix #[track_caller] location for function chains 2022-04-30 16:21:43 +02:00
bjorn3
f3fc94f239 Fix #[track_caller] with MIR inlining 2022-04-30 15:01:57 +02:00
bjorn3
2e65a8f2ca Use -Zcodegen-backend instead of a rustc replacement in cargo-clif 2022-04-29 19:13:41 +02:00
bjorn3
617171e930 Remove cg_clif_build_sysroot 2022-04-29 19:07:32 +02:00
bjorn3
88b5f5722a Use jit_builder.symbol instead of #[no_mangle] for __clif_jit_fn
#[no_mangle] doesn't resolve when the codegen backend is opened with RTLD_LOCAL
2022-04-27 17:30:46 +02:00
bjorn3
f2cdd4a78d Rustup to rustc 1.62.0-nightly (879aff385 2022-04-20) 2022-04-21 20:54:50 +02:00
bjorn3
acb32e6eb5 Sync from rust 1dec35a1b0df406da5d7cae55a7fa8d186a2b028 2022-04-21 20:23:21 +02:00
bjorn3
89c67a87bc Remove option to select regalloc algorithm
The main branch of Cranelift has switched to a new register allocator.
This register allocator doesn't have any alternative regalloc algorithms
unlike the old register allocator.
2022-04-17 19:41:28 +02:00
Jakob Degen
a923e9211a Add new Deinit statement kind 2022-04-11 08:55:03 -04:00
klensy
f2d2ec3e93 check_doc_keyword: don't alloc string for emptiness check
check_doc_alias_value: get argument as Symbol to prevent needless string convertions

check_doc_attrs: don't alloc vec, iterate over slice. Vec introduced in #83149, but no perf run posted on merge

replace as_str() check with symbol check

get_single_str_from_tts: don't prealloc string

trivial string to str replace

LifetimeScopeForPath::NonElided use Vec<Symbol> instead of Vec<String>

AssertModuleSource use BTreeSet<Symbol> instead of BTreeSet<String>

CrateInfo.crate_name replace FxHashMap<CrateNum, String> with FxHashMap<CrateNum, Symbol>
2022-04-08 11:45:57 +03:00
Oli Scherer
2efede7749 Mark scalar layout unions so that backends that do not support partially initialized scalars can special case them. 2022-04-05 13:18:21 +00:00
bjorn3
bc62bd55bd Sync from rust 949b98cab8a186b98bf87e64374b8d0848c55271 2022-04-05 11:31:42 +02:00
Loïc BRANSTETT
69046fa8fd Cleanup after some refactoring in rustc_target 2022-04-03 21:29:57 +02:00
Yuri Astrakhan
7665d87638 Addressed comments by @compiler-errors and @bjorn3 2022-03-30 17:04:46 -04:00
Yuri Astrakhan
421baaff3f Spellchecking compiler comments
This PR cleans up the rest of the spelling mistakes in the compiler comments. This PR does not change any literal or code spelling issues.
2022-03-30 15:14:15 -04:00
bjorn3
11007c02f7 Use fma(f) libm function for simd_fma intrinsic 2022-03-25 20:42:58 +01:00
bjorn3
3c030e2425 Fix NaN handling of simd float min and max operations 2022-03-25 20:25:11 +01:00
bjorn3
f3d97cce27 Fix saturating float casts test
Fixes #737
2022-03-25 19:32:14 +01:00
bjorn3
d1904e5855 Merge commit '370c397ec9169809e5ad270079712e0043514240' into sync_cg_clif-2022-03-20 2022-03-20 16:55:21 +01:00
bjorn3
370c397ec9 Run part of the simd test suite 2022-03-20 12:14:24 +01:00
bjorn3
215905cdc8 Wrap write_mir_fn call in with_no_trimmed_paths!() 2022-03-20 12:14:05 +01:00
bjorn3
670ee7ec28 Sync from rust 31535841701e0bf7ef33998024376f2cedd8b3e3 2022-03-19 13:28:22 +01:00
bjorn3
ef4512b7dc Codegen 128bit atomic loads and stores for compiler builtins as trap
128bit atomics are unstable and only enabled on AArch64 and x86_64 macOS.
Cranelift doesn't support 128bit atomics yet.
2022-03-19 12:56:03 +01:00
bors
86daae2e6b Auto merge of #88098 - Amanieu:oom_panic, r=nagisa
Implement -Z oom=panic

This PR removes the `#[rustc_allocator_nounwind]` attribute on `alloc_error_handler` which allows it to unwind with a panic instead of always aborting. This is then used to implement `-Z oom=panic` as per RFC 2116 (tracking issue #43596).

Perf and binary size tests show negligible impact.
2022-03-18 03:01:46 +00:00
bjorn3
ce577f7f12 Fix and re-enable some rustc tests
* Set `config.opts.trimmed_def_paths` to `GoodPath` to trim def paths in
  error messages as expected by the rustc test suite
* Fix `$SRC_DIR` normalization for out of tree compiled standard library
2022-03-17 20:59:39 +01:00
mark
c56a10ca3b rustc_error: make ErrorReported impossible to construct
There are a few places were we have to construct it, though, and a few
places that are more invasive to change. To do this, we create a
constructor with a long obvious name.
2022-03-16 10:35:24 -05:00
bjorn3
88c3719c68 Avoid once_cell unstable feature in cg_clif.rs 2022-03-15 19:25:33 +01:00
bjorn3
d8e7501584 Replace a lot of print+trap with plain trap
This reduces binary sizes by a decent amount:

libstd.so: 17% reduction
mini_core_hello_world: 27% reduction
simple-raytracer: 27% reduction

This also improves compile time of simple-raytracer by 0.5s (4% +- 2%)
In addition it is also a pre-requisite for building standalone binaries.
2022-03-14 12:02:36 +01:00
bjorn3
90f8aefe71 Mark cold blocks 2022-03-13 19:36:40 +01:00
bjorn3
a48fea6dda Add and remove some fixmes 2022-03-13 17:58:02 +01:00
bjorn3
fef517eae7 Remove almost all remaining feature gates
Only rustc_private is still enabled as cg_clif by definition needs to
use internal rustc api's.
2022-03-13 17:55:55 +01:00
bjorn3
cfc1a2cd68 Remove decl_macro usage
This reduces the amount of unstable features used by cg_clif
2022-03-13 15:19:48 +01:00
bjorn3
6e42ca187f Sync from rust 4800c7816ee1937d028407066d229f74b4673c92 2022-03-13 14:39:10 +01:00
Nicholas Nethercote
e439761b8f Improve AdtDef interning.
This commit makes `AdtDef` use `Interned`. Much the commit is tedious
changes to introduce getter functions. The interesting changes are in
`compiler/rustc_middle/src/ty/adt.rs`.
2022-03-11 13:31:24 +11:00
bjorn3
54920ff25e Add missing clif ir comment 2022-03-09 19:33:55 +01:00
bjorn3
3ccf12acdd Update Cranelift to 0.82.0 2022-03-08 20:01:48 +01:00
bjorn3
401b03443b Fix Box deref for non-ZST allocators 2022-03-08 20:00:11 +01:00
bjorn3
2577efb434 Sync from rust 67b3e8183830c7af4e06a9aa91de4d1be3c860f7 2022-03-08 11:11:51 +01:00
Nicholas Nethercote
8723fe0b6b Clarify Layout interning.
`Layout` is another type that is sometimes interned, sometimes not, and
we always use references to refer to it so we can't take any advantage
of the uniqueness properties for hashing or equality checks.

This commit renames `Layout` as `LayoutS`, and then introduces a new
`Layout` that is a newtype around an `Interned<LayoutS>`. It also
interns more layouts than before. Previously layouts within layouts
(via the `variants` field) were never interned, but now they are. Hence
the lifetime on the new `Layout` type.

Unlike other interned types, these ones are in `rustc_target` instead of
`rustc_middle`. This reflects the existing structure of the code, which
does layout-specific stuff in `rustc_target` while `TyAndLayout` is
generic over the `Ty`, allowing the type-specific stuff to occur in
`rustc_middle`.

The commit also adds a `HashStable` impl for `Interned`, which was
needed. It hashes the contents, unlike the `Hash` impl which hashes the
pointer.
2022-03-07 13:41:47 +11:00
Nicholas Nethercote
7c1a318c7b Introduce ConstAllocation.
Currently some `Allocation`s are interned, some are not, and it's very
hard to tell at a use point which is which.

This commit introduces `ConstAllocation` for the known-interned ones,
which makes the division much clearer. `ConstAllocation::inner()` is
used to get the underlying `Allocation`.

In some places it's natural to use an `Allocation`, in some it's natural
to use a `ConstAllocation`, and in some places there's no clear choice.
I've tried to make things look as nice as possible, while generally
favouring `ConstAllocation`, which is the type that embodies more
information. This does require quite a few calls to `inner()`.

The commit also tweaks how `PartialOrd` works for `Interned`. The
previous code was too clever by half, building on `T: Ord` to make the
code shorter. That caused problems with deriving `PartialOrd` and `Ord`
for `ConstAllocation`, so I changed it to build on `T: PartialOrd`,
which is slightly more verbose but much more standard and avoided the
problems.
2022-03-07 08:25:50 +11:00
bjorn3
c5ec4d353c Fix typo 2022-03-04 20:45:04 +01:00
Amanieu d'Antras
e29149552e Add -Z oom={panic,abort} command-line option 2022-03-03 12:58:38 +00:00
mark
346108202d rename ErrorReported -> ErrorGuaranteed 2022-03-02 09:45:25 -06:00
Tomasz Miąsko
69bd5324ca Normalize main return type during mono item collection & codegen 2022-02-23 22:33:50 +01:00
bjorn3
b5cbb87e62 Merge commit '35d9c6bf256968e1b40e0d554607928bdf9cebea' into sync_cg_clif-2022-02-23 2022-02-23 11:49:34 +01:00
bjorn3
ca1f3e752e Sync from rust bafe8d06e015eb00724d3d497516191d6681943f 2022-02-23 11:38:28 +01:00
bjorn3
33cf8fafd8 Sync from rust 03a8cc7df1d65554a4d40825b0490c93ac0f0236 2022-02-22 19:55:24 +01:00
Matthias Krüger
a063e138b6 Rollup merge of #94169 - Amanieu:asm_stuff, r=nagisa
Fix several asm! related issues

This is a combination of several fixes, each split into a separate commit. Splitting these into PRs is not practical since they conflict with each other.

Fixes #92378
Fixes #85247

r? ``@nagisa``
2022-02-22 12:16:28 +01:00