https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117259
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|c++ |sanitizer Blocks| |24639 Keywords| |diagnostic, needs-bisection Status|UNCONFIRMED |NEW CC| |dodji at gcc dot gnu.org, | |dvyukov at gcc dot gnu.org, | |jakub at gcc dot gnu.org, | |kcc at gcc dot gnu.org Last reconfirmed| |2024-10-22 Ever confirmed|0 |1 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Looks like a sanitizer issue to me: j_63 = 0; j.5_64 = j_63; .UBSAN_BOUNDS (0B, j.5_64, 1); _33 = bsD.3251[j.5_64].gD.3238.__pfnD.3235; _34 = (long intD.12) _33; _35 = _34 & 1; if (_35 != 0) goto <bb 9>; [INV] else goto <bb 10>; [INV] ... <bb 10> : .UBSAN_BOUNDS (0B, j.6_66(D), 1); iftmp.4_68 = bsD.3251[j.6_66(D)].gD.3238.__pfnD.3235; possibly <<cleanup_point <<< Unknown tree: expr_stmt (((long int) bs[.UBSAN_BOUNDS (0B, SAVE_EXPR <j>, 1);, SAVE_EXPR <j>;].g.__pfn & 1) != 0) ? (void A::<T40e> (struct A *) *) *(*((int (*) () * *) this + (sizetype) bs[.UBSAN_BOUNDS (0B, SAVE_EXPR <j>, 1);, SAVE_EXPR <j>;].g.__delta) + (sizetype) ((long int) bs[.UBSAN_BOUNDS (0B, SAVE_EXPR <j>, 1);, SAVE_EXPR <j>;].g.__pfn + -1)) : (void A::<T40e> (struct A *) *) bs[.UBSAN_BOUNDS (0B, SAVE_EXPR <j>, 1);, SAVE_EXPR <j>;].g.__pfn ((struct A *) this + (sizetype) bs[.UBSAN_BOUNDS (0B, SAVE_EXPR <j>, 1);, SAVE_EXPR <j>;].g.__delta) >>>>>; uses SAVE_EXPRs in a wrong way (in conditional context). Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639 [Bug 24639] [meta-bug] bug to track all Wuninitialized issues