summaryrefslogtreecommitdiffstatshomepage
AgeCommit message (Expand)AuthorFilesLines
2018-09-06add testcases for wrong ordering in phi-nodesLuc Van Oostenryck4-0/+55
2018-09-06return nothing only in void functionsLuc Van Oostenryck2-4/+3
2018-09-06use a temp var for the return type/symbolLuc Van Oostenryck1-1/+2
2018-09-06use UNDEF for missing returnsLuc Van Oostenryck6-5/+8
2018-09-06extract add_return() from linearize_return()Luc Van Oostenryck1-11/+16
2018-09-06the return BB is never terminatedLuc Van Oostenryck1-8/+7
2018-09-06there is always an active BB after linearize_fn_statement()Luc Van Oostenryck1-2/+2
2018-09-06specialize linearize_compound_statement()Luc Van Oostenryck1-10/+16
2018-09-06topasm: top-level asm is specialLuc Van Oostenryck3-3/+7
2018-09-05use a temp var for function's upper-level statementLuc Van Oostenryck1-2/+3
2018-09-05add testcases for missing return in last blockLuc Van Oostenryck6-0/+97
2018-09-05add linearization as a passLuc Van Oostenryck2-0/+2
2018-09-01stricter warning for explicit cast to ulongLuc Van Oostenryck5-2/+70
2018-09-01Merge branch 'dead-switch' into tipLuc Van Oostenryck4-8/+83
2018-09-01Merge branch 'has-attribute' into tipLuc Van Oostenryck5-10/+85
2018-09-01trivial-phi: remove more complex trivial phi-nodesLuc Van Oostenryck2-3/+17
2018-09-01trivial-phi: directly return the unique valueLuc Van Oostenryck1-17/+9
2018-09-01trivial-phi: use a temp var for the real sourceLuc Van Oostenryck1-2/+7
2018-09-01trivial-phi: early returnLuc Van Oostenryck1-1/+1
2018-09-01trivial-phi: extract trivial_phi() from clean_up_phi()Luc Van Oostenryck1-3/+22
2018-09-01trivial-phi: make clean_up_phi() more sequentialLuc Van Oostenryck1-4/+5
2018-09-01trivial-phi: add testcase for unneeded trivial phi-nodesLuc Van Oostenryck1-0/+15
2018-09-01move DEF_OPCODE() to header fileLuc Van Oostenryck2-7/+8
2018-09-01fix linearization of unreachable switch (with reachable label).Luc Van Oostenryck2-6/+6
2018-09-01add tescase for unreachable label in switchLuc Van Oostenryck1-0/+20
2018-09-01ir-validate: validate return valueLuc Van Oostenryck1-0/+15
2018-09-01ir-validate: ignore dead phisLuc Van Oostenryck1-0/+3
2018-09-01ir-validate: add validation branch to dead BBLuc Van Oostenryck2-3/+40
2018-09-01has-attr: add support for __has_attribute()Luc Van Oostenryck4-10/+26
2018-09-01has-attr: add __designated_init__ & transparent_unionLuc Van Oostenryck1-0/+2
2018-09-01has-attr: move 'mode' next to '__mode__'Luc Van Oostenryck1-1/+1
2018-09-01has-attr: add testcase for __has_attribute()Luc Van Oostenryck1-0/+57
2018-08-31Merge branch 'opcode' into tipLuc Van Oostenryck10-183/+177
2018-08-30Merge branch 'volatile-bitfield' and 'mode-pointer' into tipLuc Van Oostenryck8-19/+77
2018-08-30fix missing declarationsLuc Van Oostenryck4-1/+8
2018-08-26add a function to remove deadborn instructionsLuc Van Oostenryck2-0/+23
2018-08-26opcode: add OPF_TARGETLuc Van Oostenryck3-84/+88
2018-08-26opcode: add arity infoLuc Van Oostenryck3-84/+86
2018-08-26opcode: centralize opcode definitionLuc Van Oostenryck4-152/+134
2018-08-25fix: do not optimize away accesses to volatile bitfieldsLuc Van Oostenryck2-3/+2
2018-08-25add a flag for volatile memopsLuc Van Oostenryck5-4/+7
2018-08-25split memops from unopsLuc Van Oostenryck1-1/+4
2018-08-25add testcase for accesses to volatile bitfieldsLuc Van Oostenryck1-0/+17
2018-08-25symaddr: s/insn->symbol/insn->src/Luc Van Oostenryck6-31/+14
2018-08-25Merge branch 'ssa' into tipLuc Van Oostenryck53-376/+1439
2018-08-25testsuite: remove useless test for loop-linearizationLuc Van Oostenryck1-136/+0
2018-08-25Merge branch 'kill-dead-stores' into tipLuc Van Oostenryck7-22/+214
2018-08-24remove superfluous newline in 'unknown mode attribute' error messageLuc Van Oostenryck1-1/+1
2018-08-25add a testcase for enum using a modeLuc Van Oostenryck1-0/+18
2018-08-25add support for mode __byte__Luc Van Oostenryck1-0/+2
2018-08-25add support for mode __pointer__Luc Van Oostenryck1-1/+17
2018-08-25mode keywords don't need MOD_{CHAR,LONG,...}Luc Van Oostenryck1-12/+12
2018-08-24Merge branches 'optim-trunc-or' and 'optim-mask-shift-or' into tipLuc Van Oostenryck5-22/+61
2018-08-24simplify TRUNC(SHIFT(a | b, S), N)Luc Van Oostenryck3-2/+6
2018-08-24simplify AND(SHIFT(a | b, S), M)Luc Van Oostenryck3-2/+18
2018-08-23prepare simplification of MASK(SHIFT(a | b, S), M)Luc Van Oostenryck1-4/+22
2018-08-23doc: extend simplification notationLuc Van Oostenryck1-13/+15
2018-08-22simplify TRUNC((x & M') | y, N)Luc Van Oostenryck5-4/+8
2018-08-22Merge branches 'optim-shift-and' and 'optim-bitfield' into tipLuc Van Oostenryck39-45/+723
2018-08-22simplify ((x & M) << S) when (M << S) == (-1 << S)Luc Van Oostenryck2-1/+2
2018-08-22simplify ((x & M) << S) when (M << S) == 0Luc Van Oostenryck2-1/+11
2018-08-22simplify ((x & M) >> S) when (M >> S) == (-1 >> S)Luc Van Oostenryck2-1/+2
2018-08-22simplify ((x & M) >> S) when (M >> S) == 0Luc Van Oostenryck2-2/+5
2018-08-22use an intermediate mask in simplify_shift()Luc Van Oostenryck1-3/+3
2018-08-22add testcases for {LSR,SHL}(AND(x, M), S) with shared AND(x, M)Luc Van Oostenryck4-0/+66
2018-08-22simplify SHL((x & M') | y, S)Luc Van Oostenryck8-7/+4
2018-08-22simplify OP((x | C), K) when (C & M) != CLuc Van Oostenryck2-1/+4
2018-08-22simplify OP((x | C), K) when (C & M) == MLuc Van Oostenryck2-1/+4
2018-08-22simplify OP((x | C), K) when (C & M) == 0Luc Van Oostenryck3-2/+9
2018-08-22simplify OP(((x & M') | y), K) when (M' & M) != M'Luc Van Oostenryck4-3/+5
2018-08-22simplify OP(((x & M') | y), K) when (M' & M) == MLuc Van Oostenryck4-3/+8
2018-08-22move opcode test inside simplify_mask_or_and()Luc Van Oostenryck1-3/+7
2018-08-22allow simplification of OP(((x & y) | (a & M')), K)Luc Van Oostenryck4-5/+5
2018-08-22switch return order in simplify_mask_or_and()Luc Van Oostenryck1-6/+5
2018-08-22document simplify_mask_or() & simplify_mask_or_and()Luc Van Oostenryck1-0/+21
2018-08-22use better names for simplify_mask_or_and() varsLuc Van Oostenryck1-3/+4
2018-08-22add simplify_mask_or()Luc Van Oostenryck1-16/+14
2018-08-22unify simplify_lsr_or() & simplify_and_or_mask()Luc Van Oostenryck1-33/+23
2018-08-22add testcases for bitfield & AND/OR simplificationLuc Van Oostenryck36-0/+625
2018-08-22add testcase for (((x & M') | (y & M'')) & M)Luc Van Oostenryck2-0/+23
2018-08-21doc: add doc for simplification notationLuc Van Oostenryck2-0/+29
2018-08-21doc: reword doc for replace_pseudo()Luc Van Oostenryck1-1/+1
2018-08-21doc: convert existing simplify.c doc into ReST autodocLuc Van Oostenryck1-36/+43
2018-08-21doc: automatically insert the blank line for listsLuc Van Oostenryck1-0/+3
2018-08-21doc: simplify the creation of the viewlistLuc Van Oostenryck1-6/+5
2018-08-17Merge branches 'optim-shl-lsr' and 'optim-trunc-trunc' into tipLuc Van Oostenryck2-2/+19
2018-08-17simplify TRUNC(TRUNC(x))Luc Van Oostenryck2-1/+3
2018-08-17reorganize simplification of ZEXT(TRUNC(x))Luc Van Oostenryck1-2/+4
2018-08-17simplify ((x >> S) << S)Luc Van Oostenryck2-1/+7
2018-08-17reorganize shift-shift simplificationLuc Van Oostenryck1-6/+8
2018-08-17simpler guard in LSR-SHL simplificationLuc Van Oostenryck1-3/+1
2018-08-16add testcase for TRUNC(TRUNC(x)) simplificationLuc Van Oostenryck1-0/+13
2018-08-16add testcase for ((x >> S) << S) simplificationLuc Van Oostenryck1-0/+15
2018-08-16rename testcase for ((x << S) >> S) simplificationLuc Van Oostenryck1-1/+1
2018-08-08Merge branches 'fix-inc-dec-size' and 'optim-mask' into tipLuc Van Oostenryck10-104/+192
2018-08-08simplify (x & M) >> S to (x >> S) & (M >> S)Luc Van Oostenryck2-1/+14
2018-08-08simplify (x << S) >> S into x & (-1 >> S)Luc Van Oostenryck4-11/+14
2018-08-08simplify ((x & M) | y) >> S to (y >> S) when (M >> S) == 0Luc Van Oostenryck2-1/+24
2018-08-08simplify ((x & M') | y ) & M into (y & M) when (M' & M) == 0Luc Van Oostenryck2-1/+23
2018-08-08reorg code for shift-shift simplificationLuc Van Oostenryck1-5/+10
2018-08-07use multi_users() instead on nbr_users()Luc Van Oostenryck1-3/+3
2018-08-07Merge branch 'fix-logical-extra' into tipLuc Van Oostenryck17-59/+509
2018-08-07optim: add a few more testcases for shift & maskLuc Van Oostenryck1-0/+15
2018-08-07avoid infinite simplification loops of the second kindLuc Van Oostenryck1-2/+3
2018-08-07fix bad indentation in linearize_inc_dec()Luc Van Oostenryck1-1/+1
2018-08-07fix instruction size & type in linearize_inc_dec()Luc Van Oostenryck3-69/+80
2018-08-07put back the bitfield base type into struct access_dataLuc Van Oostenryck1-5/+7
2018-08-07expand linearize_position() into linearize_initializer()Luc Van Oostenryck1-9/+2
2018-08-06limit the mask used for bitfield insertionLuc Van Oostenryck2-7/+8
2018-08-06cast: fix warning position in cast_pseudo()Luc Van Oostenryck3-6/+7
2018-08-06boolean conversion of boolean value is a no-opLuc Van Oostenryck2-6/+8
2018-08-06simplify AND(SETCC(x,y), M)Luc Van Oostenryck2-1/+5
2018-08-06simplify TRUNC(SETCC(x,y), N)Luc Van Oostenryck2-1/+2
2018-08-06simplify SEXT(SETCC(x,y), N)Luc Van Oostenryck2-1/+4
2018-08-06simplify ZEXT(SETCC(x,y), N)Luc Van Oostenryck4-8/+16
2018-08-06simplify SETNE(TRUNC(x,N),{0,1})Luc Van Oostenryck2-1/+17
2018-08-06simplify SETNE(AND(X,1),0) to AND(X,1)Luc Van Oostenryck2-1/+10
2018-08-06simplify linearize_logical()Luc Van Oostenryck2-119/+82
2018-08-06expand linearize_conditional() into linearize_logical()Luc Van Oostenryck2-144/+158
2018-08-06fix linearize_conditional() for logical opsLuc Van Oostenryck2-5/+13
2018-08-06conditional branches can't accept arbitrary expressionsLuc Van Oostenryck4-30/+30
2018-08-06protect add_convert_to_bool() against bad types / invalid expressionsLuc Van Oostenryck1-0/+2
2018-08-06fix size corruption when simplifing 'x != 0' to 'x'Luc Van Oostenryck1-1/+1
2018-08-04Merge branch 'list-optims' (early part) into tipLuc Van Oostenryck6-13/+134
2018-08-04add testcase for linearize_logical()Luc Van Oostenryck8-0/+418
2018-07-28Merge branch 'optim-setne' into tipLuc Van Oostenryck5-52/+64
2018-07-28simplify 'x != 0' or 'x == 1' to 'x'Luc Van Oostenryck3-37/+27
2018-07-28simplify SET{EQ,NE}(SEXT(x, N),{0,1})Luc Van Oostenryck2-2/+5
2018-07-28simplify SET{EQ,NE}(ZEXT(x, N),{0,1})Luc Van Oostenryck2-11/+7
2018-07-25cleanup of simplify_seteq_setne(): remove tmp varsLuc Van Oostenryck1-5/+2
2018-07-25testcase for SET{EQ,NE}([SZ]EXT(x, N),{0,1})'s simplificationLuc Van Oostenryck2-0/+26
2018-07-25Merge branch 'optim-cast' into tipLuc Van Oostenryck25-34/+523
2018-07-25Merge branch 'optim-shift' into tipLuc Van Oostenryck16-20/+755
2018-07-25shift: simplify ASR(ZEXT(X, N), C)Luc Van Oostenryck2-0/+23
2018-07-25shift: avoid simplification of ASR(LSR(x,0),N)Luc Van Oostenryck1-1/+1
2018-07-25shift: simplify ASR(LSR(x,N),N')Luc Van Oostenryck2-1/+46
2018-07-25shift: simplify LSR(LSR(x,N),N') & friendsLuc Van Oostenryck2-1/+195
2018-07-25add lookup_ptr_list_entry()Luc Van Oostenryck4-9/+27
2018-07-25add ptr_list_multiple()Luc Van Oostenryck4-1/+28
2018-07-25add ptr_list_empty()Luc Van Oostenryck4-2/+28
2018-07-25kill dead OP_FADD & friendsLuc Van Oostenryck1-0/+7
2018-07-25testcases: missing evaluation of side effects in typeof(VLA)Luc Van Oostenryck1-0/+26
2018-07-25testcases: add testcase for missing detection of out-of-bound storesLuc Van Oostenryck1-0/+21
2018-07-25add copy_ptr_list()Luc Van Oostenryck3-1/+51
2018-07-24use "%Le" to display floatsLuc Van Oostenryck6-25/+25
2018-07-23big-shift: do not optimize over-sized ASRsLuc Van Oostenryck1-0/+2
2018-07-23big-shift: do not optimize negative shiftsLuc Van Oostenryck1-0/+2
2018-07-23big-shift: fix warning message for negative or over-sized shiftsLuc Van Oostenryck3-18/+30
2018-07-23big-shift: move shift count check in a separate functionLuc Van Oostenryck1-5/+16
2018-07-23big-shift: add testcases for simplification of negative shiftsLuc Van Oostenryck1-0/+18
2018-07-23big-shift: add testcases for simplification of over-sized shiftsLuc Van Oostenryck1-7/+55
2018-07-23bits: add helpers for zero & sign-extensionLuc Van Oostenryck3-0/+70
2018-07-23cast: simplify SEXT(ZEXT(x,N),N')Luc Van Oostenryck2-1/+3
2018-07-23cast: simplify ZEXT(ZEXT(x,N),N')Luc Van Oostenryck2-1/+6
2018-07-23cast: simplify SEXT(SEXT(x,N),N')Luc Van Oostenryck2-1/+5
2018-07-23cast: simplify AND(ZEXT(x,M),N)Luc Van Oostenryck3-3/+34
2018-07-23cast: simplify [ZS]EXT(AND(x,M),N)Luc Van Oostenryck4-3/+24
2018-07-23cast: preserve the sizes of TRUNC(AND(x,M),N)Luc Van Oostenryck2-7/+11
2018-07-23cast: use a switch to handle TRUNC(AND(x,M),N) in simplify_cast()Luc Van Oostenryck1-7/+11
2018-07-23cast: do not compare sizes, test the opcodeLuc Van Oostenryck1-1/+1
2018-07-23cast: fix shift signedness in cast simplificationLuc Van Oostenryck1-1/+2
2018-07-23cast: simplify [SZ]EXT + TRUNC to a smaller/greater sizeLuc Van Oostenryck3-3/+4
2018-07-23cast: simplify [SZ]EXT + TRUNC to original sizeLuc Van Oostenryck2-1/+10
2018-07-23bitfield: extract linearize_bitfield_insert()Luc Van Oostenryck1-11/+19
2018-07-23bitfield: extract linearize_bitfield_extract()Luc Van Oostenryck1-6/+14
2018-07-23add testcases for casts & bitfield insertion/extractionLuc Van Oostenryck21-0/+391
2018-07-23extract nbr_users() from unssa.cLuc Van Oostenryck3-7/+7
2018-07-23big-shift: add -Wshift-count-{negative,overflow}Luc Van Oostenryck5-1/+25
2018-07-23big-shift: do not truncate the count when checking itLuc Van Oostenryck2-6/+8
2018-07-23big-shift: fix evaluation of shift-assignLuc Van Oostenryck1-0/+5
2018-07-23big-shift: fix warning message for negative shift countLuc Van Oostenryck2-19/+23
2018-07-23big-shift: use the type width for too big shiftLuc Van Oostenryck2-14/+47
2018-07-23big-shift: simplify over-sized OP_SHLsLuc Van Oostenryck2-0/+9
2018-07-23big-shift: simplify over-sized OP_LSRsLuc Van Oostenryck3-10/+45
2018-07-23big-shift: reuse simplify_asr() for LSR & SHLLuc Van Oostenryck2-4/+12
2018-07-23big-shift: reorder the tests in simplify_asr()Luc Van Oostenryck1-3/+5
2018-07-23big-shift: do not simplify over-sized OP_ASR to zeroLuc Van Oostenryck2-1/+2
2018-07-22big-shift: also check shift count of shift-assignmentLuc Van Oostenryck2-1/+68
2018-07-22big-shift: use the base type for shift-too-big warningLuc Van Oostenryck1-0/+2
2018-07-22big-shift: move the check into check_shift_count()Luc Van Oostenryck1-5/+5
2018-07-21big-shift: don't take the modulo at expand timeLuc Van Oostenryck1-5/+2
2018-07-21big-shift: do not evaluate negative or over-sized shiftsLuc Van Oostenryck1-0/+6
2018-07-21big-shift: mark out-of-range OP_{ASR,LSR,SHL} as taintedLuc Van Oostenryck2-1/+21
2018-07-21big-shift: add test for shifts with bad countLuc Van Oostenryck2-0/+95
2018-07-13remove obsolete comment: /* Dummy pseudo allocator */Luc Van Oostenryck1-1/+0
2018-07-13no need to assign ad->type for EXPR_POSLuc Van Oostenryck1-1/+0
2018-07-13remove unused struct access_data::posLuc Van Oostenryck1-4/+0
2018-07-13remove unused finish_address_gen()Luc Van Oostenryck1-10/+0
2018-07-01ssa: phi worklistLuc Van Oostenryck3-10/+35
2018-07-01ssa: remove unused simplify_symbol_usage()Luc Van Oostenryck1-278/+0
2018-07-01ssa: activate the new SSA conversionLuc Van Oostenryck11-11/+4
2018-07-01ssa: phase 3: rename phi-nodesLuc Van Oostenryck1-0/+36
2018-07-01ssa: phase 2: rename load & storesLuc Van Oostenryck1-0/+63
2018-07-01ssa: phase 1: phi-nodes placementLuc Van Oostenryck5-0/+289
2018-07-01ptrmap: add type-safe interfaceLuc Van Oostenryck1-0/+16
2018-07-01ptrmap: core implementationLuc Van Oostenryck3-0/+122
2018-07-01add insert_phi_node()Luc Van Oostenryck2-0/+39
2018-07-01add PSEUDO_UNDEF & undef_pseudo()Luc Van Oostenryck3-1/+18
2018-07-01add new helper: is_integral_type()Luc Van Oostenryck1-0/+18
2018-07-01idf: add test/debug/exampleLuc Van Oostenryck1-0/+27