llvm
b5e7dbb3 - [IR] Use iteration limit in stripPointerCastsAndOffsets (#190472)

Commit
6 days ago
[IR] Use iteration limit in stripPointerCastsAndOffsets (#190472) Using a SmallPtrSet is not quite free for such a frequently called operation. However, calls on ill-formed IR are not particularly rare, so some iteration limit is needed. Therefore, use a simple counter. Termination statistics on a Clang Release build for N>5: 2448 N=6 1295 N=7 480 N=8 294 N=9 160 N=10 14350 (endless loop) Therefore, bound the number of iterations by 12, which should cover most practically relevant cases. It is worth noting that _all_ of the endless loop cases have the following form: %incdec.ptr = getelementptr inbounds nuw i8, ptr %incdec.ptr, i64 <N> I haven't investigated where exactly this comes from, though; but it occurred frequent enough to add a special case for this.
Author
Parents
Loading