Fix a typo.
[oota-llvm.git] / lib / Target / TargetData.cpp
index c628df04e710c9feaed7ea46d9b8546e3a37aac1..d15855ce12690651fe14e1744824372f56020c44 100644 (file)
@@ -617,8 +617,12 @@ uint64_t TargetData::getIndexedOffset(const Type *ptrTy, Value* const* Indices,
 unsigned TargetData::getPreferredAlignment(const GlobalVariable *GV) const {
   const Type *ElemType = GV->getType()->getElementType();
   unsigned Alignment = getPrefTypeAlignment(ElemType);
-  if (GV->getAlignment() > Alignment)
-    Alignment = GV->getAlignment();
+  unsigned GVAlignment = GV->getAlignment();
+  if (GVAlignment >= Alignment) {
+    Alignment = GVAlignment;
+  } else if (GVAlignment != 0) {
+    Alignment = std::min(GVAlignment, getABITypeAlignment(ElemType));
+  }
 
   if (GV->hasInitializer()) {
     if (Alignment < 16) {