The SSA conversion works under the assumption that all the memory operations on a given symbol always refer to the same object (same size, offset and type/kind of object) but doesn't check this well enough. This series now does. Luc Van Oostenryck (4): ssa: add some testcases for mismatched memops ssa: the sparse set is not needed ssa: avoid SSA conversion of packed bitfields ssa: fix conversion with mismatched size or offset Makefile | 1 - linearize.h | 2 +- ssa.c | 111 +++++++++++++++++++++------ sset.c | 28 ------- sset.h | 56 -------------- validation/mem2reg/not-same-memop0.c | 48 ++++++++++++ validation/mem2reg/packed-bitfield.c | 35 +++++++++ 7 files changed, 170 insertions(+), 111 deletions(-) delete mode 100644 sset.c delete mode 100644 sset.h create mode 100644 validation/mem2reg/not-same-memop0.c create mode 100644 validation/mem2reg/packed-bitfield.c -- 2.30.0