Tweak CreateMetadataVar, take the exact alignment instead of relying
on LLVM TargetData.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66455 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp
index 5ae32e8..d1d4308 100644
--- a/lib/CodeGen/CGObjCMac.cpp
+++ b/lib/CodeGen/CGObjCMac.cpp
@@ -436,11 +436,19 @@
/// This is a convenience wrapper which not only creates the
/// variable, but also sets the section and alignment and adds the
/// global to the UsedGlobals list.
+ ///
+ /// \param Name - The variable name.
+ /// \param Init - The variable initializer; this is also used to
+ /// define the type of the variable.
+ /// \param Section - The section the variable should go into, or 0.
+ /// \param Align - The alignment for the variable, or 0.
+ /// \param AddToUsed - Whether the variable should be added to
+ /// llvm.
llvm::GlobalVariable *CreateMetadataVar(const std::string &Name,
llvm::Constant *Init,
const char *Section,
- bool SetAlignment,
- bool IsUsed);
+ unsigned Align,
+ bool AddToUsed);
public:
CGObjCCommonMac(CodeGen::CodeGenModule &cgm) : CGM(cgm)
@@ -1857,8 +1865,8 @@
CGObjCCommonMac::CreateMetadataVar(const std::string &Name,
llvm::Constant *Init,
const char *Section,
- bool SetAlignment,
- bool IsUsed) {
+ unsigned Align,
+ bool AddToUsed) {
const llvm::Type *Ty = Init->getType();
llvm::GlobalVariable *GV =
new llvm::GlobalVariable(Ty, false,
@@ -1868,9 +1876,9 @@
&CGM.getModule());
if (Section)
GV->setSection(Section);
- if (SetAlignment)
- GV->setAlignment(CGM.getTargetData().getPrefTypeAlignment(Ty));
- if (IsUsed)
+ if (Align)
+ GV->setAlignment(Align);
+ if (AddToUsed)
UsedGlobals.push_back(GV);
return GV;
}