[Bug c++/68847] [6 Regression] ICE in cxx_eval_constant_expression on __atomic_compare_exchange (constexpr.c:3719) in c++

2016-01-22 Thread jason at gcc dot gnu.org
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++

2016-01-15 Thread jason at gcc dot gnu.org
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++

2016-01-14 Thread rguenth at gcc dot gnu.org
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++

2016-01-14 Thread jason at gcc dot gnu.org
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++

2016-01-08 Thread mpolacek at gcc dot gnu.org
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: jason 
Date:   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++

2016-01-08 Thread mpolacek at gcc dot gnu.org
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++

2016-01-02 Thread hubicka at gcc dot gnu.org
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++

2016-01-02 Thread hubicka at gcc dot gnu.org
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++

2015-12-11 Thread trippels at gcc dot gnu.org
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++

2015-12-11 Thread trippels at gcc dot gnu.org
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++

2015-12-11 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |6.0