From 4c14fd7ee23717e2458c02844e97f6eb539c5f11 Mon Sep 17 00:00:00 2001 From: Bruce Korb Date: Wed, 11 Jan 2012 16:23:48 +0000 Subject: re PR rtl-optimization/57105 (ICE: in add_insn_before_nobb, at emit-rtl.c:3883 with -Os -fselective-scheduling2 -g) 2012-01-11 Bruce Korb Steven G. Kargl Andreas Tobler PR bootstrap/57105 PR preprocessor/51776 * inclhack.def (cdef_cplusplus): Add a replacement for [[noreturn]]. * fixincl.x: Regenerate. * tests/base/sys/cdefs.h: Update. * genfixes: Remove the 'Ver.' from the version check. Co-Authored-By: Andreas Tobler Co-Authored-By: Steven G. Kargl From-SVN: r183096 --- fixincludes/ChangeLog | 12 +++++++++ fixincludes/fixincl.x | 51 ++++++++++++++++++++++++++++++++++---- fixincludes/genfixes | 2 +- fixincludes/inclhack.def | 16 ++++++++++++ fixincludes/tests/base/sys/cdefs.h | 5 ++++ 5 files changed, 80 insertions(+), 6 deletions(-) diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog index 64fcc45..3e058ec 100644 --- a/fixincludes/ChangeLog +++ b/fixincludes/ChangeLog @@ -1,3 +1,15 @@ +2012-01-11 Bruce Korb + Steven G. Kargl + Andreas Tobler + + PR bootstrap/57105 + PR preprocessor/51776 + * inclhack.def (cdef_cplusplus): Add a replacement for [[noreturn]]. + * fixincl.x: Regenerate. + * tests/base/sys/cdefs.h: Update. + + * genfixes: Remove the 'Ver.' from the version check. + 2011-12-20 Andreas Schwab * configure: Regenerate. diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index dac0a4e..517fba9 100644 --- a/fixincludes/fixincl.x +++ b/fixincludes/fixincl.x @@ -2,11 +2,11 @@ * * DO NOT EDIT THIS FILE (fixincl.x) * - * It has been AutoGen-ed November 7, 2011 at 01:16:39 PM by AutoGen 5.10 + * It has been AutoGen-ed January 9, 2012 at 11:55:38 PM by AutoGen 5.12 * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Nov 7 13:16:39 EST 2011 +/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Jan 9 23:55:38 CET 2012 * * You must regenerate it. Use the ./genfixes script. * @@ -15,7 +15,7 @@ * certain ANSI-incompatible system header files which are fixed to work * correctly with ANSI C and placed in a directory that GNU C will search. * - * This file contains 222 fixup descriptions. + * This file contains 223 fixup descriptions. * * See README for more information. * @@ -1880,6 +1880,41 @@ int vfscanf(FILE *, const char *, __builtin_va_list) __asm__ (_BSD_STRING(__USER /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Cdef_Cplusplus fix + */ +tSCC zCdef_CplusplusName[] = + "cdef_cplusplus"; + +/* + * File name selection pattern + */ +tSCC zCdef_CplusplusList[] = + "sys/cdefs.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzCdef_CplusplusMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zCdef_CplusplusSelect0[] = + "\\[\\[noreturn\\]\\]"; + +#define CDEF_CPLUSPLUS_TEST_CT 1 +static tTestDesc aCdef_CplusplusTests[] = { + { TT_EGREP, zCdef_CplusplusSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Cdef_Cplusplus + */ +static const char* apzCdef_CplusplusPatch[] = { + "format", + "__attribute__((__noreturn__))", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Ctrl_Quotes_Def fix */ tSCC zCtrl_Quotes_DefName[] = @@ -9034,9 +9069,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 264 +#define REGEX_COUNT 265 #define MACH_LIST_SIZE_LIMIT 181 -#define FIX_COUNT 222 +#define FIX_COUNT 223 /* * Enumerate the fixes @@ -9086,6 +9121,7 @@ typedef enum { BROKEN_CABS_FIXIDX, BROKEN_NAN_FIXIDX, BSD_STDIO_ATTRS_CONFLICT_FIXIDX, + CDEF_CPLUSPLUS_FIXIDX, CTRL_QUOTES_DEF_FIXIDX, CTRL_QUOTES_USE_FIXIDX, CXX_UNREADY_FIXIDX, @@ -9487,6 +9523,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { BSD_STDIO_ATTRS_CONFLICT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aBsd_Stdio_Attrs_ConflictTests, apzBsd_Stdio_Attrs_ConflictPatch, 0 }, + { zCdef_CplusplusName, zCdef_CplusplusList, + apzCdef_CplusplusMachs, + CDEF_CPLUSPLUS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aCdef_CplusplusTests, apzCdef_CplusplusPatch, 0 }, + { zCtrl_Quotes_DefName, zCtrl_Quotes_DefList, apzCtrl_Quotes_DefMachs, CTRL_QUOTES_DEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, diff --git a/fixincludes/genfixes b/fixincludes/genfixes index 6bc60d2..f186a50 100755 --- a/fixincludes/genfixes +++ b/fixincludes/genfixes @@ -62,7 +62,7 @@ fi AG="autogen $AG" set -e -if [ -z "`${AG} -v | fgrep 'Ver. 5.'`" ] +if [ -z "`${AG} -v | fgrep ' 5.'`" ] then echo "AutoGen appears to be out of date or not correctly installed." echo "Please download and install:" diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 0567bf4..b441dc1 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -1028,6 +1028,22 @@ fix = { test_text = '#define vfscanf __svfscanf'; }; +/* + * 'g++ -std=c++11' defines __cplusplus to 201103L, which suggests + * that it conforms to ISO/IEC 14882:2011. Until G++ fully conforms, + * it should not set __cplusplus to that value. It currently does + * not support the [[noreturn]] procedure attribute. + * When it does, this hack should be removed. + * SEE: gcc.gnu.org/bugzilla/show_bug.cgi?id=51776 + */ +fix = { + hackname = cdef_cplusplus; + files = sys/cdefs.h; + select = '\[\[noreturn\]\]'; + c_fix = format; + c_fix_arg = '__attribute__((__noreturn__))'; + test_text = "#define _Noreturn [[noreturn]]"; +}; /* * Fix various macros used to define ioctl numbers. diff --git a/fixincludes/tests/base/sys/cdefs.h b/fixincludes/tests/base/sys/cdefs.h index 6ccd0b7..e42df6f 100644 --- a/fixincludes/tests/base/sys/cdefs.h +++ b/fixincludes/tests/base/sys/cdefs.h @@ -9,6 +9,11 @@ +#if defined( CDEF_CPLUSPLUS_CHECK ) +#define _Noreturn __attribute__((__noreturn__)) +#endif /* CDEF_CPLUSPLUS_CHECK */ + + #if defined( FREEBSD_GCC3_BREAKAGE_CHECK ) #if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 #endif /* FREEBSD_GCC3_BREAKAGE_CHECK */ -- cgit v1.1