On Sun, Aug 18, 2002 at 02:35:09PM +0000, Jarkko Hietaniemi wrote: > > Tru64 finds the following objectionable spots from a fresh CVS checkout:
Does this patch fix it? (Though even if it does, I wouldn't be at all surprised if some other compiler choked on it.) Index: rx.ops =================================================================== RCS file: /cvs/public/parrot/rx.ops,v retrieving revision 1.24 diff -p -u -r1.24 rx.ops --- rx.ops 17 Aug 2002 01:11:08 -0000 1.24 +++ rx.ops 18 Aug 2002 17:19:19 -0000 @@ -189,7 +189,7 @@ is the string to match against. op rx_allocinfo(out pmc, in str) { $1=pmc_new(interpreter, enum_class_Pointer); - $1->cache.struct_val = rx_mark; + $1->cache.struct_val = F2DPTR(rx_mark); rx_allocate_info(interpreter, $2, &$1->data); goto NEXT(); @@ -197,7 +197,7 @@ op rx_allocinfo(out pmc, in str) { op rx_allocinfo(out pmc, in pmc) { $1=pmc_new(interpreter, enum_class_Pointer); - $1->cache.struct_val = rx_mark; + $1->cache.struct_val = F2DPTR(rx_mark); rx_allocate_info(interpreter, $2->vtable->get_string(interpreter, $2), &$1->data); goto NEXT(); Index: classes/pointer.pmc =================================================================== RCS file: /cvs/public/parrot/classes/pointer.pmc,v retrieving revision 1.4 diff -p -u -r1.4 pointer.pmc --- classes/pointer.pmc 17 Aug 2002 01:08:30 -0000 1.4 +++ classes/pointer.pmc 18 Aug 2002 17:19:20 -0000 @@ -24,7 +24,7 @@ pmclass Pointer { } PMC* mark (PMC *end_of_used_list) { - PMC* (*mark_function)(struct Parrot_Interp*, void*, PMC *) = SELF->cache.struct_val; + PMC* (*mark_function)(struct Parrot_Interp*, void*, PMC *) = (PMC*(*)(struct +Parrot_Interp*, void*, PMC*)) D2FPTR(SELF->cache.struct_val); if (SELF->data == NULL) return end_of_used_list; if (SELF->cache.struct_val == NULL) return end_of_used_list; return (*mark_function)(INTERP, SELF->data, end_of_used_list);