mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-27 07:19:03 -04:00

Add driver and frontend support for the GCC -Wframe-larger-than=bytes warning. This is the first GCC-compatible backend diagnostic built around LLVM's reporting feature. This commit adds infrastructure to perform reverse lookup from mangled names emitted after LLVM IR generation. We use that to resolve precise locations and originating AST functions, lambdas or block declarations to produce seamless codegen-guided diagnostics. An associated change, StringMap now maintains unique mangled name strings instead of allocating copies. This is a net memory saving in C++ and a small hit for C where we no longer reuse IdentifierInfo storage, pending further optimisation. llvm-svn: 210293
19 lines
637 B
C++
19 lines
637 B
C++
// REQUIRES: x86-registered-target
|
|
// RUN: %clang_cc1 %s -mllvm -warn-stack-size=0 -emit-codegen-only -triple=i386-apple-darwin 2>&1 | FileCheck %s
|
|
|
|
// TODO: Emit rich diagnostics for thunks and move this into the appropriate test file.
|
|
// Until then, test that we fall back and display the LLVM backend diagnostic.
|
|
namespace frameSizeThunkWarning {
|
|
struct A {
|
|
virtual void f();
|
|
};
|
|
|
|
struct B : virtual A {
|
|
virtual void f();
|
|
};
|
|
|
|
// CHECK: warning: stack frame size of {{[0-9]+}} bytes in function 'frameSizeThunkWarning::B::f'
|
|
// CHECK: warning: stack size limit exceeded ({{[0-9]+}}) in {{[^ ]+}}
|
|
void B::f() { }
|
|
}
|