[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724

2021-04-10 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800

--- Comment #5 from CVS Commits  ---
The master branch has been updated by Jason Merrill :

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

commit r11-8118-g82198676c80764ca7cf05f891afaee83b9179dd1
Author: Jason Merrill 
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.

[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724

2021-04-10 Thread mpolacek at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800

Marek Polacek  changed:

   What|Removed |Added

   Priority|P2  |P4
   Keywords||error-recovery

--- Comment #4 from Marek Polacek  ---
I can see that error message now.  So, error-recovery and I suspect P4.

[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724

2021-04-10 Thread jason at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800

--- Comment #3 from Jason Merrill  ---
I'm getting a correct (if obscure) error message before the ICE:

wa.C:4:71: error: use of ‘this’ in a constant expression
4 | template  static auto func() -> enable_if_t()>;
  | ^

wa.C:4: confused by earlier errors, bailing out

are you still not?

[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724

2021-02-26 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2

[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724

2021-01-25 Thread mpolacek at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800

Marek Polacek  changed:

   What|Removed |Added

   Last reconfirmed||2021-01-25
 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
 CC||mpolacek at gcc dot gnu.org

--- Comment #2 from Marek Polacek  ---
Confirmed.

[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724

2021-01-22 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800

Patrick Palka  changed:

   What|Removed |Added

   Target Milestone|--- |8.5

[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724

2021-01-22 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800

Patrick Palka  changed:

   What|Removed |Added

Summary|ICE on invalid use of   |[8/9/10/11 Regression] ICE
   |non-static member function  |on invalid use of
   |in trailing return type |non-static member function
   |since r251438   |in trailing return type
   ||since r8-2724
   Keywords||ice-on-invalid-code
 CC||jason at gcc dot gnu.org
  Known to fail||10.2.0, 11.0, 8.4.0, 9.3.0
  Known to work||7.5.0

--- Comment #1 from Patrick Palka  ---
GCC 7.5 rejects with:

: In function 'int main()':
:7:29: error: no matching function for call to 'tmp::func()'
 int main() { tmp::func(); }
 ^
:4:34: note: candidate: template static
enable_if_t()> tmp::func()
   template  static auto func() -> enable_if_t()>;
  ^~~~
:4:34: note:   template argument deduction/substitution failed:
: In substitution of 'template static
enable_if_t()> tmp::func() [with E = int]':
:7:29:   required from here
:4:70: error: cannot call member function 'constexpr bool
tmp::is_integral() [with  = int]' without object
   template  static auto func() -> enable_if_t()>;
~~^~