[nvptx] Fix missing mode warnings in nvptx.md, omp part
Alexander Monakov
amonakov@ispras.ru
Mon Jun 17 12:36:00 GMT 2019
On Mon, 17 Jun 2019, Tom de Vries wrote:
> Hi Alexander,
>
> any comments?
A couple suggestions (see below), but no serious concerns from my side.
> --- a/gcc/config/nvptx/nvptx.c
> +++ b/gcc/config/nvptx/nvptx.c
> @@ -112,6 +112,17 @@ enum nvptx_data_area
> DATA_AREA_MAX
> };
>
> +rtx
> +gen_set_softstack_insn (rtx op)
> +{
Here it might be appropriate to have something like
gcc_assert (GET_MODE (op) == Pmode);
because failure to supply a Pmode operand indicates a bug in the caller and
it may be desirable to catch it here; doesn't make sense to allow restoring
stack pointer from a 32-bit register with a 64-bit address space.
Likewise for other instances of this 'if (... DImode) ... else if (... SImode) ...'
pattern in the patch.
> + if (GET_MODE (op) == DImode)
> + return gen_set_softstack_insn_di (op);
> + else if (GET_MODE (op) == SImode)
> + return gen_set_softstack_insn_si (op);
> + else
> + gcc_unreachable ();
> +}
> +
> /* We record the data area in the target symbol flags. */
> #define SYMBOL_DATA_AREA(SYM) \
> (nvptx_data_area)((SYMBOL_REF_FLAGS (SYM) >> SYMBOL_FLAG_MACH_DEP_SHIFT) \
> diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md
> index 3ed5296db96..1a676b942b2 100644
> --- a/gcc/config/nvptx/nvptx.md
> +++ b/gcc/config/nvptx/nvptx.md
> @@ -1071,8 +1071,8 @@
> DONE;
> })
>
> -(define_insn "set_softstack_insn"
> - [(unspec [(match_operand 0 "nvptx_register_operand" "R")]
> +(define_insn "set_softstack_insn_<mode>"
> + [(unspec [(match_operand:P 0 "nvptx_register_operand" "R")]
A purely cosmetic issue, but I'll mention it for completeness: the '_insn'
suffix is unnecessary with the '_<mode>' suffix added. This is how e.g. the
i386 backend deals with a similar issue, they have 'stack_protect_test' expand
and 'stack_protect_test_<mode>' insns.
Thanks!
Alexander
More information about the Gcc-patches
mailing list