about summary refs log tree commit diff
path: root/src/test/codegen
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2020-03-15 02:44:13 +0100
committerGitHub <noreply@github.com>2020-03-15 02:44:13 +0100
commit62c057911640a269a8bbb1a4a814c146906194ce (patch)
tree4e52416f35add2203e59f1a6752f16f8bdcd63a1 /src/test/codegen
parent7cdbc87a49b0b705a41a004a6d486b0952521ae7 (diff)
parent8e93a01824a2239f1c588c7c0b884c8a2662e929 (diff)
downloadrust-62c057911640a269a8bbb1a4a814c146906194ce.tar.gz
rust-62c057911640a269a8bbb1a4a814c146906194ce.zip
Rollup merge of #69357 - tmiasko:debuginfo-column, r=michaelwoerister
Emit 1-based column numbers in debuginfo

* Use byte offsets instead of char position offsets. Resolves #67360.
* Use 1-based offsets instead of 0-based ones. Resolves #65437.
* Consistently omit column information for msvc targets, matching clang behaviour (previously columns have been omitted from `DILocation`, but not from `DILexicalBlock`).
Diffstat (limited to 'src/test/codegen')
-rw-r--r--src/test/codegen/debug-column-msvc.rs16
-rw-r--r--src/test/codegen/debug-column.rs24
2 files changed, 40 insertions, 0 deletions
diff --git a/src/test/codegen/debug-column-msvc.rs b/src/test/codegen/debug-column-msvc.rs
new file mode 100644
index 00000000000..aad8b372a8a
--- /dev/null
+++ b/src/test/codegen/debug-column-msvc.rs
@@ -0,0 +1,16 @@
+// Verify that no column information is emitted for MSVC targets
+//
+// only-msvc
+// compile-flags: -C debuginfo=2
+
+// CHECK-NOT: !DILexicalBlock({{.*}}column: {{.*}})
+// CHECK-NOT: !DILocation({{.*}}column: {{.*}})
+
+pub fn add(a: u32, b: u32) -> u32 {
+    a + b
+}
+
+fn main() {
+    let c = add(1, 2);
+    println!("{}", c);
+}
diff --git a/src/test/codegen/debug-column.rs b/src/test/codegen/debug-column.rs
new file mode 100644
index 00000000000..f348c48566d
--- /dev/null
+++ b/src/test/codegen/debug-column.rs
@@ -0,0 +1,24 @@
+// Verify that debuginfo column nubmers are 1-based byte offsets.
+//
+// ignore-windows
+// compile-flags: -C debuginfo=2
+
+fn main() {
+    unsafe {
+        // Column numbers are 1-based. Regression test for #65437.
+        // CHECK: call void @giraffe(), !dbg [[A:!.*]]
+        giraffe();
+
+        // Column numbers use byte offests. Regression test for #67360
+        // CHECK: call void @turtle(), !dbg [[B:!.*]]
+/* ż */ turtle();
+
+        // CHECK: [[A]] = !DILocation(line: 10, column: 9,
+        // CHECK: [[B]] = !DILocation(line: 14, column: 10,
+    }
+}
+
+extern {
+    fn giraffe();
+    fn turtle();
+}