Commit 3a27b4db by Jakub Jelinek Committed by Bernd Edlinger

Make-lang.in: Invoke gperf with -L C++.

2016-02-19  Jakub Jelinek  <jakub@redhat.com>
            Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * Make-lang.in: Invoke gperf with -L C++.
        * cfns.gperf: Remove prototypes for hash and libc_name_p
        inlines.
        * cfns.h: Regenerated.
        * except.c (nothrow_libfn_p): Adjust.

Co-Authored-By: Bernd Edlinger <bernd.edlinger@hotmail.de>

From-SVN: r233572
parent 871b3f47
2016-02-19 Jakub Jelinek <jakub@redhat.com> 2016-02-19 Jakub Jelinek <jakub@redhat.com>
Bernd Edlinger <bernd.edlinger@hotmail.de>
* Make-lang.in: Invoke gperf with -L C++.
* cfns.gperf: Remove prototypes for hash and libc_name_p
inlines.
* cfns.h: Regenerated.
* except.c (nothrow_libfn_p): Adjust.
2016-02-19 Jakub Jelinek <jakub@redhat.com>
PR c++/69850 PR c++/69850
* rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use * rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use
......
...@@ -112,7 +112,7 @@ else ...@@ -112,7 +112,7 @@ else
# deleting the $(srcdir)/cp/cfns.h file. # deleting the $(srcdir)/cp/cfns.h file.
$(srcdir)/cp/cfns.h: $(srcdir)/cp/cfns.h:
endif endif
gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L ANSI-C \ gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L C++ \
$(srcdir)/cp/cfns.gperf --output-file $(srcdir)/cp/cfns.h $(srcdir)/cp/cfns.gperf --output-file $(srcdir)/cp/cfns.h
# #
......
%language=C++
%define class-name libc_name
%{ %{
/* Copyright (C) 2000-2016 Free Software Foundation, Inc. /* Copyright (C) 2000-2016 Free Software Foundation, Inc.
...@@ -16,14 +18,6 @@ for more details. ...@@ -16,14 +18,6 @@ for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#ifdef __GNUC__
__inline
#endif
static unsigned int hash (const char *, unsigned int);
#ifdef __GNUC__
__inline
#endif
const char * libc_name_p (const char *, unsigned int);
%} %}
%% %%
# The standard C library functions, for feeding to gperf; the result is used # The standard C library functions, for feeding to gperf; the result is used
......
/* ANSI-C code produced by gperf version 3.0.3 */ /* C++ code produced by gperf version 3.0.4 */
/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L ANSI-C cfns.gperf */ /* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L C++ --output-file cfns.h cfns.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
#endif #endif
#line 1 "cfns.gperf" #line 3 "cfns.gperf"
/* Copyright (C) 2000-2016 Free Software Foundation, Inc. /* Copyright (C) 2000-2016 Free Software Foundation, Inc.
...@@ -47,25 +47,18 @@ for more details. ...@@ -47,25 +47,18 @@ for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#ifdef __GNUC__
__inline
#endif
static unsigned int hash (const char *, unsigned int);
#ifdef __GNUC__
__inline
#endif
const char * libc_name_p (const char *, unsigned int);
/* maximum key range = 391, duplicates = 0 */ /* maximum key range = 391, duplicates = 0 */
#ifdef __GNUC__ class libc_name
__inline {
#else private:
#ifdef __cplusplus static inline unsigned int hash (const char *str, unsigned int len);
inline public:
#endif static const char *libc_name_p (const char *str, unsigned int len);
#endif };
static unsigned int
hash (register const char *str, register unsigned int len) inline unsigned int
libc_name::hash (register const char *str, register unsigned int len)
{ {
static const unsigned short asso_values[] = static const unsigned short asso_values[] =
{ {
...@@ -122,14 +115,8 @@ hash (register const char *str, register unsigned int len) ...@@ -122,14 +115,8 @@ hash (register const char *str, register unsigned int len)
return hval + asso_values[(unsigned char)str[len - 1]]; return hval + asso_values[(unsigned char)str[len - 1]];
} }
#ifdef __GNUC__
__inline
#ifdef __GNUC_STDC_INLINE__
__attribute__ ((__gnu_inline__))
#endif
#endif
const char * const char *
libc_name_p (register const char *str, register unsigned int len) libc_name::libc_name_p (register const char *str, register unsigned int len)
{ {
enum enum
{ {
......
...@@ -1040,7 +1040,8 @@ nothrow_libfn_p (const_tree fn) ...@@ -1040,7 +1040,8 @@ nothrow_libfn_p (const_tree fn)
unless the system headers are playing rename tricks, and if unless the system headers are playing rename tricks, and if
they are, we don't want to be confused by them. */ they are, we don't want to be confused by them. */
id = DECL_NAME (fn); id = DECL_NAME (fn);
return !!libc_name_p (IDENTIFIER_POINTER (id), IDENTIFIER_LENGTH (id)); return !!libc_name::libc_name_p (IDENTIFIER_POINTER (id),
IDENTIFIER_LENGTH (id));
} }
/* Returns nonzero if an exception of type FROM will be caught by a /* Returns nonzero if an exception of type FROM will be caught by a
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment