forked from OSchip/llvm-project
MS ABI: Use '1' (instead of '0') relative scope discriminators
This changes the scope discriminator's behavior to start at '1' instead of '0'. Symbol table diffing, for ABI compatibility testing, kept finding these as false positives. llvm-svn: 219075
This commit is contained in:
parent
b3341ea453
commit
040fa34bec
|
@ -160,7 +160,7 @@ public:
|
|||
unsigned &discriminator = Uniquifier[ND];
|
||||
if (!discriminator)
|
||||
discriminator = ++Discriminator[std::make_pair(DC, ND->getIdentifier())];
|
||||
disc = discriminator;
|
||||
disc = discriminator + 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -77,8 +77,8 @@ namespace ns { __declspec(dllexport) int ExternalGlobal; }
|
|||
__declspec(dllexport) auto ExternalAutoTypeGlobal = External();
|
||||
|
||||
int f();
|
||||
// MSC-DAG: @"\01?x@?0??nonInlineStaticLocalsFunc@@YAHXZ@4HA" = internal {{(unnamed_addr )*}}global i32 0
|
||||
// MSC-DAG: @"\01?$S1@?0??nonInlineStaticLocalsFunc@@YAHXZ@4IA" = internal {{(unnamed_addr )*}}global i32 0
|
||||
// MSC-DAG: @"\01?x@?1??nonInlineStaticLocalsFunc@@YAHXZ@4HA" = internal {{(unnamed_addr )*}}global i32 0
|
||||
// MSC-DAG: @"\01?$S1@?1??nonInlineStaticLocalsFunc@@YAHXZ@4IA" = internal {{(unnamed_addr )*}}global i32 0
|
||||
int __declspec(dllexport) nonInlineStaticLocalsFunc() {
|
||||
static int x = f();
|
||||
return x++;
|
||||
|
|
|
@ -95,7 +95,7 @@ inline int __declspec(dllimport) inlineStaticLocalsFunc() {
|
|||
USE(inlineStaticLocalsFunc);
|
||||
|
||||
// The address of a dllimport global cannot be used in constant initialization.
|
||||
// M32-DAG: @"\01?arr@?0??initializationFunc@@YAPAHXZ@4QBQAHB" = internal global [1 x i32*] zeroinitializer
|
||||
// M32-DAG: @"\01?arr@?1??initializationFunc@@YAPAHXZ@4QBQAHB" = internal global [1 x i32*] zeroinitializer
|
||||
// GNU-DAG: @_ZZ18initializationFuncvE3arr = internal global [1 x i32*] zeroinitializer
|
||||
int *initializationFunc() {
|
||||
static int *const arr[] = {&ExternGlobalDecl};
|
||||
|
|
|
@ -13,7 +13,7 @@ auto FunctionWithLocalType() {
|
|||
return LocalType{};
|
||||
}
|
||||
|
||||
// CHECK: "\01?ValueFromFunctionWithLocalType@@3ULocalType@?0??FunctionWithLocalType@@YA?A?<auto>@@XZ@A"
|
||||
// CHECK: "\01?ValueFromFunctionWithLocalType@@3ULocalType@?1??FunctionWithLocalType@@YA?A?<auto>@@XZ@A"
|
||||
auto ValueFromFunctionWithLocalType = FunctionWithLocalType();
|
||||
|
||||
// CHECK: "\01??R<lambda_0>@@QBE?A?<auto>@@XZ"
|
||||
|
@ -22,7 +22,7 @@ auto LambdaWithLocalType = [] {
|
|||
return LocalType{};
|
||||
};
|
||||
|
||||
// CHECK: "\01?ValueFromLambdaWithLocalType@@3ULocalType@?0???R<lambda_0>@@QBE?A?<auto>@@XZ@A"
|
||||
// CHECK: "\01?ValueFromLambdaWithLocalType@@3ULocalType@?1???R<lambda_0>@@QBE?A?<auto>@@XZ@A"
|
||||
auto ValueFromLambdaWithLocalType = LambdaWithLocalType();
|
||||
|
||||
template <typename T>
|
||||
|
|
|
@ -52,8 +52,8 @@ void StaticLocal() {
|
|||
}
|
||||
|
||||
// CHECK-LABEL: define void @"\01?StaticLocal@@YAXXZ"()
|
||||
// CHECK: load i32* @"\01?$S1@?0??StaticLocal@@YAXXZ@4IA"
|
||||
// CHECK: store i32 {{.*}}, i32* @"\01?$S1@?0??StaticLocal@@YAXXZ@4IA"
|
||||
// CHECK: load i32* @"\01?$S1@?1??StaticLocal@@YAXXZ@4IA"
|
||||
// CHECK: store i32 {{.*}}, i32* @"\01?$S1@?1??StaticLocal@@YAXXZ@4IA"
|
||||
// CHECK: ret
|
||||
|
||||
void MultipleStatics() {
|
||||
|
@ -94,7 +94,7 @@ void MultipleStatics() {
|
|||
static S S35;
|
||||
}
|
||||
// CHECK-LABEL: define void @"\01?MultipleStatics@@YAXXZ"()
|
||||
// CHECK: load i32* @"\01?$S1@?0??MultipleStatics@@YAXXZ@4IA"
|
||||
// CHECK: load i32* @"\01?$S1@?1??MultipleStatics@@YAXXZ@4IA"
|
||||
// CHECK: and i32 {{.*}}, 1
|
||||
// CHECK: and i32 {{.*}}, 2
|
||||
// CHECK: and i32 {{.*}}, 4
|
||||
|
@ -102,7 +102,7 @@ void MultipleStatics() {
|
|||
// CHECK: and i32 {{.*}}, 16
|
||||
// ...
|
||||
// CHECK: and i32 {{.*}}, -2147483648
|
||||
// CHECK: load i32* @"\01?$S1@?0??MultipleStatics@@YAXXZ@4IA1"
|
||||
// CHECK: load i32* @"\01?$S1@?1??MultipleStatics@@YAXXZ@4IA1"
|
||||
// CHECK: and i32 {{.*}}, 1
|
||||
// CHECK: and i32 {{.*}}, 2
|
||||
// CHECK: and i32 {{.*}}, 4
|
||||
|
|
Loading…
Reference in New Issue