This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Mark va_start as nothrow
- From: Richard Guenther <richard dot guenther at gmail dot com>
- To: Jan Hubicka <hubicka at ucw dot cz>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 14 Apr 2009 10:37:49 +0200
- Subject: Re: Mark va_start as nothrow
- References: <20090413182008.GJ17252@kam.mff.cuni.cz>
On Mon, Apr 13, 2009 at 8:20 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
> Hi,
> va_start/va_copy/va_end is not marked as nothrow that makes every
> function using variadic arguments to be believed throwing externally
> that degrade nothrow analysis we make.
>
> I think it is safe to mark them nothorw. ?With -fnon-call-exceptions
> they can theoretically be given bad pointer, but other similar
> functions that can ICE are already marked NOTHROW (such as sprintf).
> Or if this is not true, I can probably add ATTR_NONTRHOW_FOR_NCE_LIST
>
> Bootstrapped/regtested x86_64-linux, seems sane?
Ok if there are no complaints within 24h.
Thanks,
Richard.
> Honza
>
> ? ? ? ?* builtins.def (va_copy, va_end, va_start): Mark as nothrow
> Index: builtins.def
> ===================================================================
> --- builtins.def ? ? ? ?(revision 146004)
> +++ builtins.def ? ? ? ?(working copy)
> @@ -700,9 +700,9 @@
> ?DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LIST)
> ?DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
> ?DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR_INT, ATTR_NULL)
> -DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NULL)
> -DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NULL)
> -DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NULL)
> +DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NOTHROW_LIST)
> +DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NOTHROW_LIST)
> +DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NOTHROW_LIST)
> ?DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_VA_ARG_PACK, "va_arg_pack", BT_FN_INT, ATTR_PURE_NOTHROW_LIST)
> ?DEF_GCC_BUILTIN ? ? ? ?(BUILT_IN_VA_ARG_PACK_LEN, "va_arg_pack_len", BT_FN_INT, ATTR_PURE_NOTHROW_LIST)
> ?DEF_EXT_LIB_BUILTIN ? ?(BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
>