Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #495 from stilor/old-gcc-build
Backport the fix to 4.8.5.
- Loading branch information
Showing
1 changed file
with
138 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
From 1e5f1089dec3af328fd03125d6778f666d0bd4e4 Mon Sep 17 00:00:00 2001 | ||
From: edlinger <edlinger@138bc75d-0d04-0410-961f-82ee72b054a4> | ||
Date: Thu, 25 Feb 2016 15:33:50 +0000 | ||
Subject: [PATCH 1/1] 2016-02-25 Bernd Edlinger <bernd.edlinger@hotmail.de> | ||
|
||
Backported from mainline | ||
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. | ||
|
||
|
||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@233720 138bc75d-0d04-0410-961f-82ee72b054a4 | ||
diff -urpN a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf | ||
--- a/gcc/cp/cfns.gperf 2013-01-10 12:38:27.000000000 -0800 | ||
+++ b/gcc/cp/cfns.gperf 2016-12-05 13:55:20.331616274 -0800 | ||
@@ -1,3 +1,5 @@ | ||
+%language=C++ | ||
+%define class-name libc_name | ||
%{ | ||
/* Copyright (C) 2000-2013 Free Software Foundation, Inc. | ||
|
||
@@ -16,14 +18,6 @@ for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with GCC; see the file COPYING3. If not see | ||
<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 | ||
diff -urpN a/gcc/cp/cfns.h b/gcc/cp/cfns.h | ||
--- a/gcc/cp/cfns.h 2013-01-10 12:38:27.000000000 -0800 | ||
+++ b/gcc/cp/cfns.h 2016-12-05 13:55:20.331616274 -0800 | ||
@@ -1,5 +1,5 @@ | ||
-/* ANSI-C code produced by gperf version 3.0.3 */ | ||
-/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L ANSI-C cfns.gperf */ | ||
+/* 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 C++ --output-file cfns.h cfns.gperf */ | ||
|
||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ | ||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ | ||
@@ -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>." | ||
#endif | ||
|
||
-#line 1 "cfns.gperf" | ||
+#line 3 "cfns.gperf" | ||
|
||
/* Copyright (C) 2000-2013 Free Software Foundation, Inc. | ||
|
||
@@ -47,25 +47,18 @@ for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with GCC; see the file COPYING3. If not see | ||
<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 */ | ||
|
||
-#ifdef __GNUC__ | ||
-__inline | ||
-#else | ||
-#ifdef __cplusplus | ||
-inline | ||
-#endif | ||
-#endif | ||
-static unsigned int | ||
-hash (register const char *str, register unsigned int len) | ||
+class libc_name | ||
+{ | ||
+private: | ||
+ static inline unsigned int hash (const char *str, unsigned int len); | ||
+public: | ||
+ static const char *libc_name_p (const char *str, unsigned int len); | ||
+}; | ||
+ | ||
+inline unsigned int | ||
+libc_name::hash (register const char *str, register unsigned int len) | ||
{ | ||
static const unsigned short asso_values[] = | ||
{ | ||
@@ -122,14 +115,8 @@ hash (register const char *str, register | ||
return hval + asso_values[(unsigned char)str[len - 1]]; | ||
} | ||
|
||
-#ifdef __GNUC__ | ||
-__inline | ||
-#ifdef __GNUC_STDC_INLINE__ | ||
-__attribute__ ((__gnu_inline__)) | ||
-#endif | ||
-#endif | ||
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 | ||
{ | ||
diff -urpN a/gcc/cp/except.c b/gcc/cp/except.c | ||
--- a/gcc/cp/except.c 2013-10-25 06:49:48.000000000 -0700 | ||
+++ b/gcc/cp/except.c 2016-12-05 13:55:20.331616274 -0800 | ||
@@ -1025,7 +1025,8 @@ nothrow_libfn_p (const_tree fn) | ||
unless the system headers are playing rename tricks, and if | ||
they are, we don't want to be confused by them. */ | ||
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 | ||
diff -urpN a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in | ||
--- a/gcc/cp/Make-lang.in 2013-01-10 12:38:27.000000000 -0800 | ||
+++ b/gcc/cp/Make-lang.in 2016-12-05 13:55:20.331616274 -0800 | ||
@@ -115,7 +115,7 @@ else | ||
# deleting the $(srcdir)/cp/cfns.h file. | ||
$(srcdir)/cp/cfns.h: | ||
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 | ||
|
||
# |