http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60930
--- Comment #6 from Bill Schmidt <wschmidt at gcc dot gnu.org> --- Perhaps I confused matters a little with the commentary. What's happening with the bug is that the multiplication succeeds in the double-int but the product is then truncated to the size of the stride type on the double_int_to_tree call. If the sign changes during the truncation, then we have an effective overflow when the target is that particular type. This seemed like a simple way to detect the problem with minimal changes to the code. But I'm happy to use whatever methods are preferred.