Skip to content

Rollup of 7 pull requests #141209

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 30 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
9ccabd5
Make some `f32`/`f64` tests also run in const-context
Urgau May 11, 2025
6128fca
[win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and inste…
dpaoliello May 15, 2025
8fcff8c
Add per page TOC in the rustc book
Urgau Apr 21, 2025
72f915a
Fix flicker when page loads
Urgau Apr 21, 2025
4cbcb44
Cleanup the Javascript and CSS of our custom TOC
Urgau Apr 21, 2025
84d7edd
Enable [behind-upstream] triagebot option for rust-lang/rust
xizheyin May 16, 2025
1adfdb4
Use `crate::` prefix for root macro suggestions
bvanjoi May 17, 2025
b3b2153
Update triagebot.toml
xizheyin May 17, 2025
65d381b
triagebot: fix Rust for Linux ping group rust-lang/rust label
jieyouxu May 17, 2025
2dddbd1
rustc-dev-guide: fix Rust for Linux rust-lang/rust label
jieyouxu May 17, 2025
cd22c1b
determine later whether an explicit reg was used
folkertdev Apr 29, 2025
5af9652
extract operand parser
folkertdev Apr 29, 2025
614c51a
a new parser generating the exact same error messages
folkertdev Apr 29, 2025
9191373
cleanup `parse_clobber_abi`
folkertdev Apr 29, 2025
d85ea45
cleanup `parse_options`
folkertdev Apr 29, 2025
3ca1a16
cleanup unused code
folkertdev Apr 29, 2025
b6bc513
more cleanup
folkertdev Apr 29, 2025
f457e4d
leave a note about maybe delaying an error message
folkertdev Apr 29, 2025
d7eb15d
attempt to have rustfmt use the new logic
folkertdev Apr 29, 2025
6e1bddc
Apply suggestions from code review
folkertdev May 3, 2025
1305fcc
delay error for unsupported options
folkertdev May 3, 2025
8e86a0e
rename to get rid of the 'raw' concept
folkertdev May 17, 2025
d91e3d3
add `AsmOptions` with some named fields
folkertdev May 17, 2025
22e284b
Rollup merge of #140113 - Urgau:rustc-book-page-toc, r=ehuss
fmease May 18, 2025
bc0c9ca
Rollup merge of #140490 - folkertdev:asm-parser-changes, r=Amanieu,tr…
fmease May 18, 2025
b64b300
Rollup merge of #140924 - Urgau:f32_f64_const_tests, r=Mark-Simulacrum
fmease May 18, 2025
a5517ab
Rollup merge of #141045 - dpaoliello:noarmhazard, r=jieyouxu
fmease May 18, 2025
ae76917
Rollup merge of #141071 - xizheyin:behind-upstream, r=Urgau
fmease May 18, 2025
9ee320b
Rollup merge of #141132 - bvanjoi:issue-141082, r=fmease
fmease May 18, 2025
34613ab
Rollup merge of #141139 - jieyouxu:fix-rfl, r=Urgau
fmease May 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
512 changes: 294 additions & 218 deletions compiler/rustc_builtin_macros/src/asm.rs

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions compiler/rustc_builtin_macros/src/errors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -910,7 +910,7 @@ pub(crate) struct AsmOptAlreadyprovided {
pub(crate) span: Span,
pub(crate) symbol: Symbol,
#[suggestion(code = "", applicability = "machine-applicable", style = "tool-only")]
pub(crate) full_span: Span,
pub(crate) span_with_comma: Span,
}

#[derive(Diagnostic)]
Expand All @@ -921,7 +921,7 @@ pub(crate) struct AsmUnsupportedOption {
pub(crate) span: Span,
pub(crate) symbol: Symbol,
#[suggestion(code = "", applicability = "machine-applicable", style = "tool-only")]
pub(crate) full_span: Span,
pub(crate) span_with_comma: Span,
pub(crate) macro_name: &'static str,
}

Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_resolve/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2493,7 +2493,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
let Res::Def(DefKind::Macro(MacroKind::Bang), _) = binding.res() else {
return None;
};
let module_name = crate_module.kind.name().unwrap_or(kw::Empty);
let module_name = crate_module.kind.name().unwrap_or(kw::Crate);
let import_snippet = match import.kind {
ImportKind::Single { source, target, .. } if source != target => {
format!("{source} as {target}")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::spec::{FramePointer, LinkerFlavor, Lld, Target, TargetMetadata, base};
use crate::spec::{FramePointer, Target, TargetMetadata, base};

pub(crate) fn target() -> Target {
let mut base = base::windows_msvc::opts();
Expand All @@ -11,11 +11,6 @@ pub(crate) fn target() -> Target {
// and other services. It must point to the previous {x29, x30} pair on the stack."
base.frame_pointer = FramePointer::NonLeaf;

// MSVC emits a warning about code that may trip "Cortex-A53 MPCore processor bug #843419" (see
// https://developer.arm.com/documentation/epm048406/latest) which is sometimes emitted by LLVM.
// Since Arm64 Windows 10+ isn't supported on that processor, it's safe to disable the warning.
base.add_pre_link_args(LinkerFlavor::Msvc(Lld::No), &["/arm64hazardfree"]);

Target {
llvm_target: "aarch64-pc-windows-msvc".into(),
metadata: TargetMetadata {
Expand Down
332 changes: 189 additions & 143 deletions library/coretests/tests/num/mod.rs

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Rust for Linux notification group

**Github Label:** [O-rfl] <br>
**Github Label:** [A-rust-for-linux] <br>
**Ping command:** `@rustbot ping rfl`

[O-rfl]: https://github.com/rust-lang/rust/labels/O-rfl
[A-rust-for-linux]: https://github.com/rust-lang/rust/labels/A-rust-for-linux

This list will be used to notify [Rust for Linux (RfL)][rfl] maintainers
when the compiler or the standard library changes in a way that would
Expand Down
2 changes: 2 additions & 0 deletions src/doc/rustc/book.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ title = "The rustc book"
[output.html]
git-repository-url = "https://github.com/rust-lang/rust/tree/master/src/doc/rustc"
edit-url-template = "https://github.com/rust-lang/rust/edit/master/src/doc/rustc/{path}"
additional-css = ["theme/pagetoc.css"]
additional-js = ["theme/pagetoc.js"]

[output.html.search]
use-boolean-and = true
Expand Down
84 changes: 84 additions & 0 deletions src/doc/rustc/theme/pagetoc.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/* Inspired by https://github.com/JorelAli/mdBook-pagetoc/tree/98ee241 (under WTFPL) */

:root {
--toc-width: 270px;
--center-content-toc-shift: calc(-1 * var(--toc-width) / 2);
}

.nav-chapters {
/* adjust width of buttons that bring to the previous or the next page */
min-width: 50px;
}

@media only screen {
@media (max-width: 1179px) {
.sidebar-hidden #sidetoc {
display: none;
}
}

@media (max-width: 1439px) {
.sidebar-visible #sidetoc {
display: none;
}
}

@media (1180px <= width <= 1439px) {
.sidebar-hidden main {
position: relative;
left: var(--center-content-toc-shift);
}
}

@media (1440px <= width <= 1700px) {
.sidebar-visible main {
position: relative;
left: var(--center-content-toc-shift);
}
}

#sidetoc {
margin-left: calc(100% + 20px);
}
#pagetoc {
position: fixed;
/* adjust TOC width */
width: var(--toc-width);
height: calc(100vh - var(--menu-bar-height) - 0.67em * 4);
overflow: auto;
}
#pagetoc a {
border-left: 1px solid var(--sidebar-bg);
color: var(--sidebar-fg) !important;
display: block;
padding-bottom: 5px;
padding-top: 5px;
padding-left: 10px;
text-align: left;
text-decoration: none;
}
#pagetoc a:hover,
#pagetoc a.active {
background: var(--sidebar-bg);
color: var(--sidebar-active) !important;
}
#pagetoc .active {
background: var(--sidebar-bg);
color: var(--sidebar-active);
}
#pagetoc .pagetoc-H2 {
padding-left: 20px;
}
#pagetoc .pagetoc-H3 {
padding-left: 40px;
}
#pagetoc .pagetoc-H4 {
padding-left: 60px;
}
}

@media print {
#sidetoc {
display: none;
}
}
104 changes: 104 additions & 0 deletions src/doc/rustc/theme/pagetoc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
// Inspired by https://github.com/JorelAli/mdBook-pagetoc/tree/98ee241 (under WTFPL)

let activeHref = location.href;
function updatePageToc(elem = undefined) {
let selectedPageTocElem = elem;
const pagetoc = document.getElementById("pagetoc");

function getRect(element) {
return element.getBoundingClientRect();
}

function overflowTop(container, element) {
return getRect(container).top - getRect(element).top;
}

function overflowBottom(container, element) {
return getRect(container).bottom - getRect(element).bottom;
}

// We've not selected a heading to highlight, and the URL needs updating
// so we need to find a heading based on the URL
if (selectedPageTocElem === undefined && location.href !== activeHref) {
activeHref = location.href;
for (const pageTocElement of pagetoc.children) {
if (pageTocElement.href === activeHref) {
selectedPageTocElem = pageTocElement;
}
}
}

// We still don't have a selected heading, let's try and find the most
// suitable heading based on the scroll position
if (selectedPageTocElem === undefined) {
const margin = window.innerHeight / 3;

const headers = document.getElementsByClassName("header");
for (let i = 0; i < headers.length; i++) {
const header = headers[i];
if (selectedPageTocElem === undefined && getRect(header).top >= 0) {
if (getRect(header).top < margin) {
selectedPageTocElem = header;
} else {
selectedPageTocElem = headers[Math.max(0, i - 1)];
}
}
// a very long last section's heading is over the screen
if (selectedPageTocElem === undefined && i === headers.length - 1) {
selectedPageTocElem = header;
}
}
}

// Remove the active flag from all pagetoc elements
for (const pageTocElement of pagetoc.children) {
pageTocElement.classList.remove("active");
}

// If we have a selected heading, set it to active and scroll to it
if (selectedPageTocElem !== undefined) {
for (const pageTocElement of pagetoc.children) {
if (selectedPageTocElem.href.localeCompare(pageTocElement.href) === 0) {
pageTocElement.classList.add("active");
if (overflowTop(pagetoc, pageTocElement) > 0) {
pagetoc.scrollTop = pageTocElement.offsetTop;
}
if (overflowBottom(pagetoc, pageTocElement) < 0) {
pagetoc.scrollTop -= overflowBottom(pagetoc, pageTocElement);
}
}
}
}
}

if (document.getElementById("sidetoc") === null &&
document.getElementsByClassName("header").length > 0) {
// The sidetoc element doesn't exist yet, let's create it

// Create the empty sidetoc and pagetoc elements
const sidetoc = document.createElement("div");
const pagetoc = document.createElement("div");
sidetoc.id = "sidetoc";
pagetoc.id = "pagetoc";
sidetoc.appendChild(pagetoc);

// And append them to the current DOM
const main = document.querySelector('main');
main.insertBefore(sidetoc, main.firstChild);

// Populate sidebar on load
window.addEventListener("load", () => {
for (const header of document.getElementsByClassName("header")) {
const link = document.createElement("a");
link.innerHTML = header.innerHTML;
link.href = header.hash;
link.classList.add("pagetoc-" + header.parentElement.tagName);
document.getElementById("pagetoc").appendChild(link);
link.onclick = () => updatePageToc(link);
}
updatePageToc();
});

// Update page table of contents selected heading on scroll
window.addEventListener("scroll", () => updatePageToc());
}
4 changes: 2 additions & 2 deletions src/tools/rustfmt/src/parse/macros/asm.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
use rustc_ast::ast;
use rustc_builtin_macros::asm::{AsmArgs, parse_asm_args};
use rustc_builtin_macros::asm::{AsmArg, parse_asm_args};

use crate::rewrite::RewriteContext;

#[allow(dead_code)]
pub(crate) fn parse_asm(context: &RewriteContext<'_>, mac: &ast::MacCall) -> Option<AsmArgs> {
pub(crate) fn parse_asm(context: &RewriteContext<'_>, mac: &ast::MacCall) -> Option<Vec<AsmArg>> {
let ts = mac.args.tokens.clone();
let mut parser = super::build_parser(context, ts);
parse_asm_args(&mut parser, mac.span(), ast::AsmMacro::Asm).ok()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@
//@ needs-dynamic-linking
//@ only-nightly (requires unstable rustc flag)

// This test trips a check in the MSVC linker for an outdated processor:
// "LNK1322: cannot avoid potential ARM hazard (Cortex-A53 MPCore processor bug #843419)"
// Until MSVC removes this check:
// https://developercommunity.microsoft.com/t/Remove-checking-for-and-fixing-Cortex-A/10905134
// we'll need to disable this test on Arm64 Windows.
//@ ignore-aarch64-pc-windows-msvc

#![deny(warnings)]

use run_make_support::{dynamic_lib_name, rfs, rust_lib_name, rustc};
Expand Down
6 changes: 2 additions & 4 deletions tests/ui/asm/parse-error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,9 @@ global_asm!("", options(FOO));
global_asm!("", options(FOO,));
//~^ ERROR expected one of `)`, `att_syntax`, or `raw`, found `FOO`
global_asm!("", options(nomem FOO));
//~^ ERROR the `nomem` option cannot be used with `global_asm!`
//~| ERROR expected one of `)` or `,`, found `FOO`
//~^ ERROR expected one of `)` or `,`, found `FOO`
global_asm!("", options(nomem, FOO));
//~^ ERROR the `nomem` option cannot be used with `global_asm!`
//~| ERROR expected one of `)`, `att_syntax`, or `raw`, found `FOO`
//~^ ERROR expected one of `)`, `att_syntax`, or `raw`, found `FOO`
global_asm!("{}", options(), const FOO);
global_asm!("", clobber_abi(FOO));
//~^ ERROR expected string literal
Expand Down
Loading
Loading