You could break it up into:
else if( rx->startindex == 0 ) {
goto OFFSET($2);
}
else {
--rx->startindex
}
----- Original Message -----
From: "Andy Dougherty" <[EMAIL PROTECTED]>
To: "Perl6 Internals" <[EMAIL PROTECTED]>
Sent: Tuesday, January 15, 2002 1:47 PM
Subject: gcc warnings: rx->startindex
> Ok, I've been paging through the hundreds of errors spewn out by gcc
> with the new -Wkitchen_sink warnings. Some are pretty clear, but
> many others raise questions I'm unsure how to answer.
>
> For example, given the following structure in "parrot/rx.h"
> (note that startindex is unsigned):
>
> typedef struct rxinfo {
> STRING *string;
> UINTVAL index;
> UINTVAL startindex;
> BOOLVAL success;
>
> rxflags flags;
> UINTVAL minlength;
> rxdirection whichway;
>
> PMC *groupstart;
> PMC *groupend;
>
> opcode_t *substfunc;
>
> struct Stack_chunk_t* stack;
> } rxinfo;
>
> gcc-2.8 rightfully complains that in the following bit of code from
> rx.ops, rx->startindex can never be < 0.
>
> op rx_advance(in pmc, in int) {
> RX_dUNPACK($1);
>
> if(!RxReverse_test(rx)) {
> if(++rx->startindex + rx->minlength > string_length(rx->string)) {
> goto OFFSET($2);
> }
> }
> else {
> if(--rx->startindex < 0) {
> goto OFFSET($2);
> }
> }
>
>
> Does anyone know if the correct fix to make startindex signed, eliminate
the
> unreachable branch, put an assert() in somewhere, ignore the message,
> or do something else clever?
>
> --
> Andy Dougherty [EMAIL PROTECTED]
> Dept. of Physics
> Lafayette College, Easton PA 18042
>