+2018-11-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88120 - ICE when calling save_expr in a template.
+ * typeck.c (cp_build_binary_op): Call cp_save_expr instead of
+ save_expr.
+
2018-11-22 Jakub Jelinek <jakub@redhat.com>
PR c++/87386
tree pfn0, delta0, e1, e2;
if (TREE_SIDE_EFFECTS (op0))
- op0 = save_expr (op0);
+ op0 = cp_save_expr (op0);
pfn0 = pfn_from_ptrmemfunc (op0);
delta0 = delta_from_ptrmemfunc (op0);
+2018-11-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88120 - ICE when calling save_expr in a template.
+ * g++.dg/cpp0x/pr88120.C: New test.
+
2018-11-26 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* c-c++-common/Warray-bounds-3.c (test_strcpy_bounds): Use long instead
--- /dev/null
+// PR c++/88120
+// { dg-do compile { target c++11 } }
+
+typedef int a;
+enum b : a;
+class c {
+ enum f { d };
+ c(f);
+ friend c operator&(c, c);
+ typedef void (c::*e)();
+ operator e();
+};
+class g {
+ template <typename, typename> b h();
+ struct k {
+ c i;
+ };
+};
+template <typename, typename> b g::h() {
+ k j;
+ &j || j.i &c::d;
+ return b();
+}