r345302 - Change keep-static-consts to work on static storage duration, not
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 25 12:13:46 PDT 2018
Author: erichkeane
Date: Thu Oct 25 12:13:46 2018
New Revision: 345302
URL: http://llvm.org/viewvc/llvm-project?rev=345302&view=rev
Log:
Change keep-static-consts to work on static storage duration, not
storage class.
To be more in line with what GCC does, switch the condition to be based
on the Static Storage duration instead of the storage class.
Change-Id: I8e959d762433cda48855099353bf3c950b9d54b8
Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/test/CodeGen/keep-static-consts.cpp
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=345302&r1=345301&r2=345302&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Oct 25 12:13:46 2018
@@ -1386,7 +1386,8 @@ void CodeGenModule::SetCommonAttributes(
if (CodeGenOpts.KeepStaticConsts && D && isa<VarDecl>(D)) {
const auto *VD = cast<VarDecl>(D);
- if (VD->getType().isConstQualified() && VD->getStorageClass() == SC_Static)
+ if (VD->getType().isConstQualified() &&
+ VD->getStorageDuration() == SD_Static)
addUsedGlobal(GV);
}
}
@@ -2024,7 +2025,7 @@ bool CodeGenModule::MustBeEmitted(const
if (CodeGenOpts.KeepStaticConsts) {
const auto *VD = dyn_cast<VarDecl>(Global);
if (VD && VD->getType().isConstQualified() &&
- VD->getStorageClass() == SC_Static)
+ VD->getStorageDuration() == SD_Static)
return true;
}
Modified: cfe/trunk/test/CodeGen/keep-static-consts.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/keep-static-consts.cpp?rev=345302&r1=345301&r2=345302&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/keep-static-consts.cpp (original)
+++ cfe/trunk/test/CodeGen/keep-static-consts.cpp Thu Oct 25 12:13:46 2018
@@ -1,6 +1,11 @@
// RUN: %clang_cc1 -fkeep-static-consts -emit-llvm %s -o - -triple=x86_64-unknown-linux-gnu | FileCheck %s
// CHECK: @_ZL7srcvers = internal constant [4 x i8] c"xyz\00", align 1
-// CHECK: @llvm.used = appending global [1 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @_ZL7srcvers, i32 0, i32 0)], section "llvm.metadata"
+// CHECK: @_ZL8srcvers2 = internal constant [4 x i8] c"abc\00", align 1
+// CHECK: @_ZL1N = internal constant i32 2, align 4
+// CHECK: @llvm.used = appending global [4 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @_ZL7srcvers, i32 0, i32 0), i8* bitcast (i32* @b to i8*), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @_ZL8srcvers2, i32 0, i32 0), i8* bitcast (i32* @_ZL1N to i8*)], section "llvm.metadata"
+
static const char srcvers[] = "xyz";
extern const int b = 1;
+const char srcvers2[] = "abc";
+constexpr int N = 2;
More information about the cfe-commits
mailing list