diff options
Diffstat (limited to 'libguile/error.h')
-rw-r--r-- | libguile/error.h | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/libguile/error.h b/libguile/error.h index 385497e8f..0ce16289a 100644 --- a/libguile/error.h +++ b/libguile/error.h @@ -50,21 +50,34 @@ extern int scm_ints_disabled; +/* GCC can be told that a function doesn't return; this helps it do + better error checking (for uninitialized variable use, for + example), and some optimization. */ +#ifdef __GNUC__ +#define SCM_NORETURN __attribute__ ((noreturn)) +#else +#define SCM_NORETURN +#endif + + extern SCM scm_errno SCM_P ((SCM arg)); extern SCM scm_perror SCM_P ((SCM arg)); extern void scm_error SCM_P ((SCM key, char *subr, char *message, - SCM args, SCM rest)); + SCM args, SCM rest)) SCM_NORETURN; extern void (*scm_error_callback) SCM_P ((SCM key, char *subr, char *message, SCM args, SCM rest)); -extern void scm_syserror SCM_P ((char *subr)); -extern void scm_syserror_msg SCM_P ((char *subr, char *message, SCM args)); -extern void scm_sysmissing SCM_P ((char *subr)); -extern void scm_num_overflow SCM_P ((char *subr)); -extern void scm_out_of_range SCM_P ((char *subr, SCM bad_value)); -extern void scm_wrong_num_args SCM_P ((SCM proc)); -extern void scm_wrong_type_arg SCM_P ((char *subr, int pos, SCM bad_value)); -extern void scm_memory_error SCM_P ((char *subr)); -extern void scm_misc_error SCM_P ((char *subr, char *message, SCM args)); +extern void scm_syserror SCM_P ((char *subr)) SCM_NORETURN; +extern void scm_syserror_msg SCM_P ((char *subr, char *message, SCM args)) + SCM_NORETURN; +extern void scm_sysmissing SCM_P ((char *subr)) SCM_NORETURN; +extern void scm_num_overflow SCM_P ((char *subr)) SCM_NORETURN; +extern void scm_out_of_range SCM_P ((char *subr, SCM bad_value)) SCM_NORETURN; +extern void scm_wrong_num_args SCM_P ((SCM proc)) SCM_NORETURN; +extern void scm_wrong_type_arg SCM_P ((char *subr, int pos, SCM bad_value)) + SCM_NORETURN; +extern void scm_memory_error SCM_P ((char *subr)) SCM_NORETURN; +extern void scm_misc_error SCM_P ((char *subr, char *message, SCM args)) + SCM_NORETURN; extern SCM scm_wta SCM_P ((SCM arg, char *pos, char *s_subr)); extern void scm_init_error SCM_P ((void)); |