canUnrollCompletely takes unsigned values for UnrolledCost and
RolledDynamicCost but is passed in uint64_ts that are silently
truncated. Because of this, when UnrolledSize is a large integer
that has a small remainder with UINT32_MAX, LLVM tries to completely
unroll loops with high trip counts.
Details
Details
Diff Detail
Diff Detail
Event Timeline
Comment Actions
LGTM.
I've seen that bug, and I believed that I've fixed it - but probably it got lost in reviews and did make it to trunk. Thank you for catching it!
Michael