[Bug c++/98469] ICE in cxx_eval_constant_expression, at cp/constexpr.c:6350

2022-06-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98469

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED
   Target Milestone|--- |11.0

--- Comment #4 from Andrew Pinski  ---
Fixed.

[Bug c++/98469] ICE in cxx_eval_constant_expression, at cp/constexpr.c:6350

2022-05-29 Thread asolokha at gmx dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98469

--- Comment #3 from Arseny Solokha  ---
The ICE was fixed for gcc 11, and gcc 10 does not support __builtin_bit_cast. I
believe this PR can be closed now.

[Bug c++/98469] ICE in cxx_eval_constant_expression, at cp/constexpr.c:6350

2021-01-05 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98469

--- Comment #2 from CVS Commits  ---
The master branch has been updated by Jakub Jelinek :

https://gcc.gnu.org/g:606f2af1973d5c83877d327cb5adef97c4243a73

commit r11-6477-g606f2af1973d5c83877d327cb5adef97c4243a73
Author: Jakub Jelinek 
Date:   Tue Jan 5 17:17:57 2021 +0100

c++: Fix ICE with __builtin_bit_cast [PR98469]

On the following testcase we ICE during constexpr evaluation (for
warnings),
because the IL has ADDR_EXPR of BIT_CAST_EXPR and ADDR_EXPR case asserts
the result is not a CONSTRUCTOR.
The patch punts on lval BIT_CAST_EXPR folding.

> This change is OK, but part of the problem is that we're trying to do
> overload resolution for an S copy/move constructor, which we shouldn't be
> because bit_cast is a prvalue, so in C++17 and up we should use it to
> directly initialize the target without any implied constructor call.

This version therefore wraps it into a TARGET_EXPR then, it alone fixes
the bug, but I've kept the constexpr.c change too.

2021-01-05  Jakub Jelinek  

PR c++/98469
* constexpr.c (cxx_eval_constant_expression) :
Punt if lval is true.
* semantics.c (cp_build_bit_cast): Call get_target_expr_sfinae on
the result if it has a class type.

* g++.dg/cpp2a/bit-cast8.C: New test.
* g++.dg/cpp2a/bit-cast9.C: New test.

[Bug c++/98469] ICE in cxx_eval_constant_expression, at cp/constexpr.c:6350

2020-12-29 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98469

Jakub Jelinek  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |jakub at gcc dot gnu.org
 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1
   Last reconfirmed||2020-12-29

--- Comment #1 from Jakub Jelinek  ---
Created attachment 49852
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49852=edit
gcc11-pr98469.patch

Untested fix.  Though, can't really reproduce with std::bit_cast, so the
validity of the testcase is questionable.