[Bug ipa/106072] [13 Regression] Bogus -Wnonnull warning breaks rust bootstrap
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Dec 13 17:46:12 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106072
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The code definitely has a check for nullptr on pattern:
```
// parse pattern (which is required)
std::unique_ptr<AST::Pattern> pattern = parse_pattern ();
if (pattern == nullptr)
{
// not necessarily an error
return AST::ClosureParam::create_error ();
}
// parse optional type of param
std::unique_ptr<AST::Type> type = nullptr;
if (lexer.peek_token ()->get_id () == COLON)
{
lexer.skip_token ();
// parse type, which is now required
type = parse_type ();
if (type == nullptr)
{
Error error (lexer.peek_token ()->get_locus (),
"failed to parse type in closure parameter");
add_error (std::move (error));
// skip somewhere?
return AST::ClosureParam::create_error ();
}
}
return AST::ClosureParam (std::move (pattern), pattern->get_locus (),
std::move (type), std::move (outer_attrs));
```
Easy workaround is to add right before AST::CLosureParam:
rust_assert (pattern);
That should enforce the compiler to figure out that the load from pattern
unique_ptr is non-null.
More information about the Gcc-bugs
mailing list