https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66908
--- Comment #10 from Maxim Ostapenko <chefmax at gcc dot gnu.org> --- (In reply to Marek Polacek from comment #9) > Oh silly me! This should work; Maxim, could you possibly try this patch? Sorry, Marek, nothing changed for C++ testcase: D.6137 = get.__delta; D.6138 = D.6137 & 1; if (D.6138 == 0) goto <D.6139>; else goto <D.6140>; <D.6139>: iftmp.1 = get.__pfn; goto <D.6141>; <D.6140>: A.2 = A; D.6143 = get.__delta; D.6144 = D.6143 >> 1; D.6145 = (sizetype) D.6144; D.6146 = A.2 + D.6145; D.6147 = MEM[(int (*__vtbl_ptr_type) () * *)D.6146]; D.6148 = get.__pfn; D.6149 = (sizetype) D.6148; D.6150 = D.6147 + D.6149; iftmp.1 = *D.6150; <D.6141>: A.3 = A; D.6152 = D.6143 >> 1; D.6153 = (sizetype) D.6152; D.6154 = A.3 + D.6153; result = iftmp.1 (D.6154);