aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/decl.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r--gcc/cp/decl.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 5a5978c..248275e 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -4677,6 +4677,7 @@ init_decl_processing ()
around compiler bugs. */
signal (SIGSEGV, signal_catch);
+#ifndef __CYGWIN32__
/* We will also catch aborts in the back-end through signal_catch and
give the user a chance to see where the error might be, and to defeat
aborts in the back-end when there have been errors previously in their
@@ -4693,6 +4694,13 @@ init_decl_processing ()
#ifdef SIGBUS
signal (SIGBUS, signal_catch);
#endif
+#else /* ndef __CYGWIN32__ */
+ /* Cygwin32 cannot handle catching signals other than
+ SIGABRT yet. We hope this will cease to be the case soon. */
+#ifdef SIGABRT
+ signal (SIGABRT, signal_catch);
+#endif
+#endif /* ndef __CYGWIN32__ */
gcc_obstack_init (&decl_obstack);
@@ -7189,8 +7197,12 @@ grokfndecl (ctype, type, declarator, virtualp, flags, quals,
}
if (tmp && DECL_ARTIFICIAL (tmp))
cp_error ("definition of implicitly-declared `%D'", tmp);
- if (tmp && duplicate_decls (decl, tmp))
- return tmp;
+ if (tmp)
+ {
+ if (!duplicate_decls (decl, tmp))
+ my_friendly_abort (892);
+ return tmp;
+ }
}
if (ctype == NULL_TREE || check)