summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/TargetMachineC.cpp
diff options
context:
space:
mode:
authorJames Y Knight <jyknight@google.com>2015-08-26 17:57:51 +0000
committerJames Y Knight <jyknight@google.com>2015-08-26 17:57:51 +0000
commit360228693758b6735926a1c77a7f0830cd0c3034 (patch)
tree813e8fbbd5a6996b82a3df98f7d391ef8974e8ab /llvm/lib/Target/TargetMachineC.cpp
parentc9e544429ab64608c0bcfd884de92b77fd94dda1 (diff)
downloadbcm5719-llvm-360228693758b6735926a1c77a7f0830cd0c3034.tar.gz
bcm5719-llvm-360228693758b6735926a1c77a7f0830cd0c3034.zip
[SPARC] Fix stupid oversight in stack realignment support.
If you're going to realign %sp to get object alignment properly (which the code does), and stack offsets and alignments are calculated going down from %fp (which they are), then the total stack size had better be a multiple of the alignment. LLVM did indeed ensure that. And then, after aligning, the sparc frame code added 96 (for sparcv8) to the frame size, making any requested alignment of 64-bytes or higher *guaranteed* to be misaligned. The test case added with r245668 even tests this exact scenario, and asserted the incorrect behavior, which I somehow failed to notice. D'oh. This change fixes the frame lowering code to align the stack size *after* adding the spill area, instead. Differential Revision: http://reviews.llvm.org/D12349 llvm-svn: 246042
Diffstat (limited to 'llvm/lib/Target/TargetMachineC.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud