Commit Graph

211962 Commits

Author SHA1 Message Date
Tomasz Miąsko
b740cdcf43 Mark naked functions as never inline in codegen_fn_attrs
Use code generation attributes to ensure that naked functions are never
inline, replacing separate checks in MIR inliner and LLVM code
generation.
2022-12-03 01:04:42 +01:00
Tomasz Miąsko
c955add18c Disable coverage instrumentation for naked functions 2022-12-03 01:03:28 +01:00
bors
e526d123aa Auto merge of #105187 - matthiaskrgr:rollup-nxyxpko, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #105026 (v8a as default aarch64 target)
 - #105033 (sparc-struct-abi: work around new tail-call optimization)
 - #105144 (Document normalization methods `At::{normalize,query_normalize}`)
 - #105155 (rustdoc: clean up help and settings button CSS)
 - #105162 (Properly synthesize `FnSig` value during cycle)
 - #105163 (Check lifetime param count in `collect_trait_impl_trait_tys`)
 - #105185 (Move `normalize_fn_sig` to `TypeErrCtxt`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-12-02 23:00:48 +00:00
Michael Howell
c635cb774b rustdoc: clean up redundant CSS on .rustdoc-toggle.hideme 2022-12-02 14:39:06 -07:00
Michael Goulet
5c642d7d1c Don't elide information when printing E0308 with Zverbose 2022-12-02 21:01:59 +00:00
Santiago Pastorino
89047430f1
Define values and err as non mutable 2022-12-02 17:31:45 -03:00
Santiago Pastorino
4dacf4f469
Use ocx.normalize in report_projection_error 2022-12-02 17:31:40 -03:00
Matthias Krüger
8e0d83a70c
Rollup merge of #105185 - compiler-errors:normalize_fn_sig-in-err-ctxt, r=lcnr
Move `normalize_fn_sig` to `TypeErrCtxt`

r? `@lcnr`
2022-12-02 21:22:50 +01:00
Matthias Krüger
09e2d0f289
Rollup merge of #105163 - compiler-errors:afit-lt-arity, r=jackh726
Check lifetime param count in `collect_trait_impl_trait_tys`

We checked the type and const generics count, but not the lifetimes, which were handled in a different function.

Fixes #105154
2022-12-02 21:22:50 +01:00
Matthias Krüger
babdf86952
Rollup merge of #105162 - compiler-errors:fn-sig-arity, r=cjgillot
Properly synthesize `FnSig` value during cycle

Get the arity correct when creating a `FnSig` type during `tcx.fn_sig` cycle recovery

Fixes #105152
2022-12-02 21:22:49 +01:00
Matthias Krüger
de0d18a85e
Rollup merge of #105155 - notriddle:notriddle/flexbox-help-settings-buttons, r=GuillaumeGomez
rustdoc: clean up help and settings button CSS

The old version of this code specified a bunch of different numbers that had to line up just right to get the size it wanted. This version uses flexbox centering, specifies the font size, and lets the browser figure out the rest of the layout automatically.

Preview: http://notriddle.com/notriddle-rustdoc-demos/flexbox-help-settings-buttons/test_dingus/
2022-12-02 21:22:49 +01:00
Matthias Krüger
b5b2d03c0c
Rollup merge of #105144 - compiler-errors:normalization-doc, r=lcnr
Document normalization methods `At::{normalize,query_normalize}`

r? ``@lcnr``
2022-12-02 21:22:48 +01:00
Matthias Krüger
0724a01b8c
Rollup merge of #105033 - durin42:llvm-16-dont-tail-call-me-bro, r=tmandry
sparc-struct-abi: work around new tail-call optimization

Upstream LLVM change https://reviews.llvm.org/D138741 introduced some new tail-call smarts for SPARC which broke some of the checks in this test. Rather than adjust the test expectations, we add an extra no-args function that can get tail-called or not without hurting the needs of the test.

r? ``@nikic``
2022-12-02 21:22:47 +01:00
Matthias Krüger
dab14348e9
Rollup merge of #105026 - oToToT:aarch64-v8a, r=davidtwco
v8a as default aarch64 target

After https://github.com/llvm/llvm-project/commit/8689f5e landed, LLVM takes the intersection of v8a and v8r as default. This commit brings back v8a support by explicitly specifying v8a in the feature list.

This should solve #97724.

p.s. a bit more context can also be found in https://github.com/llvm/llvm-project/issues/57904#issuecomment-1329555590.
2022-12-02 21:22:47 +01:00
bors
32e613bbaa Auto merge of #104999 - saethlin:immediate-abort-inlining, r=thomcc
Adjust inlining attributes around panic_immediate_abort

The goal of `panic_immediate_abort` is to permit the panic runtime and formatting code paths to be optimized away. But while poking through some disassembly of a small program compiled with that option, I found that was not the case. Enabling LTO did address that specific issue, but enabling LTO is a steep price to pay for this feature doing its job.

This PR fixes that, by tweaking two things:
* All the slice indexing functions that we `const_eval_select` on get `#[inline]`. `objdump -dC` told me that originally some `_ct` functions could end up in an executable. I won't pretend to understand what's going on there.
* Normalize attributes across all `panic!` wrappers: use `inline(never) + cold` normally, and `inline` when `panic_immediate_abort` is enabled.

But also, with LTO and `panic_immediate_abort` enabled, this patch knocks ~709 kB out of the `.text` segment of `librustc_driver.so`. That is slightly surprising to me, my best theory is that this shifts some inlining earlier in compilation, enabling some subsequent optimizations. The size improvement of `librustc_driver.so` with `panic_immediate_abort` due to this patch is greater with LTO than without LTO, which I suppose backs up this theory.

I do not know how to test this. I would quite like to, because I think what this is solving was an accidental regression. This only works with `-Zbuild-std` which is a cargo flag, and thus can't be used in a rustc codegen test.

r? `@thomcc`

---

I do not seriously think anyone is going to use a compiler built with `panic_immediate_abort`, but I wanted a big complicated Rust program to try this out on, and the compiler is such.
2022-12-02 20:07:23 +00:00
Michael Goulet
ffca711760 Move normalize_fn_sig to TypeErrCtxt 2022-12-02 19:29:14 +00:00
Guillaume Gomez
269704a4a0 Update existing rustdoc tests 2022-12-02 19:40:40 +01:00
Guillaume Gomez
93d7aa146d Add rustdoc test for bounds de-duplication and merge 2022-12-02 19:40:40 +01:00
Guillaume Gomez
af45040acd Merge generics and where predicates and prevent duplicates in where predicates 2022-12-02 19:40:40 +01:00
Ralf Jung
b64d8670e4 Merge from rustc 2022-12-02 18:16:08 +01:00
Ralf Jung
80ab672b86 Preparing for merge from rustc 2022-12-02 18:14:53 +01:00
Nixon Enraght-Moony
79d897b22a Add test for #105022 2022-12-02 17:05:37 +00:00
Nixon Enraght-Moony
52be350445 Add test for #105025 2022-12-02 17:03:35 +00:00
Nixon Enraght-Moony
881bd865ad Rustdoc-Json: Don't include foreign traits 2022-12-02 16:58:10 +00:00
Nixon Enraght-Moony
c1b8eff4d3 jsondoclint: Check links field 2022-12-02 16:55:47 +00:00
Oli Scherer
c7e94b0efd Use zero based indexing for pass_count 2022-12-02 15:55:24 +00:00
Oli Scherer
80dcc52934 Remove an impl and replace its only use with a method call 2022-12-02 15:43:36 +00:00
bors
7d75cc48fe Auto merge of #2710 - RalfJung:ptr-tracking-ice, r=oli-obk
fix ICE in pointer tracking

Fixes https://github.com/rust-lang/miri/issues/2709
2022-12-02 15:36:49 +00:00
bors
e960b5e774 Auto merge of #104863 - nnethercote:reduce-lint-macros, r=cjgillot
Reduce macro usage for lints

r? `@cjgillot`
2022-12-02 15:31:15 +00:00
bors
4a64902a9d Auto merge of #2711 - RalfJung:btrack, r=RalfJung
slight simplifications for borrow tracking

and some renaming for consistency
2022-12-02 13:48:14 +00:00
Ralf Jung
0d1e365272 fix ICE in pointer tracking 2022-12-02 14:47:25 +01:00
Ralf Jung
b12ce552ff rename some more types for consistency 2022-12-02 14:44:41 +01:00
Ralf Jung
595490e8dd slight simplifications for borrow tracking 2022-12-02 14:43:05 +01:00
bors
89dd322512 Auto merge of #2708 - RalfJung:verbose-setup, r=RalfJung
forward verbosity to cargo setup
2022-12-02 13:19:27 +00:00
bjorn3
e1edc13afb Write to temp file before renaming to the final name 2022-12-02 13:18:20 +00:00
Ralf Jung
5fd4b84e20 forward verbosity to cargo setup 2022-12-02 13:57:20 +01:00
bors
90118a197b Auto merge of #2697 - Vanille-N:borrow-tracking, r=RalfJung
Reorganizing `stacked_borrows` in anticipation of a different model

These commits reorganize all the code inside the former `stacked_borrows` module and extract the part that really is specific to Stacked Borrows inside the `borrow_tracker/stacked_borrows` submodule.
Everything not specific to SB is put in `borrow_tracker/mod.rs`.
This is so that the future Tree Borrows model can be later added as a second submodule and reuse all the contents of `borrow_tracker/mod.rs`.

This reorganization is accompanied by renamings, mostly from "stacked borrows" to "borrow tracking".
2022-12-02 12:50:27 +00:00
Vanille-N
ab08f2a813
fix imports 2022-12-02 13:30:06 +01:00
Vanille-N
8bb3d9e94a
other renames, introduction of BorrowTrackerMethod and AllocExtra 2022-12-02 13:29:48 +01:00
Vanille-N
3a01493433
SbTag -> BorTag everywhere 2022-12-02 13:27:41 +01:00
Vanille-N
2528f4e668
move stacked_borrows to borrow_tracker/stacked_borrows 2022-12-02 13:23:57 +01:00
Vanille-N
2d42d265ea
extract common borrow tracking logic 2022-12-02 13:23:37 +01:00
bors
cef44f5303 Auto merge of #105166 - matthiaskrgr:rollup-s9l6vt2, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #104614 (Add `type_ascribe!` macro as placeholder syntax for type ascription)
 - #105126 (Make `VecDeque::new_in` unstably const)
 - #105132 (Migrate summary toggle filter to CSS variable)
 - #105136 (clarify comment on Deref promotion)
 - #105137 (Add tracking issue number for `file_create_new` feature)
 - #105143 (rustdoc: use simpler CSS for setting the font on scraped examples)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-12-02 12:03:59 +00:00
Matthias Krüger
8e059d5968
Rollup merge of #105143 - notriddle:notriddle/scraped-example-list-font, r=GuillaumeGomez
rustdoc: use simpler CSS for setting the font on scraped examples
2022-12-02 08:28:12 +01:00
Matthias Krüger
c7edfddc2f
Rollup merge of #105137 - yjhn:patch-1, r=Dylan-DPC
Add tracking issue number for `file_create_new` feature

It was missing a tracking issue, so I opened one (#105135).
2022-12-02 08:28:11 +01:00
Matthias Krüger
46c50af977
Rollup merge of #105136 - RalfJung:deref-promotion-comment, r=oli-obk
clarify comment on Deref promotion

r? `@oli-obk`
2022-12-02 08:28:10 +01:00
Matthias Krüger
f95385b5d4
Rollup merge of #105132 - GuillaumeGomez:migrate-summary-toggle-to-var, r=notriddle
Migrate summary toggle filter to CSS variable

r? `@notriddle`
2022-12-02 08:28:09 +01:00
Matthias Krüger
4c4dec4408
Rollup merge of #105126 - Sp00ph:const_new_in, r=dtolnay
Make `VecDeque::new_in` unstably const

(See #105072)
2022-12-02 08:28:09 +01:00
Matthias Krüger
4fdc3eb176
Rollup merge of #104614 - Nilstrieb:type-ascribe!, r=TaKO8Ki
Add `type_ascribe!` macro as placeholder syntax for type ascription

This makes it still possible to test the internal semantics of type ascription even once the `:`-syntax is removed from the parser. The macro now gets used in a bunch of UI tests that test the semantics and not syntax of type ascription.

I might have forgotten a few tests but this should hopefully be most of them. The remaining ones will certainly be found once type ascription is removed from the parser altogether.

Part of #101728
2022-12-02 08:28:08 +01:00
Michael Goulet
dc45eb93f7 Revert 88f2140 2022-12-02 00:05:35 -05:00