Commit Graph

217672 Commits

Author SHA1 Message Date
Camille GILLOT 7e795bdf03 Replace _with_overflow instrinsics in LowerIntrinsics. 2023-02-18 21:45:10 +00:00
Camille GILLOT f79db59953 Adapt cg_clif. 2023-02-18 21:35:02 +00:00
Camille GILLOT c107e0e945 Fix codegen test. 2023-02-18 21:35:02 +00:00
Camille GILLOT c1a0f8205c Rename checked_binop_checks_overflow. 2023-02-18 21:35:02 +00:00
Camille GILLOT a5769193d1 Remove special case in rvalue codegen. 2023-02-18 21:35:02 +00:00
Camille GILLOT e9c73ea502 Make name more explicit. 2023-02-18 21:35:02 +00:00
Camille GILLOT 4f13aa7f46 Comment codegen optimization. 2023-02-18 21:35:02 +00:00
Camille Gillot 328696ca17 Update compiler/rustc_middle/src/mir/syntax.rs
Co-authored-by: Ralf Jung <post@ralfj.de>
2023-02-18 21:35:02 +00:00
Camille GILLOT fb1f7f747a Remove exception from MIR doc. 2023-02-18 21:35:02 +00:00
Camille GILLOT 085eaa7ee3 Adapt interpreter. 2023-02-18 21:35:02 +00:00
Camille GILLOT 7f36a3fcd7 Fix CTFE interpreter. 2023-02-18 21:35:02 +00:00
Camille GILLOT 4c93145b33 Remove outdated comment. 2023-02-18 21:35:02 +00:00
Camille GILLOT 7567f1f31d Adapt interpreter. 2023-02-18 21:35:02 +00:00
Camille GILLOT 1480b1c524 Correct comment. 2023-02-18 21:35:02 +00:00
Camille GILLOT d0cc00f758 Add comment. 2023-02-18 21:35:02 +00:00
Camille GILLOT 86dbcb5390 Add codegen test. 2023-02-18 21:35:02 +00:00
Camille GILLOT e34caaf42d Remove overflow checks from ConstProp. 2023-02-18 21:35:02 +00:00
Camille GILLOT 4bd2ebc58b Do not codegen overflow check when not required. 2023-02-18 21:35:02 +00:00
bors 3eb5c4581a Auto merge of #108211 - matthiaskrgr:rollup-e59onmm, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #108031 (Don't recover lifetimes/labels containing emojis as character literals)
 - #108046 (Don't allow evaluating queries that were fed in a previous compiler run)
 - #108162 (Don't eagerly convert principal to string)
 - #108186 (Deny non-lifetime bound vars in `for<..> ||` closure binders)
 - #108197 (Update cargo)
 - #108205 (link to llvm changes that prompted the special cases)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-02-18 12:53:09 +00:00
Matthias Krüger 6c91efd6d7 Rollup merge of #108205 - tshepang:why-special-case, r=cjgillot
link to llvm changes that prompted the special cases
2023-02-18 13:26:48 +01:00
Matthias Krüger 5d5e0b0fae Rollup merge of #108197 - weihanglo:update-cargo, r=weihanglo
Update cargo

10 commits in 39c13e67a5962466cc7253d41bc1099bbcb224c3..17b3d0de0897e1c6b8ca347bd39f850bb0a5b9f6 2023-02-12 02:01:08 +0000 to 2023-02-17 19:45:09 +0000

- fix: unsupported protocol error on old macos version (rust-lang/cargo#11733)
- Error on invalid alphanumeric token for crates.io (rust-lang/cargo#11600)
- Add clippy lints (rust-lang/cargo#11722)
- chore: Make dependencies alphabetical order (rust-lang/cargo#11719)
- chore: bump mdbook to 0.4.27 (rust-lang/cargo#11716)
- Amend `mdman` tests. (rust-lang/cargo#11715)
- Run CI for macOS on nightly (rust-lang/cargo#11712)
- doc: doc comments and intra-doc links for `core::compiler` (rust-lang/cargo#11711)
- Ensure em dashes are recognizable in markup (rust-lang/cargo#11646)
- Set CARGO_BIN_NAME environment variable also for binary examples (rust-lang/cargo#11705)

r? `@ghost`
2023-02-18 13:26:48 +01:00
Matthias Krüger d3d5163921 Rollup merge of #108186 - compiler-errors:closures-with-late-bound-types-r-bad, r=cjgillot
Deny non-lifetime bound vars in `for<..> ||` closure binders

Moves the check for illegal bound var types from astconv to resolve_bound_vars. If a binder is defined to have a type or const late-bound var that's not allowed, we'll resolve any usages to ty error or const error values, so we shouldn't ever see late-bound types or consts in places they aren't expected.

Fixes #108184
Fixes #108181
Fixes #108192
2023-02-18 13:26:47 +01:00
Matthias Krüger 7f9d9de82d Rollup merge of #108162 - clubby789:issue-108155, r=Nilstrieb
Don't eagerly convert principal to string

Fixes #108155

~~I haven't yet been able to reproduce the ICE in a minimal example unfortunately.~~ Added a test
2023-02-18 13:26:47 +01:00
Matthias Krüger d9c9040290 Rollup merge of #108046 - oli-obk:no_evaluating_fed_queries, r=cjgillot
Don't allow evaluating queries that were fed in a previous compiler run

r? `@cjgillot`

this code was already unreachable. Also we removed the no_hash + feeding restriction in https://github.com/rust-lang/rust/pull/105220.
2023-02-18 13:26:46 +01:00
Matthias Krüger 3035ccbcb9 Rollup merge of #108031 - jieyouxu:issue-108019, r=estebank
Don't recover lifetimes/labels containing emojis as character literals

Fixes #108019.

Note that at the time of this commit, `unic-emoji-char` seems to have data tables only up to Unicode 5.0, but Unicode is already newer than this.

A newer emoji such as `🥺` will not be recognized as an emoji but older emojis such as `🐱` will.

This PR leaves a couple of FIXMEs where `unic_emoji_char::is_emoji` is used.
2023-02-18 13:26:46 +01:00
bors 3701bdc633 Auto merge of #107329 - joboet:optimize_lazylock, r=m-ou-se
Optimize `LazyLock` size

The initialization function was unnecessarily stored separately from the data to be initialized. Since both cannot exist at the same time, a `union` can be used, with the `Once` acting as discriminant. This unfortunately requires some extra methods on `Once` so that `Drop` can be implemented correctly and efficiently.

`@rustbot` label +T-libs +A-atomic
2023-02-18 09:29:21 +00:00
Tshepang Mbambo 8ab795ef08 add a summary, in addition to the link 2023-02-18 11:09:40 +02:00
Tshepang Mbambo 225e01ee79 link to llvm changes that prompted the special cases 2023-02-18 09:59:41 +02:00
bors 6d819a4b8f Auto merge of #106476 - keith:ks/add-sanitizer-support-for-modern-ios-platforms, r=badboy
Add sanitizer support for modern iOS platforms

asan and tsan generally support iOS, but that previously wasn't configured in rust. This only adds support for the simulator architectures, and arm64 device architecture, not the older 32 bit architectures.
2023-02-18 05:58:41 +00:00
Michael Goulet 5ec812ddfd Add addl test 2023-02-18 03:34:27 +00:00
Michael Goulet cec7835d7a Move late-bound arg type checks to resolve_bound_vars 2023-02-18 03:28:54 +00:00
bors fabfd1fd93 Auto merge of #99679 - repnop:kernel-address-sanitizer, r=cuviper
Add `kernel-address` sanitizer support for freestanding targets

This PR adds support for KASan (kernel address sanitizer) instrumentation in freestanding targets. I included the minimal set of `x86_64-unknown-none`, `riscv64{imac, gc}-unknown-none-elf`, and `aarch64-unknown-none` but there's likely other targets it can be added to. (`linux_kernel_base.rs`?) KASan uses the address sanitizer attributes but has the `CompileKernel` parameter set to `true` in the pass creation.
2023-02-18 03:05:11 +00:00
Michael Goulet fded2e95ab Adjust tracking issue for non_lifetime_binders 2023-02-18 02:42:43 +00:00
bors a9842c73bc Auto merge of #108112 - nnethercote:clarify-iterator-interners, r=oli-obk,compiler-errors
Clarify iterator interners

I found the iterator interners very confusing. This PR clarifies things.

r? `@compiler-errors`
2023-02-18 00:20:52 +00:00
Weihang Lo 55a7915a8b Update cargo
10 commits in 39c13e67a5962466cc7253d41bc1099bbcb224c3..17b3d0de0897e1c6b8ca347bd39f850bb0a5b9f6
2023-02-12 02:01:08 +0000 to 2023-02-17 19:45:09 +0000

- fix: unsupported protocol error on old macos version (rust-lang/cargo#11733)
- Error on invalid alphanumeric token for crates.io (rust-lang/cargo#11600)
- Add clippy lints (rust-lang/cargo#11722)
- chore: Make dependencies alphabetical order (rust-lang/cargo#11719)
- chore: bump mdbook to 0.4.27 (rust-lang/cargo#11716)
- Amend `mdman` tests. (rust-lang/cargo#11715)
- Run CI for macOS on nightly (rust-lang/cargo#11712)
- doc: doc comments and intra-doc links for `core::compiler` (rust-lang/cargo#11711)
- Ensure em dashes are recognizable in markup (rust-lang/cargo#11646)
- Set CARGO_BIN_NAME environment variable also for binary examples (rust-lang/cargo#11705)
2023-02-17 23:56:00 +00:00
bors 231bcd131d Auto merge of #105274 - saethlin:instcombine-mut-ref, r=cjgillot
Enable instcombine for mutable reborrows

`instcombine` used to contain this comment, which is no longer accurate because there it is fine to copy `&mut _` in MIR:
```rust
// The dereferenced place must have type `&_`, so that we don't copy `&mut _`.
```
So let's try replacing that check with something much more permissive...
2023-02-17 20:50:11 +00:00
bors 9aa5c24b7d Auto merge of #108075 - WaffleLapkin:de-arena-allocates-you-OwO, r=Nilstrieb
Remove `arena_cache` modifier from `associated_item` query & copy `ty::AssocItem` instead of passing by ref

r? `@ghost`
2023-02-17 17:42:51 +00:00
Oli Scherer b4182d240a Don't allow evaluating queries that were fed in a previous compiler run 2023-02-17 16:16:01 +00:00
clubby789 eebd31c187 Don't eagerly convert principal to string 2023-02-17 14:44:58 +00:00
bors f722b24eb9 Auto merge of #108159 - matthiaskrgr:rollup-5k2j7cx, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #107592 (Default `repr(C)` enums to `c_int` size)
 - #107956 (Copy `bin/*` and `lib/*.dylib` files to `stage0-sysroot`)
 - #108126 (fix a line, and do a consistency fix)
 - #108144 (Add compiler-errors to a few more triagebot groups)
 - #108149 (typo)
 - #108154 (`BasicBlock::new(0)` -> `START_BLOCK` [no functional changes])

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-02-17 14:27:28 +00:00
Matthias Krüger ae5473c969 Rollup merge of #108154 - scottmcm:start-block-cleanup, r=compiler-errors
`BasicBlock::new(0)` -> `START_BLOCK` [no functional changes]
2023-02-17 12:39:07 +01:00
Matthias Krüger 392b150011 Rollup merge of #108149 - tshepang:typo, r=Dylan-DPC
typo
2023-02-17 12:39:07 +01:00
Matthias Krüger a8685ebf4d Rollup merge of #108144 - compiler-errors:triagebot-more, r=Mark-Simulacrum
Add compiler-errors to a few more triagebot groups

Self-explanatory
2023-02-17 12:39:07 +01:00
Matthias Krüger e53bd4c282 Rollup merge of #108126 - tshepang:nits, r=lcnr
fix a line, and do a consistency fix
2023-02-17 12:39:06 +01:00
Matthias Krüger 99567662ab Rollup merge of #107956 - KittyBorgX:master, r=ozkanonur
Copy `bin/*` and `lib/*.dylib` files to `stage0-sysroot`

Fixes #101691
2023-02-17 12:39:06 +01:00
Matthias Krüger e0aa5613d8 Rollup merge of #107592 - workingjubilee:use-16-bit-enum-on-16-bit-targets, r=WaffleLapkin
Default `repr(C)` enums to `c_int` size

This is what ISO C strongly implies this is correct, and
many processor-specific ABIs imply or mandate this size, so
"everyone" (LLVM, gcc...) defaults to emitting enums this way.
However, this is by no means guaranteed by ISO C,
and the bare-metal Arm targets show it can be overridden,
which rustc supports via `c-enum-min-bits` in a target.json.

The override is a flag named `-fshort-enums` in clang and gcc,
but introducing a CLI flag is probably unnecessary for rustc.
This flag can be used by non-Arm microcontroller targets,
like AVR and MSP430, but it is not enabled for them by default.
Rust programmers who know the size of a target's enums
can use explicit reprs, which also lets them match C23 code.

This change is most relevant to 16-bit targets: AVR and MSP430.
Most of rustc's targets use 32-bit ints, but ILP64 does exist.
Regardless, rustc should now correctly handle enums for
both very small and very large targets.

Thanks to William for confirming MSP430 behavior,
and to Waffle for better style and no-core `size_of` asserts.

Fixes rust-lang/rust#107361
Fixes rust-lang/rust#77806
2023-02-17 12:39:05 +01:00
bors f4f5fc3e5c Auto merge of #107965 - BoxyUwU:add_const_arg_has_type_predicate, r=compiler-errors
Add `Clause::ConstArgHasType`

Currently the way that we check that a const arg has the correct type for the const param it is an argument for is by setting the expected type of `typeck` on the anon const of the argument to be the const param's type.

In the future for a potential `min_generic_const_exprs` we will allow providing const arguments that do not have an associated anon const that can be typeck'd which will require us to actually check that  the const argument has the correct type. While it would potentially be possible to just call `eq` when creating substs this would not work if we support generics of the form `const N: T, T` (the const parameters type referencing generics declared after itself).

Additionally having `ConstArgHasType` will allow us to potentially make progress on removing the `ty` field of `Const` which may be desirable. Once progress has been made on this, `ConstArgHasType` will also be helpful in ensuring we do not make mistakes in trait/impl checking by declaring functions with the wrong const parameter types as the checks that the param env is compatible would catch it. (We have messed this up in the past, and with generic const parameter types these checks will get more complex)

There is a [document](https://hackmd.io/wuCS6CJBQ9-fWbwaW7nQRw?view) about the types of const generics that may provide some general information on this subject

---

This PR shouldn't have any impact on whether code compiles or not on stable, it primarily exists to make progress on unstable const generics features that are desirable.
2023-02-17 11:27:21 +00:00
Nicholas Nethercote af32411f20 Avoid double-interning some BoundVariableKinds.
This function has this line twice:
```
let bound_vars = tcx.intern_bound_variable_kinds(&bound_vars);
```
The second occurrence is effectively a no-op, because the first
occurrence interned any that needed it.
2023-02-17 22:24:34 +11:00
Nicholas Nethercote 107f14d2ca Replace more mk_foo calls with infer_foo. 2023-02-17 22:24:34 +11:00
Nicholas Nethercote 2017aeff88 Use IntoIterator for mk_fn_sig.
This makes a lot of call sites nicer.
2023-02-17 22:24:34 +11:00