The goal of this series is to implement and integrate to sparse the method described in the paper: "Simple and Efficient Construction of Static Single Assignment Form" by Matthias Braun, Sebastian Buchwald, Sebastian Hack, Roland Leissa, Christoph Mallon and Andreas Zwinkau. cfr. http://www.cdl.uni-saarland.de/papers/bbhlmz13cc.pdf In the present case, the principal motivation to use this method is that the current one in sparse is severely broken. The series is also available in the git repository at: git://github.com/lucvoo/sparse.git sssa-mini-v1 for you to fetch changes up to 98a21bc0c82af5115687c7e03a277519836bcac6: sssa: remove now unneeded simplify_one_symbol() (2017-08-16 17:25:25 +0200) ---------------------------------------------------------------- Luc Van Oostenryck (29): remove wrong part of simplify_loads() give a type to OP_PHISOURCEs fix test case kill-phi-ttsb add test case for incomplete type add test case for bad return type topasm: top-level asm is special ret-void: return nothing only for void functions small code reorg of add_store() add helper to test if a variable is "simple" add helper imple_access() to test if an access is "simple" add PSEUDO_UNDEF add undef_pseudo() add insert_phi_node() extract alloc_phisrc() from alloc_phi() add remove_use() ptrmap: add missing #include "compat.h" ptrmap: core implementation ptrmap: add type-safe interface sssa: add Simple SSA interfaces sssa: add needed new members sssa: add basic implementation sssa: add seal_gotos() needed to seal BBs targeted by gotos sssa: set var's ident sssa: add PSEUDO_INDIR sssa: reorg load_var() sssa: protect against unreachable loops sssa: remove trivial phi-nodes sssa: switch to the new SSA construction sssa: remove now unneeded simplify_one_symbol() Makefile | 2 + allocate.h | 2 + flow.c | 324 -------------------------------- flow.h | 2 +- linearize.c | 174 ++++++++++++----- linearize.h | 23 ++- memops.c | 63 ------- ptrmap.c | 84 +++++++++ ptrmap.h | 28 +++ simplify.c | 13 ++ sparse-llvm.c | 4 + ssa.c | 219 +++++++++++++++++++++ ssa.h | 12 ++ symbol.h | 34 ++++ validation/bad-return-type.c | 19 ++ validation/cast-constant-to-float.c | 8 +- validation/cast-constants.c | 40 ++-- validation/cast-kinds.c | 160 ++++++++-------- validation/context.c | 2 +- validation/incomplete-struct.c | 23 +++ validation/kill-casts.c | 1 - validation/kill-phi-ttsbb.c | 2 +- validation/linear/bitfield-init-zero.c | 24 +-- validation/linear/struct-init-partial.c | 8 +- validation/loop-linearization.c | 60 +++--- validation/memops-volatile.c | 4 +- validation/optim/bool-simplify.c | 12 +- 27 files changed, 745 insertions(+), 602 deletions(-) create mode 100644 ptrmap.c create mode 100644 ptrmap.h create mode 100644 ssa.c create mode 100644 ssa.h create mode 100644 validation/bad-return-type.c create mode 100644 validation/incomplete-struct.c -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html