Commit Graph

265582 Commits

Author SHA1 Message Date
Gurinder Singh 0f8efb3b5c Fix ICE caused by missing span in a region error 2024-09-09 12:27:36 +05:30
Nicholas Nethercote 5c3502772a Remove unnecessary lifetime from `StorageConflictVisitor`. 2024-09-09 16:44:01 +10:00
Nicholas Nethercote 0b032f8f83 Remove `Elaborator`.
It's a trivial wrapper around `ElaborateDropsCtxt` that serves no
apparent purpose.
2024-09-09 16:33:29 +10:00
Nicholas Nethercote dc62f07458 Remove `Gatherer`.
It's a very thin wrapper that pairs `MoveDataBuilder` with a `Location`,
and it has four lifetime arguments. This commit removes it by just
adding a `Location` to `MoveDataBuilder`.
2024-09-09 16:33:27 +10:00
Nicholas Nethercote 28a6dc4d1e Rename some lifetimes.
Give them the names used in most places.
2024-09-09 16:25:44 +10:00
Nicholas Nethercote 1aafeb2d5a Remove unnecessary lifetime from `OperandCollector`.
Also put the remaining lifetimes into the usual order.
2024-09-09 16:24:08 +10:00
Nicholas Nethercote bed91f5065 Remove unnecessary lifetime in `PlaceCollector`. 2024-09-09 16:24:06 +10:00
Nicholas Nethercote 3fe7dd6893 Remove unnecessary lifetimes in dataflow structs.
There are four related dataflow structs: `MaybeInitializedPlaces`,
`MaybeUninitializedPlaces`, and `EverInitializedPlaces`,
`DefinitelyInitializedPlaces`. They all have a `&Body` and a
`&MoveData<'tcx>` field. The first three use different lifetimes for the
two fields, but the last one uses the same lifetime for both.

This commit changes the first three to use the same lifetime, removing
the need for one of the lifetimes. Other structs that also lose a
lifetime as a result of this are `LivenessContext`, `LivenessResults`,
`InitializationData`.

It then does similar things in various other structs.
2024-09-09 16:14:18 +10:00
Zalathar acccb39bff Print a helpful message if any tests were skipped for being up-to-date 2024-09-09 16:00:14 +10:00
Nicholas Nethercote 5445953659 Improve consistency in `LowerIntrinsics`.
In some cases `target` and `arg` are obtained fallibly, and in some
cases they are obtained infallibly. This commit changes them all to
infallible.
2024-09-09 15:15:44 +10:00
Nicholas Nethercote 751c8b481b Use `LocalDecls` in a couple of places.
It's nicer than the `IndexVec` type.
2024-09-09 15:15:44 +10:00
Nicholas Nethercote 7adde3f074 Make `CallSite` non-`Copy`.
It doesn't need to be, and it's 72 bytes on 64-bit platforms, which is
fairly large.
2024-09-09 15:15:43 +10:00
Nicholas Nethercote 9cf90b9fc9 Remove some unnecessary dereferences. 2024-09-09 15:15:43 +10:00
Nicholas Nethercote 4f2588f23a Remove an unnecessary `continue`.
Nothing comes after it within the loop.
2024-09-09 15:15:43 +10:00
Nicholas Nethercote 181fbd5ce8 Use `let`/`else` to de-indent `ElaborateBoxDerefs::run_pass`. 2024-09-09 15:15:43 +10:00
Nicholas Nethercote cc09ab3c75 Simplify `verify_candidate_branch`.
Let chains are perfect for this kind of function.
2024-09-09 15:15:43 +10:00
Nicholas Nethercote ec6fe4e198 Streamline `AbortUnwindingCalls`.
Currently it constructs two vectors `calls_to_terminated` and
`cleanups_to_remove` in the main loop, and then processes them after the
main loop. But the processing can be done in the main loop, avoiding the
need for the vectors.
2024-09-09 15:15:42 +10:00
Zalathar a6735e44ca Add an explicit ignore message for "up-to-date" tests
When running tests without the `--force-rerun` flag, compiletest will
automatically skip any tests that (in its judgement) don't need to be run again
since the last time they were run.

This patch adds an explicit reason to those skipped tests, which is visible
when running with `rust.verbose-tests = true` in `config.toml`.
2024-09-09 14:11:43 +10:00
bors 085744b7ad Auto merge of #130036 - weiznich:diagnostic_unstable_tracking, r=compiler-errors
Correctly handle stability of `#[diagnostic]` attributes

This commit changes the way we treat the stability of attributes in the
`#[diagnostic]` namespace. Instead of relaying on ad-hoc checks to
ensure at call side that a certain attribute is really usable at that
location it centralises the logic to one place. For diagnostic
attributes comming from other crates it just skips serializing
attributes that are not stable and that do not have the corresponding
feature enabled. For attributes from the current crate we can just use
the feature information provided by `TyCtx`.

r​? `@compiler-errors`
2024-09-08 23:39:00 +00:00
Nicholas Nethercote bbe28cf1d9 Remove `serialized_bitcode` from `LtoModuleCodegen`.
It's unused.
2024-09-09 09:00:50 +10:00
Nicholas Nethercote cd9fd274d1 Factor out some more repetitive code. 2024-09-09 08:48:09 +10:00
Nicholas Nethercote 6af470e360 Reduce visibilities, and add `warn(unreachable_pub)`.
Lots of unnecessary `pub`s in this crate. Most are downgraded to
`pub(super)`, though some don't need any visibility.
2024-09-09 08:48:09 +10:00
Samuel Thibault 7626015848 added support for GNU/Hurd on x86_64 2024-09-08 23:37:07 +02:00
Ralf Jung 7a3a317618 remove const_slice_index annotations, it never had a feature gate anyway 2024-09-08 23:08:43 +02:00
Ralf Jung 332fa6aa6e add FIXME(const-hack) 2024-09-08 23:08:40 +02:00
Eduardo Sánchez Muñoz 5f3fdd14df Remove needless returns detected by clippy in libraries 2024-09-08 21:51:00 +02:00
Ralf Jung 11d51aae86 const: make ptr.is_null() stop execution on ambiguity 2024-09-08 19:07:46 +02:00
Ralf Jung 11bd99de8c IntervalSet: add comment about representation 2024-09-08 16:54:28 +02:00
Ralf Jung a2410425b3 clarify comments and names in check_validity_requirement 2024-09-08 16:53:23 +02:00
Ralf Jung 8cd982caa1 interpret: reset padding during validation 2024-09-08 16:53:23 +02:00
Ralf Jung cbdcbf0d6a interpret: reset provenance on typed copies 2024-09-08 16:53:23 +02:00
Ralf Jung 85dc22f2cf interpret: factor out common code for place mutation 2024-09-08 16:53:23 +02:00
Ralf Jung 8ad808db7e interpret: make Writeable trait about a to_place operation 2024-09-08 16:53:23 +02:00
Ralf Jung fa60ea7d38 interpret: remove Readable trait, we can use Projectable instead 2024-09-08 16:53:22 +02:00
Ralf Jung f7b4f4a73b Option, Result: put the &mut variants of 'copied' under the same feature as the '&' variants 2024-09-08 16:52:40 +02:00
onur-ozkan 7b8cbe4f1c handle dry-run mode in `Config::get_builder_toml`
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-08 17:52:21 +03:00
onur-ozkan 13e16a9101 use `Config::get_builder_toml` for ci-rustc config parsing
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-08 17:52:18 +03:00
onur-ozkan 018ed9abb9 fix llvm ThinLTO behaviour
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-08 17:52:14 +03:00
onur-ozkan ea34bb0452 print incompatible options even if we don't download
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-08 17:52:09 +03:00
onur-ozkan 23df3a9eeb remove `check_ci_llvm` usage
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-08 17:52:06 +03:00
onur-ozkan 9df7680ecf detect incompatible CI LLVM options more precisely
Previously, the logic here was simply checking whether the option was set in `config.toml`.
This approach was not manageable in our CI runners as we set so many options in config.toml.
In reality, those values are not incompatible since they are usually the same value used to generate
the CI llvm. Now, the new logic compares the configuration values with the values used to generate
the CI llvm, so we get more precise results and make the process more manageable.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-08 17:51:54 +03:00
bors adf8d168af Auto merge of #130002 - orlp:better-div-floor-ceil, r=thomcc
better implementation of signed div_floor/ceil

Tracking issue for signed `div_floor`/`div_ceil`: https://github.com/rust-lang/rust/issues/88581.

This PR improves the implementation of those two functions by adding a better branchless algorithm. Side-by-side comparison of `i32::div_floor` on x86-64:

```asm
div_floor_new:                               div_floor_old:
        push    rax                                  push    rax
        test    esi, esi                             test    esi, esi
        je      .LBB0_3                              je      .LBB1_6
        mov     eax, esi                             mov     eax, esi
        not     eax                                  not     eax
        lea     ecx, [rdi - 2147483648]              lea     ecx, [rdi - 2147483648]
        or      ecx, eax                             or      ecx, eax
        je      .LBB0_2                              je      .LBB1_7
        mov     eax, edi                             mov     eax, edi
        cdq                                          cdq
        idiv    esi                                  idiv    esi
        xor     esi, edi                             test    edx, edx
        sar     esi, 31                              setg    cl
        test    edx, edx                             test    esi, esi
        cmove   esi, edx                             sets    dil
        add     eax, esi                             test    dil, cl
        pop     rcx                                  jne     .LBB1_4
        ret                                          test    edx, edx
.LBB0_3:                                             setns   cl
        lea     rdi, [rip + .L__unnamed_1]           test    esi, esi
        call    qword ptr [rip + panic...]          setle   dl
.LBB0_2:                                             or      dl, cl
        lea     rdi, [rip + .L__unnamed_1]           jne     .LBB1_5
        call    qword ptr [rip + panic...]   .LBB1_4:
                                                     dec     eax
                                             .LBB1_5:
                                                     pop     rcx
                                                     ret
                                             .LBB1_6:
                                                     lea     rdi, [rip + .L__unnamed_2]
                                                     call    qword ptr [rip + panic...]
                                             .LBB1_7:
                                                     lea     rdi, [rip + .L__unnamed_2]
                                                     call    qword ptr [rip + panic...]
```

And on Aarch64:

```asm
_div_floor_new:                                   _div_floor_old:
        stp     x29, x30, [sp, #-16]!                     stp     x29, x30, [sp, #-16]!
        mov     x29, sp                                   mov     x29, sp
        cbz     w1, LBB0_4                                cbz     w1, LBB1_9
        mov     w8, #-2147483648                          mov     x8, x0
        cmp     w0, w8                                    mov     w9, #-2147483648
        b.ne    LBB0_3                                    cmp     w0, w9
        cmn     w1, #1                                    b.ne    LBB1_3
        b.eq    LBB0_5                                    cmn     w1, #1
LBB0_3:                                                   b.eq    LBB1_10
        sdiv    w8, w0, w1                        LBB1_3:
        msub    w9, w8, w1, w0                            sdiv    w0, w8, w1
        eor     w10, w1, w0                               msub    w8, w0, w1, w8
        asr     w10, w10, #31                             tbz     w1, #31, LBB1_5
        cmp     w9, #0                                    cmp     w8, #0
        csel    w9, wzr, w10, eq                          b.gt    LBB1_7
        add     w0, w9, w8                        LBB1_5:
        ldp     x29, x30, [sp], #16                       cmp     w1, #1
        ret                                               b.lt    LBB1_8
LBB0_4:                                                   tbz     w8, #31, LBB1_8
        adrp    x0, l___unnamed_1@PAGE            LBB1_7:
        add     x0, x0, l___unnamed_1@PAGEOFF             sub     w0, w0, #1
        bl      panic...                          LBB1_8:
LBB0_5:                                                   ldp     x29, x30, [sp], #16
        adrp    x0, l___unnamed_1@PAGE                    ret
        add     x0, x0, l___unnamed_1@PAGEOFF     LBB1_9:
        bl      panic...                                  adrp    x0, l___unnamed_2@PAGE
                                                          add     x0, x0, l___unnamed_2@PAGEOFF
                                                          bl      panic...
                                                  LBB1_10:
                                                          adrp    x0, l___unnamed_2@PAGE
                                                          add     x0, x0, l___unnamed_2@PAGEOFF
                                                          bl      panic...
```
2024-09-08 13:54:02 +00:00
Florian Schmiderer ec11001f2b run-make-support: Add llvm-pdbutil 2024-09-08 14:12:57 +02:00
bors 7b18b3eb6d Auto merge of #129019 - kromych:master, r=workingjubilee
Break into the debugger (if attached) on panics (Windows, Linux, macOS, FreeBSD)

The developer experience for panics is to provide the backtrace and
exit the program. When running under debugger, that might be improved
by breaking into the debugger once the code panics thus enabling
the developer to examine the program state at the exact time when
the code panicked.

Let the developer catch the panic in the debugger if it is attached.
If the debugger is not attached, nothing changes. Providing this feature
inside the standard library facilitates better debugging experience.

Validated under Windows, Linux, macOS 14.6, and FreeBSD 13.3..14.1.
2024-09-08 10:28:26 +00:00
bors 8f93a10801 Auto merge of #130072 - ChrisDenton:split-ci, r=Kobzol
Split x86_64-msvc-ext into two jobs

This is an attempt to mitigate (but not resolve) the high failure rate of the x86_64-msvc-ext builder. The theory being that doing less makes it less likely to fail. But this may not work as having an extra job that may fail might be worse.

try-job: x86_64-msvc-ext
try-job: x86_64-msvc-ext2
2024-09-08 08:04:56 +00:00
Mads Marquart f98ca32b0a Fix linking error when compiling for 32-bit watchOS
In https://github.com/rust-lang/rust/pull/124748, I mistakenly conflated
"not SjLj" to mean "ARM EHABI", which isn't true, watchOS armv7k
(specifically only that architecture) uses a third unwinding method
called "DWARF CFI".
2024-09-08 09:12:31 +02:00
Ralf Jung 7f9a541059 remove pointless rustc_const_unstable on trait impls 2024-09-08 08:45:41 +02:00
Ralf Jung 3de6838238 add some FIXME(const-hack) 2024-09-08 08:30:28 +02:00
bors 6d05f12170 Auto merge of #129346 - nnethercote:fix-double-handling-in-collect_tokens, r=petrochenkov
Fix double handling in `collect_tokens`

Double handling of AST nodes can occur in `collect_tokens`. This is when an inner call to `collect_tokens` produces an AST node, and then an outer call to `collect_tokens` produces the same AST node. This can happen in a few places, e.g. expression statements where the statement delegates `HasTokens` and `HasAttrs` to the expression. It will also happen more after #124141.

This PR fixes some double handling cases that cause problems, including #129166.

r? `@petrochenkov`
2024-09-08 05:35:23 +00:00
Michael Howell 65903362ad rustdoc: use a single box to store Attributes and ItemKind 2024-09-07 21:06:50 -07:00