https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98649
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- Yes, that's the case. Switch lowering pass sees: <bb 2> [local count: 1073741809]: _1 = v_14(D)->index_; switch (_1) <default: <L5> [0.00%], case 0: <L7> [20.00%], case 1: <L8> [20.00%], case 2: <L9> [20.00%], case 3: <L10> [20.00%], case 4: <L11> [20.00%]> <bb 3> [local count: 214748365]: <L7>: _15 = &v_14(D)->D.2444.t0_; _2 = MEM[(struct T0 *)v_14(D) + 8B].D.2369._vptr.Base; _3 = *_2; OBJ_TYPE_REF(_3;(struct T0)_15->0) (_15, f_16(D)); goto <bb 9>; [100.00%] <bb 4> [local count: 214748365]: <L8>: _18 = &v_14(D)->D.2444.t1_; _4 = MEM[(struct T1 *)v_14(D) + 8B].D.2383._vptr.Base; _5 = *_4; OBJ_TYPE_REF(_5;(struct T1)_18->0) (_18, f_16(D)); goto <bb 9>; [100.00%] ...