From: Daniel Dunbar Date: Thu, 5 Feb 2009 01:31:19 +0000 (+0000) Subject: Honor ByVal alignment. Patch by Nate Begeman! X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ca008822e8ad5dd8b3ff598cf62e909966847a67;p=clang Honor ByVal alignment. Patch by Nate Begeman! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63811 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp index 61c6653236..b0a2f586ea 100644 --- a/lib/CodeGen/CGCall.cpp +++ b/lib/CodeGen/CGCall.cpp @@ -316,6 +316,7 @@ ABIArgInfo X86_32ABIInfo::classifyReturnType(QualType RetTy, ABIArgInfo X86_32ABIInfo::classifyArgumentType(QualType Ty, ASTContext &Context) const { + // FIXME: Set alignment on byval arguments. if (CodeGenFunction::hasAggregateLLVMType(Ty)) { // Structures with flexible arrays are always byval. if (const RecordType *RT = Ty->getAsStructureType()) @@ -1066,7 +1067,6 @@ CodeGenTypes::GetFunctionType(const CGFunctionInfo &FI, bool IsVariadic) { case ABIArgInfo::ByVal: // byval arguments are always on the stack, which is addr space #0. ArgTys.push_back(llvm::PointerType::getUnqual(Ty)); - assert(AI.getByValAlignment() == 0 && "FIXME: alignment unhandled"); break; case ABIArgInfo::Direct: @@ -1146,7 +1146,8 @@ void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI, case ABIArgInfo::ByVal: Attributes |= llvm::Attribute::ByVal; - assert(AI.getByValAlignment() == 0 && "FIXME: alignment unhandled"); + Attributes |= + llvm::Attribute::constructAlignmentFromInt(AI.getByValAlignment()); break; case ABIArgInfo::Direct: