[NDS32] Add new option -malways-save-lp.
authorChung-Ju Wu <jasonwucj@gmail.com>
Sun, 22 Apr 2018 10:10:00 +0000 (10:10 +0000)
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>
Sun, 22 Apr 2018 10:10:00 +0000 (10:10 +0000)
gcc/
* config/nds32/nds32.c (nds32_compute_stack_frame): Consider
flag_always_save_lp condition.
* config/nds32/nds32.opt (malways-save-lp): New option.

From-SVN: r259553

gcc/ChangeLog
gcc/config/nds32/nds32.c
gcc/config/nds32/nds32.opt

index 3aa554236ca23328205a59b3c62bc06cdfaa6c73..c9a0d04fc4614624aa6bd7f3e97bc4636a11a87e 100644 (file)
@@ -1,3 +1,9 @@
+2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
+
+       * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
+       flag_always_save_lp condition.
+       * config/nds32/nds32.opt (malways-save-lp): New option.
+
 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
 
        * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
index 9a8c71204ea1b029e39bb1c2047686745bfa9a1d..8994c13d7b0e6a7cef6e2a9cf4444059a1741962 100644 (file)
@@ -436,7 +436,8 @@ nds32_compute_stack_frame (void)
 
   /* If $lp value is required to be saved on stack, it needs 4 bytes space.
      Check whether $lp is ever live.  */
-  cfun->machine->lp_size = (df_regs_ever_live_p (LP_REGNUM)) ? 4 : 0;
+  cfun->machine->lp_size
+    = (flag_always_save_lp || df_regs_ever_live_p (LP_REGNUM)) ? 4 : 0;
 
   /* Initially there is no padding bytes.  */
   cfun->machine->callee_saved_area_gpr_padding_bytes = 0;
index dd9b3d1b72c15a229d84b6f257ce4acbe2bf09af..dcf6d396bc336f46321b738ead1d3d9a1a340c56 100644 (file)
@@ -321,6 +321,10 @@ mext-fpu-dp
 Target Report Mask(FPU_DOUBLE)
 Generate double-precision floating-point instructions.
 
+malways-save-lp
+Target Var(flag_always_save_lp) Init(0)
+Always save $lp in the stack.
+
 munaligned-access
 Target Report Var(flag_unaligned_access) Init(0)
 Enable unaligned word and halfword accesses to packed data.