|
| 1 | +v0.6.4-rc1 (2020-09-01) |
| 2 | +======================= |
| 3 | + |
| 4 | +Fixes: |
| 5 | + * build: fix version.h dependencies |
| 6 | + * fix and complete the evaluation of atomic builtins |
| 7 | + * fix some testcases related to bitfield manipulation |
| 8 | + * llvm: fix crash with llvm-11 / use real phi-nodes |
| 9 | + * fix: OP_INLINE should not use the function symbol |
| 10 | + * fix testing if a OP_CALL's function is pure |
| 11 | + * warn on all missing parameter types |
| 12 | + * fix init_linearized_builtins() |
| 13 | + * fix usage count in linearize_fma() |
| 14 | + * linearize: fix a couple of 'selfcheck' warnings |
| 15 | + * cfg: remove phi-sources when merging BBs |
| 16 | + * cfg: remove phi-nodes when merging BBs |
| 17 | + * cfg: add missing REPEAT_CFG_CLEANUP |
| 18 | + * fix: rebuild dominance tree during CFG cleanup |
| 19 | + * fix: drop qualifiers of casts and comma or statement expressions |
| 20 | + * fix kill_insn(OP_SETVAL) |
| 21 | + * fix trivial_phi() when the target is before the single value |
| 22 | + * memops: fix wrong killing of stores partially dominated by a load |
| 23 | + * memops: kill dead loads before phi-node conversion |
| 24 | + * memops: kill more dead stores |
| 25 | + * fix rem_usage() when the pseudo has a use list but is not PSEUDO_REG |
| 26 | + * shut up a silly -Wmaybe-uninitialized warning |
| 27 | + * fix add_join_conditional() when one of the alternative is VOID |
| 28 | + * asm: fix killing OP_ASM |
| 29 | + * asm: fix a test failure on 32-bit systems |
| 30 | + * asm: output *memory* operands need their address as *input* |
| 31 | + * asm: teach dominates() about OP_ASM |
| 32 | + * fix the type in the assignment of 0 to a restricted variable |
| 33 | + * fix SSA conversion of mismatched memops |
| 34 | + * fix and improve the check that protects try_to_simplify_bb() |
| 35 | + * fix remove_merging_phisrc() with duplicated CFG edges. |
| 36 | + * fix null-pointer crash with with ident same as one of the attributes |
| 37 | + |
| 38 | +New: |
| 39 | + * improve CFG simplification |
| 40 | + * teach sparse about -funsigned-bitfields |
| 41 | + * add a symbolic checker |
| 42 | + * expand __builtin_object_size() |
| 43 | + * let plain bitfields default to signed |
| 44 | + * add support for __packed struct |
| 45 | + * handle qualified anonymous structures |
| 46 | + * move check_access() to late_warnings() |
| 47 | + * let phi-sources to directly access to their phi-node |
| 48 | + * small improvements to the ptrlist API |
| 49 | + * warn when taking the address of a built-in function |
| 50 | + * handle more graciously labels with no statement |
| 51 | + * give an explicit type to compare's operands |
| 52 | + * give a type to OP_SYMADDR |
| 53 | + * add some notes about pseudos being typeless |
| 54 | + * shrink struct basic_block |
| 55 | + * pre-proc: strip leading "./" from include paths |
| 56 | + * pre-proc: do some path normalization |
| 57 | + * linearize __builtin_isdigit() |
| 58 | + |
| 59 | +IR Simplifications: |
| 60 | + * simplify: essential OP_ADD & OP_SUB simplifications |
| 61 | + * simplify and canonicalize unsigned compares |
| 62 | + * simplify: basic unop simplifications |
| 63 | + * simplify SEL(SEL(...), ...) |
| 64 | + * simplify SEL(x == y, x, y) and friends |
| 65 | + * simplify SEL(x, x, x) and SEL(x, 0, x) |
| 66 | + * simplify & canonicalize compares |
| 67 | + * simplify CBR-CBR on the same condition |
| 68 | + * simplify unrestricted postop |
| 69 | + * simplification of computed gotos with 1 or 2 targets |
| 70 | + * simplify kill_insn() of unops and unop-ish instructions |
| 71 | + * simplify: put PSEUDO_ARGS and PSEUDO_REGs in canonical order too |
| 72 | + * simplify (~x {&,|,^} x) --> {0,~0,~0} |
| 73 | + * simplify ((x cmp y) {&,|,^} (x !cmp y)) --> {0,1,1} |
| 74 | + * simplify LSR + SEXT into ASR |
| 75 | + * simplify and canonicalize signed compares |
| 76 | + * simplify CMP(AND(x,M), C) and CMP(OR(x,M), C) |
| 77 | + * simplify AND(x >= 0, x < C) --> (unsigned)x < C |
| 78 | + * simplify TRUNC(x) {==,!=} C --> AND(x,M) {==,!=} C |
| 79 | + * simplify of TRUNC(NOT(x)) --> NOT(TRUNC(x)) |
| 80 | + * factorize (x OP1 z) OP2 (y OP1 z) into (x OP2 y) OP1 z |
| 81 | + * factorize SHIFT(x, s) OP SHIFT(y, s) into SHIFT((x OP y), s) |
| 82 | + * factorize SEL(x, OP(y,z), y) into OP(SEL(x, z, 0), y) |
| 83 | + * convert SEL(x & BIT1, BIT2, 0) into SHIFT(x & BIT1, S) |
| 84 | + * canonicalize ((x & M) == M) --> ((x & M) != 0) when M is a power-of-2 |
| 85 | + |
| 86 | +Testsuite: |
| 87 | + * testsuite: add new tags: check-output-{match,returns} |
| 88 | + * testsuite: fix parsing of tags used in the testcases |
| 89 | + * testsuite: add option '-r' to 'test-suite format' |
| 90 | + |
| 91 | +Documentation: |
| 92 | + * doc: fix: Sphinx's option ':noindex:' renamed into ':noindexentry:' |
| 93 | + * doc: fix extracted autodoc when short description ends with a '?' |
| 94 | + * doc: add some doc about using NULL or VOID in pointer lists |
| 95 | + * doc: add some doc to flowgraph.h |
| 96 | + * doc: extract doc related to simplification |
| 97 | + |
| 98 | +Cleanups: |
| 99 | + * slice: small reorg of OP_SLICE in preparation for some incoming changes |
| 100 | + * cleanup: removed an unused parameter for show_symbol_list() |
| 101 | + * cleanup linearize_cond_branch() |
| 102 | + * cleanup: remove unneeded REPEAT_SYMBOL_CLEANUP |
| 103 | + * cleanup: no needs to use MARK_CURRENT_DELETED() for multi-jumps |
| 104 | + * linearize: remove unneeded forward declarations |
| 105 | + * linearize: only allocate call instructions when needed |
0 commit comments