Files
clang-p2996/clang/test/CodeGenCXX/debug-info-destroy-helper.cpp
CJ Johnson 69cd776e1e [CodeGen] Apply 'nonnull' and 'dereferenceable(N)' to 'this' pointer
arguments.

* Adds 'nonnull' and 'dereferenceable(N)' to 'this' pointer arguments
* Gates 'nonnull' on -f(no-)delete-null-pointer-checks
* Introduces this-nonnull.cpp and microsoft-abi-this-nullable.cpp tests to
  explicitly test the behavior of this change
* Refactors hundreds of over-constrained clang tests to permit these
  attributes, where needed
* Updates Clang12 patch notes mentioning this change

Reviewed-by: rsmith, jdoerfert

Differential Revision: https://reviews.llvm.org/D17993
2020-11-16 17:39:17 -08:00

25 lines
768 B
C++

// RUN: %clang_cc1 -emit-llvm %s -triple x86_64-windows-msvc -gcodeview -debug-info-kind=limited -o - | FileCheck %s
struct b {
b(char *);
~b();
};
struct a {
~a();
};
struct {
b c;
const a &d;
} e[]{nullptr, {}};
// CHECK: define internal void @__cxx_global_array_dtor(i8* %0)
// CHECK-SAME: !dbg ![[SUBPROGRAM:[0-9]+]] {
// CHECK: arraydestroy.body
// CHECK: %arraydestroy.elementPast =
// CHECK-SAME: !dbg ![[LOCATION:[0-9]+]]
// CHECK: call void @"??1<unnamed-type-e>@@QEAA@XZ"(%struct.anon* {{[^,]*}} %arraydestroy.element)
// CHECK-SAME: !dbg ![[LOCATION]]
// CHECK: ![[SUBPROGRAM]] = distinct !DISubprogram(name: "__cxx_global_array_dtor"
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: ![[LOCATION]] = !DILocation(line: 0,