https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66726
--- Comment #6 from Jeffrey A. Law <law at redhat dot com> --- WRT c#2. PRE will try to optimize away a runtime redundant expression. In the cases I'm looking at, there is only a single runtime evaluation. But that evaluation can be sunk from a set of predecessors into a single successor. It's more like tail merging than PRE.