On 2/5/21 2:53 AM, YunQiang Su wrote:
> For R6+, it allows to configure gcc to use compact branches only.
> ---
> gcc/config.gcc | 18 +++++++++++++++++-
> gcc/doc/install.texi | 23 +++++++++++++++++++++++
> 2 files changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index 17fea83b2e4..7d50e7995d2 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -4743,7 +4743,7 @@ case "${target}" in
> ;;
>
> mips*-*-*)
> - supported_defaults="abi arch arch_32 arch_64 float fpu nan
> fp_32 odd_spreg_32 tune tune_32 tune_64 divide llsc mips-plt synci lxc1-sxc1
> madd4"
> + supported_defaults="abi arch arch_32 arch_64 float fpu nan
> fp_32 odd_spreg_32 tune tune_32 tune_64 divide llsc mips-plt synci lxc1-sxc1
> madd4 compact-branches"
>
> case ${with_float} in
> "" | soft | hard)
> @@ -4896,6 +4896,22 @@ case "${target}" in
> exit 1
> ;;
> esac
> +
> + case ${with_compact_branches} in
> + never | always | optimal | prefer)
> + if test "$with_compact_branches" = "always" -a \
> + "$default_mips_arch" != "mips32r6" -a \
> + "$default_mips_arch" != "mips64r6";then
> + echo "Compact-branch=always is not allowed for
> pre-R6" 1>&2
> + exit 1
> + fi
> + with_compact_branches=${with_compact_branches}
> + ;;
> + *)
> + echo "Unknown compact-branches policy used in
> --with-compact-branches" 1>&2
> + exit 1
> + ;;
> + esac
> ;;
>
> nds32*-*-*)
> diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
> index 4c38244ae58..6b9520569ba 100644
> --- a/gcc/doc/install.texi
> +++ b/gcc/doc/install.texi
> @@ -1464,6 +1464,29 @@ systems that support conditional traps).
> Division by zero checks use the break instruction.
> @end table
>
> +@item --with-compact-branches=@var{policy}
> +Specify how the compiler should generate code for checking for
> +division by zero. This option is only supported on the MIPS target.
> +The possibilities for @var{type} are:
Is this really correct -- I would expect that the change affects
branches in general, not just checks for division by zero.
jeff