mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 19:06:05 +00:00

checks across module boundaries. This was causing us to load constructor definitions for all consumers of a module with a pending check. (In one case we saw ~7% of total frontend time spent loading constructors for this check.) llvm-svn: 335807
24 lines
536 B
C++
24 lines
536 B
C++
// RUN: %clang_cc1 -fmodules -verify %s
|
|
// expected-no-diagnostics
|
|
|
|
#pragma clang module build M
|
|
module M {}
|
|
#pragma clang module contents
|
|
#pragma clang module begin M
|
|
struct A {
|
|
A();
|
|
~A() { delete p; } // expected-warning {{'delete' applied to a pointer that was allocated with 'new[]'}}
|
|
int *p;
|
|
};
|
|
inline A::A() : p(new int[32]) {} // expected-note {{allocated}}
|
|
struct B {
|
|
B();
|
|
~B() { delete p; }
|
|
int *p;
|
|
};
|
|
#pragma clang module end
|
|
#pragma clang module endbuild
|
|
|
|
#pragma clang module import M
|
|
B::B() : p(new int[32]) {}
|