[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 19:04:41 +08:00
|
|
|
// RUN: %clang_extdef_map %s -- | FileCheck --implicit-check-not "c:@y" --implicit-check-not "c:@z" %s
|
2017-09-22 19:11:01 +08:00
|
|
|
|
|
|
|
int f(int) {
|
|
|
|
return 0;
|
|
|
|
}
|
[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 19:04:41 +08:00
|
|
|
// CHECK-DAG: c:@F@f#I#
|
2017-09-22 19:11:01 +08:00
|
|
|
|
[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 19:04:41 +08:00
|
|
|
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
|
2019-08-06 20:10:16 +08:00
|
|
|
|
|
|
|
// No USR can be generated for this.
|
|
|
|
// Check for no crash in this case.
|
|
|
|
static union {
|
|
|
|
float uf;
|
|
|
|
const int ui;
|
|
|
|
};
|