Age | Commit message (Expand) | Author | Files | Lines |
2018-09-06 | add testcases for wrong ordering in phi-nodes | Luc Van Oostenryck | 4 | -0/+55 |
2018-09-06 | return nothing only in void functions | Luc Van Oostenryck | 2 | -4/+3 |
2018-09-06 | use a temp var for the return type/symbol | Luc Van Oostenryck | 1 | -1/+2 |
2018-09-06 | use UNDEF for missing returns | Luc Van Oostenryck | 6 | -5/+8 |
2018-09-06 | extract add_return() from linearize_return() | Luc Van Oostenryck | 1 | -11/+16 |
2018-09-06 | the return BB is never terminated | Luc Van Oostenryck | 1 | -8/+7 |
2018-09-06 | there is always an active BB after linearize_fn_statement() | Luc Van Oostenryck | 1 | -2/+2 |
2018-09-06 | specialize linearize_compound_statement() | Luc Van Oostenryck | 1 | -10/+16 |
2018-09-06 | topasm: top-level asm is special | Luc Van Oostenryck | 3 | -3/+7 |
2018-09-05 | use a temp var for function's upper-level statement | Luc Van Oostenryck | 1 | -2/+3 |
2018-09-05 | add testcases for missing return in last block | Luc Van Oostenryck | 6 | -0/+97 |
2018-09-05 | add linearization as a pass | Luc Van Oostenryck | 2 | -0/+2 |
2018-09-01 | stricter warning for explicit cast to ulong | Luc Van Oostenryck | 5 | -2/+70 |
2018-09-01 | Merge branch 'dead-switch' into tip | Luc Van Oostenryck | 4 | -8/+83 |
2018-09-01 | Merge branch 'has-attribute' into tip | Luc Van Oostenryck | 5 | -10/+85 |
2018-09-01 | trivial-phi: remove more complex trivial phi-nodes | Luc Van Oostenryck | 2 | -3/+17 |
2018-09-01 | trivial-phi: directly return the unique value | Luc Van Oostenryck | 1 | -17/+9 |
2018-09-01 | trivial-phi: use a temp var for the real source | Luc Van Oostenryck | 1 | -2/+7 |
2018-09-01 | trivial-phi: early return | Luc Van Oostenryck | 1 | -1/+1 |
2018-09-01 | trivial-phi: extract trivial_phi() from clean_up_phi() | Luc Van Oostenryck | 1 | -3/+22 |
2018-09-01 | trivial-phi: make clean_up_phi() more sequential | Luc Van Oostenryck | 1 | -4/+5 |
2018-09-01 | trivial-phi: add testcase for unneeded trivial phi-nodes | Luc Van Oostenryck | 1 | -0/+15 |
2018-09-01 | move DEF_OPCODE() to header file | Luc Van Oostenryck | 2 | -7/+8 |
2018-09-01 | fix linearization of unreachable switch (with reachable label). | Luc Van Oostenryck | 2 | -6/+6 |
2018-09-01 | add tescase for unreachable label in switch | Luc Van Oostenryck | 1 | -0/+20 |
2018-09-01 | ir-validate: validate return value | Luc Van Oostenryck | 1 | -0/+15 |
2018-09-01 | ir-validate: ignore dead phis | Luc Van Oostenryck | 1 | -0/+3 |
2018-09-01 | ir-validate: add validation branch to dead BB | Luc Van Oostenryck | 2 | -3/+40 |
2018-09-01 | has-attr: add support for __has_attribute() | Luc Van Oostenryck | 4 | -10/+26 |
2018-09-01 | has-attr: add __designated_init__ & transparent_union | Luc Van Oostenryck | 1 | -0/+2 |
2018-09-01 | has-attr: move 'mode' next to '__mode__' | Luc Van Oostenryck | 1 | -1/+1 |
2018-09-01 | has-attr: add testcase for __has_attribute() | Luc Van Oostenryck | 1 | -0/+57 |
2018-08-31 | Merge branch 'opcode' into tip | Luc Van Oostenryck | 10 | -183/+177 |
2018-08-30 | Merge branch 'volatile-bitfield' and 'mode-pointer' into tip | Luc Van Oostenryck | 8 | -19/+77 |
2018-08-30 | fix missing declarations | Luc Van Oostenryck | 4 | -1/+8 |
2018-08-26 | add a function to remove deadborn instructions | Luc Van Oostenryck | 2 | -0/+23 |
2018-08-26 | opcode: add OPF_TARGET | Luc Van Oostenryck | 3 | -84/+88 |
2018-08-26 | opcode: add arity info | Luc Van Oostenryck | 3 | -84/+86 |
2018-08-26 | opcode: centralize opcode definition | Luc Van Oostenryck | 4 | -152/+134 |
2018-08-25 | fix: do not optimize away accesses to volatile bitfields | Luc Van Oostenryck | 2 | -3/+2 |
2018-08-25 | add a flag for volatile memops | Luc Van Oostenryck | 5 | -4/+7 |
2018-08-25 | split memops from unops | Luc Van Oostenryck | 1 | -1/+4 |
2018-08-25 | add testcase for accesses to volatile bitfields | Luc Van Oostenryck | 1 | -0/+17 |
2018-08-25 | symaddr: s/insn->symbol/insn->src/ | Luc Van Oostenryck | 6 | -31/+14 |
2018-08-25 | Merge branch 'ssa' into tip | Luc Van Oostenryck | 53 | -376/+1439 |
2018-08-25 | testsuite: remove useless test for loop-linearization | Luc Van Oostenryck | 1 | -136/+0 |
2018-08-25 | Merge branch 'kill-dead-stores' into tip | Luc Van Oostenryck | 7 | -22/+214 |
2018-08-24 | remove superfluous newline in 'unknown mode attribute' error message | Luc Van Oostenryck | 1 | -1/+1 |
2018-08-25 | add a testcase for enum using a mode | Luc Van Oostenryck | 1 | -0/+18 |
2018-08-25 | add support for mode __byte__ | Luc Van Oostenryck | 1 | -0/+2 |
2018-08-25 | add support for mode __pointer__ | Luc Van Oostenryck | 1 | -1/+17 |
2018-08-25 | mode keywords don't need MOD_{CHAR,LONG,...} | Luc Van Oostenryck | 1 | -12/+12 |
2018-08-24 | Merge branches 'optim-trunc-or' and 'optim-mask-shift-or' into tip | Luc Van Oostenryck | 5 | -22/+61 |
2018-08-24 | simplify TRUNC(SHIFT(a | b, S), N) | Luc Van Oostenryck | 3 | -2/+6 |
2018-08-24 | simplify AND(SHIFT(a | b, S), M) | Luc Van Oostenryck | 3 | -2/+18 |
2018-08-23 | prepare simplification of MASK(SHIFT(a | b, S), M) | Luc Van Oostenryck | 1 | -4/+22 |
2018-08-23 | doc: extend simplification notation | Luc Van Oostenryck | 1 | -13/+15 |
2018-08-22 | simplify TRUNC((x & M') | y, N) | Luc Van Oostenryck | 5 | -4/+8 |
2018-08-22 | Merge branches 'optim-shift-and' and 'optim-bitfield' into tip | Luc Van Oostenryck | 39 | -45/+723 |
2018-08-22 | simplify ((x & M) << S) when (M << S) == (-1 << S) | Luc Van Oostenryck | 2 | -1/+2 |
2018-08-22 | simplify ((x & M) << S) when (M << S) == 0 | Luc Van Oostenryck | 2 | -1/+11 |
2018-08-22 | simplify ((x & M) >> S) when (M >> S) == (-1 >> S) | Luc Van Oostenryck | 2 | -1/+2 |
2018-08-22 | simplify ((x & M) >> S) when (M >> S) == 0 | Luc Van Oostenryck | 2 | -2/+5 |
2018-08-22 | use an intermediate mask in simplify_shift() | Luc Van Oostenryck | 1 | -3/+3 |
2018-08-22 | add testcases for {LSR,SHL}(AND(x, M), S) with shared AND(x, M) | Luc Van Oostenryck | 4 | -0/+66 |
2018-08-22 | simplify SHL((x & M') | y, S) | Luc Van Oostenryck | 8 | -7/+4 |
2018-08-22 | simplify OP((x | C), K) when (C & M) != C | Luc Van Oostenryck | 2 | -1/+4 |
2018-08-22 | simplify OP((x | C), K) when (C & M) == M | Luc Van Oostenryck | 2 | -1/+4 |
2018-08-22 | simplify OP((x | C), K) when (C & M) == 0 | Luc Van Oostenryck | 3 | -2/+9 |
2018-08-22 | simplify OP(((x & M') | y), K) when (M' & M) != M' | Luc Van Oostenryck | 4 | -3/+5 |
2018-08-22 | simplify OP(((x & M') | y), K) when (M' & M) == M | Luc Van Oostenryck | 4 | -3/+8 |
2018-08-22 | move opcode test inside simplify_mask_or_and() | Luc Van Oostenryck | 1 | -3/+7 |
2018-08-22 | allow simplification of OP(((x & y) | (a & M')), K) | Luc Van Oostenryck | 4 | -5/+5 |
2018-08-22 | switch return order in simplify_mask_or_and() | Luc Van Oostenryck | 1 | -6/+5 |
2018-08-22 | document simplify_mask_or() & simplify_mask_or_and() | Luc Van Oostenryck | 1 | -0/+21 |
2018-08-22 | use better names for simplify_mask_or_and() vars | Luc Van Oostenryck | 1 | -3/+4 |
2018-08-22 | add simplify_mask_or() | Luc Van Oostenryck | 1 | -16/+14 |
2018-08-22 | unify simplify_lsr_or() & simplify_and_or_mask() | Luc Van Oostenryck | 1 | -33/+23 |
2018-08-22 | add testcases for bitfield & AND/OR simplification | Luc Van Oostenryck | 36 | -0/+625 |
2018-08-22 | add testcase for (((x & M') | (y & M'')) & M) | Luc Van Oostenryck | 2 | -0/+23 |
2018-08-21 | doc: add doc for simplification notation | Luc Van Oostenryck | 2 | -0/+29 |
2018-08-21 | doc: reword doc for replace_pseudo() | Luc Van Oostenryck | 1 | -1/+1 |
2018-08-21 | doc: convert existing simplify.c doc into ReST autodoc | Luc Van Oostenryck | 1 | -36/+43 |
2018-08-21 | doc: automatically insert the blank line for lists | Luc Van Oostenryck | 1 | -0/+3 |
2018-08-21 | doc: simplify the creation of the viewlist | Luc Van Oostenryck | 1 | -6/+5 |
2018-08-17 | Merge branches 'optim-shl-lsr' and 'optim-trunc-trunc' into tip | Luc Van Oostenryck | 2 | -2/+19 |
2018-08-17 | simplify TRUNC(TRUNC(x)) | Luc Van Oostenryck | 2 | -1/+3 |
2018-08-17 | reorganize simplification of ZEXT(TRUNC(x)) | Luc Van Oostenryck | 1 | -2/+4 |
2018-08-17 | simplify ((x >> S) << S) | Luc Van Oostenryck | 2 | -1/+7 |
2018-08-17 | reorganize shift-shift simplification | Luc Van Oostenryck | 1 | -6/+8 |
2018-08-17 | simpler guard in LSR-SHL simplification | Luc Van Oostenryck | 1 | -3/+1 |
2018-08-16 | add testcase for TRUNC(TRUNC(x)) simplification | Luc Van Oostenryck | 1 | -0/+13 |
2018-08-16 | add testcase for ((x >> S) << S) simplification | Luc Van Oostenryck | 1 | -0/+15 |
2018-08-16 | rename testcase for ((x << S) >> S) simplification | Luc Van Oostenryck | 1 | -1/+1 |
2018-08-08 | Merge branches 'fix-inc-dec-size' and 'optim-mask' into tip | Luc Van Oostenryck | 10 | -104/+192 |
2018-08-08 | simplify (x & M) >> S to (x >> S) & (M >> S) | Luc Van Oostenryck | 2 | -1/+14 |
2018-08-08 | simplify (x << S) >> S into x & (-1 >> S) | Luc Van Oostenryck | 4 | -11/+14 |
2018-08-08 | simplify ((x & M) | y) >> S to (y >> S) when (M >> S) == 0 | Luc Van Oostenryck | 2 | -1/+24 |
2018-08-08 | simplify ((x & M') | y ) & M into (y & M) when (M' & M) == 0 | Luc Van Oostenryck | 2 | -1/+23 |
2018-08-08 | reorg code for shift-shift simplification | Luc Van Oostenryck | 1 | -5/+10 |
2018-08-07 | use multi_users() instead on nbr_users() | Luc Van Oostenryck | 1 | -3/+3 |
2018-08-07 | Merge branch 'fix-logical-extra' into tip | Luc Van Oostenryck | 17 | -59/+509 |
2018-08-07 | optim: add a few more testcases for shift & mask | Luc Van Oostenryck | 1 | -0/+15 |
2018-08-07 | avoid infinite simplification loops of the second kind | Luc Van Oostenryck | 1 | -2/+3 |
2018-08-07 | fix bad indentation in linearize_inc_dec() | Luc Van Oostenryck | 1 | -1/+1 |
2018-08-07 | fix instruction size & type in linearize_inc_dec() | Luc Van Oostenryck | 3 | -69/+80 |
2018-08-07 | put back the bitfield base type into struct access_data | Luc Van Oostenryck | 1 | -5/+7 |
2018-08-07 | expand linearize_position() into linearize_initializer() | Luc Van Oostenryck | 1 | -9/+2 |
2018-08-06 | limit the mask used for bitfield insertion | Luc Van Oostenryck | 2 | -7/+8 |
2018-08-06 | cast: fix warning position in cast_pseudo() | Luc Van Oostenryck | 3 | -6/+7 |
2018-08-06 | boolean conversion of boolean value is a no-op | Luc Van Oostenryck | 2 | -6/+8 |
2018-08-06 | simplify AND(SETCC(x,y), M) | Luc Van Oostenryck | 2 | -1/+5 |
2018-08-06 | simplify TRUNC(SETCC(x,y), N) | Luc Van Oostenryck | 2 | -1/+2 |
2018-08-06 | simplify SEXT(SETCC(x,y), N) | Luc Van Oostenryck | 2 | -1/+4 |
2018-08-06 | simplify ZEXT(SETCC(x,y), N) | Luc Van Oostenryck | 4 | -8/+16 |
2018-08-06 | simplify SETNE(TRUNC(x,N),{0,1}) | Luc Van Oostenryck | 2 | -1/+17 |
2018-08-06 | simplify SETNE(AND(X,1),0) to AND(X,1) | Luc Van Oostenryck | 2 | -1/+10 |
2018-08-06 | simplify linearize_logical() | Luc Van Oostenryck | 2 | -119/+82 |
2018-08-06 | expand linearize_conditional() into linearize_logical() | Luc Van Oostenryck | 2 | -144/+158 |
2018-08-06 | fix linearize_conditional() for logical ops | Luc Van Oostenryck | 2 | -5/+13 |
2018-08-06 | conditional branches can't accept arbitrary expressions | Luc Van Oostenryck | 4 | -30/+30 |
2018-08-06 | protect add_convert_to_bool() against bad types / invalid expressions | Luc Van Oostenryck | 1 | -0/+2 |
2018-08-06 | fix size corruption when simplifing 'x != 0' to 'x' | Luc Van Oostenryck | 1 | -1/+1 |
2018-08-04 | Merge branch 'list-optims' (early part) into tip | Luc Van Oostenryck | 6 | -13/+134 |
2018-08-04 | add testcase for linearize_logical() | Luc Van Oostenryck | 8 | -0/+418 |
2018-07-28 | Merge branch 'optim-setne' into tip | Luc Van Oostenryck | 5 | -52/+64 |
2018-07-28 | simplify 'x != 0' or 'x == 1' to 'x' | Luc Van Oostenryck | 3 | -37/+27 |
2018-07-28 | simplify SET{EQ,NE}(SEXT(x, N),{0,1}) | Luc Van Oostenryck | 2 | -2/+5 |
2018-07-28 | simplify SET{EQ,NE}(ZEXT(x, N),{0,1}) | Luc Van Oostenryck | 2 | -11/+7 |
2018-07-25 | cleanup of simplify_seteq_setne(): remove tmp vars | Luc Van Oostenryck | 1 | -5/+2 |
2018-07-25 | testcase for SET{EQ,NE}([SZ]EXT(x, N),{0,1})'s simplification | Luc Van Oostenryck | 2 | -0/+26 |
2018-07-25 | Merge branch 'optim-cast' into tip | Luc Van Oostenryck | 25 | -34/+523 |
2018-07-25 | Merge branch 'optim-shift' into tip | Luc Van Oostenryck | 16 | -20/+755 |
2018-07-25 | shift: simplify ASR(ZEXT(X, N), C) | Luc Van Oostenryck | 2 | -0/+23 |
2018-07-25 | shift: avoid simplification of ASR(LSR(x,0),N) | Luc Van Oostenryck | 1 | -1/+1 |
2018-07-25 | shift: simplify ASR(LSR(x,N),N') | Luc Van Oostenryck | 2 | -1/+46 |
2018-07-25 | shift: simplify LSR(LSR(x,N),N') & friends | Luc Van Oostenryck | 2 | -1/+195 |
2018-07-25 | add lookup_ptr_list_entry() | Luc Van Oostenryck | 4 | -9/+27 |
2018-07-25 | add ptr_list_multiple() | Luc Van Oostenryck | 4 | -1/+28 |
2018-07-25 | add ptr_list_empty() | Luc Van Oostenryck | 4 | -2/+28 |
2018-07-25 | kill dead OP_FADD & friends | Luc Van Oostenryck | 1 | -0/+7 |
2018-07-25 | testcases: missing evaluation of side effects in typeof(VLA) | Luc Van Oostenryck | 1 | -0/+26 |
2018-07-25 | testcases: add testcase for missing detection of out-of-bound stores | Luc Van Oostenryck | 1 | -0/+21 |
2018-07-25 | add copy_ptr_list() | Luc Van Oostenryck | 3 | -1/+51 |
2018-07-24 | use "%Le" to display floats | Luc Van Oostenryck | 6 | -25/+25 |
2018-07-23 | big-shift: do not optimize over-sized ASRs | Luc Van Oostenryck | 1 | -0/+2 |
2018-07-23 | big-shift: do not optimize negative shifts | Luc Van Oostenryck | 1 | -0/+2 |
2018-07-23 | big-shift: fix warning message for negative or over-sized shifts | Luc Van Oostenryck | 3 | -18/+30 |
2018-07-23 | big-shift: move shift count check in a separate function | Luc Van Oostenryck | 1 | -5/+16 |
2018-07-23 | big-shift: add testcases for simplification of negative shifts | Luc Van Oostenryck | 1 | -0/+18 |
2018-07-23 | big-shift: add testcases for simplification of over-sized shifts | Luc Van Oostenryck | 1 | -7/+55 |
2018-07-23 | bits: add helpers for zero & sign-extension | Luc Van Oostenryck | 3 | -0/+70 |
2018-07-23 | cast: simplify SEXT(ZEXT(x,N),N') | Luc Van Oostenryck | 2 | -1/+3 |
2018-07-23 | cast: simplify ZEXT(ZEXT(x,N),N') | Luc Van Oostenryck | 2 | -1/+6 |
2018-07-23 | cast: simplify SEXT(SEXT(x,N),N') | Luc Van Oostenryck | 2 | -1/+5 |
2018-07-23 | cast: simplify AND(ZEXT(x,M),N) | Luc Van Oostenryck | 3 | -3/+34 |
2018-07-23 | cast: simplify [ZS]EXT(AND(x,M),N) | Luc Van Oostenryck | 4 | -3/+24 |
2018-07-23 | cast: preserve the sizes of TRUNC(AND(x,M),N) | Luc Van Oostenryck | 2 | -7/+11 |
2018-07-23 | cast: use a switch to handle TRUNC(AND(x,M),N) in simplify_cast() | Luc Van Oostenryck | 1 | -7/+11 |
2018-07-23 | cast: do not compare sizes, test the opcode | Luc Van Oostenryck | 1 | -1/+1 |
2018-07-23 | cast: fix shift signedness in cast simplification | Luc Van Oostenryck | 1 | -1/+2 |
2018-07-23 | cast: simplify [SZ]EXT + TRUNC to a smaller/greater size | Luc Van Oostenryck | 3 | -3/+4 |
2018-07-23 | cast: simplify [SZ]EXT + TRUNC to original size | Luc Van Oostenryck | 2 | -1/+10 |
2018-07-23 | bitfield: extract linearize_bitfield_insert() | Luc Van Oostenryck | 1 | -11/+19 |
2018-07-23 | bitfield: extract linearize_bitfield_extract() | Luc Van Oostenryck | 1 | -6/+14 |
2018-07-23 | add testcases for casts & bitfield insertion/extraction | Luc Van Oostenryck | 21 | -0/+391 |
2018-07-23 | extract nbr_users() from unssa.c | Luc Van Oostenryck | 3 | -7/+7 |
2018-07-23 | big-shift: add -Wshift-count-{negative,overflow} | Luc Van Oostenryck | 5 | -1/+25 |
2018-07-23 | big-shift: do not truncate the count when checking it | Luc Van Oostenryck | 2 | -6/+8 |
2018-07-23 | big-shift: fix evaluation of shift-assign | Luc Van Oostenryck | 1 | -0/+5 |
2018-07-23 | big-shift: fix warning message for negative shift count | Luc Van Oostenryck | 2 | -19/+23 |
2018-07-23 | big-shift: use the type width for too big shift | Luc Van Oostenryck | 2 | -14/+47 |
2018-07-23 | big-shift: simplify over-sized OP_SHLs | Luc Van Oostenryck | 2 | -0/+9 |
2018-07-23 | big-shift: simplify over-sized OP_LSRs | Luc Van Oostenryck | 3 | -10/+45 |
2018-07-23 | big-shift: reuse simplify_asr() for LSR & SHL | Luc Van Oostenryck | 2 | -4/+12 |
2018-07-23 | big-shift: reorder the tests in simplify_asr() | Luc Van Oostenryck | 1 | -3/+5 |
2018-07-23 | big-shift: do not simplify over-sized OP_ASR to zero | Luc Van Oostenryck | 2 | -1/+2 |
2018-07-22 | big-shift: also check shift count of shift-assignment | Luc Van Oostenryck | 2 | -1/+68 |
2018-07-22 | big-shift: use the base type for shift-too-big warning | Luc Van Oostenryck | 1 | -0/+2 |
2018-07-22 | big-shift: move the check into check_shift_count() | Luc Van Oostenryck | 1 | -5/+5 |
2018-07-21 | big-shift: don't take the modulo at expand time | Luc Van Oostenryck | 1 | -5/+2 |
2018-07-21 | big-shift: do not evaluate negative or over-sized shifts | Luc Van Oostenryck | 1 | -0/+6 |
2018-07-21 | big-shift: mark out-of-range OP_{ASR,LSR,SHL} as tainted | Luc Van Oostenryck | 2 | -1/+21 |
2018-07-21 | big-shift: add test for shifts with bad count | Luc Van Oostenryck | 2 | -0/+95 |
2018-07-13 | remove obsolete comment: /* Dummy pseudo allocator */ | Luc Van Oostenryck | 1 | -1/+0 |
2018-07-13 | no need to assign ad->type for EXPR_POS | Luc Van Oostenryck | 1 | -1/+0 |
2018-07-13 | remove unused struct access_data::pos | Luc Van Oostenryck | 1 | -4/+0 |
2018-07-13 | remove unused finish_address_gen() | Luc Van Oostenryck | 1 | -10/+0 |
2018-07-01 | ssa: phi worklist | Luc Van Oostenryck | 3 | -10/+35 |
2018-07-01 | ssa: remove unused simplify_symbol_usage() | Luc Van Oostenryck | 1 | -278/+0 |
2018-07-01 | ssa: activate the new SSA conversion | Luc Van Oostenryck | 11 | -11/+4 |
2018-07-01 | ssa: phase 3: rename phi-nodes | Luc Van Oostenryck | 1 | -0/+36 |
2018-07-01 | ssa: phase 2: rename load & stores | Luc Van Oostenryck | 1 | -0/+63 |
2018-07-01 | ssa: phase 1: phi-nodes placement | Luc Van Oostenryck | 5 | -0/+289 |
2018-07-01 | ptrmap: add type-safe interface | Luc Van Oostenryck | 1 | -0/+16 |
2018-07-01 | ptrmap: core implementation | Luc Van Oostenryck | 3 | -0/+122 |
2018-07-01 | add insert_phi_node() | Luc Van Oostenryck | 2 | -0/+39 |
2018-07-01 | add PSEUDO_UNDEF & undef_pseudo() | Luc Van Oostenryck | 3 | -1/+18 |
2018-07-01 | add new helper: is_integral_type() | Luc Van Oostenryck | 1 | -0/+18 |
2018-07-01 | idf: add test/debug/example | Luc Van Oostenryck | 1 | -0/+27 |