Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 5 additions & 1 deletion compiler/rustc_session/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1530,7 +1530,11 @@ impl Options {
}

pub fn get_symbol_mangling_version(&self) -> SymbolManglingVersion {
self.cg.symbol_mangling_version.unwrap_or(SymbolManglingVersion::Legacy)
self.cg.symbol_mangling_version.unwrap_or(if self.unstable_features.is_nightly_build() {
SymbolManglingVersion::V0
} else {
SymbolManglingVersion::Legacy
})
}

#[inline]
Expand Down
2 changes: 1 addition & 1 deletion src/doc/rustc/src/symbol-mangling/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,6 @@ foo::example_function
## Mangling versions

`rustc` supports different mangling versions which encode the names in different ways.
The legacy version (which is currently the default) is not described here.
The legacy version (which is currently the default on beta/stable) is not described here.
The "v0" mangling scheme addresses several limitations of the legacy format,
and is described in the [v0 Symbol Format](v0.md) chapter.
8 changes: 4 additions & 4 deletions tests/assembly-llvm/closure-inherit-target-feature.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use std::arch::x86_64::{__m128, _mm_blend_ps};
pub unsafe fn sse41_blend_nofeature(x: __m128, y: __m128, ret: *mut __m128) {
let f = {
// check that _mm_blend_ps is not being inlined into the closure
// CHECK-LABEL: {{sse41_blend_nofeature.*closure.*:}}
// CHECK-LABEL: {{sse41_blend_nofeature:}}
// CHECK-NOT: blendps
// CHECK: {{call .*_mm_blend_ps.*}}
// CHECK-NOT: blendps
Expand All @@ -29,7 +29,7 @@ pub unsafe fn sse41_blend_nofeature(x: __m128, y: __m128, ret: *mut __m128) {
pub fn sse41_blend_noinline(x: __m128, y: __m128) -> __m128 {
let f = {
// check that _mm_blend_ps is being inlined into the closure
// CHECK-LABEL: {{sse41_blend_noinline.*closure.*:}}
// CHECK-LABEL: {{sse41_blend_noinline:}}
// CHECK-NOT: _mm_blend_ps
// CHECK: blendps
// CHECK-NOT: _mm_blend_ps
Expand All @@ -45,10 +45,10 @@ pub fn sse41_blend_noinline(x: __m128, y: __m128) -> __m128 {
pub fn sse41_blend_doinline(x: __m128, y: __m128) -> __m128 {
// check that the closure and _mm_blend_ps are being inlined into the function
// CHECK-LABEL: sse41_blend_doinline:
// CHECK-NOT: {{sse41_blend_doinline.*closure.*}}
// CHECK-NOT: {{sse41_blend_doinline:}}
// CHECK-NOT: _mm_blend_ps
// CHECK: blendps
// CHECK-NOT: {{sse41_blend_doinline.*closure.*}}
// CHECK-NOT: {{sse41_blend_doinline.*}}
// CHECK-NOT: _mm_blend_ps
// CHECK: ret
let f = {
Expand Down
4 changes: 2 additions & 2 deletions tests/codegen-llvm/array-from_fn.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

#[no_mangle]
pub fn iota() -> [u8; 16] {
// OPT-NOT: core..array..Guard
// NORMAL: core..array..Guard
// OPT-NOT: core::array::Guard
// NORMAL: core::array::Guard
std::array::from_fn(|i| i as _)
}
8 changes: 4 additions & 4 deletions tests/codegen-llvm/cold-attribute.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ pub async fn async_block() {
f.await;
}
x(
// CHECK-LABEL: ; cold_attribute::async_block::{{{{closure}}}}::{{{{closure}}}}
// CHECK-LABEL: ; cold_attribute::async_block::{closure#0}::{closure#0}
// CHECK-NEXT: Function Attrs: cold {{.*}}
#[cold]
async {},
Expand All @@ -33,7 +33,7 @@ pub fn closure() {
f()
}
x(
// CHECK-LABEL: ; cold_attribute::closure::{{{{closure}}}}
// CHECK-LABEL: ; cold_attribute::closure::{closure#0}
// CHECK-NEXT: Function Attrs: cold {{.*}}
#[cold]
|| {},
Expand All @@ -43,14 +43,14 @@ pub fn closure() {
pub struct S;

impl S {
// CHECK-LABEL: ; cold_attribute::S::method
// CHECK-LABEL: ; <cold_attribute::S>::method
// CHECK-NEXT: Function Attrs: cold {{.*}}
#[cold]
pub fn method(&self) {}
}

pub trait Trait {
// CHECK-LABEL: ; cold_attribute::Trait::trait_fn
// CHECK-LABEL: ; <cold_attribute::S as cold_attribute::Trait>::trait_fn
// CHECK-NEXT: Function Attrs: cold {{.*}}
#[cold]
fn trait_fn(&self) {}
Expand Down
4 changes: 2 additions & 2 deletions tests/codegen-llvm/naked-fn/generics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ fn test(x: u64) {
}

// CHECK: .balign 4
// CHECK: add rax, 2
// CHECK: add rax, 1
// CHECK: add rax, 42

// CHECK: .balign 4
// CHECK: add rax, 1
// CHECK: add rax, 2
// CHECK: add rax, 42

#[unsafe(naked)]
Expand Down
6 changes: 3 additions & 3 deletions tests/codegen-llvm/no-alloca-inside-if-false.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@

#[inline(never)]
fn test<const SIZE: usize>() {
// CHECK-LABEL: no_alloca_inside_if_false::test
// CHECK-LABEL: no_alloca_inside_if_false::test::<8192>
// CHECK: start:
// CHECK-NEXT: alloca [{{12|24}} x i8]
// CHECK-NOT: alloca
// CHECK-NEXT: = alloca [{{12|24}} x i8]
// CHECK-NOT: = alloca
if const { SIZE < 4096 } {
let arr = [0u8; SIZE];
std::hint::black_box(&arr);
Expand Down
4 changes: 2 additions & 2 deletions tests/codegen-llvm/precondition-checks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@

use std::ptr::NonNull;

// CHECK-LABEL: ; core::ptr::non_null::NonNull<T>::new_unchecked
// CHECK-LABEL: ; <core::ptr::non_null::NonNull<u8>>::new_unchecked
// CHECK-NOT: call
// CHECK: }

// CHECK-LABEL: @nonnull_new
#[no_mangle]
pub unsafe fn nonnull_new(ptr: *mut u8) -> NonNull<u8> {
// CHECK: ; call core::ptr::non_null::NonNull<T>::new_unchecked
// CHECK: ; call <core::ptr::non_null::NonNull<u8>>::new_unchecked
unsafe { NonNull::new_unchecked(ptr) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

#![crate_type = "lib"]

// CHECK-LABEL: define{{.*}}4core3ptr47drop_in_place$LT$dyn$u20$core..marker..Send$GT$
// CHECK-LABEL: define{{.*}}4core3ptr13drop_in_placeDNtNtB4_6marker4Send
// CHECK-SAME: {{.*}}!type ![[TYPE1:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
// CHECK: call i1 @llvm.type.test(ptr {{%.+}}, metadata !"_ZTSFvPu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops4drop4Dropu6regionEE")

Expand All @@ -20,7 +20,7 @@ struct PresentDrop;

impl Drop for PresentDrop {
fn drop(&mut self) {}
// CHECK: define{{.*}}4core3ptr{{[0-9]+}}drop_in_place$LT${{.*}}PresentDrop$GT${{.*}}!type ![[TYPE1]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
// CHECK: define{{.*}}4core3ptr{{[0-9]+}}drop_in_place{{.*}}PresentDrop{{.*}}!type ![[TYPE1]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
}

pub fn foo() {
Expand Down
6 changes: 3 additions & 3 deletions tests/codegen-llvm/sanitizer/kcfi/fn-ptr-reify-shim.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@ pub fn main() {
// `DynCompatible` is indeed dyn-compatible.
let _: &dyn DynCompatible = &s;

// CHECK: call <fn_ptr_reify_shim::S as fn_ptr_reify_shim::DynCompatible>::dyn_name{{.*}}reify.shim.fnptr
// CHECK: call <fn_ptr_reify_shim::S as fn_ptr_reify_shim::DynCompatible>::dyn_name::{shim:reify_fnptr#0}
let dyn_name = S::dyn_name as fn(&S) -> &str;
let _unused = dyn_name(&s);

// CHECK: call fn_ptr_reify_shim::DynCompatible::dyn_name_default{{.*}}reify.shim.fnptr
// CHECK: call <fn_ptr_reify_shim::S as fn_ptr_reify_shim::DynCompatible>::dyn_name_default::{shim:reify_fnptr#0}
let dyn_name_default = S::dyn_name_default as fn(&S) -> &str;
let _unused = dyn_name_default(&s);

Expand All @@ -68,7 +68,7 @@ pub fn main() {
let not_dyn_name = S::not_dyn_name as fn() -> &'static str;
let _unused = not_dyn_name();

// CHECK: call fn_ptr_reify_shim::NotDynCompatible::not_dyn_name_default{{$}}
// CHECK: call <fn_ptr_reify_shim::S as fn_ptr_reify_shim::NotDynCompatible>::not_dyn_name_default{{$}}
let not_dyn_name_default = S::not_dyn_name_default as fn() -> &'static str;
let _unused = not_dyn_name_default();
}
4 changes: 2 additions & 2 deletions tests/codegen-llvm/sanitizer/kcfi/naked-function.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ impl MyTrait for Thing {}
// the shim calls the real function
// CHECK-LABEL: define
// CHECK-SAME: my_naked_function
// CHECK-SAME: reify.shim.fnptr
// CHECK-SAME: reify_fnptr

// CHECK-LABEL: main
#[unsafe(no_mangle)]
Expand All @@ -40,7 +40,7 @@ pub fn main() {
// main calls the shim function
// CHECK: call void
// CHECK-SAME: my_naked_function
// CHECK-SAME: reify.shim.fnptr
// CHECK-SAME: reify_fnptr
(F)(&Thing);
}

Expand Down
4 changes: 2 additions & 2 deletions tests/codegen-llvm/sanitizer/sanitize-off.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ pub trait MyTrait {
fn unsanitized(&self, b: &mut u8) -> u8;
fn sanitized(&self, b: &mut u8) -> u8;

// CHECK-LABEL: ; sanitize_off::MyTrait::unsanitized_default
// CHECK-LABEL: ; <() as sanitize_off::MyTrait>::unsanitized_default
// CHECK-NEXT: ; Function Attrs:
// CHECK-NOT: sanitize_address
// CHECK: start:
Expand All @@ -77,7 +77,7 @@ pub trait MyTrait {
*b
}

// CHECK-LABEL: ; sanitize_off::MyTrait::sanitized_default
// CHECK-LABEL: ; <() as sanitize_off::MyTrait>::sanitized_default
// CHECK-NEXT: ; Function Attrs:
// CHECK: sanitize_address
// CHECK: start:
Expand Down
34 changes: 18 additions & 16 deletions tests/debuginfo/basic-types-globals.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,35 @@

// lldb-command:run
// lldb-command:v B
// lldb-check: ::B::[...] = false
// lldb-check: ::B = false
// lldb-command:v I
// lldb-check: ::I::[...] = -1
// lldb-check: ::I = -1
// lldb-command:v --format=d C
// lldb-check: ::C::[...] = 97
// lldb-check: ::C = 97
// lldb-command:v --format=d I8
// lldb-check: ::I8::[...] = 68
// lldb-check: ::I8 = 68
// lldb-command:v I16
// lldb-check: ::I16::[...] = -16
// lldb-check: ::I16 = -16
// lldb-command:v I32
// lldb-check: ::I32::[...] = -32
// lldb-check: ::I32 = -32
// lldb-command:v I64
// lldb-check: ::I64::[...] = -64
// lldb-check: ::I64 = -64
// lldb-command:v U
// lldb-check: ::U::[...] = 1
// lldb-check: ::U = 1
// lldb-command:v --format=d U8
// lldb-check: ::U8::[...] = 100
// lldb-check: ::U8 = 100
// lldb-command:v U16
// lldb-check: ::U16::[...] = 16
// lldb-check: ::U16 = 16
// lldb-command:v U32
// lldb-check: ::U32::[...] = 32
// lldb-check: ::U32 = 32
// lldb-command:v U64
// lldb-check: ::U64::[...] = 64
// lldb-check: ::U64 = 64
// lldb-command:v F16
// lldb-check: ::F16::[...] = 1.5
// lldb-check: ::F16 = 1.5
// lldb-command:v F32
// lldb-check: ::F32::[...] = 2.5
// lldb-check: ::F32 = 2.5
// lldb-command:v F64
// lldb-check: ::F64::[...] = 3.5
// lldb-check: ::F64 = 3.5

// gdb-command:run
// gdb-command:print B
Expand Down Expand Up @@ -103,4 +103,6 @@ fn main() {
let b = unsafe { F16 };
}

fn _zzz() {()}
fn _zzz() {
()
}
2 changes: 1 addition & 1 deletion tests/debuginfo/no_mangle-info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
// lldb-command:v TEST
// lldb-check:(unsigned long) TEST = 3735928559
// lldb-command:v OTHER_TEST
// lldb-check:(unsigned long) no_mangle_info::namespace::OTHER_TEST::[...] = 42
// lldb-check:(unsigned long) no_mangle_info::namespace::OTHER_TEST = 42

// === CDB TESTS ==================================================================================
// cdb-command: g
Expand Down
6 changes: 3 additions & 3 deletions tests/ui/panics/short-ice-remove-middle-frames-2.run.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ debug!!!
stack backtrace:
0: std::panicking::begin_panic
1: short_ice_remove_middle_frames_2::eight
2: short_ice_remove_middle_frames_2::seven::{{closure}}
2: short_ice_remove_middle_frames_2::seven::{closure#0}
[... omitted 3 frames ...]
3: short_ice_remove_middle_frames_2::fifth
4: short_ice_remove_middle_frames_2::fourth::{{closure}}
4: short_ice_remove_middle_frames_2::fourth::{closure#0}
[... omitted 4 frames ...]
5: short_ice_remove_middle_frames_2::first
6: short_ice_remove_middle_frames_2::main
7: core::ops::function::FnOnce::call_once
7: <fn() as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
6 changes: 3 additions & 3 deletions tests/ui/panics/short-ice-remove-middle-frames.run.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ stack backtrace:
0: std::panicking::begin_panic
1: short_ice_remove_middle_frames::seven
2: short_ice_remove_middle_frames::sixth
3: short_ice_remove_middle_frames::fifth::{{closure}}
3: short_ice_remove_middle_frames::fifth::{closure#0}
[... omitted 4 frames ...]
4: short_ice_remove_middle_frames::second
5: short_ice_remove_middle_frames::first::{{closure}}
5: short_ice_remove_middle_frames::first::{closure#0}
6: short_ice_remove_middle_frames::first
7: short_ice_remove_middle_frames::main
8: core::ops::function::FnOnce::call_once
8: <fn() as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Loading