Hacker News new | ask | show | jobs
by BruiseLee 1859 days ago
The compiler is allowed to act as if this loop executes exactly 16 times. That means it could unroll and vectorize it for example.
1 comments

It is completely useless to allow compilers to assume false things about the code they generate.
It’s not useless. The assumption is not false if the program doesn’t have undefined behavior. The assumption allows the code to be a few times faster. To disallow this assumption would inhibit these optimizations.
a) the assumption is not false if it is not false! b) the speedup is not shown anywhere
The speedup is more or less the difference between O1 and O3 optimization levels.