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

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:82198676c80764ca7cf05f891afaee83b9179dd1

commit r11-8118-g82198676c80764ca7cf05f891afaee83b9179dd1
Author: Jason Merrill <ja...@redhat.com>
Date:   Sat Apr 10 10:55:58 2021 -0400

    c++: ICE with invalid use of 'this' with static memfn [PR98800]

    Here instantiation of the fake 'this' parameter we used when parsing the
    trailing return type of func() was failing because there is no actual
'this'
    parameter in the instantiation.  For PR97399 I told Patrick to do the
'this'
    injection even for statics, but now I think I was wrong; the out-of-class
    definition case I was concerned about does not break with this patch.  And
    we don't set current_class_ptr in the body of a static member function.

    And the OMP code should continue to parse 'this' and complain about it
    rather than give a syntax error.

    gcc/cp/ChangeLog:

            PR c++/98800
            PR c++/97399
            * parser.c (cp_parser_direct_declarator): Don't
            inject_this_parameter if static_p.
            (cp_parser_omp_var_list_no_open): Parse 'this' even if
            current_class_ptr isn't set for a better diagnostic.

    gcc/testsuite/ChangeLog:

            PR c++/98800
            * g++.dg/gomp/this-1.C: Adjust diagnostic.
            * g++.dg/cpp0x/constexpr-this1.C: New test.

Reply via email to