diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2016-09-16 19:23:22 +0200 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2016-09-16 19:23:22 +0200 |
commit | d41a5c096ec613f7df33d5d5ea4c0e512ac1e87a (patch) | |
tree | 0256c4b77ede44f3db78dd9d803157c951901cbc /gdb/testsuite/gdb.cp/casts03.cc | |
parent | f807f43d7eba5bba3042554f9b3e884d71a68309 (diff) | |
download | fsf-binutils-gdb-d41a5c096ec613f7df33d5d5ea4c0e512ac1e87a.zip fsf-binutils-gdb-d41a5c096ec613f7df33d5d5ea4c0e512ac1e87a.tar.gz fsf-binutils-gdb-d41a5c096ec613f7df33d5d5ea4c0e512ac1e87a.tar.bz2 |
testsuite: Fix false FAIL in gdb.cp/casts.exp
gcc-6.2.1-1.fc26.x86_64
gdb compile failed, /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:10: error: expected primary-expression before 'int'
decltype(int x)
^~~
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:10: error: expected ')' before 'int'
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:1: error: expected unqualified-id before 'decltype'
decltype(int x)
^~~~~~~~
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc: In function 'int main(int, char**)':
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:59:14: error: expected primary-expression before 'decltype'
double y = decltype(2);
^~~~~~~~
'decltype' is a registered keyword since C++11 which is now a default for GCC.
On Thu, 15 Sep 2016 14:06:56 +0200, Pedro Alves wrote:
Seems to be exercising the FLAG_SHADOW bits:
...
{"__typeof__", TYPEOF, OP_TYPEOF, 0 },
{"__typeof", TYPEOF, OP_TYPEOF, 0 },
{"typeof", TYPEOF, OP_TYPEOF, FLAG_SHADOW },
{"__decltype", DECLTYPE, OP_DECLTYPE, FLAG_CXX },
{"decltype", DECLTYPE, OP_DECLTYPE, FLAG_CXX | FLAG_SHADOW },
...
/* This is used to associate some attributes with a token. */
enum token_flag
{
...
/* If this bit is set, the token is conditional: if there is a
symbol of the same name, then the token is a symbol; otherwise,
the token is a keyword. */
FLAG_SHADOW = 2
};
So perhaps a better fix is to move that particular test to a
separate testcase that force-compiles with -std=c++03.
gdb/testsuite/ChangeLog
2016-09-16 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.cp/casts.cc (decltype): Move it ...
(main): ... with its call to ...
* gdb.cp/casts03.cc: ... a new file.
* gdb.cp/casts.exp: Add new file casts03.cc, move decltype test to it.
Diffstat (limited to 'gdb/testsuite/gdb.cp/casts03.cc')
-rw-r--r-- | gdb/testsuite/gdb.cp/casts03.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.cp/casts03.cc b/gdb/testsuite/gdb.cp/casts03.cc new file mode 100644 index 0000000..58d9a42 --- /dev/null +++ b/gdb/testsuite/gdb.cp/casts03.cc @@ -0,0 +1,32 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2016 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +// Confuse a simpler approach. + +double +decltype(int x) +{ + return x + 2.0; +} + +int +main (int argc, char **argv) +{ + double y = decltype(2); + + return 0; /* breakpoint spot: casts.exp: 1 */ +} |