Commit graph

298901 commits

Author SHA1 Message Date
Oli Scherer
2260f77e50
Merge pull request #4303 from RalfJung/determinism
add -Zmiri-deterministic-concurrency flag and use it for concurrency tests
2025-04-30 06:23:26 +00:00
Lukas Wirth
1b677ce14f chore: Adjust panic context printing 2025-04-30 07:40:11 +02:00
bors
427288b3ce Auto merge of #140188 - nnethercote:streamline-format-macro, r=cuviper
Streamline the `format` macro.

Removing the unnecessary local variable speeds up compilation a little.

r? `@cuviper`
2025-04-30 04:04:21 +00:00
Michael Goulet
f986d124f1 Inline check_method_argument_types and remove error_reported special casing (unnecessary) 2025-04-30 03:53:55 +00:00
Michael Goulet
6aa3dd1943 Inline check_method_argument_types to get rid of TupleArgumentsFlag arg 2025-04-30 02:58:29 +00:00
Michael Goulet
e650c1da46 Move the error handling out of confirm_builtin_call 2025-04-30 02:58:28 +00:00
Michael Goulet
bd2c653374 Rename lookup_method_in_trait and consolidate a Ident::with_dummy_span call 2025-04-30 02:58:28 +00:00
Eric Huss
2b92f9fb98 Parser: Document restrictions
I had trouble easily understanding what these various flags do. This is
my attempt to try to explain what these do.
2025-04-29 18:05:45 -07:00
bors
f242d6c26c Auto merge of #127516 - nnethercote:simplify-LazyAttrTokenStream, r=petrochenkov
Simplify `LazyAttrTokenStream`

`LazyAttrTokenStream` is an unpleasant type: `Lrc<Box<dyn ToAttrTokenStream>>`. Why does it look like that?
- There are two `ToAttrTokenStream` impls, one for the lazy case, and one for the case where we already have an `AttrTokenStream`.
- The lazy case (`LazyAttrTokenStreamImpl`) is implemented in `rustc_parse`, but `LazyAttrTokenStream` is defined in `rustc_ast`, which does not depend on `rustc_parse`. The use of the trait lets `rustc_ast` implicitly depend on `rustc_parse`. This explains the `dyn`.
- `LazyAttrTokenStream` must have a `size_of` as small as possible, because it's used in many AST nodes. This explains the `Lrc<Box<_>>`, which keeps it to one word. (It's required `Lrc<dyn _>` would be a fat pointer.)

This PR moves `LazyAttrTokenStreamImpl` (and a few other token stream things) from `rustc_parse` to `rustc_ast`. This lets us replace the `ToAttrTokenStream` trait with a two-variant enum and also remove the `Box`, changing `LazyAttrTokenStream` to `Lrc<LazyAttrTokenStreamInner>`. Plus it does a few cleanups.

r? `@petrochenkov`
2025-04-30 00:09:21 +00:00
lcnr
7275462ab9 canonical no type foldable :< 2025-04-29 23:17:31 +00:00
Trevor Gross
caf337d467 Refactor the fma modules
Move implementations to `generic/` like the other functions. This also
allows us to combine the `fma` and `fma_wide` modules.
2025-04-29 19:09:50 -04:00
Trevor Gross
6d83a3226f Move fma implementations to mod generic
This will not build correctly, the move is done as a separate step from
the rest of refactoring so git's history is cleaner.
2025-04-29 19:09:50 -04:00
antoyo
6d8fffec36
Merge pull request #586 from g4titanx/contributing
improve doc for new contributors
2025-04-29 19:07:43 -04:00
Antoni Boucher
43747cecfb Fix links in CONTRIBUTING.md 2025-04-29 18:45:26 -04:00
Antoni Boucher
2e9ec931da Fix links in CONTRIBUTING.md 2025-04-29 18:42:25 -04:00
Antoni Boucher
62814f0995 Improve the doc 2025-04-29 18:36:29 -04:00
Antoni Boucher
d11bfe9c18 Use the correct name of the project 2025-04-29 18:23:23 -04:00
Antoni Boucher
f150171b6c Some improvements 2025-04-29 18:21:04 -04:00
Trevor Gross
8d789ea8f1 Resolve unnecessary_transmutes lints
These appeared in a later nightly. In compiler-builtins we can apply the
suggestion, but in `libm` we need to ignore them since `fx::from_bits`
is not `const` at the MSRV.

`clippy::uninlined_format_args` also seems to have gotten stricter, so
fix those here.
2025-04-29 18:15:02 -04:00
g4titanx
a5b947ba1c modify docs 2025-04-29 17:59:56 -04:00
g4titanx
ce5a198239 add contibuting.md 2025-04-29 17:59:56 -04:00
Tshepang Mbambo
48bbf5a91b
for a more friendly output
Also, these are normal Rust things (crates/packages), so remove the word *normal*.
2025-04-29 23:39:06 +02:00
Nicholas Nethercote
880e6f716d Use ThinVec to shrink LazyAttrTokenStreamInner. 2025-04-30 07:12:09 +10:00
Nicholas Nethercote
298c56f4ba Simplify LazyAttrTokenStream.
This commit does the following.
- Changes it from `Lrc<Box<dyn ToAttrTokenStream>>` to
  `Lrc<LazyAttrTokenStreamInner>`.
- Reworks `LazyAttrTokenStreamImpl` as `LazyAttrTokenStreamInner`, which
  is a two-variant enum.
- Removes the `ToAttrTokenStream` trait and the two impls of it.

The recursion limit must be increased in some crates otherwise rustdoc
aborts.
2025-04-30 07:10:56 +10:00
bors
0fbb922e53 Auto merge of #140023 - cjgillot:arena-try-alloc, r=BoxyUwU
Introduce Arena::try_alloc_from_iter.

`alloc_from_iter` already collects the iterator for reentrancy. So adding an early exit for a fallible iterator integrates naturally into the code. This avoids the other solution to allocate and dump the allocation.
2025-04-29 21:06:15 +00:00
Tshepang Mbambo
029a2c4746
Merge pull request #2363 from smanilov/patch-1
Update compiler-src.md
2025-04-29 23:01:31 +02:00
Caleb Cartwright
04300d84bd Also allow bool literals as first item of let chain
Co-authored-by: est31 <est31@users.noreply.github.com>
2025-04-29 15:36:23 -05:00
binarycat
851decdd4f mention provenance in the pointer::wrapping_offset docs
fixes https://github.com/rust-lang/rust/issues/139008
2025-04-29 14:29:08 -05:00
Travis Cross
c7eeeb1263 Merge PR #2360: Add docs about stabilizing an edition 2025-04-29 19:09:46 +00:00
Tomasz Miąsko
88a86794b9 transmutability: uninit transition matches unit byte only
The previous implementation was inconsistent about transitions that
apply for an init byte. For example, when answering a query, an init
byte could use corresponding init transition. Init byte could also use
uninit transition, but only when the corresponding init transition was
absent. This behaviour was incompatible with DFA union construction.

Define an uninit transition to match an uninit byte only and update
implementation accordingly. To describe that `Tree::uninit` is valid
for any value, build an automaton that accepts any byte value.

Additionally, represent byte ranges uniformly as a pair of integers to
avoid special case for uninit byte.
2025-04-29 20:42:43 +02:00
Boxy
0f9146bcb5
Merge pull request #2365 from BoxyUwU/norm_footnotes
Fix footnotes
2025-04-29 19:38:28 +01:00
Boxy
7f1ae9b8c0 Fix footnotes 2025-04-29 19:35:26 +01:00
Jon Bauman
dd20225681
Update rc.rs docs
`wrapped_add` is used, not `checked_add`
2025-04-29 11:24:31 -07:00
lcnr
fcec80ab24
Merge pull request #2266 from BoxyUwU/normalization
Introduce a normalization chapter
2025-04-29 20:19:27 +02:00
Boxy
e2fb99c97e Introduce a normalization chapter 2025-04-29 19:08:55 +01:00
Ralf Jung
bbcc6a24cd add -Zmiri-deterministic-concurrency flag and use it for concurrency tests 2025-04-29 20:08:25 +02:00
Daniel Paoliello
c3befaa8ff Require sanitizers be enabled for asan_odr_windows.rs 2025-04-29 10:55:22 -07:00
Boxy
c31794d6d3 confusings 2025-04-29 18:55:21 +01:00
Lukas Wirth
fedec9b79d
Merge pull request #19716 from Veykril/push-wmmvswskoktw
Update salsa
2025-04-29 17:54:36 +00:00
Lukas Wirth
3f92794939 Split out salsa_macros
Does not do much yet due to tracing pulling syn but oh well
2025-04-29 19:43:36 +02:00
Boxy
be906131de Don't FCW assoc consts in patterns 2025-04-29 18:41:42 +01:00
bohan
e9d2fefe0c stop check paren if has different ctx 2025-04-30 01:29:44 +08:00
Lukas Wirth
0e139b8995 Update salsa 2025-04-29 19:26:19 +02:00
mejrs
9b33cea260 Delete unused ui/auxiliary crates 2025-04-29 18:42:10 +02:00
bors
74509131e8 Auto merge of #140474 - tgross35:rollup-rdkao89, r=tgross35
Rollup of 7 pull requests

Successful merges:

 - #138344 (Enable `reliable_f16_math` on x86)
 - #139909 (implement or-patterns for pattern types)
 - #140392 (compiletest: Remove the libtest-based executor and its dependency)
 - #140400 (PassWrapper: adapt for llvm/llvm-project@d3d856ad84)
 - #140422 (unwind: bump `unwinding` dependency to 0.2.6)
 - #140432 (Update documentation for `fn target_config`)
 - #140433 (Replace the \01__gnu_mcount_nc to LLVM intrinsic for additional ARM targets)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-04-29 16:31:27 +00:00
Trevor Gross
ff6a9800a3
Rollup merge of #140433 - BjoernLange:master, r=nnethercote
Replace the \01__gnu_mcount_nc to LLVM intrinsic for additional ARM targets

This is an extension to #113814 which seems to have missed two targets which also need this patch for instrumentation with `-Z instrument-mcount` to work correctly.

For anyone who might stumble over this issue again in the future: As a workaround one can dump the current target configuration using

```
rustc +nightly -Z unstable-options --target armv7-unknown-linux-gnueabihf --print target-spec-json
```

(assuming `armv7-unknown-linux-gnueabihf` is the target to build for) add the line

```
    "llvm-mcount-intrinsic": "llvm.arm.gnu.eabi.mcount",
```

and compile with

```
RUSTFLAGS="-Z instrument-mcount -C passes=ee-instrument<post-inline>" cargo +nightly build -Z build-std --target <path to directory with modified target config>/armv7-unknown-linux-gnueabihf.json
```

It might be necessary to set the compiler for cross compiling using something like

```
export TARGET_CC=arm-linux-gnueabihf-gcc
```
2025-04-29 12:28:25 -04:00
Trevor Gross
561f6a1309
Rollup merge of #140432 - tgross35:target-config-docs-update, r=jieyouxu
Update documentation for `fn target_config`

This was missed as part of [1].

[1]: https://github.com/rust-lang/rust/pull/140323
2025-04-29 12:28:25 -04:00
Trevor Gross
1d642e5e4a
Rollup merge of #140422 - betrusted-io:bump-unwinding-to-0.2.6, r=workingjubilee
unwind: bump `unwinding` dependency to 0.2.6

Xous now fails to compile under nightly, due to the recent change where `#[naked]` must now be wrapped in `unsafe(...)`. The `unwinding` crate was updated to account for this.

With the following `bootstrap.toml`:

```
profile = "library"
change-id = 138934

[build]
build-stage = 2
target = ["riscv32imac-unknown-xous-elf"]

[rust]
std-features = ["panic-unwind"]
download-rustc = false
```

The build fails when trying unwinding v0.2.5:
```
$ ./x.py build
[...]
   Compiling unwinding v0.2.5
error: unsafe attribute used without unsafe
   --> /home/user/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unwinding-0.2.5/src/unwinder/arch/riscv32.rs:176:3
    |
176 | #[naked]
    |   ^^^^^ usage of unsafe attribute
    |
help: wrap the attribute in `unsafe(...)`
    |
176 | #[unsafe(naked)]
    |   +++++++     +

error: could not compile `unwinding` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...
Build completed unsuccessfully in 0:06:26
$
```

This patch updates `unwinding` to v0.2.6, which now wraps all issues of `naked` in `unsafe()`.
2025-04-29 12:28:24 -04:00
Trevor Gross
219f0b7082
Rollup merge of #140400 - durin42:llvm-21-getguid, r=cuviper
PassWrapper: adapt for llvm/llvm-project@d3d856ad84

LLVM 21 moves to making it more explicit what this function call is doing, but nothing has changed behaviorally, so for now we just adjust to using the new name of the function.

`@rustbot` label llvm-main
2025-04-29 12:28:24 -04:00
Trevor Gross
f7110fa756
Rollup merge of #140392 - Zalathar:goodbye-libtest, r=jieyouxu
compiletest: Remove the libtest-based executor and its dependency

Now that #140288 has landed and the new compiletest executor is used by default, we can now move forward with removing the libtest dependency from compiletest.

My hope is that after landing this, we can configure bootstrap to build compiletest with the pre-built stage0 library by default, instead of the in-tree stage0 library. That would give the stage0 redesign one less thing to worry about.

---

This PR has deliberately been kept small and simple, to make it easier to revert if necessary. Further cleanup can take palce after we're confident that it won't need to be reverted.

r? jieyouxu

Blocker for https://github.com/rust-lang/rust/pull/119899
2025-04-29 12:28:23 -04:00