Fix check for unaligned load/store so it doesn't catch over-aligned load/store.
authorEli Friedman <eli.friedman@gmail.com>
Tue, 13 Sep 2011 22:19:59 +0000 (22:19 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Tue, 13 Sep 2011 22:19:59 +0000 (22:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139649 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

index 4c58fe92266ee01dd00315b789c5cb1d881705e6..9d86c759b823e5e47187efa991df8c6e6a4c20a5 100644 (file)
@@ -3402,7 +3402,7 @@ void SelectionDAGBuilder::visitAtomicLoad(const LoadInst &I) {
 
   EVT VT = EVT::getEVT(I.getType());
 
-  if (I.getAlignment() * 8 != VT.getSizeInBits())
+  if (I.getAlignment() * 8 < VT.getSizeInBits())
     report_fatal_error("Cannot generate unaligned atomic load");
 
   SDValue L =
@@ -3432,7 +3432,7 @@ void SelectionDAGBuilder::visitAtomicStore(const StoreInst &I) {
 
   EVT VT = EVT::getEVT(I.getValueOperand()->getType());
 
-  if (I.getAlignment() * 8 != VT.getSizeInBits())
+  if (I.getAlignment() * 8 < VT.getSizeInBits())
     report_fatal_error("Cannot generate unaligned atomic store");
 
   if (TLI.getInsertFencesForAtomic())