[llvm] [LICM] Allow hoisting of InsertElementInst's past non-hoistable InsertElementInsts (PR #200532)

Devon Loehr via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 12 12:07:48 PDT 2026


DKLoehr wrote:

We've been seeing crashes building chromium that seem to be caused by this commit. The reproducer below crashes when run with `clang++ --target=arm-linux-androideabi29 -march=armv7-a -mfloat-abi=softfp -mfpu=neon -mthumb -Os -c repro.cc`. It doesn't crash if this commit is reverted.

repro.cc:
```
typedef int int8 __attribute__((vector_size(32)));
extern __attribute__((__vector_size__(8 * sizeof(int)))) int *global_out;
int test_crash_format;
void test_crash() {
  int8 base;
  base[6] = test_crash_format;
  for (int i;; ++i) {
    int8 vec = base;
    vec[5] = vec[4] = i;
    *global_out = vec;
  }
}
```

The assertion that fails is

```
llvm/lib/CodeGen/RegisterCoalescer.cpp:2872: JoinVals::ConflictResolution (anonymous namespace)::JoinVals::analyzeValue(unsigned int, JoinVals &): Assertion `(TrackSubRegLiveness || V.RedefVNI) && "Instruction is reading nonexistent value"' failed.
```

https://github.com/llvm/llvm-project/pull/200532


More information about the llvm-commits mailing list