summaryrefslogtreecommitdiff
path: root/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2011-06-22 18:55:03 +0000
committerNick Lewycky <nicholas@mxc.ca>2011-06-22 18:55:03 +0000
commit5b7ac1402f3c84a751eac96838d4b9676723f0c8 (patch)
tree6d44445a34fa844d33ed4416ebcf8ec874cb328e /lib/CodeGen/AsmPrinter/AsmPrinter.cpp
parent08d03168f2be9ee8139e4d2ba0923260df6e00b2 (diff)
downloadllvm-5b7ac1402f3c84a751eac96838d4b9676723f0c8.tar.gz
llvm-5b7ac1402f3c84a751eac96838d4b9676723f0c8.tar.bz2
llvm-5b7ac1402f3c84a751eac96838d4b9676723f0c8.tar.xz
Emit trailing padding on constant vectors when TargetData says that the vector
is larger than the sum of the elements (including per-element padding). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133631 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter/AsmPrinter.cpp')
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 946018cd1a..edfb30725c 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1516,6 +1516,13 @@ static void EmitGlobalConstantVector(const ConstantVector *CV,
unsigned AddrSpace, AsmPrinter &AP) {
for (unsigned i = 0, e = CV->getType()->getNumElements(); i != e; ++i)
EmitGlobalConstantImpl(CV->getOperand(i), AddrSpace, AP);
+
+ const TargetData &TD = *AP.TM.getTargetData();
+ unsigned Size = TD.getTypeAllocSize(CV->getType());
+ unsigned EmittedSize = TD.getTypeAllocSize(CV->getType()->getElementType()) *
+ CV->getType()->getNumElements();
+ if (unsigned Padding = Size - EmittedSize)
+ AP.OutStreamer.EmitZeros(Padding, AddrSpace);
}
static void EmitGlobalConstantStruct(const ConstantStruct *CS,