Skip to content

Commit 5b7641f

Browse files
committed
remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead
1 parent 8549802 commit 5b7641f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+378
-346
lines changed

compiler/rustc_codegen_cranelift/example/mini_core.rs

+64-19
Original file line numberDiff line numberDiff line change
@@ -616,25 +616,70 @@ pub union MaybeUninit<T> {
616616
}
617617

618618
pub mod intrinsics {
619-
extern "rust-intrinsic" {
620-
#[rustc_safe_intrinsic]
621-
pub fn abort() -> !;
622-
#[rustc_safe_intrinsic]
623-
pub fn size_of<T>() -> usize;
624-
pub fn size_of_val<T: ?::Sized>(val: *const T) -> usize;
625-
#[rustc_safe_intrinsic]
626-
pub fn min_align_of<T>() -> usize;
627-
pub fn min_align_of_val<T: ?::Sized>(val: *const T) -> usize;
628-
pub fn copy<T>(src: *const T, dst: *mut T, count: usize);
629-
pub fn transmute<T, U>(e: T) -> U;
630-
pub fn ctlz_nonzero<T>(x: T) -> u32;
631-
#[rustc_safe_intrinsic]
632-
pub fn needs_drop<T: ?::Sized>() -> bool;
633-
#[rustc_safe_intrinsic]
634-
pub fn bitreverse<T>(x: T) -> T;
635-
#[rustc_safe_intrinsic]
636-
pub fn bswap<T>(x: T) -> T;
637-
pub fn write_bytes<T>(dst: *mut T, val: u8, count: usize);
619+
#[rustc_intrinsic]
620+
#[rustc_intrinsic_must_be_overridden]
621+
pub fn abort() -> ! {
622+
loop {}
623+
}
624+
#[rustc_intrinsic]
625+
#[rustc_intrinsic_must_be_overridden]
626+
pub fn size_of<T>() -> usize {
627+
loop {}
628+
}
629+
#[rustc_intrinsic]
630+
#[rustc_intrinsic_must_be_overridden]
631+
pub unsafe fn size_of_val<T: ?::Sized>(_val: *const T) -> usize {
632+
loop {}
633+
}
634+
#[rustc_intrinsic]
635+
#[rustc_intrinsic_must_be_overridden]
636+
pub fn min_align_of<T>() -> usize {
637+
loop {}
638+
}
639+
#[rustc_intrinsic]
640+
#[rustc_intrinsic_must_be_overridden]
641+
pub unsafe fn min_align_of_val<T: ?::Sized>(_val: *const T) -> usize {
642+
loop {}
643+
}
644+
#[rustc_intrinsic]
645+
#[rustc_intrinsic_must_be_overridden]
646+
pub unsafe fn copy<T>(_src: *const T, _dst: *mut T, _count: usize) {
647+
loop {}
648+
}
649+
#[rustc_intrinsic]
650+
#[rustc_intrinsic_must_be_overridden]
651+
pub unsafe fn transmute<T, U>(_e: T) -> U {
652+
loop {}
653+
}
654+
#[rustc_intrinsic]
655+
#[rustc_intrinsic_must_be_overridden]
656+
pub unsafe fn ctlz_nonzero<T>(_x: T) -> u32 {
657+
loop {}
658+
}
659+
#[rustc_intrinsic]
660+
#[rustc_intrinsic_must_be_overridden]
661+
pub fn needs_drop<T: ?::Sized>() -> bool {
662+
loop {}
663+
}
664+
#[rustc_intrinsic]
665+
#[rustc_intrinsic_must_be_overridden]
666+
pub fn bitreverse<T>(_x: T) -> T {
667+
loop {}
668+
}
669+
#[rustc_intrinsic]
670+
#[rustc_intrinsic_must_be_overridden]
671+
pub fn bswap<T>(_x: T) -> T {
672+
loop {}
673+
}
674+
#[rustc_intrinsic]
675+
#[rustc_intrinsic_must_be_overridden]
676+
pub unsafe fn write_bytes<T>(_dst: *mut T, _val: u8, _count: usize) {
677+
loop {}
678+
}
679+
#[rustc_intrinsic]
680+
#[rustc_intrinsic_must_be_overridden]
681+
pub unsafe fn unreachable() -> ! {
682+
loop {}
638683
}
639684
}
640685

compiler/rustc_codegen_gcc/example/mini_core.rs

+64-22
Original file line numberDiff line numberDiff line change
@@ -579,28 +579,70 @@ pub union MaybeUninit<T> {
579579
}
580580

581581
pub mod intrinsics {
582-
use crate::Sized;
583-
584-
extern "rust-intrinsic" {
585-
#[rustc_safe_intrinsic]
586-
pub fn abort() -> !;
587-
#[rustc_safe_intrinsic]
588-
pub fn size_of<T>() -> usize;
589-
pub fn size_of_val<T: ?Sized>(val: *const T) -> usize;
590-
#[rustc_safe_intrinsic]
591-
pub fn min_align_of<T>() -> usize;
592-
pub fn min_align_of_val<T: ?Sized>(val: *const T) -> usize;
593-
pub fn copy<T>(src: *const T, dst: *mut T, count: usize);
594-
pub fn transmute<T, U>(e: T) -> U;
595-
pub fn ctlz_nonzero<T>(x: T) -> u32;
596-
#[rustc_safe_intrinsic]
597-
pub fn needs_drop<T: ?Sized>() -> bool;
598-
#[rustc_safe_intrinsic]
599-
pub fn bitreverse<T>(x: T) -> T;
600-
#[rustc_safe_intrinsic]
601-
pub fn bswap<T>(x: T) -> T;
602-
pub fn write_bytes<T>(dst: *mut T, val: u8, count: usize);
603-
pub fn unreachable() -> !;
582+
#[rustc_intrinsic]
583+
#[rustc_intrinsic_must_be_overridden]
584+
pub fn abort() -> ! {
585+
loop {}
586+
}
587+
#[rustc_intrinsic]
588+
#[rustc_intrinsic_must_be_overridden]
589+
pub fn size_of<T>() -> usize {
590+
loop {}
591+
}
592+
#[rustc_intrinsic]
593+
#[rustc_intrinsic_must_be_overridden]
594+
pub unsafe fn size_of_val<T: ?::Sized>(_val: *const T) -> usize {
595+
loop {}
596+
}
597+
#[rustc_intrinsic]
598+
#[rustc_intrinsic_must_be_overridden]
599+
pub fn min_align_of<T>() -> usize {
600+
loop {}
601+
}
602+
#[rustc_intrinsic]
603+
#[rustc_intrinsic_must_be_overridden]
604+
pub unsafe fn min_align_of_val<T: ?::Sized>(_val: *const T) -> usize {
605+
loop {}
606+
}
607+
#[rustc_intrinsic]
608+
#[rustc_intrinsic_must_be_overridden]
609+
pub unsafe fn copy<T>(_src: *const T, _dst: *mut T, _count: usize) {
610+
loop {}
611+
}
612+
#[rustc_intrinsic]
613+
#[rustc_intrinsic_must_be_overridden]
614+
pub unsafe fn transmute<T, U>(_e: T) -> U {
615+
loop {}
616+
}
617+
#[rustc_intrinsic]
618+
#[rustc_intrinsic_must_be_overridden]
619+
pub unsafe fn ctlz_nonzero<T>(_x: T) -> u32 {
620+
loop {}
621+
}
622+
#[rustc_intrinsic]
623+
#[rustc_intrinsic_must_be_overridden]
624+
pub fn needs_drop<T: ?::Sized>() -> bool {
625+
loop {}
626+
}
627+
#[rustc_intrinsic]
628+
#[rustc_intrinsic_must_be_overridden]
629+
pub fn bitreverse<T>(_x: T) -> T {
630+
loop {}
631+
}
632+
#[rustc_intrinsic]
633+
#[rustc_intrinsic_must_be_overridden]
634+
pub fn bswap<T>(_x: T) -> T {
635+
loop {}
636+
}
637+
#[rustc_intrinsic]
638+
#[rustc_intrinsic_must_be_overridden]
639+
pub unsafe fn write_bytes<T>(_dst: *mut T, _val: u8, _count: usize) {
640+
loop {}
641+
}
642+
#[rustc_intrinsic]
643+
#[rustc_intrinsic_must_be_overridden]
644+
pub unsafe fn unreachable() -> ! {
645+
loop {}
604646
}
605647
}
606648

compiler/rustc_codegen_gcc/tests/run/abort1.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ pub(crate) unsafe auto trait Freeze {}
3333
mod intrinsics {
3434
use super::Sized;
3535

36-
extern "rust-intrinsic" {
37-
#[rustc_safe_intrinsic]
38-
pub fn abort() -> !;
36+
#[rustc_nounwind]
37+
#[rustc_intrinsic]
38+
#[rustc_intrinsic_must_be_overridden]
39+
pub fn abort() -> ! {
40+
loop {}
3941
}
4042
}
4143

compiler/rustc_codegen_gcc/tests/run/abort2.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ pub(crate) unsafe auto trait Freeze {}
3333
mod intrinsics {
3434
use super::Sized;
3535

36-
extern "rust-intrinsic" {
37-
#[rustc_safe_intrinsic]
38-
pub fn abort() -> !;
36+
#[rustc_nounwind]
37+
#[rustc_intrinsic]
38+
#[rustc_intrinsic_must_be_overridden]
39+
pub fn abort() -> ! {
40+
loop {}
3941
}
4042
}
4143

compiler/rustc_codegen_gcc/tests/run/array.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,11 @@ fn panic_bounds_check(index: usize, len: usize) -> ! {
106106
}
107107

108108
mod intrinsics {
109-
extern "rust-intrinsic" {
110-
#[rustc_safe_intrinsic]
111-
pub fn abort() -> !;
109+
#[rustc_nounwind]
110+
#[rustc_intrinsic]
111+
#[rustc_intrinsic_must_be_overridden]
112+
pub fn abort() -> ! {
113+
loop {}
112114
}
113115
}
114116

compiler/rustc_codegen_gcc/tests/run/assign.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,11 @@ mod libc {
5656
}
5757

5858
mod intrinsics {
59-
extern "rust-intrinsic" {
60-
#[rustc_safe_intrinsic]
61-
pub fn abort() -> !;
59+
#[rustc_nounwind]
60+
#[rustc_intrinsic]
61+
#[rustc_intrinsic_must_be_overridden]
62+
pub fn abort() -> ! {
63+
loop {}
6264
}
6365
}
6466

compiler/rustc_codegen_gcc/tests/run/closure.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,11 @@ fn panic_bounds_check(index: usize, len: usize) -> ! {
9898
}
9999

100100
mod intrinsics {
101-
extern "rust-intrinsic" {
102-
#[rustc_safe_intrinsic]
103-
pub fn abort() -> !;
101+
#[rustc_nounwind]
102+
#[rustc_intrinsic]
103+
#[rustc_intrinsic_must_be_overridden]
104+
pub fn abort() -> ! {
105+
loop {}
104106
}
105107
}
106108

compiler/rustc_codegen_gcc/tests/run/condition.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,11 @@ fn panic_bounds_check(index: usize, len: usize) -> ! {
109109
}
110110

111111
mod intrinsics {
112-
extern "rust-intrinsic" {
113-
#[rustc_safe_intrinsic]
114-
pub fn abort() -> !;
112+
#[rustc_nounwind]
113+
#[rustc_intrinsic]
114+
#[rustc_intrinsic_must_be_overridden]
115+
pub fn abort() -> ! {
116+
loop {}
115117
}
116118
}
117119

compiler/rustc_codegen_gcc/tests/run/fun_ptr.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,11 @@ fn panic_bounds_check(index: usize, len: usize) -> ! {
103103
}
104104

105105
mod intrinsics {
106-
extern "rust-intrinsic" {
107-
#[rustc_safe_intrinsic]
108-
pub fn abort() -> !;
106+
#[rustc_nounwind]
107+
#[rustc_intrinsic]
108+
#[rustc_intrinsic_must_be_overridden]
109+
pub fn abort() -> ! {
110+
loop {}
109111
}
110112
}
111113

compiler/rustc_codegen_gcc/tests/run/mut_ref.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,11 @@ mod libc {
5858
}
5959

6060
mod intrinsics {
61-
extern "rust-intrinsic" {
62-
#[rustc_safe_intrinsic]
63-
pub fn abort() -> !;
61+
#[rustc_nounwind]
62+
#[rustc_intrinsic]
63+
#[rustc_intrinsic_must_be_overridden]
64+
pub fn abort() -> ! {
65+
loop {}
6466
}
6567
}
6668

compiler/rustc_codegen_gcc/tests/run/operations.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,11 @@ mod libc {
6464
}
6565

6666
mod intrinsics {
67-
extern "rust-intrinsic" {
68-
#[rustc_safe_intrinsic]
69-
pub fn abort() -> !;
67+
#[rustc_nounwind]
68+
#[rustc_intrinsic]
69+
#[rustc_intrinsic_must_be_overridden]
70+
pub fn abort() -> ! {
71+
loop {}
7072
}
7173
}
7274

compiler/rustc_codegen_gcc/tests/run/ptr_cast.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,11 @@ fn panic_bounds_check(index: usize, len: usize) -> ! {
103103
}
104104

105105
mod intrinsics {
106-
extern "rust-intrinsic" {
107-
#[rustc_safe_intrinsic]
108-
pub fn abort() -> !;
106+
#[rustc_nounwind]
107+
#[rustc_intrinsic]
108+
#[rustc_intrinsic_must_be_overridden]
109+
pub fn abort() -> ! {
110+
loop {}
109111
}
110112
}
111113

compiler/rustc_codegen_gcc/tests/run/slice.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,11 @@ fn panic_bounds_check(index: usize, len: usize) -> ! {
103103
mod intrinsics {
104104
use super::Sized;
105105

106-
extern "rust-intrinsic" {
107-
#[rustc_safe_intrinsic]
108-
pub fn abort() -> !;
106+
#[rustc_nounwind]
107+
#[rustc_intrinsic]
108+
#[rustc_intrinsic_must_be_overridden]
109+
pub fn abort() -> ! {
110+
loop {}
109111
}
110112
}
111113

compiler/rustc_codegen_gcc/tests/run/static.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,11 @@ pub(crate) unsafe auto trait Freeze {}
4646
mod intrinsics {
4747
use super::Sized;
4848

49-
extern "rust-intrinsic" {
50-
#[rustc_safe_intrinsic]
51-
pub fn abort() -> !;
49+
#[rustc_nounwind]
50+
#[rustc_intrinsic]
51+
#[rustc_intrinsic_must_be_overridden]
52+
pub fn abort() -> ! {
53+
loop {}
5254
}
5355
}
5456

0 commit comments

Comments
 (0)