-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Open
Labels
A-CLIArea: Command-line interface (CLI) to the compilerArea: Command-line interface (CLI) to the compilerA-LTOArea: Link-time optimization (LTO)Area: Link-time optimization (LTO)C-bugCategory: This is a bug.Category: This is a bug.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
I tried this code:
// answer.rs
pub fn answer() -> u64 {
42
}
And compiled it with:
rustc answer.rs --crate-type staticlib --emit obj -C lto=thin
I expected to see an object file created. Instead it appears to succeed but no object file is produced.
Meta
rustc --version --verbose
:
rustc 1.82.0 (f6e511eec 2024-10-15)
binary: rustc
commit-hash: f6e511eec7342f59a25f7c0534f1dbea00d01b14
commit-date: 2024-10-15
host: x86_64-pc-windows-msvc
release: 1.82.0
LLVM version: 19.1.1
Metadata
Metadata
Assignees
Labels
A-CLIArea: Command-line interface (CLI) to the compilerArea: Command-line interface (CLI) to the compilerA-LTOArea: Link-time optimization (LTO)Area: Link-time optimization (LTO)C-bugCategory: This is a bug.Category: This is a bug.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Type
Projects
Milestone
Relationships
Development
Select code repository
Activity
bjorn3 commentedon Jan 2, 2025
--emit obj
copies a single object file out of the codegen results to the output location, but thinLTO produces a single object file per input llvm bitcode file, so at least one file per crate and unless-Ccodegen-units
is used, by default 16 object files per crate.--emit obj
doesn't know which of these object files you want.ChrisDenton commentedon Jan 2, 2025
If it's simply not possible to produce an object file, I'd suggest the combination of flags should be an error. Or more generally it should at least warn if no object file was produced, if not error.