| Bill Allombert on Thu, 16 Jan 2003 15:45:40 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Warning with OSF/1 cc |
On Wed, Jan 15, 2003 at 06:45:12PM +0100, Bill Allombert wrote:
> Hello PARI developers,
>
> Compiling PARI CVS with OSF/1 cc outpout warnings similar to this one
>
> /usr/bin/cc -c -O4 -migrate -ifo -Olimit 9999 -I. -I../src/headers -o init.o ../src/language/init.c
> cc: Warning: ../src/language/init.c, line 1217: In this statement, & before array "__env" is ignored.
> TRY { x = lisseq(f); } ENDCATCH;
> ----^
> cc: Warning: ../src/language/init.c, line 1217: In this statement, the referenced type of the pointer value "&__env" is "long", which is not compatible with "array [84] of long".
> TRY { x = lisseq(f); } ENDCATCH;
> ----^
Well the following patch fix this. Whether it is a good idea is left
as an excercise to the reader.
Cheers,
Bill.
Index: src/headers/paricom.h
===================================================================
RCS file: /home/megrez/cvsroot/pari/src/headers/paricom.h,v
retrieving revision 1.38
diff -u -r1.38 paricom.h
--- src/headers/paricom.h 2003/01/08 23:36:48 1.38
+++ src/headers/paricom.h 2003/01/16 14:30:43
@@ -46,7 +46,7 @@
void *__catcherr; \
if ((pari_errno = setjmp(__env)))
-#define RETRY { __catcherr = err_catch(__err, &__env); {
+#define RETRY { __catcherr = err_catch(__err, __env); {
#define TRY else RETRY
/* Take address of __catcher to prevent compiler from putting it into a register
Index: src/headers/paridecl.h
===================================================================
RCS file: /home/megrez/cvsroot/pari/src/headers/paridecl.h,v
retrieving revision 1.247
diff -u -r1.247 paridecl.h
--- src/headers/paridecl.h 2002/12/31 13:47:37 1.247
+++ src/headers/paridecl.h 2003/01/16 14:30:43
@@ -1024,7 +1024,7 @@
void disable_dbg(long val);
GEN dummycopy(GEN x);
void err(long numerr, ...);
-void *err_catch(long errnum, jmp_buf *penv);
+void *err_catch(long errnum, jmp_buf penv);
void err_leave(void **v);
GEN forcecopy(GEN x);
void freeall(void);
Index: src/language/init.c
===================================================================
RCS file: /home/megrez/cvsroot/pari/src/language/init.c,v
retrieving revision 1.182
diff -u -r1.182 init.c
--- src/language/init.c 2003/01/06 22:03:43 1.182
+++ src/language/init.c 2003/01/16 14:30:44
@@ -76,7 +76,7 @@
#endif /* defined BOTH_GNUPLOT_AND_X11 */
typedef struct {
- jmp_buf *penv;
+ void *penv;
long flag;
} cell;
@@ -954,7 +954,7 @@
}
void *
-err_catch(long errnum, jmp_buf *penv)
+err_catch(long errnum, jmp_buf penv)
{
cell *v;
/* for fear of infinite recursion... */
@@ -1055,13 +1055,13 @@
cell *trapped = NULL;
if ( (trapped = err_seek(numerr)) )
{
- jmp_buf *e = trapped->penv;
+ void *e = trapped->penv;
if (numerr == invmoder)
{
(void)va_arg(ap, char*); /* junk 1st arg */
global_err_data = (void*)va_arg(ap, GEN);
}
- longjmp(*e, numerr);
+ longjmp(e, numerr);
}
}