Stack Alignment: throw error if we can't satisfy the minimal alignment
authorManman Ren <mren@apple.com>
Thu, 10 Jan 2013 01:10:10 +0000 (01:10 +0000)
committerManman Ren <mren@apple.com>
Thu, 10 Jan 2013 01:10:10 +0000 (01:10 +0000)
commit86441169da23959c81d8648c3dfdc7a0bb8d2225
tree83dec40a840a61665f75b6052878d06e66bb8709
parent7932c41884f182ae44a3feacc8a6a462e9097ca1
Stack Alignment: throw error if we can't satisfy the minimal alignment
requirement when creating stack objects in MachineFrameInfo.

Add CreateStackObjectWithMinAlign to throw error when the minimal alignment
can't be achieved and to clamp the alignment when the preferred alignment
can't be achieved. Same is true for CreateVariableSizedObject.
Will not emit error in CreateSpillStackObject or CreateStackObject.

As long as callers of CreateStackObject do not assume the object will be
aligned at the requested alignment, we should not have miscompile since
later optimizations which look at the object's alignment will have the correct
information.

rdar://12713765

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172027 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/MachineFrameInfo.h
lib/CodeGen/MachineFunction.cpp
lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
test/CodeGen/ARM/alloc-no-stack-realign-error.ll [new file with mode: 0644]
test/CodeGen/ARM/alloc-no-stack-realign.ll