https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106535

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |diagnostic
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2022-08-05

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Looks like this comment is not correct:

      /* Compound expressions can only occur here if -Wpedantic or
         -pedantic-errors is specified.  In the later case, we always want
         an error.  In the former case, we simply want a warning.  */
      if (require_constant && pedantic
          && TREE_CODE (inside_init) == COMPOUND_EXPR)
        {
          inside_init
            = valid_compound_expr_initializer (inside_init,
                                               TREE_TYPE (inside_init));
          if (inside_init == error_mark_node)
            error_init (init_loc, "initializer element is not constant");
          else
            pedwarn_init (init_loc, OPT_Wpedantic,
                          "initializer element is not constant");
          if (flag_pedantic_errors)
            inside_init = error_mark_node;
        }
      else if (require_constant
               && !initializer_constant_valid_p (inside_init,
                                                 TREE_TYPE (inside_init)))
        {
          error_init (init_loc, "initializer element is not constant");
          inside_init = error_mark_node;
        }
      else if (require_constant && !maybe_const)
        pedwarn_init (init_loc, OPT_Wpedantic,
                      "initializer element is not a constant expression");


Without -pedantic the first condition is false, so it takes the second branch
which uses error_init. With -pedantic the first branch is taken, and it uses
pedwarn_init which is only a warning unless you use -pedantic-errors.

Reply via email to