aboutsummaryrefslogtreecommitdiffstatshomepage
AgeCommit message (Expand)AuthorFilesLines
2018-08-17reorganize simplification of ZEXT(TRUNC(x))Luc Van Oostenryck1-2/+4
2018-08-16add testcase for TRUNC(TRUNC(x)) simplificationLuc Van Oostenryck1-0/+13
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-06-30Merge branch 'cse-cast' into tipLuc Van Oostenryck2-12/+33
2018-06-30fix: remove dead OP_{SETVAL,SETFVAL,SLICE}Luc Van Oostenryck1-0/+9
2018-06-30fix killing OP_SWITCHLuc Van Oostenryck2-0/+18
2018-06-30Merge branch 'cast-optim' into tipLuc Van Oostenryck6-63/+45
2018-06-30cse: let equivalent casts hash & compare identicallyLuc Van Oostenryck1-12/+16
2018-06-29cast: optimize away casts to/from pointersLuc Van Oostenryck4-18/+33
2018-06-29cast: reorganize testcases for cast optimizationLuc Van Oostenryck3-45/+12
2018-06-28bool: remove OP_{AND,OR}_BOOL instructionsLuc Van Oostenryck7-66/+2
2018-06-28bool: generate plain OP_{AND,OR} instead of OP_{AND,OR}_BOOLLuc Van Oostenryck4-29/+54
2018-06-28bool: fix missing boolean context for floatsLuc Van Oostenryck2-2/+55
2018-06-28bool: simplify ZEXT in bool -> int -> boolLuc Van Oostenryck3-35/+41
2018-06-28bool: fix add missing check in simplify_seteq_setne()Luc Van Oostenryck1-1/+4
2018-06-28bool: add testcase for bool simplificationLuc Van Oostenryck1-0/+247
2018-06-28simplify 'x ^ ~0' to '~x'Luc Van Oostenryck2-1/+15
2018-06-28simplify 'x & ~0' to 'x'Luc Van Oostenryck2-0/+9
2018-06-28simplify 'x | ~0' to '~0'Luc Van Oostenryck2-1/+23
2018-06-26add simple testcases for internal infinite loopsLuc Van Oostenryck1-0/+54
2018-06-26cast: simplify TRUNC + ZEXT to ANDLuc Van Oostenryck3-10/+17
2018-06-26cse: move to next comparable instructionLuc Van Oostenryck2-1/+2
2018-06-23cast: keep instruction sizes consistentLuc Van Oostenryck3-12/+200
2018-06-23cast: prepare for more cast simplificationsLuc Van Oostenryck1-7/+10
2018-06-23cast: merge simplification of constant casts with constant unopsLuc Van Oostenryck1-23/+12
2018-06-23cast: simplify simplify_cast()Luc Van Oostenryck1-23/+4
2018-06-23new helper: def_opcode()Luc Van Oostenryck1-0/+7
2018-06-23cse: add testcase for missed opportunityLuc Van Oostenryck1-0/+16
2018-06-23cast: do not try to linearize illegal castsLuc Van Oostenryck1-0/+2
2018-06-23cast: accept null castsLuc Van Oostenryck1-0/+6
2018-06-23cast: specialize integer castsLuc Van Oostenryck22-198/+208
2018-06-23cast: make casts from pointer always size preservingLuc Van Oostenryck5-88/+89
2018-06-23cast: add support for -Wpointer-to-int-castLuc Van Oostenryck5-2/+10
2018-06-23cast: specialize cast from pointersLuc Van Oostenryck13-14/+84
2018-06-23cast: temporary simplify handling cast to/from void*Luc Van Oostenryck1-4/+15
2018-06-23cast: make pointer casts always size preservingLuc Van Oostenryck4-39/+45
2018-06-23cast: make [u]intptr_ctype alias of [s]size_t_ctypeLuc Van Oostenryck1-0/+3
2018-06-23cast: specialize casts from unsigned to pointersLuc Van Oostenryck14-7/+92
2018-06-23cast: specialize floats to integer conversionLuc Van Oostenryck11-13/+35
2018-06-23cast: handle NO-OP castsLuc Van Oostenryck2-0/+23
2018-06-23cast: specialize FPCAST into [USF]CVTFLuc Van Oostenryck8-26/+58
2018-06-23cast: prepare finer grained cast instructionsLuc Van Oostenryck1-15/+63
2018-06-23cast: force_cast are OK on non-scalar valuesLuc Van Oostenryck1-6/+6
2018-06-23cast: rename evaluate_cast()'s vars with slightly more meaningful namesLuc Van Oostenryck1-48/+48
2018-06-23cast: add tests for warnings issued by sparse -vLuc Van Oostenryck1-0/+27
2018-06-23cast: add testcase for cast to bad typeofLuc Van Oostenryck1-0/+13
2018-06-23cast: add testcase for bad implicit casts to struct/unionLuc Van Oostenryck1-0/+47
2018-06-23cast: reorg testcases related to castsLuc Van Oostenryck9-47/+32
2018-06-23Merge branches 'bug-fpcast-constant', 'case-unop', 'replace-pseudo' and 'add-...Luc Van Oostenryck5-50/+41
2018-06-23ir: case OP_UNOP ... OP_UNOP_ENDLuc Van Oostenryck3-25/+4
2018-06-23ir: define an OP_... range for unopsLuc Van Oostenryck1-5/+9
2018-06-23add missing entry for OP_FNEG in kill_insn() & validate_insn()Luc Van Oostenryck2-2/+2
2018-06-22rename add_uniop() to add_unop()Luc Van Oostenryck1-3/+3
2018-06-22add_uniop() should take a type, not an expressionLuc Van Oostenryck1-5/+6
2018-06-22remove unused arg in simplify_cond_branch()Luc Van Oostenryck1-3/+3
2018-06-22new helper: replace_pseudo()Luc Van Oostenryck1-12/+19
2018-06-22avoid useless deref in simplify_cond_branch()Luc Van Oostenryck1-4/+4
2018-06-21fix bad fpcast simplificationLuc Van Oostenryck2-3/+2
2018-06-21add testcase for bad fpcast simplificationLuc Van Oostenryck1-0/+14
2018-06-21Merge branch 'ptrlist-cleanup' into tipLuc Van Oostenryck19-288/+311
2018-06-21ptrlist: add missing doc for some functionsLuc Van Oostenryck1-1/+7
2018-06-21ptrlist: move DO_SPLIT() into DO_INSERT_CURRENT()Luc Van Oostenryck1-10/+7
2018-06-21ptrlist: make clear what is API and what is implementation.Luc Van Oostenryck1-57/+69
2018-06-21ptrlist: keep declaration of head-list-nr togetherLuc Van Oostenryck1-2/+4
2018-06-21ptrlist: use VRFY_PTR_LIST() for sanity checkLuc Van Oostenryck1-1/+1
2018-06-21ptrlist: move semi-private prototypes close to their userLuc Van Oostenryck1-3/+4
2018-06-21ptrlist: make {first,last}_ptr_list() out-of-line functionsLuc Van Oostenryck2-29/+40
2018-06-21ptrlist: remove ptr_list_empty()Luc Van Oostenryck2-2/+1
2018-06-21ptrlist: shorter continuated linesLuc Van Oostenryck1-113/+115
2018-06-21ptrlist: simplify PREPARE/NEXTLuc Van Oostenryck1-19/+17
2018-06-21ptrlist: simplify DO_NEXTLuc Van Oostenryck1-11/+7
2018-06-21ptrlist: simplify loop nestingLuc Van Oostenryck1-17/+7
2018-06-21ptrlist: remove extra ident levelLuc Van Oostenryck1-34/+31
2018-06-21ptrlist: remove some unneeded arg from internal macros.Luc Van Oostenryck1-6/+6
2018-06-21ptrlist: make free_ptr_list() more readableLuc Van Oostenryck1-2/+4
2018-06-21ptrlist: make add_ptr_list() more readableLuc Van Oostenryck1-11/+10
2018-06-21ptrlist: remove now unneeded CHECK_TYPE()Luc Van Oostenryck1-3/+0
2018-06-21ptrlist: when possible use the real type of the listLuc Van Oostenryck1-14/+14
2018-06-21ptrlist: let all pointer lists have the same parametrized structureLuc Van Oostenryck1-8/+10
2018-06-21ptrlist: let sort_list() use the raw pointerLuc Van Oostenryck1-3/+3
2018-06-21ptrlist: let {first,last}_ptr_list() return the raw pointerLuc Van Oostenryck1-2/+2
2018-06-21ptrlist: remove the now unneeded FOR_EACH_PTR_NOTAG()Luc Van Oostenryck16-41/+35
2018-06-21Merge branch 'ir-validate' into tipLuc Van Oostenryck6-6/+189
2018-06-21add predefines for __INT_WIDTH__ & friendsLuc Van Oostenryck1-0/+15
2018-06-21sparsec: simplify & portable use of mktempLuc Van Oostenryck1-6/+3
2018-06-16ir-validate: add more validation pointsLuc Van Oostenryck1-0/+7
2018-06-16ir-validate: add validation of (nbr of) phi operandsLuc Van Oostenryck1-0/+52
2018-06-16ir-validate: validate pseudo's defining instructionLuc Van Oostenryck1-0/+69
2018-06-16ir-validate: add framework for IR validationLuc Van Oostenryck6-0/+55
2018-06-16testsuite: allow extra/default options to test commandsLuc Van Oostenryck1-0/+4
2018-06-16keep the debug flags alphabetically sortedLuc Van Oostenryck2-6/+6
2018-06-16testsuite: fix missing returnLuc Van Oostenryck2-8/+9
2018-06-16doc: add doc for the -vcompound flagLuc Van Oostenryck1-0/+4
2018-06-16add support for -fdiagnostic-prefix[=prefix]Luc Van Oostenryck4-4/+37
2018-06-15utils: add xasprintf() & xvasprintf()Luc Van Oostenryck2-0/+48
2018-06-13ptrlist: let FOR_EACH_PTR() ignore tagsLuc Van Oostenryck1-2/+2
2018-06-13ptrlist: make explicit when tagged pointers are used.Luc Van Oostenryck2-8/+14
2018-06-13ptrlist: rename PTR_ENTRY() to PTR_ENTRY_UNTAG()Luc Van Oostenryck2-12/+12
2018-06-13ptrlist: add helper PTR_UNTAG()Luc Van Oostenryck1-1/+2
2018-06-13ptrlist: remove now unneeded add_ptr_list_notag()Luc Van Oostenryck2-3/+1
2018-06-13ptrlist: specialize __add_ptr_list() for tag/notagLuc Van Oostenryck2-18/+31
2018-06-13teach sparse about -m16Luc Van Oostenryck1-1/+1
2018-06-12Merge branches 'has-builtin' and 'builtin-predef' into tipLuc Van Oostenryck20-172/+820
2018-06-12builtin: merge declare_builtin_function() with declare_builtins()Luc Van Oostenryck2-19/+5
2018-06-12builtin: switch calling order of predefined_macros() & friendsLuc Van Oostenryck1-2/+2
2018-06-11Merge branch 'doc-sphinx-ir'Luc Van Oostenryck6-357/+492
2018-06-11doc: API before IRLuc Van Oostenryck1-1/+1