rx.opt (-mjsr): Add.
* config/rx/rx.opt (-mjsr): Add. * config/rx/predicates.md (rx_call_operand): Avoid overflowing calls when -mjsr. * config/rx/rx.c (rx_function_ok_for_sibcall): Likewise for overflowing jumps. * doc/invoke.texi (-mjsr): Document it. From-SVN: r231439
This commit is contained in:
parent
6b9ac1796e
commit
eb457a8c59
@ -1,3 +1,12 @@
|
|||||||
|
2015-12-08 DJ Delorie <dj@redhat.com>
|
||||||
|
|
||||||
|
* config/rx/rx.opt (-mjsr): Add.
|
||||||
|
* config/rx/predicates.md (rx_call_operand): Avoid overflowing
|
||||||
|
calls when -mjsr.
|
||||||
|
* config/rx/rx.c (rx_function_ok_for_sibcall): Likewise for
|
||||||
|
overflowing jumps.
|
||||||
|
* doc/invoke.texi (-mjsr): Document it.
|
||||||
|
|
||||||
2015-12-08 Jan Hubicka <hubicka@ucw.cz>
|
2015-12-08 Jan Hubicka <hubicka@ucw.cz>
|
||||||
|
|
||||||
PR ipa/61886
|
PR ipa/61886
|
||||||
|
@ -24,7 +24,9 @@
|
|||||||
;; Only registers and symbol refs are allowed.
|
;; Only registers and symbol refs are allowed.
|
||||||
|
|
||||||
(define_predicate "rx_call_operand"
|
(define_predicate "rx_call_operand"
|
||||||
(match_code "symbol_ref,reg")
|
(ior (match_code "reg")
|
||||||
|
(and (match_test "!TARGET_JSR")
|
||||||
|
(match_code "symbol_ref")))
|
||||||
)
|
)
|
||||||
|
|
||||||
;; For sibcall operations we can only use a symbolic address.
|
;; For sibcall operations we can only use a symbolic address.
|
||||||
|
@ -2857,6 +2857,9 @@ rx_warn_func_return (tree decl)
|
|||||||
static bool
|
static bool
|
||||||
rx_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
|
rx_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
|
if (TARGET_JSR)
|
||||||
|
return false;
|
||||||
|
|
||||||
/* Do not allow indirect tailcalls. The
|
/* Do not allow indirect tailcalls. The
|
||||||
sibcall patterns do not support them. */
|
sibcall patterns do not support them. */
|
||||||
if (decl == NULL)
|
if (decl == NULL)
|
||||||
|
@ -149,3 +149,9 @@ Enable the use of the LRA register allocator.
|
|||||||
mallow-string-insns
|
mallow-string-insns
|
||||||
Target Report Var(rx_allow_string_insns) Init(1)
|
Target Report Var(rx_allow_string_insns) Init(1)
|
||||||
Enables or disables the use of the SMOVF, SMOVB, SMOVU, SUNTIL, SWHILE and RMPA instructions. Enabled by default.
|
Enables or disables the use of the SMOVF, SMOVB, SMOVU, SUNTIL, SWHILE and RMPA instructions. Enabled by default.
|
||||||
|
|
||||||
|
;---------------------------------------------------
|
||||||
|
|
||||||
|
mjsr
|
||||||
|
Target Report Mask(JSR)
|
||||||
|
Always use JSR, never BSR, for calls.
|
||||||
|
@ -968,6 +968,7 @@ See RS/6000 and PowerPC Options.
|
|||||||
-mint-register=@gol
|
-mint-register=@gol
|
||||||
-mpid@gol
|
-mpid@gol
|
||||||
-mallow-string-insns -mno-allow-string-insns@gol
|
-mallow-string-insns -mno-allow-string-insns@gol
|
||||||
|
-mjsr@gol
|
||||||
-mno-warn-multiple-fast-interrupts@gol
|
-mno-warn-multiple-fast-interrupts@gol
|
||||||
-msave-acc-in-interrupts}
|
-msave-acc-in-interrupts}
|
||||||
|
|
||||||
@ -20685,6 +20686,15 @@ accesses I/O space.
|
|||||||
When the instructions are enabled GCC defines the C preprocessor
|
When the instructions are enabled GCC defines the C preprocessor
|
||||||
symbol @code{__RX_ALLOW_STRING_INSNS__}, otherwise it defines the
|
symbol @code{__RX_ALLOW_STRING_INSNS__}, otherwise it defines the
|
||||||
symbol @code{__RX_DISALLOW_STRING_INSNS__}.
|
symbol @code{__RX_DISALLOW_STRING_INSNS__}.
|
||||||
|
|
||||||
|
@item -mjsr
|
||||||
|
@itemx -mno-jsr
|
||||||
|
@opindex mjsr
|
||||||
|
@opindex mno-jsr
|
||||||
|
Use only (or not only) @code{JSR} instructions to access functions.
|
||||||
|
This option can be used when code size exceeds the range of @code{BSR}
|
||||||
|
instructions. Note that @option{-mno-jsr} does not mean to not use
|
||||||
|
@code{JSR} but instead means that any type of branch may be used.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@emph{Note:} The generic GCC command-line option @option{-ffixed-@var{reg}}
|
@emph{Note:} The generic GCC command-line option @option{-ffixed-@var{reg}}
|
||||||
|
Loading…
Reference in New Issue
Block a user