Commit Graph

2736 Commits

Author SHA1 Message Date
Tomasz Miąsko
69bd5324ca Normalize main return type during mono item collection & codegen 2022-02-23 22:33:50 +01:00
bjorn3
057de8f12e Merge branch 'sync_from_rust' 2022-02-23 11:51:21 +01:00
bjorn3
b5cbb87e62 Merge commit '35d9c6bf256968e1b40e0d554607928bdf9cebea' into sync_cg_clif-2022-02-23 2022-02-23 11:49:34 +01:00
bjorn3
35d9c6bf25 Rustup to rustc 1.61.0-nightly (68369a041 2022-02-22) 2022-02-23 11:45:41 +01:00
bjorn3
ca1f3e752e Sync from rust bafe8d06e0 2022-02-23 11:38:28 +01:00
bjorn3
dc973aef2a Rustup to rustc 1.61.0-nightly (03a8cc7df 2022-02-21) 2022-02-22 20:37:22 +01:00
bjorn3
33cf8fafd8 Sync from rust 03a8cc7df1 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
Amanieu d'Antras
73cf3aaa78 Take CodegenFnAttrs into account when validating asm! register operands
Checking of asm! register operands now properly takes function
attributes such as #[target_feature] and #[instruction_set] into
account.
2022-02-21 18:28:22 +00:00
Amanieu d'Antras
e62c26e39d On ARM, use relocation_model to detect whether r9 should be reserved
The previous approach of checking for the reserve-r9 target feature
didn't actually work because LLVM only sets this feature very late when
initializing the per-function subtarget.
2022-02-21 18:28:22 +00:00
lcnr
d34bcdd49c use List<Ty<'tcx>> for tuples 2022-02-21 07:09:11 +01:00
bjorn3
2aad0066ba Update ignored rustc tests list 2022-02-20 17:11:59 +01:00
bjorn3
4a5b069558 Rustup to rustc 1.61.0-nightly (3b348d932 2022-02-19) 2022-02-20 16:28:22 +01:00
Mark Rousskov
7e80bc3c8d Move ty::print methods to Drop-based scope guards 2022-02-16 17:24:23 -05:00
bjorn3
f606a5807c Rustup to rustc 1.60.0-nightly (09cb29c64 2022-02-15) 2022-02-16 12:43:07 +01:00
bjorn3
4563abd4f1 Sync from rust a240ccd81c 2022-02-16 12:14:53 +01:00
Nicholas Nethercote
06bc64df92 Overhaul Const.
Specifically, rename the `Const` struct as `ConstS` and re-introduce `Const` as
this:
```
pub struct Const<'tcx>(&'tcx Interned<ConstS>);
```
This now matches `Ty` and `Predicate` more closely, including using
pointer-based `eq` and `hash`.

Notable changes:
- `mk_const` now takes a `ConstS`.
- `Const` was copy, despite being 48 bytes. Now `ConstS` is not, so need a
  we need separate arena for it, because we can't use the `Dropless` one any
  more.
- Many `&'tcx Const<'tcx>`/`&Const<'tcx>` to `Const<'tcx>` changes
- Many `ct.ty` to `ct.ty()` and `ct.val` to `ct.val()` changes.
- Lots of tedious sigil fiddling.
2022-02-15 16:19:59 +11:00
Nicholas Nethercote
18e7b7ece1 Overhaul RegionKind and Region.
Specifically, change `Region` from this:
```
pub type Region<'tcx> = &'tcx RegionKind;
```
to this:
```
pub struct Region<'tcx>(&'tcx Interned<RegionKind>);
```

This now matches `Ty` and `Predicate` more closely.

Things to note
- Regions have always been interned, but we haven't been using pointer-based
  `Eq` and `Hash`. This is now happening.
- I chose to impl `Deref` for `Region` because it makes pattern matching a lot
  nicer, and `Region` can be viewed as just a smart wrapper for `RegionKind`.
- Various methods are moved from `RegionKind` to `Region`.
- There is a lot of tedious sigil changes.
- A couple of types like `HighlightBuilder`, `RegionHighlightMode` now have a
  `'tcx` lifetime because they hold a `Ty<'tcx>`, so they can call `mk_region`.
- A couple of test outputs change slightly, I'm not sure why, but the new
  outputs are a little better.
2022-02-15 16:08:52 +11:00
Nicholas Nethercote
6a20fa93b5 Overhaul TyS and Ty.
Specifically, change `Ty` from this:
```
pub type Ty<'tcx> = &'tcx TyS<'tcx>;
```
to this
```
pub struct Ty<'tcx>(Interned<'tcx, TyS<'tcx>>);
```
There are two benefits to this.
- It's now a first class type, so we can define methods on it. This
  means we can move a lot of methods away from `TyS`, leaving `TyS` as a
  barely-used type, which is appropriate given that it's not meant to
  be used directly.
- The uniqueness requirement is now explicit, via the `Interned` type.
  E.g. the pointer-based `Eq` and `Hash` comes from `Interned`, rather
  than via `TyS`, which wasn't obvious at all.

Much of this commit is boring churn. The interesting changes are in
these files:
- compiler/rustc_middle/src/arena.rs
- compiler/rustc_middle/src/mir/visit.rs
- compiler/rustc_middle/src/ty/context.rs
- compiler/rustc_middle/src/ty/mod.rs

Specifically:
- Most mentions of `TyS` are removed. It's very much a dumb struct now;
  `Ty` has all the smarts.
- `TyS` now has `crate` visibility instead of `pub`.
- `TyS::make_for_test` is removed in favour of the static `BOOL_TY`,
  which just works better with the new structure.
- The `Eq`/`Ord`/`Hash` impls are removed from `TyS`. `Interned`s impls
  of `Eq`/`Hash` now suffice. `Ord` is now partly on `Interned`
  (pointer-based, for the `Equal` case) and partly on `TyS`
  (contents-based, for the other cases).
- There are many tedious sigil adjustments, i.e. adding or removing `*`
  or `&`. They seem to be unavoidable.
2022-02-15 16:03:24 +11:00
bjorn3
d459445799 Rustup to rustc 1.60.0-nightly (5d8767cb2 2022-02-12) 2022-02-13 12:24:02 +01:00
bjorn3
2ef3114671 Sync from rust 9a60099cc4 2022-02-13 11:57:51 +01:00
bjorn3
4e39cde7f3 Unconditionally update symbols
All paths to an ArchiveBuilder::build call update_symbols first.
2022-02-10 18:27:18 +01:00
Camille GILLOT
cf9c65bb58 Make FnAbiError Copy. 2022-02-09 20:11:29 +01:00
Camille GILLOT
d416c68114 Ensure that queries only return Copy types. 2022-02-09 20:07:38 +01:00
bjorn3
75a463a583 Update Cranelift to 0.81.0 2022-02-08 18:24:50 +01:00
bjorn3
583333a2b2 Don't try to reinstall ripgrep if it is already installed 2022-02-06 15:13:32 +01:00
bjorn3
441e2e67fa Rustup to rustc 1.60.0-nightly (88fb06a1f 2022-02-05) 2022-02-06 14:50:12 +01:00
bjorn3
bccf0a1f8d Merge codegen of a couple more simd intrinsics 2022-01-30 19:44:15 +01:00
bjorn3
5a3cfb24d8 Merge codegen of several simd intrinsics
This reduces code duplication
2022-01-30 19:37:01 +01:00
bjorn3
c1d699d37b Remove the remaining simd intrinsic macros 2022-01-30 19:31:18 +01:00
bjorn3
1ae27ea6aa Remove simd_cmp macro
This reduces duplication in the codegened source file
2022-01-30 19:19:54 +01:00
bjorn3
037aafbbaf Fix simd type validation 2022-01-30 18:35:08 +01:00
bjorn3
bb1b5cdde2 Remove validate_atomic_type
By expanding it in place. Also extract a common
report_atomic_type_validation_error function to reduce code duplication.
2022-01-30 18:23:01 +01:00
bjorn3
5efd7782b3 Don't generate unnecessary let $arg=$arg for intrinsics 2022-01-30 18:00:36 +01:00
bjorn3
246998f5ec Remove some unused lint allows 2022-01-30 17:43:09 +01:00
bjorn3
1b8ea0705e Add const_allocate and const_deallocate intrinsics 2022-01-30 17:35:33 +01:00
bjorn3
3ff158e3ed Update dependencies 2022-01-30 16:57:30 +01:00
bjorn3
96dc846a7d Rustup to rustc 1.60.0-nightly (a00e130da 2022-01-29) 2022-01-30 16:52:18 +01:00
bjorn3
2d32e51d86 Sync from rust a00e130dae 2022-01-30 13:25:57 +01:00
pierwill
2c26139bbc Use an indexmap to avoid sorting LocalDefIds
Update `indexmap` to 1.8.0.

Bless test
2022-01-22 22:34:16 -06:00
bjorn3
cc24cea101 Rustfmt 2022-01-19 16:38:58 +01:00
bjorn3
c6e607a947 Implement unchecked_mul intrinsic 2022-01-19 15:45:04 +01:00
bjorn3
7a8227ecf9 Rustup to rustc 1.60.0-nightly (9ad5d82f8 2022-01-18) 2022-01-19 15:36:14 +01:00
bjorn3
400f122709 Sync from rust 2f004d2d40 2022-01-19 15:26:05 +01:00
lcnr
513d72d007 remove is_noop 2022-01-19 13:58:29 +01:00
bjorn3
78b65718bc Split compile_fn out of codegen_fn 2022-01-18 19:07:26 +01:00
bjorn3
5f6c59e63f Pass only the Function to write_clif_file 2022-01-18 18:58:37 +01:00
bjorn3
f3b2d37e77 Record object file artifact size in self profile data 2022-01-18 15:24:11 +01:00
bjorn3
b91ecc78bf Update rustc test ignore list 2022-01-18 13:59:40 +01:00
bjorn3
0472f6c91c Use 2021 edition for libcore tests 2022-01-18 13:41:01 +01:00