2014-01-02 Marc Glisse <marc.glisse@inria.fr>
+ PR c++/59641
+ * call.c (build_conditional_expr_1): Check the return value of
+ force_rvalue.
+
+2014-01-02 Marc Glisse <marc.glisse@inria.fr>
+
* call.c (convert_like_real): Check complain.
2014-01-02 Marc Glisse <marc.glisse@inria.fr>
arg2 = force_rvalue (arg2, complain);
arg3 = force_rvalue (arg3, complain);
+ /* force_rvalue can return error_mark on valid arguments. */
+ if (error_operand_p (arg1)
+ || error_operand_p (arg2)
+ || error_operand_p (arg3))
+ return error_mark_node;
+
tree arg1_type = TREE_TYPE (arg1);
arg2_type = TREE_TYPE (arg2);
arg3_type = TREE_TYPE (arg3);
2014-01-02 Marc Glisse <marc.glisse@inria.fr>
+ PR c++/59641
+ * g++.dg/cpp0x/pr59641.C: New file.
+
+2014-01-02 Marc Glisse <marc.glisse@inria.fr>
+
* g++.dg/cpp0x/initlist-explicit-sfinae.C: New file.
2014-01-02 Marc Glisse <marc.glisse@inria.fr>
--- /dev/null
+// { dg-options "-std=gnu++11" }
+typedef int T __attribute__((vector_size(2*sizeof(int))));
+
+void foo(T& r, const T& a, const T& b)
+{
+ constexpr T c = a < b; // { dg-error "constant" }
+ r = c ? a : b;
+}