From: Vitaly Buka Date: Wed, 10 Jul 2019 22:53:52 +0000 (+0000) Subject: NFC: Pass DataLayout into isBytewiseValue X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=74002bf4c57bf549ba9f3cd1f2ce38ac90607686;p=clang NFC: Pass DataLayout into isBytewiseValue Summary: We will need to handle IntToPtr which I will submit in a separate patch as it's not going to be NFC. Reviewers: eugenis, pcc Reviewed By: eugenis Subscribers: hiraditya, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D63940 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@365709 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGDecl.cpp b/lib/CodeGen/CGDecl.cpp index 0afd481614..739b2d858c 100644 --- a/lib/CodeGen/CGDecl.cpp +++ b/lib/CodeGen/CGDecl.cpp @@ -967,11 +967,12 @@ static bool shouldUseBZeroPlusStoresToInitialize(llvm::Constant *Init, /// FIXME We could be more clever, as we are for bzero above, and generate /// memset followed by stores. It's unclear that's worth the effort. static llvm::Value *shouldUseMemSetToInitialize(llvm::Constant *Init, - uint64_t GlobalSize) { + uint64_t GlobalSize, + const llvm::DataLayout &DL) { uint64_t SizeLimit = 32; if (GlobalSize <= SizeLimit) return nullptr; - return llvm::isBytewiseValue(Init); + return llvm::isBytewiseValue(Init, DL); } /// Decide whether we want to split a constant structure or array store into a @@ -1177,7 +1178,8 @@ static void emitStoresForConstant(CodeGenModule &CGM, const VarDecl &D, } // If the initializer is a repeated byte pattern, use memset. - llvm::Value *Pattern = shouldUseMemSetToInitialize(constant, ConstantSize); + llvm::Value *Pattern = + shouldUseMemSetToInitialize(constant, ConstantSize, CGM.getDataLayout()); if (Pattern) { uint64_t Value = 0x00; if (!isa(Pattern)) {