From a8217e3000b5b01c4a95316aef078a9d02a9a119 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 13 May 2005 23:14:17 +0000 Subject: [PATCH] Align doubles on 8-byte boundaries if possible. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21993 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index e088845daa8..d2cde348960 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -140,6 +140,15 @@ FunctionLoweringInfo::FunctionLoweringInfo(TargetLowering &tli, const Type *Ty = AI->getAllocatedType(); uint64_t TySize = TLI.getTargetData().getTypeSize(Ty); unsigned Align = TLI.getTargetData().getTypeAlignment(Ty); + + // If the alignment of the value is smaller than the size of the value, + // and if the size of the value is particularly small (<= 8 bytes), + // round up to the size of the value for potentially better performance. + // + // FIXME: This could be made better with a preferred alignment hook in + // TargetData. It serves primarily to 8-byte align doubles for X86. + if (Align < TySize && TySize <= 8) Align = TySize; + TySize *= CUI->getValue(); // Get total allocated size. StaticAllocaMap[AI] = MF.getFrameInfo()->CreateStackObject((unsigned)TySize, Align);