summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-02-05 01:46:49 +0000
committerChris Lattner <sabre@nondot.org>2006-02-05 01:46:49 +0000
commitcbab28414ec1f81bbfe2da3fd2ec4b4b06501bd7 (patch)
tree4ac301c6f3da4260d86fcfbb1c9f567caef93eb4 /llvm/lib
parentc070cb685d6a25ff5435be5947a3aeeae8ec9578 (diff)
downloadbcm5719-llvm-cbab28414ec1f81bbfe2da3fd2ec4b4b06501bd7.tar.gz
bcm5719-llvm-cbab28414ec1f81bbfe2da3fd2ec4b4b06501bd7.zip
make sure that global doubles are aligned to 8 bytes
llvm-svn: 25981
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter.cpp
index b489df66c14..48dd2975301 100644
--- a/llvm/lib/CodeGen/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter.cpp
@@ -179,11 +179,16 @@ unsigned AsmPrinter::getPreferredAlignmentLog(const GlobalVariable *GV) const {
if (GV->getAlignment() > (1U << Alignment))
Alignment = Log2_32(GV->getAlignment());
- if (GV->hasInitializer() && Alignment < 4) {
- // If the global is not external, see if it is large. If so, give it a
- // larger alignment.
- if (TM.getTargetData().getTypeSize(GV->getType()->getElementType()) > 128)
- Alignment = 4; // 16-byte alignment.
+ if (GV->hasInitializer()) {
+ // Always round up alignment of global doubles to 8 bytes.
+ if (GV->getType()->getElementType() == Type::DoubleTy && Alignment < 3)
+ Alignment = 3;
+ if (Alignment < 4) {
+ // If the global is not external, see if it is large. If so, give it a
+ // larger alignment.
+ if (TM.getTargetData().getTypeSize(GV->getType()->getElementType()) > 128)
+ Alignment = 4; // 16-byte alignment.
+ }
}
return Alignment;
}
OpenPOWER on IntegriCloud