Commit d057a470 by Chung-Ju Wu Committed by Chung-Ju Wu

[NDS32] Add new option: -msched-prolog-epilog

gcc/
	* config/nds32/nds32.c (nds32_expand_prologue, nds32_expand_epilogue):
	Support -msched-prolog-epilog option.
	* config/nds32/nds32.opt (msched-prolog-epilog): New option.

From-SVN: r263496
parent 68acadb1
2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com> 2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
* config/nds32/nds32.c (nds32_expand_prologue, nds32_expand_epilogue):
Support -msched-prolog-epilog option.
* config/nds32/nds32.opt (msched-prolog-epilog): New option.
2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
* common/config/nds32/nds32-common.c * common/config/nds32/nds32-common.c
(nds32_option_optimization_table): Enalbe -malways-align. (nds32_option_optimization_table): Enalbe -malways-align.
......
...@@ -4763,9 +4763,11 @@ nds32_expand_prologue (void) ...@@ -4763,9 +4763,11 @@ nds32_expand_prologue (void)
if (flag_pic && df_regs_ever_live_p (PIC_OFFSET_TABLE_REGNUM)) if (flag_pic && df_regs_ever_live_p (PIC_OFFSET_TABLE_REGNUM))
nds32_emit_load_gp (); nds32_emit_load_gp ();
/* Prevent the instruction scheduler from /* If user applies -mno-sched-prolog-epilog option,
moving instructions across the boundary. */ we need to prevent instructions of function body from being
emit_insn (gen_blockage ()); scheduled with stack adjustment in prologue. */
if (!flag_sched_prolog_epilog)
emit_insn (gen_blockage ());
} }
/* Function for normal multiple pop epilogue. */ /* Function for normal multiple pop epilogue. */
...@@ -4779,9 +4781,11 @@ nds32_expand_epilogue (bool sibcall_p) ...@@ -4779,9 +4781,11 @@ nds32_expand_epilogue (bool sibcall_p)
The result will be in cfun->machine. */ The result will be in cfun->machine. */
nds32_compute_stack_frame (); nds32_compute_stack_frame ();
/* Prevent the instruction scheduler from /* If user applies -mno-sched-prolog-epilog option,
moving instructions across the boundary. */ we need to prevent instructions of function body from being
emit_insn (gen_blockage ()); scheduled with stack adjustment in epilogue. */
if (!flag_sched_prolog_epilog)
emit_insn (gen_blockage ());
/* If the function is 'naked', we do not have to generate /* If the function is 'naked', we do not have to generate
epilogue code fragment BUT 'ret' instruction. epilogue code fragment BUT 'ret' instruction.
......
...@@ -444,6 +444,10 @@ mforce-no-ext-dsp ...@@ -444,6 +444,10 @@ mforce-no-ext-dsp
Target Undocumented Report Mask(FORCE_NO_EXT_DSP) Target Undocumented Report Mask(FORCE_NO_EXT_DSP)
Force disable hardware loop, even use -mext-dsp. Force disable hardware loop, even use -mext-dsp.
msched-prolog-epilog
Target Var(flag_sched_prolog_epilog) Init(0)
Permit scheduling of a function's prologue and epilogue sequence.
mret-in-naked-func mret-in-naked-func
Target Var(flag_ret_in_naked_func) Init(1) Target Var(flag_ret_in_naked_func) Init(1)
Generate return instruction in naked function. Generate return instruction in naked function.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment