diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2005-08-25 09:06:45 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2005-08-25 09:06:45 +0000 |
commit | 5ebbc0ee56fe91238d4e75188983e866a8e37263 (patch) | |
tree | 553845a1f8ec2abce55ad3f4431f068731956809 /gcc | |
parent | 9ebbe8cc172d73e4bd1d8d02584cb356164c0a85 (diff) | |
download | gcc-5ebbc0ee56fe91238d4e75188983e866a8e37263.zip gcc-5ebbc0ee56fe91238d4e75188983e866a8e37263.tar.gz gcc-5ebbc0ee56fe91238d4e75188983e866a8e37263.tar.bz2 |
re PR c++/20817 (ICE for tree check in build_offset_type)
cp:
PR c++/20817
* typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a
->*.
testsuite:
PR c++/20817
* g++.old-deja/g++.benjamin/13908.C: Robustify expected error.
From-SVN: r103481
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.benjamin/13908.C | 2 |
4 files changed, 17 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 75c4500..db7443b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-08-25 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/20817 + * typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a + ->*. + 2005-08-24 Nathan Sidwell <nathan@codesourcery.com> PR c++/22454 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 3a3bbea..a052ed1 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -3615,11 +3615,13 @@ build_x_unary_op (enum tree_code code, tree xarg) if (!flag_ms_extensions && TREE_CODE (TREE_TYPE (xarg)) == METHOD_TYPE && (TREE_CODE (xarg) != OFFSET_REF || !PTRMEM_OK_P (xarg))) { - if (TREE_CODE (xarg) != OFFSET_REF) + if (TREE_CODE (xarg) != OFFSET_REF + || !TYPE_P (TREE_OPERAND (xarg, 0))) { - error ("invalid use of %qE to form a pointer-to-member-function." - " Use a qualified-id.", + error ("invalid use of %qE to form a pointer-to-member-function", xarg); + if (TREE_CODE (xarg) != OFFSET_REF) + inform (" a qualified-id is required"); return error_mark_node; } else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cd84c80..dc238f7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-08-25 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/20817 + * g++.old-deja/g++.benjamin/13908.C: Robustify expected error. + 2005-08-25 Alan Modra <amodra@bigpond.net.au> * gcc.dg/vect/vect-52.c: Increase b[] and c[] size by one. diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/13908.C b/gcc/testsuite/g++.old-deja/g++.benjamin/13908.C index e265562..d18434e 100644 --- a/gcc/testsuite/g++.old-deja/g++.benjamin/13908.C +++ b/gcc/testsuite/g++.old-deja/g++.benjamin/13908.C @@ -17,5 +17,5 @@ void bar (chile* pobj, pmf pmethod) { //-edg: expected member name //-g++: taking address of bound pointer-to-member expression - foo = (void*) &(pobj->*pmethod); // { dg-error "" } + foo = (void*) &(pobj->*pmethod); // { dg-error "invalid use" } } |