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

Patrick Palka <ppalka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
            Summary|[10/11 Regression] internal |[10/11/12 Regression]
                   |compiler error: unexpected  |internal compiler error:
                   |expression ‘(int)(__ret)’   |unexpected expression
                   |of kind cast_expr           |‘(int)(__ret)’ of kind
                   |                            |cast_expr
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-02-14
      Known to fail|                            |12.0

--- Comment #6 from Patrick Palka <ppalka at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #3)
> (In reply to Daniel Nelson from comment #2)
> > Had a few moments to do some testing/bisecting, and found the commit that
> > fixed this in mainline.
> 
> I kinda of see how that might help here but not really. I wonder if there is
> another testcase which might shows the issue on the trunk still.

trunk crashes on this version:

#define ERR_MAX -20

#define s_errmsg(r)          \
        _k_errmsg[(((int)r) <= 0 && r) ? -(r) : -ERR_MAX]

extern const char *_k_errmsg[];

template <int size>
inline int DoFoo() {
  int __ret = 0;
  const char *n = s_errmsg(__ret);
  return __ret;
}

Reply via email to