teak-llvm/clang/test/Analysis/func-mapping-test.cpp
Rafael Stahl 850361f6c1 [analyzer][CrossTU] Extend CTU to VarDecls with initializer
Summary:
The existing CTU mechanism imports `FunctionDecl`s where the definition is available in another TU. This patch extends that to VarDecls, to bind more constants.

- Add VarDecl importing functionality to CrossTranslationUnitContext
- Import Decls while traversing them in AnalysisConsumer
- Add VarDecls to CTU external mappings generator
- Name changes from "external function map" to "external definition map"

Reviewers: NoQ, dcoughlin, xazax.hun, george.karpenkov, martong

Reviewed By: xazax.hun

Subscribers: Charusso, baloghadamsoftware, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, george.karpenkov, mgorny, whisperity, szepet, rnkovacs, a.sidorin, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D46421

llvm-svn: 358968
2019-04-23 11:04:41 +00:00

44 lines
723 B
C++

// RUN: %clang_extdef_map %s -- | FileCheck --implicit-check-not "c:@y" --implicit-check-not "c:@z" %s
int f(int) {
return 0;
}
// CHECK-DAG: c:@F@f#I#
extern const int x = 5;
// CHECK-DAG: c:@x
// Non-const variables should not be collected.
int y = 5;
// In C++, const implies internal linkage, so not collected.
const int z = 5;
struct S {
int a;
};
extern S const s = {.a = 2};
// CHECK-DAG: c:@s
struct SF {
const int a;
};
SF sf = {.a = 2};
// CHECK-DAG: c:@sf
struct SStatic {
static const int a = 4;
};
const int SStatic::a;
// CHECK-DAG: c:@S@SStatic@a
extern int const arr[5] = { 0, 1 };
// CHECK-DAG: c:@arr
union U {
const int a;
const unsigned int b;
};
U u = {.a = 6};
// CHECK-DAG: c:@u