On Thu, Sep 14, 2023 at 12:30 AM Andrew Pinski via Gcc-patches
wrote:
>
> While writing some match.pd code, I was trying to figure
> out why I was getting an `expected ), got (` error message
> while writing an if statement with an else clause. For switch
> statements, the if statements cannot have an else clause so
> it would be better to have a decent error message saying that
> explictly.
>
> OK? Bootstrapped and tested on x86_64-linux-gnu.
OK.
Richard.
> gcc/ChangeLog:
>
> * genmatch.cc (parser::parse_result): For an else clause
> of an if statement inside a switch, error out explictly.
> ---
> gcc/genmatch.cc | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/gcc/genmatch.cc b/gcc/genmatch.cc
> index a1925a747a7..03d325efdf6 100644
> --- a/gcc/genmatch.cc
> +++ b/gcc/genmatch.cc
> @@ -4891,6 +4891,8 @@ parser::parse_result (operand *result, predicate_id
> *matcher)
> ife->trueexpr = parse_result (result, matcher);
> else
> ife->trueexpr = parse_op ();
> + if (peek ()->type == CPP_OPEN_PAREN)
> + fatal_at (peek(), "if inside switch cannot have an else");
> eat_token (CPP_CLOSE_PAREN);
> }
> else
> --
> 2.31.1
>