diff options
author | Evan Cheng <evan.cheng@apple.com> | 2011-11-28 22:37:34 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2011-11-28 22:37:34 +0000 |
commit | ed1c0c7f5817be939872b462be984534bd48bb9b (patch) | |
tree | ef53597756cecb7f5cfd90c2e9359194a9497a86 /lib/CodeGen/SelectionDAG/SelectionDAG.cpp | |
parent | a483fc8e6f9533317f517f2d03f3a41ec0aee663 (diff) |
Revert r145273 and fix in SelectionDAG::InferPtrAlignment() instead.
Conservatively returns zero when the GV does not specify an alignment nor is it
initialized. Previously it returns ABI alignment for type of the GV. However, if
the type is a "packed" type, then the under-specified alignments is attached to
the load / store instructions. In that case, the alignment of the type cannot be
trusted.
rdar://10464621
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145300 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index a772a46ba6..024a163737 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -6564,7 +6564,11 @@ unsigned SelectionDAG::InferPtrAlignment(SDValue Ptr) const { } } if (!Align) - Align = TLI.getTargetData()->getABITypeAlignment(GV->getType()); + // Conservatively returns zero here instead of using ABI alignment for + // type of the GV. If the type is a "packed" type, then the under- + // specified alignments is attached to the load / store instructions. + // In that case, the alignment of the type cannot be trusted. + return 0; } return MinAlign(Align, GVOffset); } |