It appears to be a recent regression. [515] % clangtk -v clang version 14.0.0 (https://github.com/llvm/llvm-project.git 0a1ca2ad4ce239abc8d844f33048af58648edb80) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /local/suz-local/opfuzz/bin Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8 Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Candidate multilib: x32;@mx32 Selected multilib: .;@m64 [516] % [516] % clangtk -O0 small.c [517] % [517] % clangtk -O1 small.c Instruction does not dominate all uses! %div = sdiv i32 7, %0 store i32 %div, i32* @b, align 4, !tbaa !3 in function main fatal error: error in backend: Broken function found, compilation aborted! clang-14: error: clang frontend command failed with exit code 70 (use -v to see invocation) clang version 14.0.0 (https://github.com/llvm/llvm-project.git 0a1ca2ad4ce239abc8d844f33048af58648edb80) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /local/suz-local/opfuzz/bin clang-14: note: diagnostic msg: ******************** PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT: Preprocessed source(s) and associated run script(s) are located at: clang-14: note: diagnostic msg: /tmp/small-52fa75.c clang-14: note: diagnostic msg: /tmp/small-52fa75.sh clang-14: note: diagnostic msg: ******************** [518] % [518] % cat small.c int a, b, c = 1, d; int main() { a = c; int f = d && b % c && 7 % c, g = 7 / c; c = f; b = g; return 0; }
This is the likely source of the bug: https://reviews.llvm.org/rGe38b7e894808ec2a0c976ab01e44364f167508d3
Reduced test, crashes (invalid IR) with "opt -div-rem-pairs": define i32 @PR51241(i1 %b1, i1 %b2, i32 %t0) { entry: br i1 %b1, label %land.end, label %land.lhs.true land.lhs.true: br i1 %b2, label %land.end, label %land.rhs land.rhs: %rem2 = srem i32 7, %t0 br label %land.end land.end: %div = sdiv i32 7, %t0 ret i32 %div }
Should be fixed with: https://reviews.llvm.org/rG5b83261c1518 Marking as blocker for release 13.0 since it would be a crashing regression.
Merged: 2f43c816f18a