From a1ca5f689fbb36ab6f691446390ec80a90a0556a Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Sun, 4 Jun 2017 17:50:25 +0100 Subject: [PATCH] Add llvm.gcov metadata only if profiler is enabled --- src/librustc_trans/debuginfo/metadata.rs | 42 +++++++++++++----------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/librustc_trans/debuginfo/metadata.rs b/src/librustc_trans/debuginfo/metadata.rs index d9b99e0eb683..32fd2bac85f4 100644 --- a/src/librustc_trans/debuginfo/metadata.rs +++ b/src/librustc_trans/debuginfo/metadata.rs @@ -806,28 +806,30 @@ pub fn compile_unit_metadata(scc: &SharedCrateContext, 0, split_name.as_ptr() as *const _); - let cu_desc_metadata = llvm::LLVMRustMetadataAsValue(debug_context.llcontext, - unit_metadata); + if sess.opts.debugging_opts.profile { + let cu_desc_metadata = llvm::LLVMRustMetadataAsValue(debug_context.llcontext, + unit_metadata); - let gcov_cu_info = [ - // Ideally we would be using the three-element form of !llvm.gcov metadata, - // which allows us to specify gcno/gcda files explicitly, but that's only - // available in LLVM 3.9+; so we rely on LLVM chopping off the extension - // and replacing it with gcno/gcda, instead. - path_to_mdstring(debug_context.llcontext, - &scc.output_filenames().with_extension("gcno")), - // path_to_mdstring(debug_context.llcontext, - // &scc.output_filenames().with_extension("gcda")), - cu_desc_metadata, - ]; - let gcov_metadata = llvm::LLVMMDNodeInContext(debug_context.llcontext, - gcov_cu_info.as_ptr(), - gcov_cu_info.len() as c_uint); + let gcov_cu_info = [ + // Ideally we would be using the three-element form of !llvm.gcov metadata, + // which allows us to specify gcno/gcda files explicitly, but that's only + // available in LLVM 3.9+; so we rely on LLVM chopping off the extension + // and replacing it with gcno/gcda, instead. + path_to_mdstring(debug_context.llcontext, + &scc.output_filenames().with_extension("gcno")), + // path_to_mdstring(debug_context.llcontext, + // &scc.output_filenames().with_extension("gcda")), + cu_desc_metadata, + ]; + let gcov_metadata = llvm::LLVMMDNodeInContext(debug_context.llcontext, + gcov_cu_info.as_ptr(), + gcov_cu_info.len() as c_uint); - let llvm_gcov_ident = CString::new("llvm.gcov").unwrap(); - llvm::LLVMAddNamedMetadataOperand(debug_context.llmod, - llvm_gcov_ident.as_ptr(), - gcov_metadata); + let llvm_gcov_ident = CString::new("llvm.gcov").unwrap(); + llvm::LLVMAddNamedMetadataOperand(debug_context.llmod, + llvm_gcov_ident.as_ptr(), + gcov_metadata); + } return unit_metadata; };