public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/95629] New: consteval operator== crashes compiler
@ 2020-06-10 21:38 tobias.bruell at gmail dot com
  2020-06-10 22:52 ` [Bug c++/95629] " mpolacek at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: tobias.bruell at gmail dot com @ 2020-06-10 21:38 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 95629
           Summary: consteval operator== crashes compiler
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tobias.bruell at gmail dot com
  Target Milestone: ---

This also crashed in g++10 v10.1.0 for me.



#include <type_traits>

template<typename T>
struct hana {
  template<typename U>
  consteval bool operator==(hana<U>) {
    return std::is_same_v<T, U>;
  }
};

int main ()
{
  static_assert(hana<int>{} == hana<int>{});
}

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/95629] consteval operator== crashes compiler
  2020-06-10 21:38 [Bug c++/95629] New: consteval operator== crashes compiler tobias.bruell at gmail dot com
@ 2020-06-10 22:52 ` mpolacek at gcc dot gnu.org
  2020-06-10 22:57 ` iains at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2020-06-10 22:52 UTC (permalink / raw)
  To: gcc-bugs

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

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mpolacek at gcc dot gnu.org
     Ever confirmed|0                           |1
           Keywords|                            |ice-on-valid-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2020-06-10

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Thanks for the report.

95629.C: In function ‘int main()’:
95629.C:13:42: internal compiler error: in extract_call_expr, at cp/call.c:6634
   13 |   static_assert(hana<int>{} == hana<int>{});
      |                                          ^
0x93ae4c extract_call_expr(tree_node*)
        /home/mpolacek/src/gcc/gcc/cp/call.c:6634
0x939f5a build_new_op_1
        /home/mpolacek/src/gcc/gcc/cp/call.c:6335
0x93abb8 build_new_op(op_location_t const&, tree_code, int, tree_node*,
tree_node*, tree_node*, tree_node**, int)
        /home/mpolacek/src/gcc/gcc/cp/call.c:6592
0xcb24b5 build_x_binary_op(op_location_t const&, tree_code, tree_node*,
tree_code, tree_node*, tree_code, tree_node**, int)
        /home/mpolacek/src/gcc/gcc/cp/typeck.c:4280
0xb42759 cp_parser_binary_expression
        /home/mpolacek/src/gcc/gcc/cp/parser.c:9777
0xb42c12 cp_parser_assignment_expression
        /home/mpolacek/src/gcc/gcc/cp/parser.c:9914
0xb43462 cp_parser_constant_expression
        /home/mpolacek/src/gcc/gcc/cp/parser.c:10208
0xb4d16e cp_parser_static_assert
        /home/mpolacek/src/gcc/gcc/cp/parser.c:14741
0xb4b0ff cp_parser_block_declaration
        /home/mpolacek/src/gcc/gcc/cp/parser.c:13608
0xb4a594 cp_parser_declaration_statement
        /home/mpolacek/src/gcc/gcc/cp/parser.c:13217
0xb4651c cp_parser_statement
        /home/mpolacek/src/gcc/gcc/cp/parser.c:11523
0xb47230 cp_parser_statement_seq_opt
        /home/mpolacek/src/gcc/gcc/cp/parser.c:11889
0xb47114 cp_parser_compound_statement
        /home/mpolacek/src/gcc/gcc/cp/parser.c:11839
0xb5d175 cp_parser_function_body
        /home/mpolacek/src/gcc/gcc/cp/parser.c:23115
0xb5d499 cp_parser_ctor_initializer_opt_and_function_body
        /home/mpolacek/src/gcc/gcc/cp/parser.c:23166
0xb69008 cp_parser_function_definition_after_declarator
        /home/mpolacek/src/gcc/gcc/cp/parser.c:29062
0xb68e2f cp_parser_function_definition_from_specifiers_and_declarator
        /home/mpolacek/src/gcc/gcc/cp/parser.c:28978
0xb58384 cp_parser_init_declarator
        /home/mpolacek/src/gcc/gcc/cp/parser.c:20721
0xb4b57c cp_parser_simple_declaration
        /home/mpolacek/src/gcc/gcc/cp/parser.c:13785
0xb4b11e cp_parser_block_declaration
        /home/mpolacek/src/gcc/gcc/cp/parser.c:13611

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/95629] consteval operator== crashes compiler
  2020-06-10 21:38 [Bug c++/95629] New: consteval operator== crashes compiler tobias.bruell at gmail dot com
  2020-06-10 22:52 ` [Bug c++/95629] " mpolacek at gcc dot gnu.org
@ 2020-06-10 22:57 ` iains at gcc dot gnu.org
  2020-06-14 18:04 ` johelegp at gmail dot com
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: iains at gcc dot gnu.org @ 2020-06-10 22:57 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Iain Sandoe <iains at gcc dot gnu.org> ---
preliminary analysis on pr95510 (which might be a dup) has the assert failing
because the first operand of the target expression is a CTOR not a call. 
However, accepting a CTOR there just leads to a fail later (that's as far as I
got).

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/95629] consteval operator== crashes compiler
  2020-06-10 21:38 [Bug c++/95629] New: consteval operator== crashes compiler tobias.bruell at gmail dot com
  2020-06-10 22:52 ` [Bug c++/95629] " mpolacek at gcc dot gnu.org
  2020-06-10 22:57 ` iains at gcc dot gnu.org
@ 2020-06-14 18:04 ` johelegp at gmail dot com
  2020-06-23 15:42 ` mpolacek at gcc dot gnu.org
  2020-06-28 23:00 ` mpolacek at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: johelegp at gmail dot com @ 2020-06-14 18:04 UTC (permalink / raw)
  To: gcc-bugs

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

Johel Ernesto Guerrero Peña <johelegp at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |johelegp at gmail dot com

--- Comment #3 from Johel Ernesto Guerrero Peña <johelegp at gmail dot com> ---
Reduced test case: https://gcc.godbolt.org/z/aT8Dv-.
```C++
struct A { int x; };
consteval A operator+(A x) { return x; }
void f() { +A(0); }
```

This one doesn't involve a constructor call within the evaluation:
https://gcc.godbolt.org/z/fJQC_M.
```C++
struct A { int x; };
consteval const A& operator+(const A& x) { return x; }
void f() { constexpr A a(0); +a; }
```

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/95629] consteval operator== crashes compiler
  2020-06-10 21:38 [Bug c++/95629] New: consteval operator== crashes compiler tobias.bruell at gmail dot com
                   ` (2 preceding siblings ...)
  2020-06-14 18:04 ` johelegp at gmail dot com
@ 2020-06-23 15:42 ` mpolacek at gcc dot gnu.org
  2020-06-28 23:00 ` mpolacek at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2020-06-23 15:42 UTC (permalink / raw)
  To: gcc-bugs

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

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED

--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Fixed by r11-1455-g14c831f5ef614aabb6a8c85712fb166600e6cc05

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/95629] consteval operator== crashes compiler
  2020-06-10 21:38 [Bug c++/95629] New: consteval operator== crashes compiler tobias.bruell at gmail dot com
                   ` (3 preceding siblings ...)
  2020-06-23 15:42 ` mpolacek at gcc dot gnu.org
@ 2020-06-28 23:00 ` mpolacek at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2020-06-28 23:00 UTC (permalink / raw)
  To: gcc-bugs

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

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bence.kodaj at gmail dot com

--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
*** Bug 95951 has been marked as a duplicate of this bug. ***

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-06-28 23:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-10 21:38 [Bug c++/95629] New: consteval operator== crashes compiler tobias.bruell at gmail dot com
2020-06-10 22:52 ` [Bug c++/95629] " mpolacek at gcc dot gnu.org
2020-06-10 22:57 ` iains at gcc dot gnu.org
2020-06-14 18:04 ` johelegp at gmail dot com
2020-06-23 15:42 ` mpolacek at gcc dot gnu.org
2020-06-28 23:00 ` mpolacek at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).