On Oct 9, 2021, Richard Biener <richard.guent...@gmail.com> wrote: > Why two passes (and two IL traverses?)
Different traversals, no reason to force them into a single pass. One only looks at the last stmt of each block, where cond stmts may be, while the other has to look at every stmt. > How do you prevent RTL optimizers (jump threading) from removing the > redundant tests? The trick I'm using to copy of a value without the compiler's knowing it's still the same value is 'asm ("" : "=g" (alt) : "0" (src));' I've pondered introducing __builtin_hidden_copy or somesuch, but it didn't seem worth it. > I'd have expected such hardening to occur very late in the RTL > pipeline. Yeah, that would be another way to do it, but then it would have to be a lot trickier, given all the different ways in which compare-and-branch can be expressed in RTL. -- Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/ Free Software Activist GNU Toolchain Engineer Disinformation flourishes because many people care deeply about injustice but very few check the facts. Ask me about <https://stallmansupport.org>