pike.git / src / peep.in

version» Context lines:

pike.git/src/peep.in:272:   // BRANCH_WHEN_LE BRANCH LABEL ($1a) : BRANCH_WHEN_GT($2a) LABEL($1a)   // BRANCH_WHEN_GT BRANCH LABEL ($1a) : BRANCH_WHEN_LE($2a) LABEL($1a)         CONST0 ADD_INTS: ADD_INT (0)   CONST1 ADD_INTS: ADD_INT (1)   CONST_1 ADD_INTS: ADD_NEG_INT (1)   NUMBER [$1a >= 0] ADD_INTS : ADD_INT ($1a)   NEG_NUMBER [$1a > 0] ADD_INTS : ADD_NEG_INT ($1a)    - CONST0 ADD: ADD_INT (0) - CONST1 ADD: ADD_INT (1) - CONST_1 ADD: ADD_NEG_INT (1) - NUMBER [$1a >= 0] ADD : ADD_INT ($1a) - NEG_NUMBER [$1a > 0] ADD : ADD_NEG_INT ($1a) + #define OPER_INT(X,Y) \ +  X MOD : MOD_INT(Y); \ +  X LSH : LSH_INT(Y); \ +  X RSH : RSH_INT(Y); \ +  X SUBTRACT : SUBTRACT_INT(Y); \ +  X ADD : ADD_INT(Y); \ +  X AND : AND_INT(Y); \ +  X OR : OR_INT(Y); \ +  X XOR : XOR_INT(Y); \ +  X DIVIDE : DIVIDE_INT(Y);\ +  X MULTIPLY : MULTIPLY_INT(Y);    - CONST1 SUBTRACT: ADD_NEG_INT (1) - CONST_1 SUBTRACT: ADD_INT (1) - NUMBER [$1a >= 0] SUBTRACT : ADD_NEG_INT ($1a) - NEG_NUMBER [$1a > 0] SUBTRACT : ADD_INT ($1a) + OPER_INT(NUMBER,$1a) + OPER_INT(NEG_NUMBER [!INT32_NEG_OVERFLOW($1a)], -$1a)    - NUMBER MOD : MOD_INT($1a) - NUMBER LSH : LSH_INT($1a) - NUMBER RSH : RSH_INT($1a) - NUMBER SUBTRACT : SUBTRACT_INT($1a) - NUMBER AND : DIVIDE_INT($1a) - NUMBER OR : OR_INT($1a) - NUMBER XOR : XOR_INT($1a) - NUMBER MULTIPLY : MULTIPLY_INT($1a) - NUMBER DIVIDE : DIVIDE_INT($1a) + OPER_INT(CONST0,0) + OPER_INT(CONST1,1) + OPER_INT(CONST_1,-1)    - NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) ] MOD : MOD_INT(-$1a) - NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) ] LSH : LSH_INT(-$1a) - NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) ] RSH : RSH_INT(-$1a) - NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) ] SUBTRACT : SUBTRACT_INT(-$1a) - NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) ] AND : DIVIDE_INT(-$1a) - NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) ] OR : OR_INT(-$1a) - NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) ] XOR : XOR_INT(-$1a) - NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) ] MULTIPLY : MULTIPLY_INT(-$1a) - NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) ] DIVIDE : DIVIDE_INT(-$1a) + OPER_INT(BIGNUM,0x7fffffff)    -  + // this should be automatically const optimized, right? + // ADD_INTS ADD_INTS: ADD_INTS ($1a+$2a) +  +    // This set of optimizations is broken. Consider the case:   // STRING ADD_INT ADD_INT - // - // ADD_INT ADD_INT: ADD_INT ($1a+$2a) + // ADD_INT ADD_INT: ADD_INTS ($1a+$2a)   // ADD_NEG_INT ADD_NEG_INT: ADD_NEG_INT ($1a+$2a)   // ADD_NEG_INT ADD_INT [$1a <= $2a]: ADD_INT ($2a-$1a)   // ADD_NEG_INT ADD_INT [$1a > $2a]: ADD_NEG_INT ($1a-$2a)   // ADD_INT ADD_NEG_INT [$2a <= $1a]: ADD_INT ($1a-$2a)   // ADD_INT ADD_NEG_INT [$2a > $1a]: ADD_NEG_INT ($2a-$1a)      // FIXME: BIGNUMS?   //   // NUMBER ADD_INT : NUMBER ($1a+$2a)   // NUMBER ADD_NEG_INT : NUMBER ($1a-$2a)