https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98646
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> --- (In reply to Martin Sebor from comment #1) > Confirmed. It must be an instance we missed in the fix for pr96003 where > the C++ front end adds a COND_EXPR to static_cast. > > The larger context in the translation unit is: > > if (tp && tp->handle()) > transientXcbParent = static_cast<const QXcbWindow > *>(tp->handle())->winId(); > > The caller guards against tp->handle() being null but the front end doesn't > consider that and adds another guard which then triggers the warning that > also runs in the front end. The pr96003 fix works around the same problem > by setting the TREE_NO_WARNING bit so the same hack is needed wherever else > the front end builds a static_cast. This won't work here, because we're not creating the null test; build_base_path is called from build_over_call: 8902 tree converted_arg = build_base_path (PLUS_EXPR, arg, 8903 base_binfo, 1, complain); where the 1 means nonnull is true. The warning probably has to be moved out of the FE. Null 'this' has to be detected in constexpr context, that is bug 97230.