https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96015
--- Comment #13 from Jeffrey A. Law <law at redhat dot com> --- Hmm, there's a control dependency though in bb13: <bb 13> [local count: 242478389]: # result_21 = PHI <1(5), sign_17(6)> switch (op_14(D)) <default: <L12> [33.33%], case 0: <L6> [16.67%], case 1: <L14> [50.00%], case 3: <L14> [50.00%], case 5: <L14> [50.00%]> } So I'd hazard a guess that sign_17 either has the value 1 here or that result_21 is unused, otherwise you're right that cddce shouldn't remove the block.