[PATCH]pedantic

2001-09-18 Thread Gibbs Tanton - tgibbs

This patch allows parrot to compile cleanly under the -pedantic flag of gcc.
It removes the lvalue casts in GRAB_IV and DO_OP.  GRAB_IV I had to add a
variable that was an IV** to hold the program code in each function that
used GRAB_IV.  With DO_OP I just changed the lvalue cast to an rvalue cast.
Let me know of any improvements I could make.

Index: build_interp_starter.pl
===
RCS file: /home/perlcvs/parrot/build_interp_starter.pl,v
retrieving revision 1.9
diff -u -u -r1.9 build_interp_starter.pl
--- build_interp_starter.pl 2001/09/18 01:20:43 1.9
+++ build_interp_starter.pl 2001/09/18 14:38:59
@@ -62,7 +62,7 @@
 
 #define DO_OP(w,x,y,z) do { \\
 x = (void *)z-opcode_funcs; \\
-(void *)y = x[*w]; \\
+y = (IV* (*)())x[*w]; \\
 w = (y)(w,z); \\
  } while (0);
 EOI
Index: bytecode.c
===
RCS file: /home/perlcvs/parrot/bytecode.c,v
retrieving revision 1.10
diff -u -u -r1.10 bytecode.c
--- bytecode.c  2001/09/17 17:38:14 1.10
+++ bytecode.c  2001/09/18 14:39:00
@@ -31,7 +31,7 @@
 
 #include parrot/parrot.h
 
-#define GRAB_IV(x) *((IV*)*x)++
+#define GRAB_IV(x) *(*x)++
 
 /*
 
@@ -51,8 +51,9 @@
 
 static int
 check_magic(void** program_code, long* program_size) {
+IV** pcode = (IV**)program_code;
 program_size -= sizeof(IV);
-return (GRAB_IV(program_code) == PARROT_MAGIC);
+return (GRAB_IV(pcode) == PARROT_MAGIC);
 }
 
 /*
@@ -74,7 +75,8 @@
 static void
 read_constants_table(void** program_code, long* program_size)
 {
-IV len = GRAB_IV(program_code);
+IV ** pcode = (IV**)program_code;
+IV len = GRAB_IV(pcode);
 IV num;
 IV i = 0;
 
@@ -85,24 +87,24 @@
return;
 }
 
-num = GRAB_IV(program_code);
+num = GRAB_IV(pcode);
 len -= sizeof(IV);
 *program_size -= sizeof(IV);
 
 Parrot_string_constants = mem_allocate_aligned(num * sizeof(STRING*));
 
 while (len  0) {
-IV flags= GRAB_IV(program_code);
-IV encoding = GRAB_IV(program_code);
-IV type = GRAB_IV(program_code);
-IV buflen   = GRAB_IV(program_code);
+IV flags= GRAB_IV(pcode);
+IV encoding = GRAB_IV(pcode);
+IV type = GRAB_IV(pcode);
+IV buflen   = GRAB_IV(pcode);
int pad;
 
 len -= 4 * sizeof(IV);
 *program_size -= 4 * sizeof(IV);
 
-Parrot_string_constants[i++] = string_make(*program_code /* ouch
*/, buflen, encoding, flags, type);
-(char*)*program_code += buflen;
+Parrot_string_constants[i++] = string_make((char*)*pcode /* ouch
*/, buflen, encoding, flags, type);
+*pcode = (IV*)((char*)*pcode + buflen);
 len -= buflen;
 *program_size -= buflen;
 
@@ -111,7 +113,7 @@
if (pad) {
  pad=sizeof(IV)-pad;
  len -= pad;
- (char*)*program_code += pad;   
+ *pcode = (IV*)((char*)*pcode + pad);
   *program_size -= pad;
}
 num--;
@@ -140,10 +142,11 @@
 static void
 read_fixup_table(void** program_code, long* program_size)
 {
-IV len = GRAB_IV(program_code);
+IV** pcode = (IV**)program_code;
+IV len = GRAB_IV(pcode);
 *program_size -= sizeof(IV);
 /* For now, just skip over it */
-((IV*)*program_code) += len;
+*pcode += len;
 *program_size -= len;
 }
 



RE: [PATCH]pedantic

2001-09-18 Thread Gibbs Tanton - tgibbs

 
Ignore this patch as I think I have a better way to fix it.
-Original Message-
From: Gibbs Tanton - tgibbs
To: '[EMAIL PROTECTED] '
Sent: 9/18/2001 9:44 AM
Subject: [PATCH]pedantic

This patch allows parrot to compile cleanly under the -pedantic flag of
gcc.
It removes the lvalue casts in GRAB_IV and DO_OP.  GRAB_IV I had to add
a
variable that was an IV** to hold the program code in each function that
used GRAB_IV.  With DO_OP I just changed the lvalue cast to an rvalue
cast.
Let me know of any improvements I could make.

Index: build_interp_starter.pl
===
RCS file: /home/perlcvs/parrot/build_interp_starter.pl,v
retrieving revision 1.9
diff -u -u -r1.9 build_interp_starter.pl
--- build_interp_starter.pl 2001/09/18 01:20:43 1.9
+++ build_interp_starter.pl 2001/09/18 14:38:59
@@ -62,7 +62,7 @@
 
 #define DO_OP(w,x,y,z) do { \\
 x = (void *)z-opcode_funcs; \\
-(void *)y = x[*w]; \\
+y = (IV* (*)())x[*w]; \\
 w = (y)(w,z); \\
  } while (0);
 EOI
Index: bytecode.c
===
RCS file: /home/perlcvs/parrot/bytecode.c,v
retrieving revision 1.10
diff -u -u -r1.10 bytecode.c
--- bytecode.c  2001/09/17 17:38:14 1.10
+++ bytecode.c  2001/09/18 14:39:00
@@ -31,7 +31,7 @@
 
 #include parrot/parrot.h
 
-#define GRAB_IV(x) *((IV*)*x)++
+#define GRAB_IV(x) *(*x)++
 
 /*
 
@@ -51,8 +51,9 @@
 
 static int
 check_magic(void** program_code, long* program_size) {
+IV** pcode = (IV**)program_code;
 program_size -= sizeof(IV);
-return (GRAB_IV(program_code) == PARROT_MAGIC);
+return (GRAB_IV(pcode) == PARROT_MAGIC);
 }
 
 /*
@@ -74,7 +75,8 @@
 static void
 read_constants_table(void** program_code, long* program_size)
 {
-IV len = GRAB_IV(program_code);
+IV ** pcode = (IV**)program_code;
+IV len = GRAB_IV(pcode);
 IV num;
 IV i = 0;
 
@@ -85,24 +87,24 @@
return;
 }
 
-num = GRAB_IV(program_code);
+num = GRAB_IV(pcode);
 len -= sizeof(IV);
 *program_size -= sizeof(IV);
 
 Parrot_string_constants = mem_allocate_aligned(num *
sizeof(STRING*));
 
 while (len  0) {
-IV flags= GRAB_IV(program_code);
-IV encoding = GRAB_IV(program_code);
-IV type = GRAB_IV(program_code);
-IV buflen   = GRAB_IV(program_code);
+IV flags= GRAB_IV(pcode);
+IV encoding = GRAB_IV(pcode);
+IV type = GRAB_IV(pcode);
+IV buflen   = GRAB_IV(pcode);
int pad;
 
 len -= 4 * sizeof(IV);
 *program_size -= 4 * sizeof(IV);
 
-Parrot_string_constants[i++] = string_make(*program_code /*
ouch
*/, buflen, encoding, flags, type);
-(char*)*program_code += buflen;
+Parrot_string_constants[i++] = string_make((char*)*pcode /*
ouch
*/, buflen, encoding, flags, type);
+*pcode = (IV*)((char*)*pcode + buflen);
 len -= buflen;
 *program_size -= buflen;
 
@@ -111,7 +113,7 @@
if (pad) {
  pad=sizeof(IV)-pad;
  len -= pad;
- (char*)*program_code += pad;   
+ *pcode = (IV*)((char*)*pcode + pad);
   *program_size -= pad;
}
 num--;
@@ -140,10 +142,11 @@
 static void
 read_fixup_table(void** program_code, long* program_size)
 {
-IV len = GRAB_IV(program_code);
+IV** pcode = (IV**)program_code;
+IV len = GRAB_IV(pcode);
 *program_size -= sizeof(IV);
 /* For now, just skip over it */
-((IV*)*program_code) += len;
+*pcode += len;
 *program_size -= len;
 }