Branch: Tag:

2016-04-17

2016-04-17 12:09:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added some more peep-hole rules.

These are mostly analogous to previously existing rules.

17:   MARK2 POP_MARK: MARK   MARK POP_TO_MARK:   MARK2 POP_TO_MARK: MARK + MARK_X POP_TO_MARK: POP_N_ELEMS($1a)      SWAP SWAP:   DUP POP_VALUE:
275:   CONST_1 CLEAR_STRING_SUBTYPE: CONST_1   NUMBER CLEAR_STRING_SUBTYPE: NUMBER($1a)   NEG_NUMBER CLEAR_STRING_SUBTYPE: NEG_NUMBER($1a) + ARROW_STRING CLEAR_STRING_SUBTYPE: STRING($1a)      LOCAL INDEX: LOCAL_INDEX ($1a)   LOCAL CLEAR_STRING_SUBTYPE INDEX: LOCAL_INDEX ($1a)
629:      // Popping of side-effect free values.   NUMBER POP_VALUE : + NUMBER64 POP_VALUE :   NEG_NUMBER POP_VALUE:   STRING POP_VALUE :   //FLOAT POP_VALUE :   CONSTANT POP_VALUE :   LOCAL POP_VALUE : -  + LEXICAL_LOCAL POP_VALUE :   GLOBAL POP_VALUE:   PRIVATE_GLOBAL POP_VALUE :   PRIVATE_TYPED_GLOBAL POP_VALUE :   2_LOCALS POP_VALUE: LOCAL($1a) -  + LFUN POP_VALUE:   TRAMPOLINE POP_VALUE :   CONST0 POP_VALUE:   CONST1 POP_VALUE:
653:   XOR_INT POP_VALUE: POP_VALUE   DIVIDE_INT POP_VALUE: POP_VALUE   MULTIPLY_INT POP_VALUE: POP_VALUE + NEGATE POP_VALUE: POP_VALUE + COMPL POP_VALUE: POP_VALUE + NOT POP_VALUE: POP_VALUE + SIZEOF POP_VALUE: POP_VALUE + MARK_AND_CONST0 POP_VALUE: MARK + MARK_AND_CONST1 POP_VALUE: MARK + MARK_AND_STRING POP_VALUE: MARK + MARK_AND_GLOBAL POP_VALUE: MARK + MARK_AND_EXTERNAL POP_VALUE: MARK + MARK_AND_LOCAL POP_VALUE: MARK    -  + NUMBER POP_TO_MARK : POP_TO_MARK + NUMBER64 POP_TO_MARK : POP_TO_MARK + NEG_NUMBER POP_TO_MARK: POP_TO_MARK + STRING POP_TO_MARK : POP_TO_MARK + //FLOAT POP_TO_MARK : POP_TO_MARK + CONSTANT POP_TO_MARK : POP_TO_MARK + LOCAL POP_TO_MARK : POP_TO_MARK + LEXICAL_LOCAL POP_TO_MARK : POP_TO_MARK + GLOBAL POP_TO_MARK: POP_TO_MARK + PRIVATE_GLOBAL POP_TO_MARK : POP_TO_MARK + PRIVATE_TYPED_GLOBAL POP_TO_MARK : POP_TO_MARK + 2_LOCALS POP_TO_MARK: POP_TO_MARK + LFUN POP_TO_MARK: POP_TO_MARK + TRAMPOLINE POP_TO_MARK : POP_TO_MARK + CONST0 POP_TO_MARK: POP_TO_MARK + CONST1 POP_TO_MARK: POP_TO_MARK + CONST_1 POP_TO_MARK: POP_TO_MARK + BIGNUM POP_TO_MARK: POP_TO_MARK + MOD_INT POP_TO_MARK: POP_TO_MARK + LSH_INT POP_TO_MARK: POP_TO_MARK + RSH_INT POP_TO_MARK: POP_TO_MARK + SUBTRACT_INT POP_TO_MARK: POP_TO_MARK + ADD_INT POP_TO_MARK: POP_TO_MARK + AND_INT POP_TO_MARK: POP_TO_MARK + OR_INT POP_TO_MARK: POP_TO_MARK + XOR_INT POP_TO_MARK: POP_TO_MARK + DIVIDE_INT POP_TO_MARK: POP_TO_MARK + MULTIPLY_INT POP_TO_MARK: POP_TO_MARK + NEGATE POP_TO_MARK: POP_TO_MARK + COMPL POP_TO_MARK: POP_TO_MARK + NOT POP_TO_MARK: POP_TO_MARK + SIZEOF POP_TO_MARK: POP_TO_MARK + PUSH_ARRAY POP_TO_MARK: POP_TO_MARK + MARK_AND_CONST0 POP_TO_MARK: + MARK_AND_CONST1 POP_TO_MARK: + MARK_AND_STRING POP_TO_MARK: + MARK_AND_GLOBAL POP_TO_MARK: + MARK_AND_EXTERNAL POP_TO_MARK: + MARK_AND_LOCAL POP_TO_MARK: +    NUMBER POP_N_ELEMS [$2a > 0]: POP_N_ELEMS($2a-1) -  + NUMBER64 POP_N_ELEMS [$2a > 0]: POP_N_ELEMS($2a-1)   NEG_NUMBER POP_N_ELEMS [$2a > 0]: POP_N_ELEMS($2a-1)   STRING POP_N_ELEMS [$2a > 0]: POP_N_ELEMS($2a-1)   //FLOAT POP_N_ELEMS [$2a > 0]: POP_N_ELEMS($2a-1)
680:   XOR_INT POP_N_ELEMS[$2a > 0]: POP_N_ELEMS($2a)   DIVIDE_INT POP_N_ELEMS[$2a > 0]: POP_N_ELEMS($2a)   MULTIPLY_INT POP_N_ELEMS[$2a > 0]: POP_N_ELEMS($2a) + NEGATE POP_N_ELEMS[$2a > 0]: POP_N_ELEMS($2a) + COMPL POP_N_ELEMS[$2a > 0]: POP_N_ELEMS($2a) + NOT POP_N_ELEMS[$2a > 0]: POP_N_ELEMS($2a) + SIZEOF POP_N_ELEMS[$2a > 0]: POP_N_ELEMS($2a)      RECUR RETURN [check_tailrecursion()] : TAIL_RECUR ($1a)