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 myid;
char filename[1024], msg[1024];
HYPRE_BigInt ilower, iupper, jlower, jupper;
size_t i, count;
HYPRE_BigInt i, ilower, iupper, jlower, jupper;
size_t count;
hypre_uint64 header[11];
FILE *fp;

View File

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

View File

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

View File

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

View File

@ -22,7 +22,7 @@
#define HYPRE_BOX_REDUCTION
#define HYPRE_OMP_CLAUSE
#if defined(WIN32) && defined(_MSC_VER)
#define Pragma(x) __pragma(HYPRE_XSTR(x))
#define Pragma(x) __pragma(x)
#else
#define Pragma(x) _Pragma(HYPRE_XSTR(x))
#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
*--------------------------------------------------------------------------*/
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 */
hypre_Error err = hypre__global_error;
@ -25,10 +26,10 @@ void hypre_error_handler(const char *filename, HYPRE_Int line, HYPRE_Int ierr, c
#ifdef HYPRE_PRINT_ERRORS
/* 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_wm[] = "hypre error in file \"%s\", line %d, error code = %d - %s\n";
HYPRE_Int bufsz = 0;
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";
char *buffer;
HYPRE_Int bufsz;
/* 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;
char buffer[bufsz];
buffer = hypre_TAlloc(char, bufsz, HYPRE_MEMORY_HOST);
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 */
if (err.print_to_memory)
{
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);
}
/* Free buffer */
hypre_TFree(buffer, HYPRE_MEMORY_HOST);
#endif
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;
}
@ -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;
}
@ -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)
{
@ -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);
}
@ -137,7 +143,8 @@ HYPRE_Int HYPRE_GetErrorArg(void)
/*--------------------------------------------------------------------------
*--------------------------------------------------------------------------*/
HYPRE_Int HYPRE_ClearAllErrors(void)
HYPRE_Int
HYPRE_ClearAllErrors(void)
{
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;
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;
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;
@ -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;