3 ms·
If you propagate "some condition," that could allow dead-code elimination later on, especially if an if-statement uses "some condition" as a predicate later. Th
by lmkg 7y ago
If you propagate "some condition," that could allow dead-code elimination later on, especially if an if-statement uses "some condition" as a predicate later. This seems redundant in hand-written code, but keep in mind the if-statement may actually be from an inlined function.
If "some condition" is actually testing a variable for equality, then you could do constant-folding.
- pingyong 7y agoMy point is that if a loop - doesn't terminate, doesn't have side effects -> optimization doesn't matter - doesn't terminate, has side effects -> optimization isn't valid - does terminate, doesn't has side effects -> optimization would be valid, but why would such a loop exist? One example that was brought up was generic code, but I'm not entirely convinced yet.
- eru 7y agoBecause of interaction with other undefined behaviour (in the body of your loop), you might think you are in a different case than what the compiler thinks. Also the definition of 'side effect' here is a weird one: reading and writing to variables is not considered a side effect, even though a different thread could change them while your loop is running.