https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59660
--- Comment #16 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #15) > (In reply to Andrew Pinski from comment #13) > > Using the C front-end we still have a casting issue. > > There are a few issues of even for the C++ front-end IR: > I will have to think of how to handle this in the current code but it is > definitely more complex really because you have 2 phi nodes to worry about > and such. So I accidently stumbled on why the C++ IR is this way. make_forwarders_with_degenerate_phis for cd_dce undoes what mergephi did (which is was before dse). I can fix this by moving the mergephi right after cd_dce. I am still deciding if this is the best thing.