[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 Jason Merrill changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #8 from Jason Merrill --- Fixed.
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 --- Comment #7 from Jason Merrill --- Author: jason Date: Fri Jan 15 15:57:17 2016 New Revision: 232438 URL: https://gcc.gnu.org/viewcvs?rev=232438=gcc=rev Log: PR c++/68847 * call.c (build_cxx_call): Use fold_non_dependent_expr. Added: trunk/gcc/testsuite/g++.dg/delayedfold/builtin1.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/call.c
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 Richard Biener changed: What|Removed |Added Priority|P3 |P1 Version|unknown |6.0
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 Jason Merrill changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 Marek Polacek changed: What|Removed |Added CC||mpolacek at gcc dot gnu.org --- Comment #5 from Marek Polacek --- Started with r230365: commit d2c638268e30dea7631ca2ee9b7489da2317526b Author: jasonDate: Sat Nov 14 00:08:05 2015 + Merge C++ delayed folding branch.
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 --- Comment #6 from Marek Polacek --- We ICE since the C++ delayed folding merge, because build_cxx_call now does this for every argument of a built-in function: 7743 /* We need to take care that values to BUILT_IN_NORMAL 7744 are reduced. */ 7745 for (i = 0; i < nargs; i++) 7746 argarray[i] = maybe_constant_value (argarray[i]); maybe_constant_value eventually leads to cxx_eval_constant_expression, but that function doesn't handle IMPLICIT_CONV_EXPR. I suppose it should, but the question is whether to handle IMPLICIT_CONV_EXPR same as e.g. CONVERT_EXPR (Honza's patch), or rather like MODOP_EXPR (~ treat the expression as non-constant). Both approaches fix the testcase and pass dg.exp. Jason, would you have some advice? (Also I wonder whether cxx_eval_constant_expression should handle e.g. CAST_EXPR etc., or whether these expressions should never have gotten into cxx_eval_constant_expression.)
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 Jan Hubicka changed: What|Removed |Added CC||hubicka at gcc dot gnu.org --- Comment #3 from Jan Hubicka --- A variant of this seems to hit current Firefox: 0:35.53 /aux/hubicka/firefox9/js/src/jit/x86-shared/AtomicOperations-x86-shared.h:361:104: internal compiler error: unexpected expression �(void*)(& zero)� of kind implicit_conv_expr 0:35.53 while (!__atomic_compare_exchange(, , , false, __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE)) {
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 --- Comment #4 from Jan Hubicka --- Perhaps something like this? Index: constexpr.c === --- constexpr.c (revision 232023) +++ constexpr.c (working copy) @@ -3560,6 +3560,7 @@ cxx_eval_constant_expression (const cons break; case CONVERT_EXPR: +case IMPLICIT_CONV_EXPR: case VIEW_CONVERT_EXPR: case NOP_EXPR: case UNARY_PLUS_EXPR:
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 Markus Trippelsdorf changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2015-12-11 CC||trippels at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Markus Trippelsdorf --- class A; class B { public: operator A *() const; }; class A { public: virtual bool isFormControlElement() const {} }; class C { struct D { B element; }; bool checkPseudoClass(const D &, int &) const; }; class F { virtual bool isFormControlElement() const; }; class G : A, F { bool isFormControlElement() const {} }; bool C::checkPseudoClass(const D , int &) const { A = *p1.element; a.isFormControlElement(); a.isFormControlElement() || a.isFormControlElement(); }
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 --- Comment #2 from Markus Trippelsdorf --- Whoops pasted to the wrong bug. Please ignore.
[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847 Richard Biener changed: What|Removed |Added Target Milestone|--- |6.0