Fix MSVC build (#978)

* Allocate buffer on heap memory
* Fix Pragma definition for MSVC
* Fix uninitiliazed variable
* Loop counter cannot be non-negative for MSVC
This commit is contained in:
Victor A. P. Magri 2023-10-10 08:28:24 -04:00 committed by GitHub
parent fc49a5ec6b
commit 3e56e6e590
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 35 additions and 22 deletions

View File

@ -274,8 +274,8 @@ hypre_IJMatrixReadBinary( const char *prefixname,
HYPRE_Int one = 1; HYPRE_Int one = 1;
HYPRE_Int myid; HYPRE_Int myid;
char filename[1024], msg[1024]; char filename[1024], msg[1024];
HYPRE_BigInt ilower, iupper, jlower, jupper; HYPRE_BigInt i, ilower, iupper, jlower, jupper;
size_t i, count; size_t count;
hypre_uint64 header[11]; hypre_uint64 header[11];
FILE *fp; FILE *fp;

View File

@ -64,7 +64,7 @@ hypre_FSAISolve( void *fsai_vdata,
} }
iter = 0; iter = 0;
rel_resnorm = 1.0; rel_resnorm = resnorm = 1.0;
if (my_id == 0 && print_level > 1) if (my_id == 0 && print_level > 1)
{ {

View File

@ -357,11 +357,13 @@ typedef struct
#ifdef HYPRE_USING_OPENMP #ifdef HYPRE_USING_OPENMP
#define HYPRE_BOX_REDUCTION #define HYPRE_BOX_REDUCTION
#ifndef Pragma
#if defined(WIN32) && defined(_MSC_VER) #if defined(WIN32) && defined(_MSC_VER)
#define Pragma(x) __pragma(HYPRE_XSTR(x)) #define Pragma(x) __pragma(x)
#else #else
#define Pragma(x) _Pragma(HYPRE_XSTR(x)) #define Pragma(x) _Pragma(HYPRE_XSTR(x))
#endif #endif
#endif
#define OMPRB1 Pragma(omp parallel for private(HYPRE_REDBLACK_PRIVATE) HYPRE_BOX_REDUCTION HYPRE_SMP_SCHEDULE) #define OMPRB1 Pragma(omp parallel for private(HYPRE_REDBLACK_PRIVATE) HYPRE_BOX_REDUCTION HYPRE_SMP_SCHEDULE)
#else #else
#define OMPRB1 #define OMPRB1

View File

@ -2355,7 +2355,7 @@ hypre__J = hypre__thread; i1 = i2 = 0; \
#define HYPRE_BOX_REDUCTION #define HYPRE_BOX_REDUCTION
#define HYPRE_OMP_CLAUSE #define HYPRE_OMP_CLAUSE
#if defined(WIN32) && defined(_MSC_VER) #if defined(WIN32) && defined(_MSC_VER)
#define Pragma(x) __pragma(HYPRE_XSTR(x)) #define Pragma(x) __pragma(x)
#else #else
#define Pragma(x) _Pragma(HYPRE_XSTR(x)) #define Pragma(x) _Pragma(HYPRE_XSTR(x))
#endif #endif

View File

@ -22,7 +22,7 @@
#define HYPRE_BOX_REDUCTION #define HYPRE_BOX_REDUCTION
#define HYPRE_OMP_CLAUSE #define HYPRE_OMP_CLAUSE
#if defined(WIN32) && defined(_MSC_VER) #if defined(WIN32) && defined(_MSC_VER)
#define Pragma(x) __pragma(HYPRE_XSTR(x)) #define Pragma(x) __pragma(x)
#else #else
#define Pragma(x) _Pragma(HYPRE_XSTR(x)) #define Pragma(x) _Pragma(HYPRE_XSTR(x))
#endif #endif

View File

@ -14,7 +14,8 @@ hypre_Error hypre__global_error = {0, 0, NULL, 0, 0};
* Process the error raised on the given line of the given source file * Process the error raised on the given line of the given source file
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
void hypre_error_handler(const char *filename, HYPRE_Int line, HYPRE_Int ierr, const char *msg) void
hypre_error_handler(const char *filename, HYPRE_Int line, HYPRE_Int ierr, const char *msg)
{ {
/* Copy global struct into a short name and copy changes back before exiting */ /* Copy global struct into a short name and copy changes back before exiting */
hypre_Error err = hypre__global_error; hypre_Error err = hypre__global_error;
@ -27,8 +28,8 @@ void hypre_error_handler(const char *filename, HYPRE_Int line, HYPRE_Int ierr, c
/* Error format strings without and with a message */ /* Error format strings without and with a message */
const char fmt_wo[] = "hypre error in file \"%s\", line %d, error code = %d\n"; const char fmt_wo[] = "hypre error in file \"%s\", line %d, error code = %d\n";
const char fmt_wm[] = "hypre error in file \"%s\", line %d, error code = %d - %s\n"; const char fmt_wm[] = "hypre error in file \"%s\", line %d, error code = %d - %s\n";
char *buffer;
HYPRE_Int bufsz = 0; HYPRE_Int bufsz;
/* Print error message to local buffer first */ /* Print error message to local buffer first */
@ -42,7 +43,7 @@ void hypre_error_handler(const char *filename, HYPRE_Int line, HYPRE_Int ierr, c
} }
bufsz += 1; bufsz += 1;
char buffer[bufsz]; buffer = hypre_TAlloc(char, bufsz, HYPRE_MEMORY_HOST);
if (msg) if (msg)
{ {
@ -54,7 +55,6 @@ void hypre_error_handler(const char *filename, HYPRE_Int line, HYPRE_Int ierr, c
} }
/* Now print buffer to either memory or stderr */ /* Now print buffer to either memory or stderr */
if (err.print_to_memory) if (err.print_to_memory)
{ {
HYPRE_Int msg_sz = err.msg_sz; /* Store msg_sz for snprintf below */ HYPRE_Int msg_sz = err.msg_sz; /* Store msg_sz for snprintf below */
@ -74,6 +74,8 @@ void hypre_error_handler(const char *filename, HYPRE_Int line, HYPRE_Int ierr, c
hypre_fprintf(stderr, "%s", buffer); hypre_fprintf(stderr, "%s", buffer);
} }
/* Free buffer */
hypre_TFree(buffer, HYPRE_MEMORY_HOST);
#endif #endif
hypre__global_error = err; hypre__global_error = err;
@ -82,7 +84,8 @@ void hypre_error_handler(const char *filename, HYPRE_Int line, HYPRE_Int ierr, c
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
HYPRE_Int HYPRE_GetError(void) HYPRE_Int
HYPRE_GetError(void)
{ {
return hypre_error_flag; return hypre_error_flag;
} }
@ -90,7 +93,8 @@ HYPRE_Int HYPRE_GetError(void)
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
HYPRE_Int HYPRE_CheckError(HYPRE_Int ierr, HYPRE_Int hypre_error_code) HYPRE_Int
HYPRE_CheckError(HYPRE_Int ierr, HYPRE_Int hypre_error_code)
{ {
return ierr & hypre_error_code; return ierr & hypre_error_code;
} }
@ -98,7 +102,8 @@ HYPRE_Int HYPRE_CheckError(HYPRE_Int ierr, HYPRE_Int hypre_error_code)
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
void HYPRE_DescribeError(HYPRE_Int ierr, char *msg) void
HYPRE_DescribeError(HYPRE_Int ierr, char *msg)
{ {
if (ierr == 0) if (ierr == 0)
{ {
@ -129,7 +134,8 @@ void HYPRE_DescribeError(HYPRE_Int ierr, char *msg)
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
HYPRE_Int HYPRE_GetErrorArg(void) HYPRE_Int
HYPRE_GetErrorArg(void)
{ {
return (hypre_error_flag >> 3 & 31); return (hypre_error_flag >> 3 & 31);
} }
@ -137,7 +143,8 @@ HYPRE_Int HYPRE_GetErrorArg(void)
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
HYPRE_Int HYPRE_ClearAllErrors(void) HYPRE_Int
HYPRE_ClearAllErrors(void)
{ {
hypre_error_flag = 0; hypre_error_flag = 0;
return (hypre_error_flag != 0); return (hypre_error_flag != 0);
@ -146,7 +153,8 @@ HYPRE_Int HYPRE_ClearAllErrors(void)
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
HYPRE_Int HYPRE_ClearError(HYPRE_Int hypre_error_code) HYPRE_Int
HYPRE_ClearError(HYPRE_Int hypre_error_code)
{ {
hypre_error_flag &= ~hypre_error_code; hypre_error_flag &= ~hypre_error_code;
return (hypre_error_flag & hypre_error_code); return (hypre_error_flag & hypre_error_code);
@ -155,7 +163,8 @@ HYPRE_Int HYPRE_ClearError(HYPRE_Int hypre_error_code)
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
HYPRE_Int HYPRE_SetPrintErrorMode(HYPRE_Int mode) HYPRE_Int
HYPRE_SetPrintErrorMode(HYPRE_Int mode)
{ {
hypre__global_error.print_to_memory = mode; hypre__global_error.print_to_memory = mode;
return hypre_error_flag; return hypre_error_flag;
@ -164,7 +173,8 @@ HYPRE_Int HYPRE_SetPrintErrorMode(HYPRE_Int mode)
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
HYPRE_Int HYPRE_GetErrorMessages(char **buffer, HYPRE_Int *bufsz) HYPRE_Int
HYPRE_GetErrorMessages(char **buffer, HYPRE_Int *bufsz)
{ {
hypre_Error err = hypre__global_error; hypre_Error err = hypre__global_error;
@ -183,7 +193,8 @@ HYPRE_Int HYPRE_GetErrorMessages(char **buffer, HYPRE_Int *bufsz)
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
HYPRE_Int HYPRE_PrintErrorMessages(MPI_Comm comm) HYPRE_Int
HYPRE_PrintErrorMessages(MPI_Comm comm)
{ {
hypre_Error err = hypre__global_error; hypre_Error err = hypre__global_error;