summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_codegen_ssa/src/traits/backend.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 03:59:35 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 03:59:35 +0000
commitd1b2d29528b7794b41e66fc2136e395a02f8529b (patch)
treea4a17504b260206dec3cf55b2dca82929a348ac2 /compiler/rustc_codegen_ssa/src/traits/backend.rs
parentReleasing progress-linux version 1.72.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-d1b2d29528b7794b41e66fc2136e395a02f8529b.tar.xz
rustc-d1b2d29528b7794b41e66fc2136e395a02f8529b.zip
Merging upstream version 1.73.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/traits/backend.rs')
-rw-r--r--compiler/rustc_codegen_ssa/src/traits/backend.rs29
1 files changed, 19 insertions, 10 deletions
diff --git a/compiler/rustc_codegen_ssa/src/traits/backend.rs b/compiler/rustc_codegen_ssa/src/traits/backend.rs
index b3c9ecf8b..0a02ca6b3 100644
--- a/compiler/rustc_codegen_ssa/src/traits/backend.rs
+++ b/compiler/rustc_codegen_ssa/src/traits/backend.rs
@@ -23,6 +23,8 @@ use rustc_span::symbol::Symbol;
use rustc_target::abi::call::FnAbi;
use rustc_target::spec::Target;
+use std::fmt;
+
pub trait BackendTypes {
type Value: CodegenObject;
type Function: CodegenObject;
@@ -61,7 +63,7 @@ pub trait CodegenBackend {
fn locale_resource(&self) -> &'static str;
fn init(&self, _sess: &Session) {}
- fn print(&self, _req: PrintRequest, _sess: &Session) {}
+ fn print(&self, _req: &PrintRequest, _out: &mut dyn PrintBackendInfo, _sess: &Session) {}
fn target_features(&self, _sess: &Session, _allow_unstable: bool) -> Vec<Symbol> {
vec![]
}
@@ -140,15 +142,6 @@ pub trait ExtraBackendMethods:
target_features: &[String],
) -> TargetMachineFactoryFn<Self>;
- fn spawn_thread<F, T>(_time_trace: bool, f: F) -> std::thread::JoinHandle<T>
- where
- F: FnOnce() -> T,
- F: Send + 'static,
- T: Send + 'static,
- {
- std::thread::spawn(f)
- }
-
fn spawn_named_thread<F, T>(
_time_trace: bool,
name: String,
@@ -162,3 +155,19 @@ pub trait ExtraBackendMethods:
std::thread::Builder::new().name(name).spawn(f)
}
}
+
+pub trait PrintBackendInfo {
+ fn infallible_write_fmt(&mut self, args: fmt::Arguments<'_>);
+}
+
+impl PrintBackendInfo for String {
+ fn infallible_write_fmt(&mut self, args: fmt::Arguments<'_>) {
+ fmt::Write::write_fmt(self, args).unwrap();
+ }
+}
+
+impl dyn PrintBackendInfo + '_ {
+ pub fn write_fmt(&mut self, args: fmt::Arguments<'_>) {
+ self.infallible_write_fmt(args);
+ }
+}