Skip to content

Commit 023d730

Browse files
authored
Unrolled build for rust-lang#136473
Rollup merge of rust-lang#136473 - usamoi:infer_linker_hints, r=petrochenkov infer linker flavor by linker name if it's sufficiently specific Fix: `rustc` does not infer `llvm-bitcode-linker` uses `llbc` linker flavor if targeting `nvptx64-nvidia-cuda`.
2 parents f04bbc6 + c23bf48 commit 023d730

File tree

1 file changed

+12
-8
lines changed
  • compiler/rustc_target/src/spec

1 file changed

+12
-8
lines changed

compiler/rustc_target/src/spec/mod.rs

+12-8
Original file line numberDiff line numberDiff line change
@@ -303,15 +303,16 @@ impl LinkerFlavor {
303303
}
304304
}
305305

306-
fn infer_linker_hints(linker_stem: &str) -> (Option<Cc>, Option<Lld>) {
306+
fn infer_linker_hints(linker_stem: &str) -> Result<Self, (Option<Cc>, Option<Lld>)> {
307307
// Remove any version postfix.
308308
let stem = linker_stem
309309
.rsplit_once('-')
310310
.and_then(|(lhs, rhs)| rhs.chars().all(char::is_numeric).then_some(lhs))
311311
.unwrap_or(linker_stem);
312312

313-
// GCC/Clang can have an optional target prefix.
314-
if stem == "emcc"
313+
if stem == "llvm-bitcode-linker" {
314+
Ok(Self::Llbc)
315+
} else if stem == "emcc" // GCC/Clang can have an optional target prefix.
315316
|| stem == "gcc"
316317
|| stem.ends_with("-gcc")
317318
|| stem == "g++"
@@ -321,19 +322,19 @@ impl LinkerFlavor {
321322
|| stem == "clang++"
322323
|| stem.ends_with("-clang++")
323324
{
324-
(Some(Cc::Yes), Some(Lld::No))
325+
Err((Some(Cc::Yes), Some(Lld::No)))
325326
} else if stem == "wasm-ld"
326327
|| stem.ends_with("-wasm-ld")
327328
|| stem == "ld.lld"
328329
|| stem == "lld"
329330
|| stem == "rust-lld"
330331
|| stem == "lld-link"
331332
{
332-
(Some(Cc::No), Some(Lld::Yes))
333+
Err((Some(Cc::No), Some(Lld::Yes)))
333334
} else if stem == "ld" || stem.ends_with("-ld") || stem == "link" {
334-
(Some(Cc::No), Some(Lld::No))
335+
Err((Some(Cc::No), Some(Lld::No)))
335336
} else {
336-
(None, None)
337+
Err((None, None))
337338
}
338339
}
339340

@@ -357,7 +358,10 @@ impl LinkerFlavor {
357358
}
358359

359360
pub fn with_linker_hints(self, linker_stem: &str) -> LinkerFlavor {
360-
self.with_hints(LinkerFlavor::infer_linker_hints(linker_stem))
361+
match LinkerFlavor::infer_linker_hints(linker_stem) {
362+
Ok(linker_flavor) => linker_flavor,
363+
Err(hints) => self.with_hints(hints),
364+
}
361365
}
362366

363367
pub fn check_compatibility(self, cli: LinkerFlavorCli) -> Option<String> {

0 commit comments

Comments
 (0)