about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPietro Albini <pietro@pietroalbini.org>2018-07-03 11:31:09 +0200
committerGitHub <noreply@github.com>2018-07-03 11:31:09 +0200
commit45cd78a4cd3f336ca0b00e97ce65363db340eacc (patch)
treed6cffddc1cf81b4da1e3aff4b65ef3075dbef240
parentf91b02b769ebf38032d6c707366c42cc50e1eb93 (diff)
parent3779a4cb74d567153557036c4d86266bc8df196a (diff)
Rollup merge of #51980 - est31:columns, r=alexcrichton
Emit column info in debuginfo for non msvc like targets

Fixes #42921 everywhere except MSVC. This mimics clang behaviour.
-rw-r--r--src/librustc_codegen_llvm/debuginfo/source_loc.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/librustc_codegen_llvm/debuginfo/source_loc.rs b/src/librustc_codegen_llvm/debuginfo/source_loc.rs
index eb37e7f931c..958d09413ed 100644
--- a/src/librustc_codegen_llvm/debuginfo/source_loc.rs
+++ b/src/librustc_codegen_llvm/debuginfo/source_loc.rs
@@ -81,16 +81,22 @@ impl InternalDebugLocation {
 
 pub fn set_debug_location(bx: &Builder, debug_location: InternalDebugLocation) {
     let metadata_node = match debug_location {
-        KnownLocation { scope, line, .. } => {
-            // Always set the column to zero like Clang and GCC
-            let col = UNKNOWN_COLUMN_NUMBER;
+        KnownLocation { scope, line, col } => {
+            // For MSVC, set the column number to zero.
+            // Otherwise, emit it. This mimics clang behaviour.
+            // See discussion in https://github.com/rust-lang/rust/issues/42921
+            let col_used =  if bx.cx.sess().target.target.options.is_like_msvc {
+                UNKNOWN_COLUMN_NUMBER
+            } else {
+                col as c_uint
+            };
             debug!("setting debug location to {} {}", line, col);
 
             unsafe {
                 llvm::LLVMRustDIBuilderCreateDebugLocation(
                     debug_context(bx.cx).llcontext,
                     line as c_uint,
-                    col as c_uint,
+                    col_used,
                     scope,
                     ptr::null_mut())
             }