[clang][lex] NFCI: Use DirectoryEntryRef in ModuleMap::inferFrameworkModule()
[llvm-project.git] / clang / test / Misc / backend-stack-frame-diagnostics.cpp
blob2059ab5a5bce1294511d74134208d7828776e9c5
1 // REQUIRES: x86-registered-target
2 // RUN: %clang -target i386-apple-darwin -std=c++11 -fblocks -Wframe-larger-than=70 -Wno-stdlibcxx-not-found -Xclang -verify -o /dev/null -c %s
3 // RUN: %clang -target i386-apple-darwin -std=c++11 -fblocks -Wframe-larger-than=70 -Wno-stdlibcxx-not-found -Xclang -verify -o /dev/null -c %s -DIS_SYSHEADER
5 // Test that:
6 // * The driver passes the option through to the backend.
7 // * The frontend diagnostic handler 'demangles' and resolves the correct function definition.
9 // Test that link invocations don't emit an "argument unused during compilation" diagnostic.
10 // RUN: touch %t.o
11 // RUN: %clang -Werror -Wno-msvc-not-found -Wno-liblto -Wframe-larger-than=0 %t.o -### 2>&1 | not grep ' error: '
13 // TODO: Support rich backend diagnostics for Objective-C methods.
15 // Backend diagnostics aren't suppressed in system headers because such results
16 // are significant and actionable.
17 #ifdef IS_HEADER
19 #ifdef IS_SYSHEADER
20 #pragma clang system_header
21 #endif
23 extern void doIt(char *);
25 void frameSizeWarning(int, int) {}
27 void frameSizeWarning();
29 void frameSizeWarning() { // expected-warning-re {{stack frame size ({{[0-9]+}}) exceeds limit ({{[0-9]+}}) in 'frameSizeWarning()'}}
30 char buffer[80];
31 doIt(buffer);
34 void frameSizeWarning();
36 void frameSizeWarning(int) {}
38 #pragma GCC diagnostic push
39 #pragma GCC diagnostic ignored "-Wframe-larger-than"
40 void frameSizeWarningIgnored() {
41 char buffer[80];
42 doIt(buffer);
44 #pragma GCC diagnostic pop
46 void frameSizeLocalClassWarning() {
47 struct S {
48 S() { // expected-warning-re {{stack frame size ({{[0-9]+}}) exceeds limit ({{[0-9]+}}) in 'frameSizeLocalClassWarning()::S::S()'}}
49 char buffer[80];
50 doIt(buffer);
53 S();
56 void frameSizeLambdaWarning() {
57 auto fn =
58 []() { // expected-warning-re {{stack frame size ({{[0-9]+}}) exceeds limit ({{[0-9]+}}) in 'frameSizeLambdaWarning()::$_0::operator()() const'}}
59 char buffer[80];
60 doIt(buffer);
62 fn();
65 void frameSizeBlocksWarning() {
66 auto fn =
67 ^() { // expected-warning-re {{stack frame size ({{[0-9]+}}) exceeds limit ({{[0-9]+}}) in 'invocation function for block in frameSizeBlocksWarning()'}}
68 char buffer[80];
69 doIt(buffer);
71 fn();
74 #else
76 #define IS_HEADER
77 #include __FILE__
78 #endif