diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-06-22 22:42:50 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-06-22 22:42:50 +0200 |
commit | dd6f4f897e18adc7b60a3efe5e78c034e747cc22 (patch) | |
tree | b21ba3828833cd048b1dd8fe8c5956a49968ccc6 | |
parent | f878882bef04726c04e11d0d91b5c8afa97d9daf (diff) | |
download | gcc-dd6f4f897e18adc7b60a3efe5e78c034e747cc22.zip gcc-dd6f4f897e18adc7b60a3efe5e78c034e747cc22.tar.gz gcc-dd6f4f897e18adc7b60a3efe5e78c034e747cc22.tar.bz2 |
re PR c++/44627 (ICE in dump_expr, at cp/error.c:1735)
PR c++/44627
* error.c (dump_expr): Don't look at CALL_EXPR_ARG (t, 0) if
the CALL_EXPR has no arguments.
* g++.dg/diagnostic/method1.C: New test.
From-SVN: r161227
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/error.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/diagnostic/method1.C | 20 |
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5d36ad3..3147918 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2010-06-22 Jakub Jelinek <jakub@redhat.com> + + PR c++/44627 + * error.c (dump_expr): Don't look at CALL_EXPR_ARG (t, 0) if + the CALL_EXPR has no arguments. + 2010-06-21 Jason Merrill <jason@redhat.com> * typeck.c (comp_except_specs): Fix ce_derived with noexcept. diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 2cddc6d..1902a13 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1759,7 +1759,9 @@ dump_expr (tree t, int flags) if (TREE_CODE (fn) == OBJ_TYPE_REF) fn = resolve_virtual_fun_from_obj_type_ref (fn); - if (TREE_TYPE (fn) != NULL_TREE && NEXT_CODE (fn) == METHOD_TYPE) + if (TREE_TYPE (fn) != NULL_TREE + && NEXT_CODE (fn) == METHOD_TYPE + && call_expr_nargs (t)) { tree ob = CALL_EXPR_ARG (t, 0); if (TREE_CODE (ob) == ADDR_EXPR) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 056fd96..a954c9b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-06-22 Jakub Jelinek <jakub@redhat.com> + + PR c++/44627 + * g++.dg/diagnostic/method1.C: New test. + 2010-06-22 Cary Coutant <ccoutant@google.com> * g++.dg/debug/dwarf2/dwarf4-typedef.C: New test. diff --git a/gcc/testsuite/g++.dg/diagnostic/method1.C b/gcc/testsuite/g++.dg/diagnostic/method1.C new file mode 100644 index 0000000..8e1225d --- /dev/null +++ b/gcc/testsuite/g++.dg/diagnostic/method1.C @@ -0,0 +1,20 @@ +// PR c++/44627 +// { dg-do compile } + +struct A +{ + A *foo (); +}; + +template <class T> +void +bar () +{ + A::foo ().anything; // { dg-error "request for member" } +} + +void +baz () +{ + bar <int> (); +} |