From 1964dc6fbc758d064e460ff6d6796d6ebd11c26b Mon Sep 17 00:00:00 2001 From: dcarrera Date: Thu, 14 Jul 2011 15:49:00 +0000 Subject: [PATCH 1/1] Remove error parameter from caf_runtime_error. Add caf_runtime_error to single.c. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176278 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgfortran/ChangeLog | 13 +++++++++++++ libgfortran/caf/mpi.c | 13 +++++++------ libgfortran/caf/single.c | 25 +++++++++++++++++++------ 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index b66f300aca1..689d8a7042a 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,16 @@ +2011-07-14 Daniel Carrera + + * caf/single.c: Include stdarg.h header. + (caf_runtime_error): New function. Use "exit(EXIT_FAILURE)". + (_gfortran_caf_register): Use caf_runtime_error. + (_gfortran_caf_sync_images): Use "exit(EXIT_FAILURE)". + * caf/mpi.c (caf_runtime_error): Remove "error" parameter. + Return EXIT_FAILURE instead. + (_gfortran_caf_register): Update call to caf_runtime_error. + (_gfortran_caf_sync_all): Ditto. + (_gfortran_caf_sync_images): Ditto. + (_gfortran_caf_error_stop_str): Use "exit(EXIT_FAILURE)". + 2011-07-13 Janne Blomqvist PR libfortran/49296 diff --git a/libgfortran/caf/mpi.c b/libgfortran/caf/mpi.c index a8306ddb8a7..4bfcbb50832 100644 --- a/libgfortran/caf/mpi.c +++ b/libgfortran/caf/mpi.c @@ -47,8 +47,9 @@ static int caf_is_finalized; caf_static_t *caf_static_list = NULL; +/* Keep in sync with single.c. */ static void -caf_runtime_error (int error, const char *message, ...) +caf_runtime_error (const char *message, ...) { va_list ap; fprintf (stderr, "Fortran runtime error on image %d: ", caf_this_image); @@ -59,10 +60,10 @@ caf_runtime_error (int error, const char *message, ...) /* FIXME: Shutdown the Fortran RTL to flush the buffer. PR 43849. */ /* FIXME: Do some more effort than just MPI_ABORT. */ - MPI_Abort (MPI_COMM_WORLD, error); + MPI_Abort (MPI_COMM_WORLD, EXIT_FAILURE); /* Should be unreachable, but to make sure also call exit. */ - exit (2); + exit (EXIT_FAILURE); } @@ -179,7 +180,7 @@ error: } } else - caf_runtime_error (caf_is_finalized ? STAT_STOPPED_IMAGE : 1, msg); + caf_runtime_error (msg); } return NULL; @@ -223,7 +224,7 @@ _gfortran_caf_sync_all (int *stat, char *errmsg, int errmsg_len) memset (&errmsg[len], ' ', errmsg_len-len); } else - caf_runtime_error (caf_is_finalized ? STAT_STOPPED_IMAGE : ierr, msg); + caf_runtime_error (msg); } } @@ -291,7 +292,7 @@ _gfortran_caf_sync_images (int count, int images[], int *stat, char *errmsg, memset (&errmsg[len], ' ', errmsg_len-len); } else - caf_runtime_error (caf_is_finalized ? STAT_STOPPED_IMAGE : ierr, msg); + caf_runtime_error (msg); } } diff --git a/libgfortran/caf/single.c b/libgfortran/caf/single.c index 603a910aeb3..2258f2f3d01 100644 --- a/libgfortran/caf/single.c +++ b/libgfortran/caf/single.c @@ -28,6 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #include /* For fputs and fprintf. */ #include /* For exit and malloc. */ #include /* For memcpy and memset. */ +#include /* For variadic arguments. */ /* Define GFC_CAF_CHECK to enable run-time checking. */ /* #define GFC_CAF_CHECK 1 */ @@ -40,6 +41,21 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see caf_static_t *caf_static_list = NULL; +/* Keep in sync with mpi.c. */ +static void +caf_runtime_error (const char *message, ...) +{ + va_list ap; + fprintf (stderr, "Fortran runtime error: "); + va_start (ap, message); + fprintf (stderr, message, ap); + va_end (ap); + fprintf (stderr, "\n"); + + /* FIXME: Shutdown the Fortran RTL to flush the buffer. PR 43849. */ + exit (EXIT_FAILURE); +} + void _gfortran_caf_init (int *argc __attribute__ ((unused)), char ***argv __attribute__ ((unused)), @@ -73,12 +89,12 @@ _gfortran_caf_register (ptrdiff_t size, caf_register_t type, void **token, if (unlikely (local == NULL || token == NULL)) { + const char msg[] = "Failed to allocate coarray"; if (stat) { *stat = 1; if (errmsg_len > 0) { - const char msg[] = "Failed to allocate coarray"; int len = ((int) sizeof (msg) > errmsg_len) ? errmsg_len : (int) sizeof (msg); memcpy (errmsg, msg, len); @@ -88,10 +104,7 @@ _gfortran_caf_register (ptrdiff_t size, caf_register_t type, void **token, return NULL; } else - { - fprintf (stderr, "ERROR: Failed to allocate coarray"); - exit (1); - } + caf_runtime_error (msg); } if (stat) @@ -140,7 +153,7 @@ _gfortran_caf_sync_images (int count __attribute__ ((unused)), { fprintf (stderr, "COARRAY ERROR: Invalid image index %d to SYNC " "IMAGES", images[i]); - exit (1); + exit (EXIT_FAILURE); } #endif -- 2.11.0