mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-21 12:35:47 -04:00

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
44 lines
723 B
C++
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
|