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. * g++.dg/cpp0x/pr88120.C: New test. From-SVN: r266492
This commit is contained in:
parent
80de5ef9c1
commit
2426ee774b
4 changed files with 35 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
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
|
||||
|
|
|
@ -4919,7 +4919,7 @@ cp_build_binary_op (location_t location,
|
|||
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);
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
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
|
||||
|
|
23
gcc/testsuite/g++.dg/cpp0x/pr88120.C
Normal file
23
gcc/testsuite/g++.dg/cpp0x/pr88120.C
Normal file
|
@ -0,0 +1,23 @@
|
|||
// 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();
|
||||
}
|
Loading…
Add table
Reference in a new issue