[llvm] [SLP]Do not require external uses for roots and single use for other instructions in computeMinimumValueSizes. (PR #72679)

Martin Storsjö via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 11 01:10:01 PST 2024


mstorsjo wrote:

This triggers failed asserts:
```c
char a[];
short *b;
int c, d, e, f;
void g() {
  char *h;
  for (;;) {
    for (; f; ++f) {
      h[f] = b[0] * a[e] + b[c] * a[1] >> 7;
      ++b;
    }
    h += d;
  }
}
```
```console
$ clang -target x86_64-linux-gnu -c variance-preproc.c -O2
clang: ../lib/IR/Instructions.cpp:3335: static llvm::CastInst* llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, const llvm::Twine&, llvm::Instruction*): Assertion `castIsValid(op, S, Ty) && "Invalid cast!"' failed.
```

This comes up in compiling libvpx and openh264.

I'll push a revert soon.

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


More information about the llvm-commits mailing list