brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 362c626 Raw
45 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -gno-column-info -triple x86_64-apple-macosx10.9.0 -funwind-tables=2 -std=c++11 -fcxx-exceptions -fexceptions %s -o - | FileCheck -allow-deprecated-dag-overlap %s2 3// Test that emitting a landing pad does not affect the line table4// entries for the code that triggered it.5 6// CHECK: #dbg_declare7// CHECK: #dbg_declare({{.*}}, ![[CURRENT_ADDR:.*]], !{{.*}},  ![[DBG1:[0-9]+]]8// CHECK: unwind label %{{.*}}, !dbg ![[DBG1]]9// CHECK: store i64 %{{.*}}, ptr %current_address, align 8, !dbg ![[DBG4:.*]]10// CHECK-NEXT: #dbg_declare({{.*}}, ![[FOUND_IT:.*]], !{{.*}},  ![[DBG2:[0-9]+]]11// CHECK: = landingpad12// CHECK-NEXT: cleanup, !dbg ![[DBG3:.*]]13// CHECK-DAG: ![[CURRENT_ADDR]] = {{.*}}name: "current_address"14// CHECK-DAG: ![[FOUND_IT]] = {{.*}}name: "found_it"15// CHECK-DAG: ![[DBG1]] = !DILocation(line: 256,16// CHECK-DAG: ![[DBG2]] = !DILocation(line: 257,17// CHECK-DAG: ![[DBG3]] = !DILocation(line: 268,18// CHECK-DAG: ![[DBG4]] = !DILocation(line: 256,19typedef unsigned long long uint64_t;20template<class _Tp> class shared_ptr {21public:22  typedef _Tp element_type;23  element_type* __ptr_;24  ~shared_ptr();25  element_type* operator->() const noexcept {return __ptr_;}26};27class Context {28public:29    uint64_t GetIt();30};31class Foo32{33    bool bar();34    virtual shared_ptr<Context> GetContext () = 0;35};36# 253 "Foo.cpp" 337bool38Foo::bar ()39{40  uint64_t current_address = GetContext()->GetIt();41  bool found_it = false;42# 267 "Foo.cpp" 343  return found_it;44}45