Skip to content

Commit

Permalink
Make LLVM emit assembly comments with -Z asm-comments.
Browse files Browse the repository at this point in the history
Fixes #35741.
  • Loading branch information
whitequark committed Aug 12, 2018
1 parent 0aa8d03 commit 66fd1eb
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/librustc_codegen_llvm/back/write.rs
Expand Up @@ -182,6 +182,8 @@ pub fn target_machine_factory(sess: &Session, find_features: bool)
let is_pie_binary = !find_features && is_pie_binary(sess);
let trap_unreachable = sess.target.target.options.trap_unreachable;

let asm_comments = sess.asm_comments();

Arc::new(move || {
let tm = unsafe {
llvm::LLVMRustCreateTargetMachine(
Expand All @@ -195,6 +197,7 @@ pub fn target_machine_factory(sess: &Session, find_features: bool)
fdata_sections,
trap_unreachable,
singlethread,
asm_comments,
)
};

Expand Down
3 changes: 2 additions & 1 deletion src/librustc_codegen_llvm/llvm/ffi.rs
Expand Up @@ -1455,7 +1455,8 @@ extern "C" {
FunctionSections: bool,
DataSections: bool,
TrapUnreachable: bool,
Singlethread: bool)
Singlethread: bool,
AsmComments: bool)
-> Option<&'static mut TargetMachine>;
pub fn LLVMRustDisposeTargetMachine(T: &'static mut TargetMachine);
pub fn LLVMRustAddAnalysisPasses(T: &'a TargetMachine, PM: &PassManager<'a>, M: &'a Module);
Expand Down
5 changes: 4 additions & 1 deletion src/rustllvm/PassWrapper.cpp
Expand Up @@ -366,7 +366,8 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
bool PositionIndependentExecutable, bool FunctionSections,
bool DataSections,
bool TrapUnreachable,
bool Singlethread) {
bool Singlethread,
bool AsmComments) {

auto OptLevel = fromRust(RustOptLevel);
auto RM = fromRust(RustReloc);
Expand All @@ -393,6 +394,8 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
}
Options.DataSections = DataSections;
Options.FunctionSections = FunctionSections;
Options.MCOptions.AsmVerbose = AsmComments;
Options.MCOptions.PreserveAsmComments = AsmComments;

if (TrapUnreachable) {
// Tell LLVM to codegen `unreachable` into an explicit trap instruction.
Expand Down

0 comments on commit 66fd1eb

Please sign in to comment.