4 ms·
That doesn't help at all if your loop variable is a 32 bit int that your compiler decided to transform away into vectorized loads from a 64 bit pointer. But th
by tpolzer 3y ago
That doesn't help at all if your loop variable is a 32 bit int that your compiler decided to transform away into vectorized loads from a 64 bit pointer.
But that's exactly one of the transformations that get enabled by assuming undefined overflow.
- andersa 3y agoBut in that case, it's not going to be wrapping either. We'll just read beyond the end of the buffer, which a bounds check should catch. Or perhaps I'm not thinking of the specific sequence that would 1) not wrap during modifying index and 2) not hit bounds check after. It would need to be a requirement that compilers can't upcast all your ints to 64 bit ones, do all the math, and then write them back - would need specific instructions for each size.