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