This patch adds an assert that all the individual *_adjust allocations
add up to the full frame size. With that safety net, it seemed slightly
clearer to use crtl->outgoing_args_size as the final adjustment where
appropriate, to match what's used in the comments.
This is a bit overkill on its own, but I need to add more cases for SVE.
2019-10-16 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* config/aarch64/aarch64.c (aarch64_layout_frame): Assert
that all the adjustments add up to the full frame size.
Use crtl->outgoing_args_size directly as the final adjustment
where appropriate.
From-SVN: r277060
+2019-10-16 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64.c (aarch64_layout_frame): Assert
+ that all the adjustments add up to the full frame size.
+ Use crtl->outgoing_args_size directly as the final adjustment
+ where appropriate.
+
2019-10-16 Richard Sandiford <richard.sandiford@arm.com>
* config/aarch64/aarch64.c (aarch64_layout_frame): Use a local
stp reg3, reg4, [sp, 16]
sub sp, sp, outgoing_args_size */
frame.callee_adjust = const_fp_offset;
- frame.final_adjust = frame.frame_size - frame.callee_adjust;
+ frame.final_adjust = crtl->outgoing_args_size;
}
else
{
stp reg3, reg4, [sp, 16]
sub sp, sp, outgoing_args_size */
frame.initial_adjust = frame.hard_fp_offset;
- frame.final_adjust = frame.frame_size - frame.initial_adjust;
+ frame.final_adjust = crtl->outgoing_args_size;
}
+ /* Make sure the individual adjustments add up to the full frame size. */
+ gcc_assert (known_eq (frame.initial_adjust
+ + frame.callee_adjust
+ + frame.final_adjust, frame.frame_size));
+
frame.laid_out = true;
}