aboutsummaryrefslogtreecommitdiffstatshomepage
AgeCommit message (Expand)AuthorFilesLines
2020-11-07select: simplify SEL(SEL(x, C, 0), C, 0) --> SEL(x, C, 0) == condLuc Van Oostenryck1-0/+3
2020-11-07select: simplify SEL(SEL(x, C, 0), y, z) --> SEL(x, y, z) and its dualLuc Van Oostenryck3-2/+20
2020-11-07select: add some testcases for select simplificationLuc Van Oostenryck5-0/+54
2020-11-01Merge branch 'typed-cmp'Luc Van Oostenryck7-5/+75
2020-11-01linearize __builtin_isdigit()Luc Van Oostenryck4-0/+65
2020-11-01fix usage count in linearize_fma()Luc Van Oostenryck2-4/+4
2020-11-01fix init_linearized_builtins()Luc Van Oostenryck1-1/+1
2020-11-01testsuite: add a new tag: check-output-returnsLuc Van Oostenryck3-0/+33
2020-11-01testsuite: add a new tag: check-output-matchLuc Van Oostenryck3-0/+47
2020-11-01eval_insn: give an explicit type to compare's operandsLuc Van Oostenryck6-7/+30
2020-11-01eval_insn: add testcases for incorrect type in OP_SET_*Luc Van Oostenryck3-0/+47
2020-10-27Merge branch 'one_use'Luc Van Oostenryck2-11/+11
2020-10-27replace nbr_users() & multi_users() by one_use()Luc Van Oostenryck2-11/+11
2020-10-27Merge branches 'cleanup-linearize', 'inline-use', 'inline-def', 'pure-call', ...Luc Van Oostenryck10-70/+71
2020-10-26handle more graciously labels with no statementLuc Van Oostenryck1-0/+5
2020-10-25fix testing if a OP_CALL's function is pureLuc Van Oostenryck1-3/+3
2020-10-25add helper first_symbol()Luc Van Oostenryck1-0/+5
2020-10-25kill dead instructions before any other simplificationsLuc Van Oostenryck1-46/+5
2020-10-25OP_CALL should use the full function typeLuc Van Oostenryck1-2/+0
2020-10-25linearize: OP_INLINE should not use the function symbolLuc Van Oostenryck1-1/+1
2020-10-24Merge branches 'optim-setuimm' and 'optim-unop' into nextLuc Van Oostenryck9-5/+163
2020-10-24Merge branch 'fix-llvm-11' into nextLuc Van Oostenryck1-46/+29
2020-10-24unop: simplify ~(-x) --> x - 1Luc Van Oostenryck2-1/+4
2020-10-24unop: simplify ~(x ^ C) --> x ^ ~CLuc Van Oostenryck2-1/+6
2020-10-24unop: simplify ~(C - x) --> x + ~CLuc Van Oostenryck2-1/+6
2020-10-24unop: simplify ~(x + C) --> ~C - xLuc Van Oostenryck2-1/+7
2020-10-24unop: simplify -(~x) --> x + 1Luc Van Oostenryck2-1/+4
2020-10-24unop: simplify -(x - y) --> y - xLuc Van Oostenryck2-1/+4
2020-10-24unop: simplify -(x + C) --> -C - xLuc Van Oostenryck2-1/+7
2020-10-24unop: prepare simplify_unop() to handle more casesLuc Van Oostenryck1-5/+10
2020-10-23canonicalize unsigned compares against 0 or 1Luc Van Oostenryck2-1/+25
2020-10-23simplify unsigned compares against 0Luc Van Oostenryck2-0/+20
2020-10-23cleanup linearize_cond_branch()Luc Van Oostenryck1-12/+5
2020-10-23unop: add testcases for unop simplificationsLuc Van Oostenryck7-0/+78
2020-10-23llvm: fix crash with llvm-11 / use real phi-nodesLuc Van Oostenryck1-46/+29
2020-10-22warn on all missing parameter typesLuc Van Oostenryck6-6/+22
2020-10-22add testcase for missing inline definitionLuc Van Oostenryck1-0/+30
2020-10-22memops need long offsetsLuc Van Oostenryck2-4/+4
2020-10-22Merge branch 'optim-base' into nextLuc Van Oostenryck18-64/+397
2020-10-21optim: fix some testcases related to bitfield manipulationLuc Van Oostenryck2-5/+8
2020-10-20Merge branch 'bf-sign' into nextLuc Van Oostenryck10-22/+60
2020-10-20sub: simplify x + (y - x) --> yLuc Van Oostenryck2-1/+4
2020-10-20sub: simplify (x - y) + y --> xLuc Van Oostenryck2-1/+5
2020-10-20sub: simplify x - (y + x) --> -yLuc Van Oostenryck2-1/+2
2020-10-20sub: simplify x - (x + y) --> -yLuc Van Oostenryck2-1/+4
2020-10-20sub: simplify (x + y) - y --> xLuc Van Oostenryck2-1/+2
2020-10-20sub: simplify (x + y) - x --> yLuc Van Oostenryck2-1/+8
2020-10-20add: simplify (-x + y) --> (y - x)Luc Van Oostenryck2-1/+8
2020-10-20add: simplify (x + -y) --> (x - y)Luc Van Oostenryck2-2/+15
2020-10-20sub: simplify (x - -y) --> (x + y)Luc Van Oostenryck2-2/+15
2020-10-20sub: simplify (C - y) + D --> eval(C+D) - yLuc Van Oostenryck2-1/+20
2020-10-20sub: simplify C - (D - z) --> z + eval(C-D)Luc Van Oostenryck2-1/+8
2020-10-20sub: simplify C - (y + D) --> eval(C-D) - yLuc Van Oostenryck2-1/+18
2020-10-20sub: canonicalize (0 - x) into -xLuc Van Oostenryck2-1/+4
2020-10-20sub: reorganize handling of OP_{ADD,SUB}s with constant rightsideLuc Van Oostenryck1-9/+11
2020-10-20reassoc: simplify (x # C) # K --> x # eval(C # K)Luc Van Oostenryck2-1/+5
2020-10-20constants must be truncated to the operation's sizeLuc Van Oostenryck2-2/+1
2020-10-20add a flag to identify commutative & associative opsLuc Van Oostenryck3-48/+76
2020-10-20unop: add helper replace_with_unop()Luc Van Oostenryck1-0/+14
2020-10-20unop: add helper eval_unop()Luc Van Oostenryck1-0/+12
2020-10-20extract eval_op() from eval_insn()Luc Van Oostenryck1-5/+9
2020-10-20let switch_pseudo() return REPEAT_CSELuc Van Oostenryck1-1/+2
2020-10-20add testcases about OP_ADD & OP_SUB simplificationsLuc Van Oostenryck15-0/+171
2020-10-19Merge branch 'builtin-atomic' into nextLuc Van Oostenryck6-32/+136
2020-10-19builtin: add support for remaining atomic builtinsLuc Van Oostenryck1-0/+5
2020-10-19builtin: add support for __atomic_clear()Luc Van Oostenryck2-0/+16
2020-10-19builtin: add builtin type: [volatile] pointer to boolLuc Van Oostenryck2-0/+4
2020-10-19builtin: add support for others generic atomic builtinsLuc Van Oostenryck1-0/+10
2020-10-19builtin: add support for __atomic_add_fetch(), ...Luc Van Oostenryck1-0/+12
2020-10-19builtin: add predefines for __ATOMIC_RELAXED & friendsLuc Van Oostenryck1-0/+7
2020-10-19builtin: __sync_synchronize() too is variadicLuc Van Oostenryck1-1/+1
2020-10-19builtin: fix evaluation of __sync_lock_releaseLuc Van Oostenryck1-1/+1
2020-10-19builtin: evaluate __sync_*_fetch*()Luc Van Oostenryck2-13/+37
2020-10-19builtin: make eval_sync_compare_and_swap() more genericLuc Van Oostenryck1-17/+32
2020-10-19Merge branch 'warn-address-builtin' into nextLuc Van Oostenryck2-10/+19
2020-10-18Sparse v0.6.3v0.6.3Luc Van Oostenryck2-3/+4
2020-10-16fix null pointer deref on return expression with invalid typeLuc Van Oostenryck2-1/+10
2020-10-16warn when taking the address of a built-in functionLuc Van Oostenryck2-10/+19
2020-10-16testsuite: fix location of error messagesLuc Van Oostenryck1-3/+3
2020-10-14update TODO listLuc Van Oostenryck1-8/+21
2020-10-14flex-array: fix typo in warning messageLuc Van Oostenryck2-3/+3
2020-10-14builtin: add builtin type for volatile void *Luc Van Oostenryck2-0/+4
2020-10-14builtin: add generic .args methodLuc Van Oostenryck1-0/+7
2020-10-12Sparse v0.6.3-rc1v0.6.3-rc1Luc Van Oostenryck2-1/+2
2020-10-12doc: add release notes for incoming v0.6.3Luc Van Oostenryck1-4/+54
2020-10-11Merge branch 'more-builtin' (early part)Luc Van Oostenryck1-0/+8
2020-10-09builtin: teach sparse about __builtin_ia32_pause()Luc Van Oostenryck1-0/+8
2020-10-09flex-array: fix location for nesting of flexible membersLuc Van Oostenryck2-3/+3
2020-10-09Merge branch 'misc'Luc Van Oostenryck5-9/+5
2020-10-09Merge branch 'usual-conv'Luc Van Oostenryck3-32/+47
2020-10-09flex-array: allow arrays of unions with flexible members.Ilya Maximets7-1/+44
2020-10-08fix usual conversion of integersLuc Van Oostenryck2-31/+45
2020-10-08fix evaluation of pointer to bool conversionsLuc Van Oostenryck2-1/+2
2020-10-08build: rule for validation needs to be FORCEdLuc Van Oostenryck1-1/+1
2020-10-08add helpers is_struct_type() & is_union_type()Ilya Maximets1-0/+14
2020-10-06unop: fix access to defining instruction in simplify_unop()Luc Van Oostenryck1-4/+2
2020-10-06remove definition of removed OP_{AND,OR}_BOOLLuc Van Oostenryck1-2/+0
2020-10-06Merge branch 'flex-array-base'Luc Van Oostenryck11-18/+177
2020-10-06flex-array: remove unneeded testLuc Van Oostenryck1-22/+0
2020-10-04add builtin types for size_t*, intmax_t* & ptrdiff_t*Luc Van Oostenryck2-0/+9
2020-10-04add builtin types for signed char* and short *Luc Van Oostenryck2-0/+4
2020-10-04add builtin type for wide stringsLuc Van Oostenryck2-0/+9
2020-10-01testsuite: fix erroneous commentLuc Van Oostenryck1-1/+1
2020-10-01fix Hurd PATH_MAX ...Luc Van Oostenryck1-1/+1
2020-10-01flex-array: warn on flexible array in nested aggregate typesLuc Van Oostenryck5-1/+14
2020-10-01flex-array: warn an arrays containing a flexible arrayLuc Van Oostenryck5-1/+12
2020-10-01flex-array: warn when using sizeof() on a flexible arrayLuc Van Oostenryck5-1/+13
2020-10-01flex-array: add helper has_flexible_array()Luc Van Oostenryck1-0/+7
2020-10-01flex-array: identify structures with a flexible array memberLuc Van Oostenryck2-0/+7
2020-10-01flex-array: warn if flexible array is not lastLuc Van Oostenryck2-1/+2
2020-10-01flex-array: warn on flexible arrays in unionsLuc Van Oostenryck1-0/+3
2020-10-01flex-array: detect structures with a flexible array memberLuc Van Oostenryck1-0/+2
2020-10-01flex-array: flexible array members have zero size and alignment is OKLuc Van Oostenryck2-2/+0
2020-10-01flex-array: do not lay out invalid struct membersLuc Van Oostenryck1-2/+4
2020-10-01flex-array: factor out common part of lay_out_{struct,union}()Luc Van Oostenryck1-16/+8
2020-10-01flex-array: add testcasesLuc Van Oostenryck6-0/+133
2020-09-16teach sparse about -funsigned-bitfieldsLuc Van Oostenryck10-22/+60
2020-09-07Merge branch 'linear-fma' into nextLuc Van Oostenryck5-2/+57
2020-09-07builtin: teach sparse to linearize __builtin_fma()Luc Van Oostenryck2-0/+39
2020-09-07builtin: add declaration for __builtin_fma{,f,l}()Luc Van Oostenryck1-0/+3
2020-09-07builtin: allow linearization to failLuc Van Oostenryck1-2/+5
2020-09-07add support for a new instruction: OP_FMADDLuc Van Oostenryck3-0/+10
2020-09-07Merge branch 'replace-with-val' into nextLuc Van Oostenryck1-14/+15
2020-09-06testsuite: easier testing via script & makefileLuc Van Oostenryck1-2/+2
2020-09-05replace_with_{pseudo,value}() can be tail-callsLuc Van Oostenryck1-8/+4
2020-09-05use replace_with_value()Luc Van Oostenryck1-8/+8
2020-09-05add helper replace_with_value()Luc Van Oostenryck1-0/+5
2020-08-18Merge branch 'union-cast' into masterLuc Van Oostenryck7-20/+129
2020-08-18Merge branch 'pointer-arith' into masterLuc Van Oostenryck3-2/+175
2020-08-18Merge branch 'past-deep'Luc Van Oostenryck4-2/+12
2020-08-18Merge branch 'cleanup' into masterLuc Van Oostenryck1-2/+0
2020-08-18remove unneeded predeclaration of evaluate_cast()Luc Van Oostenryck1-2/+0
2020-08-17fix evaluate_ptr_add() when sizeof(offset) != sizeof(pointer)Luc Van Oostenryck3-2/+175
2020-08-17union-cast: teach sparse about union castsLuc Van Oostenryck7-3/+60
2020-08-17fix typo in warningLuc Van Oostenryck1-1/+1
2020-08-15union-cast: extract evaluate_compound_literal()Luc Van Oostenryck1-19/+22
2020-08-15union-cast: add some testcasesLuc Van Oostenryck2-0/+49
2020-08-12Merge branch 'doc-next'Luc Van Oostenryck7-21/+51
2020-08-12Merge branch 'fix-scalar'Luc Van Oostenryck2-0/+15
2020-08-11fix is_scalar_type(): fouled types are scalars tooLuc Van Oostenryck2-0/+15
2020-08-11Merge branch 'force-to-0' into masterLuc Van Oostenryck1-1/+5
2020-08-11bug-assign-op0.c: fix test on 32-bit buildsRamsay Jones1-5/+5
2020-08-10doc: add links to some external docLuc Van Oostenryck1-0/+5
2020-08-10doc: use shorter titlesLuc Van Oostenryck4-9/+9
2020-08-10doc: reorganize the table of contentLuc Van Oostenryck1-8/+8
2020-08-10doc: move down info about tarballs, after git repositoriesLuc Van Oostenryck1-3/+2
2020-08-10doc: decrease vertical spacingLuc Van Oostenryck1-0/+13
2020-08-10doc: make the sidebar more compactLuc Van Oostenryck1-0/+4
2020-08-10doc: use a smaller logo in the sidebarLuc Van Oostenryck2-1/+10
2020-08-09Merge branches 'attr-asm' and 'storage-mod'Luc Van Oostenryck3-222/+143
2020-08-09Merge branch 'doc-annot'Luc Van Oostenryck6-66/+113
2020-08-09parse: simplify set_storage_class()Luc Van Oostenryck1-5/+2
2020-08-09parse: improve error messages concerning storage specifiersLuc Van Oostenryck1-5/+4
2020-08-09parse: let asm_modifier() use the keyword modifierLuc Van Oostenryck2-14/+4
2020-08-09parse: associate modifiers with their keywordLuc Van Oostenryck2-110/+48
2020-08-09parse: rework handling of storage_classLuc Van Oostenryck2-50/+25
2020-08-09Merge branch 'empty-char' into nextLuc Van Oostenryck4-6/+28
2020-08-09force to 0 expressions which are erroneously non-constantLuc Van Oostenryck1-1/+5
2020-08-09Merge branch 'check-void' into tipLuc Van Oostenryck1-1/+1
2020-08-09fix checking if type is voidLuc Van Oostenryck1-1/+1
2020-08-08Merge branch 'wstring-init' into nextLuc Van Oostenryck5-10/+89
2020-08-08warning: conditionalize "advancing past deep designator"Luc Van Oostenryck4-2/+12
2020-08-08Merge branch 'sync-cas' into nextLuc Van Oostenryck4-6/+93
2020-08-08Merge branch 'bad-shift-equal' into nextLuc Van Oostenryck12-87/+462
2020-08-08Merge branch 'prev-stream' into nextLuc Van Oostenryck3-1/+17
2020-08-08wstring: call is_string_type() only when neededLuc Van Oostenryck1-3/+2
2020-08-08wstring: extend is_string_type() to also detect wide stringsLuc Van Oostenryck2-2/+4
2020-08-08wstring: add helper is_wchar_type()Luc Van Oostenryck1-0/+7
2020-08-08wstring: add support for examination of string initializationLuc Van Oostenryck1-0/+25
2020-08-08wstring: add support for checking size in string initializerLuc Van Oostenryck3-2/+47
2020-08-08wstring: add support for evaluation of wide stringLuc Van Oostenryck1-4/+5
2020-08-07add builtin support for __sync_{bool,val}_compare_and_swap()Luc Van Oostenryck2-3/+58
2020-08-07export evaluate_arguments()Luc Van Oostenryck2-4/+10
2020-08-07add testcases for __sync_{bool,val}_compare_and_swap()Luc Van Oostenryck1-0/+26
2020-08-06bad-shift: wait dead code elimination to warn about bad shiftsLuc Van Oostenryck8-83/+78
2020-08-06shift-assign: restrict shift count to unsigned intLuc Van Oostenryck2-1/+5
2020-08-06shift-assign: fix linearization of shift-assignLuc Van Oostenryck4-11/+13
2020-08-06shift-assign: add more testcases for bogus linearizationLuc Van Oostenryck2-0/+374
2020-08-05sindex: rename it to 'semind'Alexey Gladkov4-195/+195
2020-08-01sindex.1: Use ' for a plain quote charUwe Kleine-König1-2/+2
2020-08-01fix build on Hurd which doesn't define PATH_MAXLuc Van Oostenryck2-4/+4
2020-07-31Merge branch 'array-decl'Luc Van Oostenryck5-38/+57
2020-07-31Merge branch 'attr-parsing'Luc Van Oostenryck1-19/+3
2020-07-31Merge branch 'doc-misc'Luc Van Oostenryck3-5/+5
2020-07-31Merge branch 'undef-option'Luc Van Oostenryck1-0/+6
2020-07-30sindex: allow indexing outside the project treeAlexey Gladkov1-4/+17
2020-07-30dissect: support _Generic() a bit moreOleg Nesterov1-1/+11
2020-07-30fix diagnostic source path from command lineLuc Van Oostenryck2-0/+13
2020-07-29fix stream_prev() for invalid (negative) streamLuc Van Oostenryck1-1/+4
2020-07-29dissect: use struct symbol::visited/inspected instead of ::examined/evaluatedLuc Van Oostenryck2-6/+7
2020-07-29dissect: add support for _GenericAlexey Gladkov1-0/+1
2020-07-27xtensa: fix configuration of endiannessLuc Van Oostenryck1-5/+0
2020-07-27remove unsed field for EXPR_GENERICLuc Van Oostenryck1-1/+0
2020-07-25keyword type is a bitmask and must be tested soLuc Van Oostenryck1-1/+1
2020-07-25attribute: simplify parsing of attributesLuc Van Oostenryck1-19/+3
2020-07-25testing for sym->op is unneeded for lookup_keyword()Luc Van Oostenryck1-1/+1
2020-07-25testing for SYM_KEYWORD is unneeded for lookup_keyword()Luc Van Oostenryck1-4/+2
2020-07-25attribute: no need to lookup '__attribute__' in NS_KEYWORDLuc Van Oostenryck1-1/+1
2020-07-25attribute: factorize matching of '__attribute__'Luc Van Oostenryck1-19/+16
2020-07-25attribute: directly use attribute_specifier() to handle attributesLuc Van Oostenryck1-1/+1