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; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits