Make LLVM emit assembly comments with -Z asm-comments.

Fixes #35741.
This commit is contained in:
whitequark 2018-08-12 17:59:18 +00:00
parent 0aa8d03202
commit 66fd1ebfae
3 changed files with 9 additions and 2 deletions

View file

@ -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 is_pie_binary = !find_features && is_pie_binary(sess);
let trap_unreachable = sess.target.target.options.trap_unreachable; let trap_unreachable = sess.target.target.options.trap_unreachable;
let asm_comments = sess.asm_comments();
Arc::new(move || { Arc::new(move || {
let tm = unsafe { let tm = unsafe {
llvm::LLVMRustCreateTargetMachine( llvm::LLVMRustCreateTargetMachine(
@ -195,6 +197,7 @@ pub fn target_machine_factory(sess: &Session, find_features: bool)
fdata_sections, fdata_sections,
trap_unreachable, trap_unreachable,
singlethread, singlethread,
asm_comments,
) )
}; };

View file

@ -1455,7 +1455,8 @@ extern "C" {
FunctionSections: bool, FunctionSections: bool,
DataSections: bool, DataSections: bool,
TrapUnreachable: bool, TrapUnreachable: bool,
Singlethread: bool) Singlethread: bool,
AsmComments: bool)
-> Option<&'static mut TargetMachine>; -> Option<&'static mut TargetMachine>;
pub fn LLVMRustDisposeTargetMachine(T: &'static mut TargetMachine); pub fn LLVMRustDisposeTargetMachine(T: &'static mut TargetMachine);
pub fn LLVMRustAddAnalysisPasses(T: &'a TargetMachine, PM: &PassManager<'a>, M: &'a Module); pub fn LLVMRustAddAnalysisPasses(T: &'a TargetMachine, PM: &PassManager<'a>, M: &'a Module);

View file

@ -366,7 +366,8 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
bool PositionIndependentExecutable, bool FunctionSections, bool PositionIndependentExecutable, bool FunctionSections,
bool DataSections, bool DataSections,
bool TrapUnreachable, bool TrapUnreachable,
bool Singlethread) { bool Singlethread,
bool AsmComments) {
auto OptLevel = fromRust(RustOptLevel); auto OptLevel = fromRust(RustOptLevel);
auto RM = fromRust(RustReloc); auto RM = fromRust(RustReloc);
@ -393,6 +394,8 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
} }
Options.DataSections = DataSections; Options.DataSections = DataSections;
Options.FunctionSections = FunctionSections; Options.FunctionSections = FunctionSections;
Options.MCOptions.AsmVerbose = AsmComments;
Options.MCOptions.PreserveAsmComments = AsmComments;
if (TrapUnreachable) { if (TrapUnreachable) {
// Tell LLVM to codegen `unreachable` into an explicit trap instruction. // Tell LLVM to codegen `unreachable` into an explicit trap instruction.