diff mbox series

[committed,AArch64] Add an assert to aarch64_layout_frame

Message ID mptd0exufrt.fsf@arm.com
State New
Headers show
Series [committed,AArch64] Add an assert to aarch64_layout_frame | expand

Commit Message

Richard Sandiford Oct. 16, 2019, 10:49 a.m. UTC
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.

Tested on aarch64-linux-gnu and aarch64_be-elf, applied as r277060.

Richard


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.
diff mbox series

Patch

Index: gcc/config/aarch64/aarch64.c
===================================================================
--- gcc/config/aarch64/aarch64.c	2019-10-16 11:44:27.776831039 +0100
+++ gcc/config/aarch64/aarch64.c	2019-10-16 11:47:06.023701540 +0100
@@ -5476,7 +5476,7 @@  #define SLOT_REQUIRED     (-1)
 	 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
     {
@@ -5487,9 +5487,14 @@  #define SLOT_REQUIRED     (-1)
 	 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;
 }