tests: Test line number in debuginfo for diverging function calls
This commit is contained in:
parent
7278554d82
commit
307fd41123
1 changed files with 38 additions and 0 deletions
38
tests/codegen-llvm/diverging-function-call-debuginfo.rs
Normal file
38
tests/codegen-llvm/diverging-function-call-debuginfo.rs
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
/// Make sure that line debuginfo is correct for diverging calls under certain
|
||||||
|
/// conditions. In particular we want to ensure that the line number is never
|
||||||
|
/// 0, but we check the absence of 0 by looking for the expected exact line
|
||||||
|
/// numbers. Regression test for <https://github.com/rust-lang/rust/issues/59558>.
|
||||||
|
|
||||||
|
//@ compile-flags: -g -Clto -Copt-level=0
|
||||||
|
//@ no-prefer-dynamic
|
||||||
|
|
||||||
|
// First find the scope of both diverge() calls, namely this main() function.
|
||||||
|
// CHECK-DAG: [[MAIN_SCOPE:![0-9]+]] = distinct !DISubprogram(name: "main", linkageName: {{.*}}diverging_function_call_debuginfo{{.*}}main{{.*}}
|
||||||
|
fn main() {
|
||||||
|
if True == False {
|
||||||
|
// unreachable
|
||||||
|
// Then find the DILocation with the correct line number for this call ...
|
||||||
|
// CHECK-DAG: [[UNREACHABLE_CALL_DBG:![0-9]+]] = !DILocation(line: [[@LINE+1]], {{.*}}scope: [[MAIN_SCOPE]]
|
||||||
|
diverge();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... and this call.
|
||||||
|
// CHECK-DAG: [[LAST_CALL_DBG:![0-9]+]] = !DILocation(line: [[@LINE+1]], {{.*}}scope: [[MAIN_SCOPE]]
|
||||||
|
diverge();
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(PartialEq)]
|
||||||
|
pub enum MyBool {
|
||||||
|
True,
|
||||||
|
False,
|
||||||
|
}
|
||||||
|
|
||||||
|
use MyBool::*;
|
||||||
|
|
||||||
|
fn diverge() -> ! {
|
||||||
|
panic!();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Finally make sure both DILocations belong to each the respective diverge() call.
|
||||||
|
// CHECK-DAG: call void {{.*}}diverging_function_call_debuginfo{{.*}}diverge{{.*}} !dbg [[LAST_CALL_DBG]]
|
||||||
|
// CHECK-DAG: call void {{.*}}diverging_function_call_debuginfo{{.*}}diverge{{.*}} !dbg [[UNREACHABLE_CALL_DBG]]
|
||||||
Loading…
Add table
Add a link
Reference in a new issue