diff options
author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-04-22 12:56:47 +0000 |
---|---|---|
committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-04-22 12:56:47 +0000 |
commit | 030087e31b1253fb9ed6835a82e93a61ccc02493 (patch) | |
tree | e2bc6c7177a42d1b832555b60d0a854bcb834bd0 | |
parent | b4f314ea97f04620d290f3ae25d831f46692864f (diff) | |
parent | ac875fa40bf5429aff0612943d8c5705c4e11bb5 (diff) | |
download | gcc-030087e31b1253fb9ed6835a82e93a61ccc02493.tar.gz |
Merge from trunk.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/wide-int@209623 138bc75d-0d04-0410-961f-82ee72b054a4
260 files changed, 6983 insertions, 13324 deletions
diff --git a/ChangeLog b/ChangeLog index 5ddacbe6994..227698e6e17 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2014-04-21 Rafael Ávila de Espíndola <rafael.espindola@gmail.com> + + * MAINTAINERS (Write After Approval): Delete myself. + +2014-04-17 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56781 + * libtool-ldflags: Also prefix -static-lib*, -shared-lib* + and -B* options with -Xcompiler. + 2014-04-04 Eric Botcazou <ebotcazou@adacore.com> PR bootstrap/60620 diff --git a/MAINTAINERS b/MAINTAINERS index 620cb2f36dd..7183d0599bb 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -366,7 +366,6 @@ Phil Edwards pme@gcc.gnu.org Mohan Embar gnustuff@thisiscool.com Revital Eres eres@il.ibm.com Marc Espie espie@cvs.openbsd.org -Rafael Ávila de Espíndola espindola@google.com Ansgar Esztermann ansgar@thphy.uni-duesseldorf.de Doug Evans dje@google.com Chris Fairles cfairles@gcc.gnu.org diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 93906ca0ca8..4d98be736e5 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,11 @@ +2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config-list.mk (LIST): Remove sparc-sun-solaris2.9, i686-solaris2.9. + +2013-04-22 Jakub Jelinek <jakub@redhat.com> + + * gennews (files): Add files for GCC 4.9. + 2014-02-24 Walter Lee <walt@tilera.com> * config-list.mk (LIST): Add tilegxbe-linux-gnu. diff --git a/contrib/config-list.mk b/contrib/config-list.mk index 43454871da2..ddf24a286ef 100644 --- a/contrib/config-list.mk +++ b/contrib/config-list.mk @@ -75,7 +75,6 @@ LIST = aarch64-elf aarch64-linux-gnu \ x86_64-knetbsd-gnu x86_64-w64-mingw32 \ x86_64-mingw32OPT-enable-sjlj-exceptions=yes xstormy16-elf xtensa-elf \ xtensa-linux \ - sparc-sun-solaris2.9OPT-enable-obsolete i686-solaris2.9OPT-enable-obsolete \ i686-interix3OPT-enable-obsolete score-elfOPT-enable-obsolete LOGFILES = $(patsubst %,log/%-make.out,$(LIST)) diff --git a/contrib/gennews b/contrib/gennews index 962bef2f362..3f79b2fc7b3 100755 --- a/contrib/gennews +++ b/contrib/gennews @@ -3,8 +3,7 @@ # Script to generate the NEWS file from online release notes. # Contributed by Joseph Myers <jsm28@cam.ac.uk>. # -# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009, 2010, 2011, -# 2012 Free Software Foundation, Inc. +# Copyright (C) 2000-2014 Free Software Foundation, Inc. # This file is part of GCC. # # GCC is free software; you can redistribute it and/or modify @@ -24,6 +23,7 @@ website=http://gcc.gnu.org/ files=" + gcc-4.9/index.html gcc-4.9/changes.html gcc-4.8/index.html gcc-4.8/changes.html gcc-4.7/index.html gcc-4.7/changes.html gcc-4.6/index.html gcc-4.6/changes.html diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog index 9ba5ca9d94d..f7effee7893 100644 --- a/fixincludes/ChangeLog +++ b/fixincludes/ChangeLog @@ -1,3 +1,20 @@ +2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * inclhack.def (math_exception): Bypass on *-*-solaris2.1[0-9]*. + (solaris_int_types): Remove. + (solaris_longjmp_noreturn): Remove. + (solaris_mutex_init_2): Remove. + (solaris_once_init_2): Remove. + (solaris_sys_va_list): Remove. + * fixincl.x: Regenerate. + * tests/base/iso/setjmp_iso.h: Remove. + * tests/base/pthread.h [SOLARIS_MUTEX_INIT_2_CHECK]: Remove. + [SOLARIS_ONCE_INIT_1_CHECK]: Remove wrapping done by + solaris_once_init_2. + [SOLARIS_ONCE_INIT_2_CHECK]: Remove. + * tests/base/sys/int_types.h: Remove. + * tests/base/sys/va_list.h: Remove. + 2013-12-20 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> Makefile.in: Use $(FI) instead of fixincl@EXEEXT@. diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index 10b4061f30a..dd458023531 100644 --- a/fixincludes/fixincl.x +++ b/fixincludes/fixincl.x @@ -1,12 +1,12 @@ /* -*- buffer-read-only: t -*- vi: set ro: - * + * * DO NOT EDIT THIS FILE (fixincl.x) - * - * It has been AutoGen-ed December 8, 2013 at 12:24:14 PM by AutoGen 5.18.2 + * + * It has been AutoGen-ed Tuesday January 7, 2014 at 12:02:54 PM MET * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT SVN-MERGE THIS FILE, EITHER Sun Dec 8 12:24:14 PST 2013 +/* DO NOT SVN-MERGE THIS FILE, EITHER Tue Jan 7 12:02:54 MET 2014 * * 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 229 fixup descriptions. + * This file contains 224 fixup descriptions. * * See README for more information. * @@ -5264,7 +5264,9 @@ tSCC zMath_ExceptionList[] = /* * Machine/OS name selection pattern */ -#define apzMath_ExceptionMachs (const char**)NULL +tSCC* apzMath_ExceptionMachs[] = { + "*-*-solaris2.1[0-9]*", + (const char*)NULL }; /* * content selection pattern - do fix if pattern found @@ -6589,92 +6591,6 @@ static const char* apzSolaris_Int_Limits_3Patch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Solaris_Int_Types fix - */ -tSCC zSolaris_Int_TypesName[] = - "solaris_int_types"; - -/* - * File name selection pattern - */ -tSCC zSolaris_Int_TypesList[] = - "sys/int_types.h\0"; -/* - * Machine/OS name selection pattern - */ -#define apzSolaris_Int_TypesMachs (const char**)NULL - -/* - * content selection pattern - do fix if pattern found - */ -tSCC zSolaris_Int_TypesSelect0[] = - "__STDC__ - 0 == 0"; - -/* - * content bypass pattern - skip fix if pattern found - */ -tSCC zSolaris_Int_TypesBypass0[] = - "_LONGLONG_TYPE"; - -#define SOLARIS_INT_TYPES_TEST_CT 2 -static tTestDesc aSolaris_Int_TypesTests[] = { - { TT_NEGREP, zSolaris_Int_TypesBypass0, (regex_t*)NULL }, - { TT_EGREP, zSolaris_Int_TypesSelect0, (regex_t*)NULL }, }; - -/* - * Fix Command Arguments for Solaris_Int_Types - */ -static const char* apzSolaris_Int_TypesPatch[] = { - "format", - "(defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__))", - (char*)NULL }; - -/* * * * * * * * * * * * * * * * * * * * * * * * * * - * - * Description of Solaris_Longjmp_Noreturn fix - */ -tSCC zSolaris_Longjmp_NoreturnName[] = - "solaris_longjmp_noreturn"; - -/* - * File name selection pattern - */ -tSCC zSolaris_Longjmp_NoreturnList[] = - "iso/setjmp_iso.h\0"; -/* - * Machine/OS name selection pattern - */ -tSCC* apzSolaris_Longjmp_NoreturnMachs[] = { - "*-*-solaris2*", - (const char*)NULL }; - -/* - * content selection pattern - do fix if pattern found - */ -tSCC zSolaris_Longjmp_NoreturnSelect0[] = - "(.*longjmp\\(jmp_buf.*[^)]+\\));"; - -/* - * content bypass pattern - skip fix if pattern found - */ -tSCC zSolaris_Longjmp_NoreturnBypass0[] = - "__NORETURN"; - -#define SOLARIS_LONGJMP_NORETURN_TEST_CT 2 -static tTestDesc aSolaris_Longjmp_NoreturnTests[] = { - { TT_NEGREP, zSolaris_Longjmp_NoreturnBypass0, (regex_t*)NULL }, - { TT_EGREP, zSolaris_Longjmp_NoreturnSelect0, (regex_t*)NULL }, }; - -/* - * Fix Command Arguments for Solaris_Longjmp_Noreturn - */ -static const char* apzSolaris_Longjmp_NoreturnPatch[] = { - "format", - "%1 __attribute__ ((__noreturn__));", - (char*)NULL }; - -/* * * * * * * * * * * * * * * * * * * * * * * * * * - * * Description of Solaris_Math_1 fix */ tSCC zSolaris_Math_1Name[] = @@ -6977,50 +6893,6 @@ static const char* apzSolaris_Math_9Patch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Solaris_Mutex_Init_2 fix - */ -tSCC zSolaris_Mutex_Init_2Name[] = - "solaris_mutex_init_2"; - -/* - * File name selection pattern - */ -tSCC zSolaris_Mutex_Init_2List[] = - "pthread.h\0"; -/* - * Machine/OS name selection pattern - */ -tSCC* apzSolaris_Mutex_Init_2Machs[] = { - "*-*-solaris2.[0-9]", - "*-*-solaris2.[0-9][!0-9]*", - (const char*)NULL }; - -/* - * content selection pattern - do fix if pattern found - */ -tSCC zSolaris_Mutex_Init_2Select0[] = - "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; - -#define SOLARIS_MUTEX_INIT_2_TEST_CT 1 -static tTestDesc aSolaris_Mutex_Init_2Tests[] = { - { TT_EGREP, zSolaris_Mutex_Init_2Select0, (regex_t*)NULL }, }; - -/* - * Fix Command Arguments for Solaris_Mutex_Init_2 - */ -static const char* apzSolaris_Mutex_Init_2Patch[] = { - "format", - "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n\ -%0\n\ -#else\n\ -%1, {0}}%4\n\ -#endif", - "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+(|/*.**/[ \t]*\\\\\n\ -[ \t]*)\\{.*),[ \t]*0\\}(|[ \t].*)$", - (char*)NULL }; - -/* * * * * * * * * * * * * * * * * * * * * * * * * * - * * Description of Solaris_Once_Init_1 fix */ tSCC zSolaris_Once_Init_1Name[] = @@ -7059,49 +6931,6 @@ static const char* apzSolaris_Once_Init_1Patch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Solaris_Once_Init_2 fix - */ -tSCC zSolaris_Once_Init_2Name[] = - "solaris_once_init_2"; - -/* - * File name selection pattern - */ -tSCC zSolaris_Once_Init_2List[] = - "pthread.h\0"; -/* - * Machine/OS name selection pattern - */ -tSCC* apzSolaris_Once_Init_2Machs[] = { - "*-*-solaris2.[0-9]", - "*-*-solaris2.[0-9][!0-9]*", - (const char*)NULL }; - -/* - * content selection pattern - do fix if pattern found - */ -tSCC zSolaris_Once_Init_2Select0[] = - "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; - -#define SOLARIS_ONCE_INIT_2_TEST_CT 1 -static tTestDesc aSolaris_Once_Init_2Tests[] = { - { TT_EGREP, zSolaris_Once_Init_2Select0, (regex_t*)NULL }, }; - -/* - * Fix Command Arguments for Solaris_Once_Init_2 - */ -static const char* apzSolaris_Once_Init_2Patch[] = { - "format", - "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n\ -%0\n\ -#else\n\ -%1{0}, {0}, {0}, {%3}%4\n\ -#endif", - "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{\\{)(0, 0, 0, )(PTHREAD_[A-Z_]+)(\\}\\})[ \t]*$", - (char*)NULL }; - -/* * * * * * * * * * * * * * * * * * * * * * * * * * - * * Description of Solaris_Posix_Spawn_Restrict fix */ tSCC zSolaris_Posix_Spawn_RestrictName[] = @@ -7311,51 +7140,6 @@ static const char* apzSolaris_Stdio_TagPatch[] = { sed_cmd_z, /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Solaris_Sys_Va_List fix - */ -tSCC zSolaris_Sys_Va_ListName[] = - "solaris_sys_va_list"; - -/* - * File name selection pattern - */ -tSCC zSolaris_Sys_Va_ListList[] = - "sys/va_list.h\0"; -/* - * Machine/OS name selection pattern - */ -tSCC* apzSolaris_Sys_Va_ListMachs[] = { - "*-*-solaris2.9", - (const char*)NULL }; - -/* - * content selection pattern - do fix if pattern found - */ -tSCC zSolaris_Sys_Va_ListSelect0[] = - "#if.*__STDC__.*\n\ -typedef void \\*__va_list;\n\ -#else\n\ -typedef char \\*__va_list;\n\ -#endif"; - -#define SOLARIS_SYS_VA_LIST_TEST_CT 1 -static tTestDesc aSolaris_Sys_Va_ListTests[] = { - { TT_EGREP, zSolaris_Sys_Va_ListSelect0, (regex_t*)NULL }, }; - -/* - * Fix Command Arguments for Solaris_Sys_Va_List - */ -static const char* apzSolaris_Sys_Va_ListPatch[] = { - "format", - "#ifdef __GNUC__\n\ -typedef __builtin_va_list __va_list;\n\ -#else\n\ -%0\n\ -#endif", - (char*)NULL }; - -/* * * * * * * * * * * * * * * * * * * * * * * * * * - * * Description of Statsswtch fix */ tSCC zStatsswtchName[] = @@ -9403,9 +9187,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 268 +#define REGEX_COUNT 261 #define MACH_LIST_SIZE_LIMIT 187 -#define FIX_COUNT 229 +#define FIX_COUNT 224 /* * Enumerate the fixes @@ -9570,8 +9354,6 @@ typedef enum { SOLARIS_INT_LIMITS_1_FIXIDX, SOLARIS_INT_LIMITS_2_FIXIDX, SOLARIS_INT_LIMITS_3_FIXIDX, - SOLARIS_INT_TYPES_FIXIDX, - SOLARIS_LONGJMP_NORETURN_FIXIDX, SOLARIS_MATH_1_FIXIDX, SOLARIS_MATH_10_FIXIDX, SOLARIS_MATH_2_FIXIDX, @@ -9579,15 +9361,12 @@ typedef enum { SOLARIS_MATH_4_FIXIDX, SOLARIS_MATH_8_FIXIDX, SOLARIS_MATH_9_FIXIDX, - SOLARIS_MUTEX_INIT_2_FIXIDX, SOLARIS_ONCE_INIT_1_FIXIDX, - SOLARIS_ONCE_INIT_2_FIXIDX, SOLARIS_POSIX_SPAWN_RESTRICT_FIXIDX, SOLARIS_POW_INT_OVERLOAD_FIXIDX, SOLARIS_RWLOCK_INIT_1_FIXIDX, SOLARIS_STD___FILBUF_FIXIDX, SOLARIS_STDIO_TAG_FIXIDX, - SOLARIS_SYS_VA_LIST_FIXIDX, STATSSWTCH_FIXIDX, STDIO_STDARG_H_FIXIDX, STDIO_VA_LIST_FIXIDX, @@ -10270,7 +10049,7 @@ tFixDesc fixDescList[ FIX_COUNT ] = { { zMath_ExceptionName, zMath_ExceptionList, apzMath_ExceptionMachs, - MATH_EXCEPTION_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + MATH_EXCEPTION_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE, aMath_ExceptionTests, apzMath_ExceptionPatch, 0 }, { zMath_Huge_Val_From_Dbl_MaxName, zMath_Huge_Val_From_Dbl_MaxList, @@ -10438,16 +10217,6 @@ tFixDesc fixDescList[ FIX_COUNT ] = { SOLARIS_INT_LIMITS_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aSolaris_Int_Limits_3Tests, apzSolaris_Int_Limits_3Patch, 0 }, - { zSolaris_Int_TypesName, zSolaris_Int_TypesList, - apzSolaris_Int_TypesMachs, - SOLARIS_INT_TYPES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aSolaris_Int_TypesTests, apzSolaris_Int_TypesPatch, 0 }, - - { zSolaris_Longjmp_NoreturnName, zSolaris_Longjmp_NoreturnList, - apzSolaris_Longjmp_NoreturnMachs, - SOLARIS_LONGJMP_NORETURN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aSolaris_Longjmp_NoreturnTests, apzSolaris_Longjmp_NoreturnPatch, 0 }, - { zSolaris_Math_1Name, zSolaris_Math_1List, apzSolaris_Math_1Machs, SOLARIS_MATH_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, @@ -10483,21 +10252,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { SOLARIS_MATH_9_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aSolaris_Math_9Tests, apzSolaris_Math_9Patch, 0 }, - { zSolaris_Mutex_Init_2Name, zSolaris_Mutex_Init_2List, - apzSolaris_Mutex_Init_2Machs, - SOLARIS_MUTEX_INIT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aSolaris_Mutex_Init_2Tests, apzSolaris_Mutex_Init_2Patch, 0 }, - { zSolaris_Once_Init_1Name, zSolaris_Once_Init_1List, apzSolaris_Once_Init_1Machs, SOLARIS_ONCE_INIT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aSolaris_Once_Init_1Tests, apzSolaris_Once_Init_1Patch, 0 }, - { zSolaris_Once_Init_2Name, zSolaris_Once_Init_2List, - apzSolaris_Once_Init_2Machs, - SOLARIS_ONCE_INIT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aSolaris_Once_Init_2Tests, apzSolaris_Once_Init_2Patch, 0 }, - { zSolaris_Posix_Spawn_RestrictName, zSolaris_Posix_Spawn_RestrictList, apzSolaris_Posix_Spawn_RestrictMachs, SOLARIS_POSIX_SPAWN_RESTRICT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, @@ -10523,11 +10282,6 @@ tFixDesc fixDescList[ FIX_COUNT ] = { SOLARIS_STDIO_TAG_TEST_CT, FD_MACH_ONLY, aSolaris_Stdio_TagTests, apzSolaris_Stdio_TagPatch, 0 }, - { zSolaris_Sys_Va_ListName, zSolaris_Sys_Va_ListList, - apzSolaris_Sys_Va_ListMachs, - SOLARIS_SYS_VA_LIST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aSolaris_Sys_Va_ListTests, apzSolaris_Sys_Va_ListPatch, 0 }, - { zStatsswtchName, zStatsswtchList, apzStatsswtchMachs, STATSSWTCH_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 411300fb2e0..6a1136ce557 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -2767,6 +2767,9 @@ fix = { */ bypass = 'We have a problem when using C\+\+|for C\+\+, ' '_[a-z0-9A-Z_]+_exception; for C, exception'; + /* The Solaris 10 headers already get this right. */ + mach = '*-*-solaris2.1[0-9]*'; + not_machine = true; c_fix = wrap; c_fix_arg = "#ifdef __cplusplus\n" @@ -3407,42 +3410,6 @@ fix = { }; /* - * Sun Solaris up to 9 has a version of sys/int_types.h that forbids use - * of Standard C99 64-bit types in 32-bit mode. - */ -fix = { - hackname = solaris_int_types; - select = "__STDC__ - 0 == 0"; - bypass = "_LONGLONG_TYPE"; - files = sys/int_types.h; - c_fix = format; - c_fix_arg = - "(defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__))"; - test_text = - "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" - "typedef long long int64_t;\n" - "#endif\n\n" - "#if defined(_LP64) || (__STDC__ - 0 == 0 && !defined(_NO_LONGLONG))\n" - "typedef int64_t intmax_t;\n" - "#endif"; -}; - -/* - * Before Solaris 10, <iso/setjmp_iso.h> doesn't mark longjump noreturn. - */ -fix = { - hackname = solaris_longjmp_noreturn; - mach = "*-*-solaris2*"; - files = "iso/setjmp_iso.h"; - bypass = "__NORETURN"; - select = "(.*longjmp\\(jmp_buf.*[^)]+\\));"; - c_fix = format; - c_fix_arg = "%1 __attribute__ ((__noreturn__));"; - - test_text = "extern void longjmp(jmp_buf, int);"; -}; - -/* * Sun Solaris 10 defines several C99 math macros in terms of * builtins specific to the Studio compiler, in particular not * compatible with the GNU compiler. @@ -3595,44 +3562,6 @@ fix = { }; /* - * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing - * "0" for the last field of the pthread_mutex_t structure, which is - * of type upad64_t, which itself is typedef'd to int64_t, but with - * __STDC__ defined (e.g. by -ansi) it is a union. So change the - * initializer to "{0}" instead - */ -fix = { - hackname = solaris_mutex_init_2; - select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; - files = pthread.h; - /* - * On Solaris 10, this fix is unnecessary because upad64_t is - * always defined correctly regardless of the definition of the - * __STDC__ macro. The first "mach" pattern matches up to - * solaris9. The second "mach" pattern will not match any two (or - * more) digit solaris version, but it will match e.g. 2.5.1. - */ - mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*'; - c_fix = format; - c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" - "%0\n" - "#else\n" - "%1, {0}}%4\n" - "#endif"; - c_fix_arg = "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+" - "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)" - ",[ \t]*0\\}" "(|[ \t].*)$"; - test_text = - '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" - "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n" - "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n" - "#define PTHREAD_MUTEX_INITIALIZER /* = DEFAULTMUTEX */ \\\\\n" - " {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0}\n" - "#define PTHREAD_COND_INITIALIZER /* = DEFAULTCV */ \\\\\n" - " {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0}"; -}; - -/* * Sun Solaris defines PTHREAD_ONCE_INIT as an array containing a * structure. As such, it need two levels of brackets, but only * contains one. Wrap the macro definition in an extra layer. @@ -3651,38 +3580,6 @@ fix = { }; /* - * Sun Solaris defines PTHREAD_ONCE_INIT with a "0" for some - * fields of the pthread_once_t structure, which are of type - * upad64_t, which itself is typedef'd to int64_t, but with __STDC__ - * defined (e.g. by -ansi) it is a union. So change the initializer - * to "{0}" instead. This test relies on solaris_once_init_1. - */ -fix = { - hackname = solaris_once_init_2; - select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; - files = pthread.h; - /* - * On Solaris 10, this fix is unnecessary because upad64_t is - * always defined correctly regardless of the definition of the - * __STDC__ macro. The first "mach" pattern matches up to - * solaris9. The second "mach" pattern will not match any two (or - * more) digit solaris version, but it will match e.g. 2.5.1. - */ - mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*'; - c_fix = format; - c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" - "%0\n" - "#else\n" - "%1{0}, {0}, {0}, {%3}%4\n" - "#endif"; - c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{\\{)" - "(0, 0, 0, )(PTHREAD_[A-Z_]+)(\\}\\})[ \t]*$"; - test_text = - '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" - "#define PTHREAD_ONCE_INIT\t{{0, 0, 0, PTHREAD_ONCE_NOTDONE}}\n"; -}; - -/* * Solaris 10+ <spawn.h> uses char *const argv[_RESTRICT_KYWD] in the * posix_spawn declarations, which doesn't work with C++. */ @@ -3780,33 +3677,6 @@ fix = { }; /* - * On Solaris 9, __va_list needs to become a typedef for - * __builtin_va_list to make -Wmissing-format-attribute work. - */ -fix = { - hackname = solaris_sys_va_list; - files = sys/va_list.h; - mach = '*-*-solaris2.9'; - select = "#if.*__STDC__.*\n" - "typedef void \\*__va_list;\n" - "#else\n" - "typedef char \\*__va_list;\n" - "#endif"; - - c_fix = format; - c_fix_arg = "#ifdef __GNUC__\n" - "typedef __builtin_va_list __va_list;\n" - "#else\n" - "%0\n" - "#endif"; - test_text = "#if defined(__STDC__) && !defined(__ia64)\n" - "typedef void *__va_list;\n" - "#else\n" - "typedef char *__va_list;\n" - "#endif"; -}; - -/* * a missing semi-colon at the end of the statsswtch structure definition. */ fix = { diff --git a/fixincludes/tests/base/iso/setjmp_iso.h b/fixincludes/tests/base/iso/setjmp_iso.h deleted file mode 100644 index 4cf872007cf..00000000000 --- a/fixincludes/tests/base/iso/setjmp_iso.h +++ /dev/null @@ -1,14 +0,0 @@ -/* DO NOT EDIT THIS FILE. - - It has been auto-edited by fixincludes from: - - "fixinc/tests/inc/iso/setjmp_iso.h" - - This had to be done to correct non-standard usages in the - original, manufacturer supplied header file. */ - - - -#if defined( SOLARIS_LONGJMP_NORETURN_CHECK ) -extern void longjmp(jmp_buf, int) __attribute__ ((__noreturn__)); -#endif /* SOLARIS_LONGJMP_NORETURN_CHECK */ diff --git a/fixincludes/tests/base/pthread.h b/fixincludes/tests/base/pthread.h index c39cd9472dd..5df290965a4 100644 --- a/fixincludes/tests/base/pthread.h +++ b/fixincludes/tests/base/pthread.h @@ -96,56 +96,12 @@ extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask); #endif /* PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_CHECK */ -#if defined( SOLARIS_MUTEX_INIT_2_CHECK ) -#ident "@(#)pthread.h 1.26 98/04/12 SMI" -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, 0} -#else -#define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, {0}} -#endif -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_COND_INITIALIZER {{{0}, 0}, 0} /* DEFAULTCV */ -#else -#define PTHREAD_COND_INITIALIZER {{{0}, 0}, {0}} /* DEFAULTCV */ -#endif -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_MUTEX_INITIALIZER /* = DEFAULTMUTEX */ \ - {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0} -#else -#define PTHREAD_MUTEX_INITIALIZER /* = DEFAULTMUTEX */ \ - {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, {0}} -#endif -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_COND_INITIALIZER /* = DEFAULTCV */ \ - {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0} -#else -#define PTHREAD_COND_INITIALIZER /* = DEFAULTCV */ \ - {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, {0}} -#endif -#endif /* SOLARIS_MUTEX_INIT_2_CHECK */ - - #if defined( SOLARIS_ONCE_INIT_1_CHECK ) #pragma ident "@(#)pthread.h 1.37 04/09/28 SMI" -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) #define PTHREAD_ONCE_INIT {{0, 0, 0, PTHREAD_ONCE_NOTDONE}} -#else -#define PTHREAD_ONCE_INIT {{{0}, {0}, {0}, {PTHREAD_ONCE_NOTDONE}}} -#endif #endif /* SOLARIS_ONCE_INIT_1_CHECK */ -#if defined( SOLARIS_ONCE_INIT_2_CHECK ) -#ident "@(#)pthread.h 1.26 98/04/12 SMI" -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_ONCE_INIT {{0, 0, 0, PTHREAD_ONCE_NOTDONE}} -#else -#define PTHREAD_ONCE_INIT {{{0}, {0}, {0}, {PTHREAD_ONCE_NOTDONE}}} -#endif - -#endif /* SOLARIS_ONCE_INIT_2_CHECK */ - - #if defined( SOLARIS_RWLOCK_INIT_1_CHECK ) #ident "@(#)pthread.h 1.26 98/04/12 SMI" #if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) diff --git a/fixincludes/tests/base/sys/int_types.h b/fixincludes/tests/base/sys/int_types.h deleted file mode 100644 index 39bb68acd78..00000000000 --- a/fixincludes/tests/base/sys/int_types.h +++ /dev/null @@ -1,20 +0,0 @@ -/* DO NOT EDIT THIS FILE. - - It has been auto-edited by fixincludes from: - - "fixinc/tests/inc/sys/int_types.h" - - This had to be done to correct non-standard usages in the - original, manufacturer supplied header file. */ - - - -#if defined( SOLARIS_INT_TYPES_CHECK ) -#if (defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__)) && !defined(_NO_LONGLONG) -typedef long long int64_t; -#endif - -#if defined(_LP64) || ((defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__)) && !defined(_NO_LONGLONG)) -typedef int64_t intmax_t; -#endif -#endif /* SOLARIS_INT_TYPES_CHECK */ diff --git a/fixincludes/tests/base/sys/va_list.h b/fixincludes/tests/base/sys/va_list.h deleted file mode 100644 index 8c69e2d574b..00000000000 --- a/fixincludes/tests/base/sys/va_list.h +++ /dev/null @@ -1,22 +0,0 @@ -/* DO NOT EDIT THIS FILE. - - It has been auto-edited by fixincludes from: - - "fixinc/tests/inc/sys/va_list.h" - - This had to be done to correct non-standard usages in the - original, manufacturer supplied header file. */ - - - -#if defined( SOLARIS_SYS_VA_LIST_CHECK ) -#ifdef __GNUC__ -typedef __builtin_va_list __va_list; -#else -#if defined(__STDC__) && !defined(__ia64) -typedef void *__va_list; -#else -typedef char *__va_list; -#endif -#endif -#endif /* SOLARIS_SYS_VA_LIST_CHECK */ diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1d89cebbae7..3a46e6f66b8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,405 @@ +2014-04-22 Richard Sandiford <rdsandiford@googlemail.com> + + * machmode.h (bitwise_mode_for_mode): Declare. + * stor-layout.h (bitwise_type_for_mode): Likewise. + * stor-layout.c (bitwise_mode_for_mode): New function. + (bitwise_type_for_mode): Likewise. + * builtins.c (fold_builtin_memory_op): Use it instead of + int_mode_for_mode and build_nonstandard_integer_type. + +2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config.gcc (enable_obsolete): Remove *-*-solaris2.9*. + (*-*-solaris2.[0-9] | *-*-solaris2.[0-9].*): Mark unsupported. + (*-*-solaris2*): Simplify. + (i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*): Likewise. + (i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*): Remove + *-*-solaris2.9* handling. + + * configure.ac (gcc_cv_as_hidden): Remove test for Solaris 9/x86 + as bug. + (gcc_cv_ld_hidden): Remove *-*-solaris2.9* handling. + (ld_tls_support): Remove i?86-*-solaris2.9, sparc*-*-solaris2.9 + handling, simplify. + (gcc_cv_as_gstabs_flag): Remove workaround for Solaris 9/x86 as bug. + * configure: Regenerate. + + * config/i386/sol2-9.h: Remove. + + * doc/install.texi (Specific, i?86-*-solaris2.9): Remove. + (Specific, *-*-solaris2*): Mention Solaris 9 support removal. + Remove Solaris 9 references. + +2014-04-22 Vidya Praveen <vidyapraveen@arm.com> + + * aarch64.md (float<GPI:mode><GPF:mode>2): Remove. + (floatuns<GPI:mode><GPF:mode>2): Remove. + (<optab><fcvt_target><GPF:mode>2): New pattern for equal width float + and floatuns conversions. + (<optab><fcvt_iesize><GPF:mode>2): New pattern for inequal width float + and floatuns conversions. + * iterators.md (fcvt_target, FCVT_TARGET): Support SF and DF modes. + (w1,w2): New mode attributes for inequal width conversions. + +2014-04-22 Renlin Li <Renlin.Li@arm.com> + + * config/aarch64/aarch64.c (aarch64_print_operand_address): Adjust + the output asm format. + +2014-04-22 James Greenhalgh <james.greenhalgh@arm.com> + + * config/aarch64/aarch64-simd.md + (aarch64_cm<optab>di): Always split. + (*aarch64_cm<optab>di): New. + (aarch64_cmtstdi): Always split. + (*aarch64_cmtstdi): New. + +2014-04-22 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/60823 + * omp-low.c (ipa_simd_modify_function_body): Go through + all SSA_NAMEs and for those refering to vector arguments + which are going to be replaced adjust SSA_NAME_VAR and, + if it is a default definition, change it into a non-default + definition assigned at the beginning of function from new_decl. + (ipa_simd_modify_stmt_ops): Rewritten. + * tree-dfa.c (set_ssa_default_def): When removing default def, + check for NULL loc instead of NULL *loc. + +2014-04-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + + * config/arm/arm.c (arm_hard_regno_mode_ok): Loosen + restrictions on core registers for DImode values in Thumb2. + +2014-04-22 Ian Bolton <ian.bolton@arm.com> + + * config/arm/arm.md (*anddi_notdi_zesidi): New pattern. + * config/arm/thumb2.md (*iordi_notdi_zesidi): New pattern. + +2014-04-22 Ian Bolton <ian.bolton@arm.com> + + * config/arm/thumb2.md (*iordi_notdi_di): New pattern. + (*iordi_notzesidi_di): Likewise. + (*iordi_notsesidi_di): Likewise. + +2014-04-22 Ian Bolton <ian.bolton@arm.com> + + * config/arm/arm-protos.h (tune_params): New struct members. + * config/arm/arm.c: Initialise tune_params per processor. + (thumb2_reorg): Suppress conversion from t32 to t16 when optimizing + for speed, based on new tune_params. + +2014-04-22 Alex Velenko <Alex.Velenko@arm.com> + + * config/aarch64/aarch64-builtins.c (BUILTIN_VDQF_DF): Macro + added. + * config/aarch64/aarch64-simd-builtins.def (frintn): Use added + macro. + * config/aarch64/aarch64-simd.md (<frint_pattern>): Comment + corrected. + * config/aarch64/aarch64.md (<frint_pattern>): Likewise. + * config/aarch64/arm_neon.h (vrnd_f64): Added. + (vrnda_f64): Likewise. + (vrndi_f64): Likewise. + (vrndm_f64): Likewise. + (vrndn_f64): Likewise. + (vrndp_f64): Likewise. + (vrndx_f64): Likewise. + +2014-04-22 Zhenqiang Chen <zhenqiang.chen@linaro.org> + + * config/arm/arm.c (arm_print_operand, thumb_exit): Make sure + GET_MODE_SIZE argument is enum machine_mode. + +2014-04-22 Jakub Jelinek <jakub@redhat.com> + + PR target/60910 + * config/sparc/sparc.c (sparc_init_modes): Pass enum machine_mode + value instead of int to GET_MODE_CLASS and GET_MODE_SIZE macros. + +2014-04-22 Lin Zuojian <manjian2006@gmail.com> + + PR middle-end/60281 + * asan.c (asan_emit_stack_protection): Force the base to align to + appropriate bits if STRICT_ALIGNMENT. Set shadow_mem align to + appropriate bits if STRICT_ALIGNMENT. + * cfgexpand.c (expand_stack_vars): Set base_align appropriately + when asan is on. + (expand_used_vars): Leave a space in the stack frame for alignment + if STRICT_ALIGNMENT. + +2014-04-21 David Malcolm <dmalcolm@redhat.com> + + * gimple.h (gimple_assign_single_p): Accept a const_gimple rather + than a gimple. + (gimple_store_p): Likewise. + (gimple_assign_load_p): Likewise. + (gimple_assign_cast_p): Likewise. + (gimple_clobber_p): Likewise. + + * doc/gimple.texi (gimple_assign_cast_p): Accept a const_gimple + rather than a gimple. + (gimple_assign_cast_p): Likewise. + +2014-04-21 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/60735 + * config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64 case): + If mode is DDmode and TARGET_E500_DOUBLE allow move. + + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print some + more debug information for E500 if -mdebug=reg. + +2014-04-21 Uros Bizjak <ubizjak@gmail.com> + + PR target/60909 + * config/i386/i386.c (ix86_expand_builtin) + <case IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Use temporary + register for target RTX. + <case IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Ditto. + +2014-04-18 Cong Hou <congh@google.com> + + * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Enhance + the widen-mult pattern by handling two operands with different sizes, + and operands whose size is smaller than half of the result type. + +2014-04-18 Jan Hubicka <hubicka@ucw.cz> + + * ipa-inline.h (INLINE_HINT_known_hot): New hint. + * ipa-inline-analysis.c (dump_inline_hints): Dump it. + (do_estimate_edge_time): Compute it. + * ipa-inline.c (want_inline_small_function_p): Bypass + INLINE_INSNS_AUTO/SINGLE limits for calls that are known to be hot. + +2014-04-18 Jan Hubicka <hubicka@ucw.cz> + + * ipa-inline.c (spec_rem): New static variable. + (dump_overall_stats): New function. + (dump_inline_stats): New function. + +2014-04-18 Richard Henderson <rth@redhat.com> + + * config/aarch64/aarch64.c (aarch64_register_move_cost): Pass a mode + to GET_MODE_SIZE, not a reg_class_t. + +2014-04-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + + * config/rs6000/vsx.md (vsx_xxmrghw_<mode>): Adjust for little-endian. + (vsx_xxmrglw_<mode>): Likewise. + +2014-04-17 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/60876 + * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Make sure + GET_MODE_SIZE gets passed an enum machine_mode type and not integer. + (rs6000_init_hard_regno_mode_ok): Likewise. + +2014-04-17 Jan Hubicka <hubicka@ucw.cz> + + * ipa-inline.c (inline_small_functions): Account only non-cold + functions. + * doc/invoke.texi (inline-unit-growth): Update documentation. + +2014-04-17 Pat Haugen <pthaugen@us.ibm.com> + + * config/rs6000/rs6000.md (addti3, subti3): New. + +2014-04-17 H.J. Lu <hongjiu.lu@intel.com> + + PR target/60863 + * config/i386/i386.c (ix86_expand_clear): Remove outdated + comment. Check optimize_insn_for_size_p instead of + optimize_insn_for_speed_p. + +2014-04-17 Martin Jambor <mjambor@suse.cz> + + * gimple-iterator.c (gsi_start_edge): New function. + * gimple-iterator.h (gsi_start_edge): Declare. + * tree-sra.c (single_non_eh_succ): New function. + (disqualify_ops_if_throwing_stmt): Renamed to + disqualify_if_bad_bb_terminating_stmt. Allow throwing statements + having one non-EH successor BB. + (sra_modify_expr): If stmt ends bb, use single non-EH successor to + generate loads into replacements. + (sra_modify_assign): Likewise and and also use the simple path for + such statements. + (sra_modify_function_body): Commit statements on edges. + +2014-04-17 Richard Biener <rguenther@suse.de> + + PR middle-end/60849 + * tree-ssa-propagate.c (valid_gimple_rhs_p): Allow vector + comparison results and add clarifying comment. + +2014-04-17 Jakub Jelinek <jakub@redhat.com> + + * genmodes.c (struct mode_data): Add need_bytesize_adj field. + (blank_mode): Initialize it. + (emit_mode_size_inline, emit_mode_nunits_inline, + emit_mode_inner_inline): New functions. + (emit_insn_modes_h): Call them and surround their output with + #if GCC_VERSION >= 4001 ... #endif. + * machmode.h (GET_MODE_SIZE, GET_MODE_NUNITS, GET_MODE_INNER): + For GCC_VERSION >= 4001 use mode_*_inline routines instead of + mode_* arrays if the argument is __builtin_constant_p. + * lower-subreg.c (dump_choices): Make sure GET_MODE_SIZE argument + is enum machine_mode. + +2014-04-17 Trevor Saunders <tsaunders@mozilla.com> + + * passes.c (opt_pass::execute): Adjust. + (pass_manager::execute_pass_mode_switching): Likewise. + (early_local_passes::execute): Likewise. + (execute_one_pass): Pass cfun to the pass's execute method. + * tree-pass.h (opt_pass::execute): Add function * argument. + * asan.c, auto-inc-dec.c, bb-reorder.c, bt-load.c, cfgcleanup.c, + cfgexpand.c, cfgrtl.c, cgraphbuild.c, combine-stack-adj.c, combine.c, + compare-elim.c, config/arc/arc.c, config/epiphany/mode-switch-use.c, + config/epiphany/resolve-sw-modes.c, config/i386/i386.c, + config/mips/mips.c, config/rl78/rl78.c, config/s390/s390.c, + config/sparc/sparc.c, cprop.c, dce.c, df-core.c, dse.c, dwarf2cfi.c, + except.c, final.c, function.c, fwprop.c, gcse.c, gimple-low.c, + gimple-ssa-isolate-paths.c, gimple-ssa-strength-reduction.c, + graphite.c, ifcvt.c, init-regs.c, ipa-cp.c, ipa-devirt.c, + ipa-inline-analysis.c, ipa-inline.c, ipa-profile.c, ipa-pure-const.c, + ipa-reference.c, ipa-split.c, ipa.c, ira.c, jump.c, loop-init.c, + lower-subreg.c, mode-switching.c, omp-low.c, postreload-gcse.c, + postreload.c, predict.c, recog.c, ree.c, reg-stack.c, regcprop.c, + reginfo.c, regrename.c, reorg.c, sched-rgn.c, stack-ptr-mod.c, + store-motion.c, tracer.c, trans-mem.c, tree-call-cdce.c, tree-cfg.c, + tree-cfgcleanup.c, tree-complex.c, tree-eh.c, tree-emutls.c, + tree-if-conv.c, tree-into-ssa.c, tree-loop-distribution.c, tree-nrv.c, + tree-object-size.c, tree-parloops.c, tree-predcom.c, tree-ssa-ccp.c, + tree-ssa-copy.c, tree-ssa-copyrename.c, tree-ssa-dce.c, + tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c, + tree-ssa-ifcombine.c, tree-ssa-loop-ch.c, tree-ssa-loop-im.c, + tree-ssa-loop-ivcanon.c, tree-ssa-loop-prefetch.c, + tree-ssa-loop-unswitch.c, tree-ssa-loop.c, tree-ssa-math-opts.c, + tree-ssa-phiopt.c, tree-ssa-phiprop.c, tree-ssa-pre.c, + tree-ssa-reassoc.c, tree-ssa-sink.c, tree-ssa-strlen.c, + tree-ssa-structalias.c, tree-ssa-uncprop.c, tree-ssa-uninit.c, + tree-ssa.c, tree-ssanames.c, tree-stdarg.c, tree-switch-conversion.c, + tree-tailcall.c, tree-vect-generic.c, tree-vectorizer.c, tree-vrp.c, + tree.c, tsan.c, ubsan.c, var-tracking.c, vtable-verify.c, web.c: + Adjust. + +2014-04-17 Trevor Saunders <tsaunders@mozilla.com> + + * passes.c (opt_pass::gate): Take function * argument. + (gate_all_early_local_passes): Merge into + (early_local_passes::gate): this. + (gate_all_early_optimizations): Merge into + (all_early_optimizations::gate): this. + (gate_all_optimizations): Mege into + (all_optimizations::gate): this. + (gate_all_optimizations_g): Merge into + (all_optimizations_g::gate): this. + (gate_rest_of_compilation): Mege into + (rest_of_compilation::gate): this. + (gate_postreload): Merge into + (postreload::gate): this. + (dump_one_pass): Pass cfun to the pass's gate method. + (execute_ipa_summary_passes): Likewise. + (execute_one_pass): Likewise. + (ipa_write_summaries_2): Likewise. + (ipa_write_optimization_summaries_1): Likewise. + (ipa_read_summaries_1): Likewise. + (ipa_read_optimization_summaries_1): Likewise. + (execute_ipa_stmt_fixups): Likewise. + * tree-pass.h (opt_pass::gate): Add function * argument. + * asan.c, auto-inc-dec.c, bb-reorder.c, bt-load.c, + combine-stack-adj.c, combine.c, compare-elim.c, + config/epiphany/resolve-sw-modes.c, config/i386/i386.c, + config/rl78/rl78.c, config/sh/sh_optimize_sett_clrt.cc, + config/sh/sh_treg_combine.cc, config/sparc/sparc.c, cprop.c, cse.c, + dce.c, df-core.c, dse.c, dwarf2cfi.c, except.c, fwprop.c, gcse.c, + gimple-ssa-isolate-paths.c, gimple-ssa-strength-reduction.c, + graphite.c, ifcvt.c, init-regs.c, ipa-cp.c, ipa-devirt.c, + ipa-profile.c, ipa-pure-const.c, ipa-reference.c, ipa-split.c, ipa.c, + loop-init.c, lower-subreg.c, mode-switching.c, modulo-sched.c, + omp-low.c, postreload-gcse.c, postreload.c, predict.c, recog.c, ree.c, + reg-stack.c, regcprop.c, regrename.c, reorg.c, sched-rgn.c, + store-motion.c, tracer.c, trans-mem.c, tree-call-cdce.c, tree-cfg.c, + tree-cfgcleanup.c, tree-complex.c, tree-eh.c, tree-emutls.c, + tree-if-conv.c, tree-into-ssa.c, tree-loop-distribution.c, + tree-nrv.c, tree-parloops.c, tree-predcom.c, tree-profile.c, + tree-sra.c, tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-copyrename.c, + tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c, + tree-ssa-ifcombine.c, tree-ssa-loop-ch.c, tree-ssa-loop-im.c, + tree-ssa-loop-ivcanon.c, tree-ssa-loop-prefetch.c, + tree-ssa-loop-unswitch.c, tree-ssa-loop.c, tree-ssa-math-opts.c, + tree-ssa-phiopt.c, tree-ssa-phiprop.c, tree-ssa-pre.c, + tree-ssa-reassoc.c, tree-ssa-sink.c, tree-ssa-strlen.c, + tree-ssa-structalias.c, tree-ssa-uncprop.c, tree-ssa-uninit.c, + tree-ssa.c, tree-stdarg.c, tree-switch-conversion.c, tree-tailcall.c, + tree-vect-generic.c, tree-vectorizer.c, tree-vrp.c, tsan.c, ubsan.c, + var-tracking.c, vtable-verify.c, web.c: Adjust. + +2014-04-17 Trevor Saunders <tsaunders@mozilla.com> + + * configure.ac: Check for -Woverloaded-virtual and enable it if found. + * configure: Regenerate. + +2014-04-17 Trevor Saunders <tsaunders@mozilla.com> + + * passes.c (dump_one_pass): don't check pass->has_gate. + (execute_ipa_summary_passes): Likewise. + (execute_one_pass): Likewise. + (ipa_write_summaries_2): Likewise. + (ipa_write_optimization_summaries_1): Likewise. + (ipa_read_optimization_summaries_1): Likewise. + (execute_ipa_stmt_fixups): Likewise. + * tree-pass.h (pass_data::has_gate): Remove. + * asan.c, auto-inc-dec.c, bb-reorder.c, bt-load.c, cfgcleanup.c, + cfgexpand.c, cfgrtl.c, cgraphbuild.c, combine-stack-adj.c, combine.c, + compare-elim.c, config/arc/arc.c, config/epiphany/mode-switch-use.c, + config/epiphany/resolve-sw-modes.c, config/i386/i386.c, + config/mips/mips.c, config/rl78/rl78.c, config/s390/s390.c, + config/sh/sh_optimize_sett_clrt.cc, config/sh/sh_treg_combine.cc, + config/sparc/sparc.c, cprop.c, cse.c, dce.c, df-core.c, dse.c, + dwarf2cfi.c, except.c, final.c, function.c, fwprop.c, gcse.c, + gimple-low.c, gimple-ssa-isolate-paths.c, + gimple-ssa-strength-reduction.c, graphite.c, ifcvt.c, init-regs.c, + ipa-cp.c, ipa-devirt.c, ipa-inline-analysis.c, ipa-inline.c, + ipa-profile.c, ipa-pure-const.c, ipa-reference.c, ipa-split.c, ipa.c, + ira.c, jump.c, loop-init.c, lower-subreg.c, mode-switching.c, + modulo-sched.c, omp-low.c, postreload-gcse.c, postreload.c, predict.c, + recog.c, ree.c, reg-stack.c, regcprop.c, reginfo.c, regrename.c, + reorg.c, sched-rgn.c, stack-ptr-mod.c, store-motion.c, tracer.c, + trans-mem.c, tree-call-cdce.c, tree-cfg.c, tree-cfgcleanup.c, + tree-complex.c, tree-eh.c, tree-emutls.c, tree-if-conv.c, + tree-into-ssa.c, tree-loop-distribution.c, tree-nrv.c, + tree-object-size.c, tree-parloops.c, tree-predcom.c, tree-profile.c, + tree-sra.c, tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-copyrename.c, + tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c, + tree-ssa-ifcombine.c, tree-ssa-loop-ch.c, tree-ssa-loop-im.c, + tree-ssa-loop-ivcanon.c, tree-ssa-loop-prefetch.c, + tree-ssa-loop-unswitch.c, tree-ssa-loop.c, tree-ssa-math-opts.c, + tree-ssa-phiopt.c, tree-ssa-phiprop.c, tree-ssa-pre.c, + tree-ssa-reassoc.c, tree-ssa-sink.c, tree-ssa-strlen.c, + tree-ssa-structalias.c, tree-ssa-uncprop.c, tree-ssa-uninit.c, + tree-ssa.c, tree-ssanames.c, tree-stdarg.c, tree-switch-conversion.c, + tree-tailcall.c, tree-vect-generic.c, tree-vectorizer.c, tree-vrp.c, + tree.c, tsan.c, ubsan.c, var-tracking.c, vtable-verify.c, web.c: + Adjust. + +2014-04-17 Trevor Saunders <tsaunders@mozilla.com> + + * pass_manager.h (pass_manager::register_dump_files_1): Remove + declaration. + * passes.c (pass_manager::register_dump_files_1): Merge into + (pass_manager::register_dump_files): this, and remove its handling of + properties since the pass always has the properties anyway. + (pass_manager::pass_manager): Adjust. + +2014-04-17 Trevor Saunders <tsaunders@mozilla.com> + + * pass_manager.h (pass_manager::register_dump_files_1): Adjust. + * passes.c (pass_manager::register_dump_files_1): Remove dead code + dealing with properties. + (pass_manager::register_dump_files): Adjust. + 2014-03-20 Mark Wielaard <mjw@redhat.com> * dwarf2out.c (add_bound_info): If HOST_WIDE_INT is big enough, @@ -85,8 +487,7 @@ (record_target_from_binfo): Add bases_to_consider array; record bases for types w/o instances and skip CXX destructor. (possible_polymorphic_call_targets_1): Add bases_to_consider - and consider_construction parameters; check if type may - have instance. + and consider_construction parameters; check if type may have instance. (get_polymorphic_call_info): Set maybe_in_construction to true when we know nothing. (record_targets_from_bases): Skip CXX destructors; they are @@ -103,7 +504,7 @@ 2014-04-16 Andrew Pinski <apinski@cavium.com> * config/host-linux.c (TRY_EMPTY_VM_SPACE): Change aarch64 ilp32 - definition. + definition. 2014-04-16 Eric Botcazou <ebotcazou@adacore.com> @@ -395,7 +796,7 @@ 2014-04-14 Christian Bruel <christian.bruel@st.com> - * config/sh/sh-mem.cc (sh_expand_strlen): Unroll last word. + * config/sh/sh-mem.cc (sh_expand_strlen): Unroll last word. 2014-04-14 Christian Bruel <christian.bruel@st.com> @@ -704,21 +1105,21 @@ 2014-04-04 Martin Jambor <mjambor@suse.cz> PR ipa/60640 - * cgraph.h (cgraph_clone_node): New parameter added to declaration. - Adjust all callers. + * cgraph.h (cgraph_clone_node): New parameter added to declaration. + Adjust all callers. * cgraph.c (clone_of_p): Also return true if thunks match. (verify_edge_corresponds_to_fndecl): Removed extraneous call to cgraph_function_or_thunk_node and an obsolete comment. - * cgraphclones.c (build_function_type_skip_args): Moved upwards in the - file. - (build_function_decl_skip_args): Likewise. + * cgraphclones.c (build_function_type_skip_args): Moved upwards in the + file. + (build_function_decl_skip_args): Likewise. (set_new_clone_decl_and_node_flags): New function. - (duplicate_thunk_for_node): Likewise. - (redirect_edge_duplicating_thunks): Likewise. - (cgraph_clone_node): New parameter args_to_skip, pass it to - redirect_edge_duplicating_thunks which is called instead of - cgraph_redirect_edge_callee. - (cgraph_create_virtual_clone): Pass args_to_skip to cgraph_clone_node, + (duplicate_thunk_for_node): Likewise. + (redirect_edge_duplicating_thunks): Likewise. + (cgraph_clone_node): New parameter args_to_skip, pass it to + redirect_edge_duplicating_thunks which is called instead of + cgraph_redirect_edge_callee. + (cgraph_create_virtual_clone): Pass args_to_skip to cgraph_clone_node, moved setting of a lot of flags to set_new_clone_decl_and_node_flags. 2014-04-04 Jeff Law <law@redhat.com> @@ -801,24 +1202,6 @@ (Weffc++): Remove Scott's numbering, merge lists and reference Wnon-virtual-dtor. - c-family/ - - cp/ - * class.c (accessible_nvdtor_p): New. - (check_bases): Don't check base destructor here ... - (check_bases_and_members): ... check them here. Trigger on - Wnon-virtual-dtor flag. - (finish_struct_1): Use accessible_nvdtor_p. - - testsuite/ - * g++.dg/warn/Wnvdtor.C: Add non-polymorphic case. - * g++.dg/warn/Wnvdtor-2.C: New. - * g++.dg/warn/Wnvdtor-3.C: New. - * g++.dg/warn/Wnvdtor-4.C: New. - * g++.dg/warn/Weff1.C: Delete. - * g++.old-deja/g++.benjamin/15309-1.C: Delete. - * g++.old-deja/g++.benjamin/15309-2.C: Delete. - 2014-04-03 Nick Clifton <nickc@redhat.com> * config/rl78/rl78-expand.md (movqi): Handle (SUBREG (SYMBOL_REF)) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 493fa0a805c..50894d11578 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140417 +20140422 diff --git a/gcc/asan.c b/gcc/asan.c index 53992a81b18..d7c282e312e 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -1017,8 +1017,17 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb, base_align_bias = ((asan_frame_size + alignb - 1) & ~(alignb - HOST_WIDE_INT_1)) - asan_frame_size; } + /* Align base if target is STRICT_ALIGNMENT. */ + if (STRICT_ALIGNMENT) + base = expand_binop (Pmode, and_optab, base, + gen_int_mode (-((GET_MODE_ALIGNMENT (SImode) + << ASAN_SHADOW_SHIFT) + / BITS_PER_UNIT), Pmode), NULL_RTX, + 1, OPTAB_DIRECT); + if (use_after_return_class == -1 && pbase) emit_move_insn (pbase, base); + base = expand_binop (Pmode, add_optab, base, gen_int_mode (base_offset - base_align_bias, Pmode), NULL_RTX, 1, OPTAB_DIRECT); @@ -1097,6 +1106,8 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb, && (ASAN_RED_ZONE_SIZE >> ASAN_SHADOW_SHIFT) == 4); shadow_mem = gen_rtx_MEM (SImode, shadow_base); set_mem_alias_set (shadow_mem, asan_shadow_set); + if (STRICT_ALIGNMENT) + set_mem_align (shadow_mem, (GET_MODE_ALIGNMENT (SImode))); prev_offset = base_offset; for (l = length; l; l -= 2) { @@ -1186,6 +1197,10 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb, shadow_mem = gen_rtx_MEM (BLKmode, shadow_base); set_mem_alias_set (shadow_mem, asan_shadow_set); + + if (STRICT_ALIGNMENT) + set_mem_align (shadow_mem, (GET_MODE_ALIGNMENT (SImode))); + prev_offset = base_offset; last_offset = base_offset; last_size = 0; @@ -2485,7 +2500,6 @@ const pass_data pass_data_asan = GIMPLE_PASS, /* type */ "asan", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_ssa | PROP_cfg | PROP_gimple_leh ), /* properties_required */ @@ -2505,8 +2519,8 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_asan (m_ctxt); } - bool gate () { return gate_asan (); } - unsigned int execute () { return asan_instrument (); } + virtual bool gate (function *) { return gate_asan (); } + virtual unsigned int execute (function *) { return asan_instrument (); } }; // class pass_asan @@ -2518,12 +2532,6 @@ make_pass_asan (gcc::context *ctxt) return new pass_asan (ctxt); } -static bool -gate_asan_O0 (void) -{ - return !optimize && gate_asan (); -} - namespace { const pass_data pass_data_asan_O0 = @@ -2531,7 +2539,6 @@ const pass_data pass_data_asan_O0 = GIMPLE_PASS, /* type */ "asan0", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_ssa | PROP_cfg | PROP_gimple_leh ), /* properties_required */ @@ -2550,8 +2557,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_asan_O0 (); } - unsigned int execute () { return asan_instrument (); } + virtual bool gate (function *) { return !optimize && gate_asan (); } + virtual unsigned int execute (function *) { return asan_instrument (); } }; // class pass_asan_O0 @@ -2565,12 +2572,42 @@ make_pass_asan_O0 (gcc::context *ctxt) /* Perform optimization of sanitize functions. */ -static unsigned int -execute_sanopt (void) +namespace { + +const pass_data pass_data_sanopt = +{ + GIMPLE_PASS, /* type */ + "sanopt", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + ( PROP_ssa | PROP_cfg | PROP_gimple_leh ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_verify_flow | TODO_verify_stmts + | TODO_update_ssa ), /* todo_flags_finish */ +}; + +class pass_sanopt : public gimple_opt_pass +{ +public: + pass_sanopt (gcc::context *ctxt) + : gimple_opt_pass (pass_data_sanopt, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return flag_sanitize; } + virtual unsigned int execute (function *); + +}; // class pass_sanopt + +unsigned int +pass_sanopt::execute (function *fun) { basic_block bb; - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator gsi; for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) @@ -2601,43 +2638,6 @@ execute_sanopt (void) return 0; } -static bool -gate_sanopt (void) -{ - return flag_sanitize; -} - -namespace { - -const pass_data pass_data_sanopt = -{ - GIMPLE_PASS, /* type */ - "sanopt", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - ( PROP_ssa | PROP_cfg | PROP_gimple_leh ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_verify_flow | TODO_verify_stmts - | TODO_update_ssa ), /* todo_flags_finish */ -}; - -class pass_sanopt : public gimple_opt_pass -{ -public: - pass_sanopt (gcc::context *ctxt) - : gimple_opt_pass (pass_data_sanopt, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_sanopt (); } - unsigned int execute () { return execute_sanopt (); } - -}; // class pass_sanopt - } // anon namespace gimple_opt_pass * diff --git a/gcc/auto-inc-dec.c b/gcc/auto-inc-dec.c index 47f516dd33d..0314d183a83 100644 --- a/gcc/auto-inc-dec.c +++ b/gcc/auto-inc-dec.c @@ -1462,50 +1462,8 @@ merge_in_block (int max_reg, basic_block bb) #endif -static unsigned int -rest_of_handle_auto_inc_dec (void) -{ -#ifdef AUTO_INC_DEC - basic_block bb; - int max_reg = max_reg_num (); - - if (!initialized) - init_decision_table (); - - mem_tmp = gen_rtx_MEM (Pmode, NULL_RTX); - - df_note_add_problem (); - df_analyze (); - - reg_next_use = XCNEWVEC (rtx, max_reg); - reg_next_inc_use = XCNEWVEC (rtx, max_reg); - reg_next_def = XCNEWVEC (rtx, max_reg); - FOR_EACH_BB_FN (bb, cfun) - merge_in_block (max_reg, bb); - - free (reg_next_use); - free (reg_next_inc_use); - free (reg_next_def); - - mem_tmp = NULL; -#endif - return 0; -} - - /* Discover auto-inc auto-dec instructions. */ -static bool -gate_auto_inc_dec (void) -{ -#ifdef AUTO_INC_DEC - return (optimize > 0 && flag_auto_inc_dec); -#else - return false; -#endif -} - - namespace { const pass_data pass_data_inc_dec = @@ -1513,7 +1471,6 @@ const pass_data pass_data_inc_dec = RTL_PASS, /* type */ "auto_inc_dec", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_AUTO_INC_DEC, /* tv_id */ 0, /* properties_required */ @@ -1531,11 +1488,50 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_auto_inc_dec (); } - unsigned int execute () { return rest_of_handle_auto_inc_dec (); } + virtual bool gate (function *) + { +#ifdef AUTO_INC_DEC + return (optimize > 0 && flag_auto_inc_dec); +#else + return false; +#endif + } + + + unsigned int execute (function *); }; // class pass_inc_dec +unsigned int +pass_inc_dec::execute (function *fun ATTRIBUTE_UNUSED) +{ +#ifdef AUTO_INC_DEC + basic_block bb; + int max_reg = max_reg_num (); + + if (!initialized) + init_decision_table (); + + mem_tmp = gen_rtx_MEM (Pmode, NULL_RTX); + + df_note_add_problem (); + df_analyze (); + + reg_next_use = XCNEWVEC (rtx, max_reg); + reg_next_inc_use = XCNEWVEC (rtx, max_reg); + reg_next_def = XCNEWVEC (rtx, max_reg); + FOR_EACH_BB_FN (bb, fun) + merge_in_block (max_reg, bb); + + free (reg_next_use); + free (reg_next_inc_use); + free (reg_next_def); + + mem_tmp = NULL; +#endif + return 0; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index fa6f62fbe68..db490f1f876 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -2302,35 +2302,6 @@ insert_section_boundary_note (void) } } -static bool -gate_handle_reorder_blocks (void) -{ - if (targetm.cannot_modify_jumps_p ()) - return false; - return (optimize > 0 - && (flag_reorder_blocks || flag_reorder_blocks_and_partition)); -} - -static unsigned int -rest_of_handle_reorder_blocks (void) -{ - basic_block bb; - - /* Last attempt to optimize CFG, as scheduling, peepholing and insn - splitting possibly introduced more crossjumping opportunities. */ - cfg_layout_initialize (CLEANUP_EXPENSIVE); - - reorder_basic_blocks (); - cleanup_cfg (CLEANUP_EXPENSIVE); - - FOR_EACH_BB_FN (bb, cfun) - if (bb->next_bb != EXIT_BLOCK_PTR_FOR_FN (cfun)) - bb->aux = bb->next_bb; - cfg_layout_finalize (); - - return 0; -} - namespace { const pass_data pass_data_reorder_blocks = @@ -2338,7 +2309,6 @@ const pass_data pass_data_reorder_blocks = RTL_PASS, /* type */ "bbro", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_REORDER_BLOCKS, /* tv_id */ 0, /* properties_required */ @@ -2356,11 +2326,38 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_reorder_blocks (); } - unsigned int execute () { return rest_of_handle_reorder_blocks (); } + virtual bool gate (function *) + { + if (targetm.cannot_modify_jumps_p ()) + return false; + return (optimize > 0 + && (flag_reorder_blocks || flag_reorder_blocks_and_partition)); + } + + virtual unsigned int execute (function *); }; // class pass_reorder_blocks +unsigned int +pass_reorder_blocks::execute (function *fun) +{ + basic_block bb; + + /* Last attempt to optimize CFG, as scheduling, peepholing and insn + splitting possibly introduced more crossjumping opportunities. */ + cfg_layout_initialize (CLEANUP_EXPENSIVE); + + reorder_basic_blocks (); + cleanup_cfg (CLEANUP_EXPENSIVE); + + FOR_EACH_BB_FN (bb, fun) + if (bb->next_bb != EXIT_BLOCK_PTR_FOR_FN (fun)) + bb->aux = bb->next_bb; + cfg_layout_finalize (); + + return 0; +} + } // anon namespace rtl_opt_pass * @@ -2375,26 +2372,54 @@ make_pass_reorder_blocks (gcc::context *ctxt) which can seriously pessimize code with many computed jumps in the source code, such as interpreters. See e.g. PR15242. */ -static bool -gate_duplicate_computed_gotos (void) +namespace { + +const pass_data pass_data_duplicate_computed_gotos = +{ + RTL_PASS, /* type */ + "compgotos", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_REORDER_BLOCKS, /* tv_id */ + 0, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_rtl_sharing, /* todo_flags_finish */ +}; + +class pass_duplicate_computed_gotos : public rtl_opt_pass +{ +public: + pass_duplicate_computed_gotos (gcc::context *ctxt) + : rtl_opt_pass (pass_data_duplicate_computed_gotos, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *); + virtual unsigned int execute (function *); + +}; // class pass_duplicate_computed_gotos + +bool +pass_duplicate_computed_gotos::gate (function *fun) { if (targetm.cannot_modify_jumps_p ()) return false; return (optimize > 0 && flag_expensive_optimizations - && ! optimize_function_for_size_p (cfun)); + && ! optimize_function_for_size_p (fun)); } - -static unsigned int -duplicate_computed_gotos (void) +unsigned int +pass_duplicate_computed_gotos::execute (function *fun) { basic_block bb, new_bb; bitmap candidates; int max_size; bool changed = false; - if (n_basic_blocks_for_fn (cfun) <= NUM_FIXED_BLOCKS + 1) + if (n_basic_blocks_for_fn (fun) <= NUM_FIXED_BLOCKS + 1) return 0; clear_bb_flags (); @@ -2413,7 +2438,7 @@ duplicate_computed_gotos (void) /* Look for blocks that end in a computed jump, and see if such blocks are suitable for unfactoring. If a block is a candidate for unfactoring, mark it in the candidates. */ - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { rtx insn; edge e; @@ -2421,7 +2446,7 @@ duplicate_computed_gotos (void) int size, all_flags; /* Build the reorder chain for the original order of blocks. */ - if (bb->next_bb != EXIT_BLOCK_PTR_FOR_FN (cfun)) + if (bb->next_bb != EXIT_BLOCK_PTR_FOR_FN (fun)) bb->aux = bb->next_bb; /* Obviously the block has to end in a computed jump. */ @@ -2460,7 +2485,7 @@ duplicate_computed_gotos (void) goto done; /* Duplicate computed gotos. */ - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { if (bb->flags & BB_VISITED) continue; @@ -2471,7 +2496,7 @@ duplicate_computed_gotos (void) the exit block or the next block. The destination must have more than one predecessor. */ if (!single_succ_p (bb) - || single_succ (bb) == EXIT_BLOCK_PTR_FOR_FN (cfun) + || single_succ (bb) == EXIT_BLOCK_PTR_FOR_FN (fun) || single_succ (bb) == bb->next_bb || single_pred_p (single_succ (bb))) continue; @@ -2504,36 +2529,6 @@ done: return 0; } -namespace { - -const pass_data pass_data_duplicate_computed_gotos = -{ - RTL_PASS, /* type */ - "compgotos", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_REORDER_BLOCKS, /* tv_id */ - 0, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_rtl_sharing, /* todo_flags_finish */ -}; - -class pass_duplicate_computed_gotos : public rtl_opt_pass -{ -public: - pass_duplicate_computed_gotos (gcc::context *ctxt) - : rtl_opt_pass (pass_data_duplicate_computed_gotos, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_duplicate_computed_gotos (); } - unsigned int execute () { return duplicate_computed_gotos (); } - -}; // class pass_duplicate_computed_gotos - } // anon namespace rtl_opt_pass * @@ -2542,22 +2537,6 @@ make_pass_duplicate_computed_gotos (gcc::context *ctxt) return new pass_duplicate_computed_gotos (ctxt); } -static bool -gate_handle_partition_blocks (void) -{ - /* The optimization to partition hot/cold basic blocks into separate - sections of the .o file does not work well with linkonce or with - user defined section attributes. Don't call it if either case - arises. */ - return (flag_reorder_blocks_and_partition - && optimize - /* See gate_handle_reorder_blocks. We should not partition if - we are going to omit the reordering. */ - && optimize_function_for_speed_p (cfun) - && !DECL_ONE_ONLY (current_function_decl) - && !user_defined_section_attribute); -} - /* This function is the main 'entrance' for the optimization that partitions hot and cold basic blocks into separate sections of the .o file (to improve performance and cache locality). Ideally it @@ -2647,12 +2626,57 @@ gate_handle_partition_blocks (void) Unconditional branches are dealt with by converting them into indirect jumps. */ -static unsigned -partition_hot_cold_basic_blocks (void) +namespace { + +const pass_data pass_data_partition_blocks = +{ + RTL_PASS, /* type */ + "bbpart", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_REORDER_BLOCKS, /* tv_id */ + PROP_cfglayout, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_partition_blocks : public rtl_opt_pass +{ +public: + pass_partition_blocks (gcc::context *ctxt) + : rtl_opt_pass (pass_data_partition_blocks, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *); + virtual unsigned int execute (function *); + +}; // class pass_partition_blocks + +bool +pass_partition_blocks::gate (function *fun) +{ + /* The optimization to partition hot/cold basic blocks into separate + sections of the .o file does not work well with linkonce or with + user defined section attributes. Don't call it if either case + arises. */ + return (flag_reorder_blocks_and_partition + && optimize + /* See gate_handle_reorder_blocks. We should not partition if + we are going to omit the reordering. */ + && optimize_function_for_speed_p (fun) + && !DECL_ONE_ONLY (current_function_decl) + && !user_defined_section_attribute); +} + +unsigned +pass_partition_blocks::execute (function *fun) { vec<edge> crossing_edges; - if (n_basic_blocks_for_fn (cfun) <= NUM_FIXED_BLOCKS + 1) + if (n_basic_blocks_for_fn (fun) <= NUM_FIXED_BLOCKS + 1) return 0; df_set_flags (DF_DEFER_INSN_RESCAN); @@ -2713,7 +2737,7 @@ partition_hot_cold_basic_blocks (void) In the meantime, we have no other option but to throw away all of the DF data and recompute it all. */ - if (cfun->eh->lp_array) + if (fun->eh->lp_array) { df_finish_pass (true); df_scan_alloc (NULL); @@ -2728,36 +2752,6 @@ partition_hot_cold_basic_blocks (void) return TODO_verify_flow | TODO_verify_rtl_sharing; } -namespace { - -const pass_data pass_data_partition_blocks = -{ - RTL_PASS, /* type */ - "bbpart", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_REORDER_BLOCKS, /* tv_id */ - PROP_cfglayout, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_partition_blocks : public rtl_opt_pass -{ -public: - pass_partition_blocks (gcc::context *ctxt) - : rtl_opt_pass (pass_data_partition_blocks, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_handle_partition_blocks (); } - unsigned int execute () { return partition_hot_cold_basic_blocks (); } - -}; // class pass_partition_blocks - } // anon namespace rtl_opt_pass * diff --git a/gcc/bt-load.c b/gcc/bt-load.c index 4fa68f11e98..53c5f580461 100644 --- a/gcc/bt-load.c +++ b/gcc/bt-load.c @@ -1494,20 +1494,6 @@ branch_target_load_optimize (bool after_prologue_epilogue_gen) } } -static bool -gate_handle_branch_target_load_optimize1 (void) -{ - return flag_branch_target_load_optimize; -} - - -static unsigned int -rest_of_handle_branch_target_load_optimize1 (void) -{ - branch_target_load_optimize (epilogue_completed); - return 0; -} - namespace { const pass_data pass_data_branch_target_load_optimize1 = @@ -1515,7 +1501,6 @@ const pass_data pass_data_branch_target_load_optimize1 = RTL_PASS, /* type */ "btl1", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -1533,10 +1518,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_branch_target_load_optimize1 (); } - unsigned int execute () { - return rest_of_handle_branch_target_load_optimize1 (); - } + virtual bool gate (function *) { return flag_branch_target_load_optimize; } + virtual unsigned int execute (function *) + { + branch_target_load_optimize (epilogue_completed); + return 0; + } }; // class pass_branch_target_load_optimize1 @@ -1548,34 +1535,6 @@ make_pass_branch_target_load_optimize1 (gcc::context *ctxt) return new pass_branch_target_load_optimize1 (ctxt); } -static bool -gate_handle_branch_target_load_optimize2 (void) -{ - return (optimize > 0 && flag_branch_target_load_optimize2); -} - - -static unsigned int -rest_of_handle_branch_target_load_optimize2 (void) -{ - static int warned = 0; - - /* Leave this a warning for now so that it is possible to experiment - with running this pass twice. In 3.6, we should either make this - an error, or use separate dump files. */ - if (flag_branch_target_load_optimize - && flag_branch_target_load_optimize2 - && !warned) - { - warning (0, "branch target register load optimization is not intended " - "to be run twice"); - - warned = 1; - } - - branch_target_load_optimize (epilogue_completed); - return 0; -} namespace { @@ -1584,7 +1543,6 @@ const pass_data pass_data_branch_target_load_optimize2 = RTL_PASS, /* type */ "btl2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -1602,13 +1560,37 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_branch_target_load_optimize2 (); } - unsigned int execute () { - return rest_of_handle_branch_target_load_optimize2 (); - } + virtual bool gate (function *) + { + return (optimize > 0 && flag_branch_target_load_optimize2); + } + + virtual unsigned int execute (function *); }; // class pass_branch_target_load_optimize2 +unsigned int +pass_branch_target_load_optimize2::execute (function *) +{ + static int warned = 0; + + /* Leave this a warning for now so that it is possible to experiment + with running this pass twice. In 3.6, we should either make this + an error, or use separate dump files. */ + if (flag_branch_target_load_optimize + && flag_branch_target_load_optimize2 + && !warned) + { + warning (0, "branch target register load optimization is not intended " + "to be run twice"); + + warned = 1; + } + + branch_target_load_optimize (epilogue_completed); + return 0; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/builtins.c b/gcc/builtins.c index b9374e2c919..a7a80ea7435 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -8838,29 +8838,11 @@ fold_builtin_memory_op (location_t loc, tree dest, tree src, if (FLOAT_MODE_P (TYPE_MODE (desttype)) || TREE_CODE (desttype) == BOOLEAN_TYPE || TREE_CODE (desttype) == ENUMERAL_TYPE) - { - /* A more suitable int_mode_for_mode would return a vector - integer mode for a vector float mode or a integer complex - mode for a float complex mode if there isn't a regular - integer mode covering the mode of desttype. */ - enum machine_mode mode = int_mode_for_mode (TYPE_MODE (desttype)); - if (mode == BLKmode) - desttype = NULL_TREE; - else - desttype = build_nonstandard_integer_type (GET_MODE_BITSIZE (mode), - 1); - } + desttype = bitwise_type_for_mode (TYPE_MODE (desttype)); if (FLOAT_MODE_P (TYPE_MODE (srctype)) || TREE_CODE (srctype) == BOOLEAN_TYPE || TREE_CODE (srctype) == ENUMERAL_TYPE) - { - enum machine_mode mode = int_mode_for_mode (TYPE_MODE (srctype)); - if (mode == BLKmode) - srctype = NULL_TREE; - else - srctype = build_nonstandard_integer_type (GET_MODE_BITSIZE (mode), - 1); - } + srctype = bitwise_type_for_mode (TYPE_MODE (srctype)); if (!srctype) srctype = desttype; if (!desttype) diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 77196ee6bf7..d793a70b4db 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -3078,17 +3078,6 @@ cleanup_cfg (int mode) return changed; } -static unsigned int -execute_jump (void) -{ - delete_trivially_dead_insns (get_insns (), max_reg_num ()); - if (dump_file) - dump_flow_info (dump_file, dump_flags); - cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) - | (flag_thread_jumps ? CLEANUP_THREADING : 0)); - return 0; -} - namespace { const pass_data pass_data_jump = @@ -3096,7 +3085,6 @@ const pass_data pass_data_jump = RTL_PASS, /* type */ "jump", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_JUMP, /* tv_id */ 0, /* properties_required */ @@ -3114,10 +3102,21 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return execute_jump (); } + virtual unsigned int execute (function *); }; // class pass_jump +unsigned int +pass_jump::execute (function *) +{ + delete_trivially_dead_insns (get_insns (), max_reg_num ()); + if (dump_file) + dump_flow_info (dump_file, dump_flags); + cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) + | (flag_thread_jumps ? CLEANUP_THREADING : 0)); + return 0; +} + } // anon namespace rtl_opt_pass * @@ -3126,13 +3125,6 @@ make_pass_jump (gcc::context *ctxt) return new pass_jump (ctxt); } -static unsigned int -execute_jump2 (void) -{ - cleanup_cfg (flag_crossjumping ? CLEANUP_CROSSJUMP : 0); - return 0; -} - namespace { const pass_data pass_data_jump2 = @@ -3140,7 +3132,6 @@ const pass_data pass_data_jump2 = RTL_PASS, /* type */ "jump2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_JUMP, /* tv_id */ 0, /* properties_required */ @@ -3158,7 +3149,11 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return execute_jump2 (); } + virtual unsigned int execute (function *) + { + cleanup_cfg (flag_crossjumping ? CLEANUP_CROSSJUMP : 0); + return 0; + } }; // class pass_jump2 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index b7f63602d99..78eca25f493 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -1013,10 +1013,19 @@ expand_stack_vars (bool (*pred) (size_t), struct stack_vars_data *data) if (data->asan_base == NULL) data->asan_base = gen_reg_rtx (Pmode); base = data->asan_base; + + if (!STRICT_ALIGNMENT) + base_align = crtl->max_used_stack_slot_alignment; + else + base_align = MAX (crtl->max_used_stack_slot_alignment, + GET_MODE_ALIGNMENT (SImode) + << ASAN_SHADOW_SHIFT); } else - offset = alloc_stack_frame_space (stack_vars[i].size, alignb); - base_align = crtl->max_used_stack_slot_alignment; + { + offset = alloc_stack_frame_space (stack_vars[i].size, alignb); + base_align = crtl->max_used_stack_slot_alignment; + } } else { @@ -1845,6 +1854,11 @@ expand_used_vars (void) = alloc_stack_frame_space (redzonesz, ASAN_RED_ZONE_SIZE); data.asan_vec.safe_push (prev_offset); data.asan_vec.safe_push (offset); + /* Leave space for alignment if STRICT_ALIGNMENT. */ + if (STRICT_ALIGNMENT) + alloc_stack_frame_space ((GET_MODE_ALIGNMENT (SImode) + << ASAN_SHADOW_SHIFT) + / BITS_PER_UNIT, 1); var_end_seq = asan_emit_stack_protection (virtual_stack_vars_rtx, @@ -5530,8 +5544,39 @@ stack_protect_prologue (void) confuse the CFG hooks, so be careful to not manipulate CFG during the expansion. */ -static unsigned int -gimple_expand_cfg (void) +namespace { + +const pass_data pass_data_expand = +{ + RTL_PASS, /* type */ + "expand", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_EXPAND, /* tv_id */ + ( PROP_ssa | PROP_gimple_leh | PROP_cfg + | PROP_gimple_lcx + | PROP_gimple_lvec ), /* properties_required */ + PROP_rtl, /* properties_provided */ + ( PROP_ssa | PROP_trees ), /* properties_destroyed */ + ( TODO_verify_ssa | TODO_verify_flow + | TODO_verify_stmts ), /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_expand : public rtl_opt_pass +{ +public: + pass_expand (gcc::context *ctxt) + : rtl_opt_pass (pass_data_expand, ctxt) + {} + + /* opt_pass methods: */ + virtual unsigned int execute (function *); + +}; // class pass_expand + +unsigned int +pass_expand::execute (function *fun) { basic_block bb, init_block; sbitmap blocks; @@ -5554,17 +5599,17 @@ gimple_expand_cfg (void) /* Dominators are not kept up-to-date as we may create new basic-blocks. */ free_dominance_info (CDI_DOMINATORS); - rtl_profile_for_bb (ENTRY_BLOCK_PTR_FOR_FN (cfun)); + rtl_profile_for_bb (ENTRY_BLOCK_PTR_FOR_FN (fun)); insn_locations_init (); if (!DECL_IS_BUILTIN (current_function_decl)) { /* Eventually, all FEs should explicitly set function_start_locus. */ - if (LOCATION_LOCUS (cfun->function_start_locus) == UNKNOWN_LOCATION) - set_curr_insn_location - (DECL_SOURCE_LOCATION (current_function_decl)); + if (LOCATION_LOCUS (fun->function_start_locus) == UNKNOWN_LOCATION) + set_curr_insn_location + (DECL_SOURCE_LOCATION (current_function_decl)); else - set_curr_insn_location (cfun->function_start_locus); + set_curr_insn_location (fun->function_start_locus); } else set_curr_insn_location (UNKNOWN_LOCATION); @@ -5587,7 +5632,7 @@ gimple_expand_cfg (void) crtl->max_used_stack_slot_alignment = STACK_BOUNDARY; crtl->stack_alignment_estimated = 0; crtl->preferred_stack_boundary = STACK_BOUNDARY; - cfun->cfg->max_jumptable_ents = 0; + fun->cfg->max_jumptable_ents = 0; /* Resovle the function section. Some targets, like ARM EABI rely on knowledge of the function section at exapnsion time to predict distance of calls. */ @@ -5606,14 +5651,14 @@ gimple_expand_cfg (void) /* Honor stack protection warnings. */ if (warn_stack_protect) { - if (cfun->calls_alloca) + if (fun->calls_alloca) warning (OPT_Wstack_protector, "stack protector not protecting local variables: " - "variable length buffer"); + "variable length buffer"); if (has_short_buffer && !crtl->stack_protect_guard) warning (OPT_Wstack_protector, "stack protector not protecting function: " - "all local arrays are less than %d bytes long", + "all local arrays are less than %d bytes long", (int) PARAM_VALUE (PARAM_SSP_BUFFER_SIZE)); } @@ -5644,12 +5689,12 @@ gimple_expand_cfg (void) gcc_assert (SA.partition_to_pseudo[i]); /* If this decl was marked as living in multiple places, reset - this now to NULL. */ + this now to NULL. */ if (DECL_RTL_IF_SET (var) == pc_rtx) SET_DECL_RTL (var, NULL); /* Some RTL parts really want to look at DECL_RTL(x) when x - was a decl marked in REG_ATTR or MEM_ATTR. We could use + was a decl marked in REG_ATTR or MEM_ATTR. We could use SET_DECL_RTL here making this available, but that would mean to select one of the potentially many RTLs for one DECL. Instead of doing that we simply reset the MEM_EXPR of the RTL in question, @@ -5718,11 +5763,11 @@ gimple_expand_cfg (void) /* Clear EDGE_EXECUTABLE on the entry edge(s). It is cleaned from the remaining edges later. */ - FOR_EACH_EDGE (e, ei, ENTRY_BLOCK_PTR_FOR_FN (cfun)->succs) + FOR_EACH_EDGE (e, ei, ENTRY_BLOCK_PTR_FOR_FN (fun)->succs) e->flags &= ~EDGE_EXECUTABLE; lab_rtx_for_bb = pointer_map_create (); - FOR_BB_BETWEEN (bb, init_block->next_bb, EXIT_BLOCK_PTR_FOR_FN (cfun), + FOR_BB_BETWEEN (bb, init_block->next_bb, EXIT_BLOCK_PTR_FOR_FN (fun), next_bb) bb = expand_gimple_basic_block (bb, var_ret_seq != NULL_RTX); @@ -5740,7 +5785,7 @@ gimple_expand_cfg (void) timevar_push (TV_POST_EXPAND); /* We are no longer in SSA form. */ - cfun->gimple_df->in_ssa_p = false; + fun->gimple_df->in_ssa_p = false; if (current_loops) loops_state_clear (LOOP_CLOSED_SSA); @@ -5762,14 +5807,14 @@ gimple_expand_cfg (void) } /* Zap the tree EH table. */ - set_eh_throw_stmt_table (cfun, NULL); + set_eh_throw_stmt_table (fun, NULL); /* We need JUMP_LABEL be set in order to redirect jumps, and hence split edges which edge insertions might do. */ rebuild_jump_labels (get_insns ()); - FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR_FOR_FN (cfun), - EXIT_BLOCK_PTR_FOR_FN (cfun), next_bb) + FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR_FOR_FN (fun), + EXIT_BLOCK_PTR_FOR_FN (fun), next_bb) { edge e; edge_iterator ei; @@ -5780,8 +5825,8 @@ gimple_expand_cfg (void) rebuild_jump_labels_chain (e->insns.r); /* Put insns after parm birth, but before NOTE_INSNS_FUNCTION_BEG. */ - if (e->src == ENTRY_BLOCK_PTR_FOR_FN (cfun) - && single_succ_p (ENTRY_BLOCK_PTR_FOR_FN (cfun))) + if (e->src == ENTRY_BLOCK_PTR_FOR_FN (fun) + && single_succ_p (ENTRY_BLOCK_PTR_FOR_FN (fun))) { rtx insns = e->insns.r; e->insns.r = NULL_RTX; @@ -5802,8 +5847,8 @@ gimple_expand_cfg (void) /* We're done expanding trees to RTL. */ currently_expanding_to_rtl = 0; - FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb, - EXIT_BLOCK_PTR_FOR_FN (cfun), next_bb) + FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR_FOR_FN (fun)->next_bb, + EXIT_BLOCK_PTR_FOR_FN (fun), next_bb) { edge e; edge_iterator ei; @@ -5824,7 +5869,7 @@ gimple_expand_cfg (void) } } - blocks = sbitmap_alloc (last_basic_block_for_fn (cfun)); + blocks = sbitmap_alloc (last_basic_block_for_fn (fun)); bitmap_ones (blocks); find_many_sub_basic_blocks (blocks); sbitmap_free (blocks); @@ -5840,7 +5885,7 @@ gimple_expand_cfg (void) /* After initial rtl generation, call back to finish generating exception support code. We need to do this before cleaning up the CFG as the code does not expect dead landing pads. */ - if (cfun->eh->region_tree != NULL) + if (fun->eh->region_tree != NULL) finish_eh_generation (); /* Remove unreachable blocks, otherwise we cannot compute dominators @@ -5878,14 +5923,14 @@ gimple_expand_cfg (void) /* If we're emitting a nested function, make sure its parent gets emitted as well. Doing otherwise confuses debug info. */ - { - tree parent; - for (parent = DECL_CONTEXT (current_function_decl); - parent != NULL_TREE; - parent = get_containing_scope (parent)) - if (TREE_CODE (parent) == FUNCTION_DECL) - TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (parent)) = 1; - } + { + tree parent; + for (parent = DECL_CONTEXT (current_function_decl); + parent != NULL_TREE; + parent = get_containing_scope (parent)) + if (TREE_CODE (parent) == FUNCTION_DECL) + TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (parent)) = 1; + } /* We are now committed to emitting code for this function. Do any preparation, such as emitting abstract debug info for the inline @@ -5900,15 +5945,15 @@ gimple_expand_cfg (void) naked_return_label = NULL; /* After expanding, the tm_restart map is no longer needed. */ - if (cfun->gimple_df->tm_restart) + if (fun->gimple_df->tm_restart) { - htab_delete (cfun->gimple_df->tm_restart); - cfun->gimple_df->tm_restart = NULL; + htab_delete (fun->gimple_df->tm_restart); + fun->gimple_df->tm_restart = NULL; } /* Tag the blocks with a depth number so that change_scope can find the common parent easily. */ - set_block_levels (DECL_INITIAL (cfun->decl), 0); + set_block_levels (DECL_INITIAL (fun->decl), 0); default_rtl_profile (); timevar_pop (TV_POST_EXPAND); @@ -5916,38 +5961,6 @@ gimple_expand_cfg (void) return 0; } -namespace { - -const pass_data pass_data_expand = -{ - RTL_PASS, /* type */ - "expand", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ - true, /* has_execute */ - TV_EXPAND, /* tv_id */ - ( PROP_ssa | PROP_gimple_leh | PROP_cfg - | PROP_gimple_lcx - | PROP_gimple_lvec ), /* properties_required */ - PROP_rtl, /* properties_provided */ - ( PROP_ssa | PROP_trees ), /* properties_destroyed */ - ( TODO_verify_ssa | TODO_verify_flow - | TODO_verify_stmts ), /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_expand : public rtl_opt_pass -{ -public: - pass_expand (gcc::context *ctxt) - : rtl_opt_pass (pass_data_expand, ctxt) - {} - - /* opt_pass methods: */ - unsigned int execute () { return gimple_expand_cfg (); } - -}; // class pass_expand - } // anon namespace rtl_opt_pass * diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 60b0c069f44..5dd27d2795b 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -442,26 +442,6 @@ free_bb_for_insn (void) return 0; } -static unsigned int -rest_of_pass_free_cfg (void) -{ -#ifdef DELAY_SLOTS - /* The resource.c machinery uses DF but the CFG isn't guaranteed to be - valid at that point so it would be too late to call df_analyze. */ - if (optimize > 0 && flag_delayed_branch) - { - df_note_add_problem (); - df_analyze (); - } -#endif - - if (crtl->has_bb_partition) - insert_section_boundary_note (); - - free_bb_for_insn (); - return 0; -} - namespace { const pass_data pass_data_free_cfg = @@ -469,7 +449,6 @@ const pass_data pass_data_free_cfg = RTL_PASS, /* type */ "*free_cfg", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -487,10 +466,30 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_pass_free_cfg (); } + virtual unsigned int execute (function *); }; // class pass_free_cfg +unsigned int +pass_free_cfg::execute (function *) +{ +#ifdef DELAY_SLOTS + /* The resource.c machinery uses DF but the CFG isn't guaranteed to be + valid at that point so it would be too late to call df_analyze. */ + if (optimize > 0 && flag_delayed_branch) + { + df_note_add_problem (); + df_analyze (); + } +#endif + + if (crtl->has_bb_partition) + insert_section_boundary_note (); + + free_bb_for_insn (); + return 0; +} + } // anon namespace rtl_opt_pass * @@ -3467,27 +3466,6 @@ record_effective_endpoints (void) cfg_layout_function_footer = unlink_insn_chain (cfg_layout_function_footer, get_last_insn ()); } -static unsigned int -into_cfg_layout_mode (void) -{ - cfg_layout_initialize (0); - return 0; -} - -static unsigned int -outof_cfg_layout_mode (void) -{ - basic_block bb; - - FOR_EACH_BB_FN (bb, cfun) - if (bb->next_bb != EXIT_BLOCK_PTR_FOR_FN (cfun)) - bb->aux = bb->next_bb; - - cfg_layout_finalize (); - - return 0; -} - namespace { const pass_data pass_data_into_cfg_layout_mode = @@ -3495,7 +3473,6 @@ const pass_data pass_data_into_cfg_layout_mode = RTL_PASS, /* type */ "into_cfglayout", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_CFG, /* tv_id */ 0, /* properties_required */ @@ -3513,7 +3490,11 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return into_cfg_layout_mode (); } + virtual unsigned int execute (function *) + { + cfg_layout_initialize (0); + return 0; + } }; // class pass_into_cfg_layout_mode @@ -3532,7 +3513,6 @@ const pass_data pass_data_outof_cfg_layout_mode = RTL_PASS, /* type */ "outof_cfglayout", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_CFG, /* tv_id */ 0, /* properties_required */ @@ -3550,10 +3530,24 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return outof_cfg_layout_mode (); } + virtual unsigned int execute (function *); }; // class pass_outof_cfg_layout_mode +unsigned int +pass_outof_cfg_layout_mode::execute (function *fun) +{ + basic_block bb; + + FOR_EACH_BB_FN (bb, fun) + if (bb->next_bb != EXIT_BLOCK_PTR_FOR_FN (fun)) + bb->aux = bb->next_bb; + + cfg_layout_finalize (); + + return 0; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c index 19961e27df3..6bdc8ca0eda 100644 --- a/gcc/cgraphbuild.c +++ b/gcc/cgraphbuild.c @@ -305,8 +305,36 @@ ipa_record_stmt_references (struct cgraph_node *node, gimple stmt) /* Create cgraph edges for function calls. Also look for functions and variables having addresses taken. */ -static unsigned int -build_cgraph_edges (void) +namespace { + +const pass_data pass_data_build_cgraph_edges = +{ + GIMPLE_PASS, /* type */ + "*build_cgraph_edges", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + PROP_cfg, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_build_cgraph_edges : public gimple_opt_pass +{ +public: + pass_build_cgraph_edges (gcc::context *ctxt) + : gimple_opt_pass (pass_data_build_cgraph_edges, ctxt) + {} + + /* opt_pass methods: */ + virtual unsigned int execute (function *); + +}; // class pass_build_cgraph_edges + +unsigned int +pass_build_cgraph_edges::execute (function *fun) { basic_block bb; struct cgraph_node *node = cgraph_get_node (current_function_decl); @@ -317,7 +345,7 @@ build_cgraph_edges (void) /* Create the callgraph edges and record the nodes referenced by the function. body. */ - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) { @@ -370,46 +398,17 @@ build_cgraph_edges (void) } /* Look for initializers of constant variables and private statics. */ - FOR_EACH_LOCAL_DECL (cfun, ix, decl) + FOR_EACH_LOCAL_DECL (fun, ix, decl) if (TREE_CODE (decl) == VAR_DECL && (TREE_STATIC (decl) && !DECL_EXTERNAL (decl)) && !DECL_HAS_VALUE_EXPR_P (decl)) varpool_finalize_decl (decl); - record_eh_tables (node, cfun); + record_eh_tables (node, fun); pointer_set_destroy (visited_nodes); return 0; } -namespace { - -const pass_data pass_data_build_cgraph_edges = -{ - GIMPLE_PASS, /* type */ - "*build_cgraph_edges", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - PROP_cfg, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_build_cgraph_edges : public gimple_opt_pass -{ -public: - pass_build_cgraph_edges (gcc::context *ctxt) - : gimple_opt_pass (pass_data_build_cgraph_edges, ctxt) - {} - - /* opt_pass methods: */ - unsigned int execute () { return build_cgraph_edges (); } - -}; // class pass_build_cgraph_edges - } // anon namespace gimple_opt_pass * @@ -522,7 +521,6 @@ const pass_data pass_data_rebuild_cgraph_edges = GIMPLE_PASS, /* type */ "*rebuild_cgraph_edges", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_CGRAPH, /* tv_id */ PROP_cfg, /* properties_required */ @@ -541,7 +539,7 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_rebuild_cgraph_edges (m_ctxt); } - unsigned int execute () { return rebuild_cgraph_edges (); } + virtual unsigned int execute (function *) { return rebuild_cgraph_edges (); } }; // class pass_rebuild_cgraph_edges @@ -554,15 +552,6 @@ make_pass_rebuild_cgraph_edges (gcc::context *ctxt) } -static unsigned int -remove_cgraph_callee_edges (void) -{ - struct cgraph_node *node = cgraph_get_node (current_function_decl); - cgraph_node_remove_callees (node); - ipa_remove_all_references (&node->ref_list); - return 0; -} - namespace { const pass_data pass_data_remove_cgraph_callee_edges = @@ -570,7 +559,6 @@ const pass_data pass_data_remove_cgraph_callee_edges = GIMPLE_PASS, /* type */ "*remove_cgraph_callee_edges", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -591,10 +579,19 @@ public: opt_pass * clone () { return new pass_remove_cgraph_callee_edges (m_ctxt); } - unsigned int execute () { return remove_cgraph_callee_edges (); } + virtual unsigned int execute (function *); }; // class pass_remove_cgraph_callee_edges +unsigned int +pass_remove_cgraph_callee_edges::execute (function *) +{ + struct cgraph_node *node = cgraph_get_node (current_function_decl); + cgraph_node_remove_callees (node); + ipa_remove_all_references (&node->ref_list); + return 0; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/combine-stack-adj.c b/gcc/combine-stack-adj.c index 69fd5ea77e3..399beb4c1bf 100644 --- a/gcc/combine-stack-adj.c +++ b/gcc/combine-stack-adj.c @@ -619,21 +619,6 @@ combine_stack_adjustments_for_block (basic_block bb) free_csa_reflist (reflist); } - -static bool -gate_handle_stack_adjustments (void) -{ - /* This is kind of a heuristic. We need to run combine_stack_adjustments - even for machines with possibly nonzero TARGET_RETURN_POPS_ARGS - and ACCUMULATE_OUTGOING_ARGS. We expect that only ports having - push instructions will have popping returns. */ -#ifndef PUSH_ROUNDING - if (ACCUMULATE_OUTGOING_ARGS) - return false; -#endif - return flag_combine_stack_adjustments; -} - static unsigned int rest_of_handle_stack_adjustments (void) { @@ -650,7 +635,6 @@ const pass_data pass_data_stack_adjustments = RTL_PASS, /* type */ "csa", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_COMBINE_STACK_ADJUST, /* tv_id */ 0, /* properties_required */ @@ -668,11 +652,28 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_stack_adjustments (); } - unsigned int execute () { return rest_of_handle_stack_adjustments (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) + { + return rest_of_handle_stack_adjustments (); + } }; // class pass_stack_adjustments +bool +pass_stack_adjustments::gate (function *) +{ + /* This is kind of a heuristic. We need to run combine_stack_adjustments + even for machines with possibly nonzero TARGET_RETURN_POPS_ARGS + and ACCUMULATE_OUTGOING_ARGS. We expect that only ports having + push instructions will have popping returns. */ +#ifndef PUSH_ROUNDING + if (ACCUMULATE_OUTGOING_ARGS) + return false; +#endif + return flag_combine_stack_adjustments; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/combine.c b/gcc/combine.c index 8e8081082a9..704790b80e6 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -13847,12 +13847,6 @@ dump_combine_total_stats (FILE *file) total_attempts, total_merges, total_extras, total_successes); } -static bool -gate_handle_combine (void) -{ - return (optimize > 0); -} - /* Try combining insns through substitution. */ static unsigned int rest_of_handle_combine (void) @@ -13890,7 +13884,6 @@ const pass_data pass_data_combine = RTL_PASS, /* type */ "combine", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_COMBINE, /* tv_id */ PROP_cfglayout, /* properties_required */ @@ -13908,8 +13901,11 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_combine (); } - unsigned int execute () { return rest_of_handle_combine (); } + virtual bool gate (function *) { return (optimize > 0); } + virtual unsigned int execute (function *) + { + return rest_of_handle_combine (); + } }; // class pass_combine diff --git a/gcc/compare-elim.c b/gcc/compare-elim.c index 3fbe140b80c..7555d48c613 100644 --- a/gcc/compare-elim.c +++ b/gcc/compare-elim.c @@ -643,15 +643,6 @@ execute_compare_elim_after_reload (void) return 0; } -static bool -gate_compare_elim_after_reload (void) -{ - /* Setting this target hook value is how a backend indicates the need. */ - if (targetm.flags_regnum == INVALID_REGNUM) - return false; - return flag_compare_elim_after_reload; -} - namespace { const pass_data pass_data_compare_elim_after_reload = @@ -659,7 +650,6 @@ const pass_data pass_data_compare_elim_after_reload = RTL_PASS, /* type */ "cmpelim", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -678,8 +668,18 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_compare_elim_after_reload (); } - unsigned int execute () { return execute_compare_elim_after_reload (); } + virtual bool gate (function *) + { + /* Setting this target hook value is how a backend indicates the need. */ + if (targetm.flags_regnum == INVALID_REGNUM) + return false; + return flag_compare_elim_after_reload; + } + + virtual unsigned int execute (function *) + { + return execute_compare_elim_after_reload (); + } }; // class pass_compare_elim_after_reload diff --git a/gcc/config.gcc b/gcc/config.gcc index 3c55c88af4d..926b1b0758c 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -246,7 +246,6 @@ md_file= case ${target} in picochip-* \ | score-* \ - | *-*-solaris2.9* \ ) if test "x$enable_obsolete" != xyes; then echo "*** Configuration ${target} is obsolete." >&2 @@ -287,8 +286,8 @@ case ${target} in | *-*-rtemsaout* \ | *-*-rtemscoff* \ | *-*-solaris2 \ - | *-*-solaris2.[0-8] \ - | *-*-solaris2.[0-8].* \ + | *-*-solaris2.[0-9] \ + | *-*-solaris2.[0-9].* \ | *-*-sysv* \ | vax-*-vms* \ ) @@ -810,15 +809,8 @@ case ${target} in # i?86-*-solaris2* needs to insert headers between cpu default and # Solaris 2 specific ones. sol2_tm_file="dbxelf.h elfos.h ${cpu_type}/sysv4.h sol2.h ${cpu_type}/sol2.h" - case ${target} in - *-*-solaris2.1[0-9]*) - sol2_tm_file="${sol2_tm_file} sol2-10.h" - use_gcc_stdint=wrap - ;; - *) - use_gcc_stdint=provide - ;; - esac + sol2_tm_file="${sol2_tm_file} sol2-10.h" + use_gcc_stdint=wrap if test x$gnu_ld = xyes; then tm_file="usegld.h ${tm_file}" fi @@ -1526,42 +1518,27 @@ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*) tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file}" # Set default arch_32 to pentium4, tune_32 to generic like the other # i386 targets, although config.guess defaults to i386-pc-solaris2*. - case ${target} in - *-*-solaris2.9*) - # Solaris 9/x86 cannot execute SSE/SSE2 instructions by default. - with_arch_32=${with_arch_32:-pentiumpro} - ;; - *) - with_arch_32=${with_arch_32:-pentium4} - ;; - esac + with_arch_32=${with_arch_32:-pentium4} with_tune_32=${with_tune_32:-generic} - case ${target} in - *-*-solaris2.9*) - tm_file="${tm_file} i386/sol2-9.h" - ;; - *-*-solaris2.1[0-9]*) - tm_file="${tm_file} i386/x86-64.h i386/sol2-bi.h sol2-bi.h" - tm_defines="${tm_defines} TARGET_BI_ARCH=1" - tmake_file="$tmake_file i386/t-sol2-64" - need_64bit_isa=yes - if test x$with_cpu = x; then - if test x$with_cpu_64 = x; then - with_cpu_64=generic - fi - else - case " $x86_cpus $x86_archs $x86_64_archs " in - *" $with_cpu "*) - ;; - *) - echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2 - echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2 - exit 1 - ;; - esac + tm_file="${tm_file} i386/x86-64.h i386/sol2-bi.h sol2-bi.h" + tm_defines="${tm_defines} TARGET_BI_ARCH=1" + tmake_file="$tmake_file i386/t-sol2-64" + need_64bit_isa=yes + if test x$with_cpu = x; then + if test x$with_cpu_64 = x; then + with_cpu_64=generic fi - ;; - esac + else + case " $x86_cpus $x86_archs $x86_64_archs " in + *" $with_cpu "*) + ;; + *) + echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2 + echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2 + exit 1 + ;; + esac + fi ;; i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae) tm_file="${tm_file} i386/unix.h i386/att.h elfos.h vx-common.h" diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index 55cfe0ab225..cd46260b6ac 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -311,6 +311,8 @@ aarch64_types_store1_qualifiers[SIMD_MAX_BUILTIN_ARGS] VAR7 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di) #define BUILTIN_VDQF(T, N, MAP) \ VAR3 (T, N, MAP, v2sf, v4sf, v2df) +#define BUILTIN_VDQF_DF(T, N, MAP) \ + VAR4 (T, N, MAP, v2sf, v4sf, v2df, df) #define BUILTIN_VDQH(T, N, MAP) \ VAR2 (T, N, MAP, v4hi, v8hi) #define BUILTIN_VDQHS(T, N, MAP) \ diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def index c9b7570e565..c5e3b3e9fb3 100644 --- a/gcc/config/aarch64/aarch64-simd-builtins.def +++ b/gcc/config/aarch64/aarch64-simd-builtins.def @@ -265,7 +265,7 @@ BUILTIN_VDQF (UNOP, nearbyint, 2) BUILTIN_VDQF (UNOP, rint, 2) BUILTIN_VDQF (UNOP, round, 2) - BUILTIN_VDQF (UNOP, frintn, 2) + BUILTIN_VDQF_DF (UNOP, frintn, 2) /* Implemented by l<fcvt_pattern><su_optab><VQDF:mode><vcvt_target>2. */ VAR1 (UNOP, lbtruncv2sf, 2, v2si) diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 73aee2c3df0..995b4a81acd 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -1452,7 +1452,7 @@ ) ;; Vector versions of the floating-point frint patterns. -;; Expands to btrunc, ceil, floor, nearbyint, rint, round. +;; Expands to btrunc, ceil, floor, nearbyint, rint, round, frintn. (define_insn "<frint_pattern><mode>2" [(set (match_operand:VDQF 0 "register_operand" "=w") (unspec:VDQF [(match_operand:VDQF 1 "register_operand" "w")] @@ -3415,26 +3415,46 @@ ))) (clobber (reg:CC CC_REGNUM))] "TARGET_SIMD" - "@ - cm<n_optab>\t%d0, %d<cmp_1>, %d<cmp_2> - cm<optab>\t%d0, %d1, #0 - #" - "reload_completed - /* We need to prevent the split from - happening in the 'w' constraint cases. */ - && GP_REGNUM_P (REGNO (operands[0])) - && GP_REGNUM_P (REGNO (operands[1]))" - [(const_int 0)] + "#" + "reload_completed" + [(set (match_operand:DI 0 "register_operand") + (neg:DI + (COMPARISONS:DI + (match_operand:DI 1 "register_operand") + (match_operand:DI 2 "aarch64_simd_reg_or_zero") + )))] { - enum machine_mode mode = SELECT_CC_MODE (<CMP>, operands[1], operands[2]); - rtx cc_reg = aarch64_gen_compare_reg (<CMP>, operands[1], operands[2]); - rtx comparison = gen_rtx_<CMP> (mode, operands[1], operands[2]); - emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); - DONE; + /* If we are in the general purpose register file, + we split to a sequence of comparison and store. */ + if (GP_REGNUM_P (REGNO (operands[0])) + && GP_REGNUM_P (REGNO (operands[1]))) + { + enum machine_mode mode = SELECT_CC_MODE (<CMP>, operands[1], operands[2]); + rtx cc_reg = aarch64_gen_compare_reg (<CMP>, operands[1], operands[2]); + rtx comparison = gen_rtx_<CMP> (mode, operands[1], operands[2]); + emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); + DONE; + } + /* Otherwise, we expand to a similar pattern which does not + clobber CC_REGNUM. */ } [(set_attr "type" "neon_compare, neon_compare_zero, multiple")] ) +(define_insn "*aarch64_cm<optab>di" + [(set (match_operand:DI 0 "register_operand" "=w,w") + (neg:DI + (COMPARISONS:DI + (match_operand:DI 1 "register_operand" "w,w") + (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,ZDz") + )))] + "TARGET_SIMD && reload_completed" + "@ + cm<n_optab>\t%d0, %d<cmp_1>, %d<cmp_2> + cm<optab>\t%d0, %d1, #0" + [(set_attr "type" "neon_compare, neon_compare_zero")] +) + ;; cm(hs|hi) (define_insn "aarch64_cm<optab><mode>" @@ -3458,23 +3478,42 @@ ))) (clobber (reg:CC CC_REGNUM))] "TARGET_SIMD" - "@ - cm<n_optab>\t%d0, %d<cmp_1>, %d<cmp_2> - #" - "reload_completed - /* We need to prevent the split from - happening in the 'w' constraint cases. */ - && GP_REGNUM_P (REGNO (operands[0])) - && GP_REGNUM_P (REGNO (operands[1]))" - [(const_int 0)] + "#" + "reload_completed" + [(set (match_operand:DI 0 "register_operand") + (neg:DI + (UCOMPARISONS:DI + (match_operand:DI 1 "register_operand") + (match_operand:DI 2 "aarch64_simd_reg_or_zero") + )))] { - enum machine_mode mode = CCmode; - rtx cc_reg = aarch64_gen_compare_reg (<CMP>, operands[1], operands[2]); - rtx comparison = gen_rtx_<CMP> (mode, operands[1], operands[2]); - emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); - DONE; + /* If we are in the general purpose register file, + we split to a sequence of comparison and store. */ + if (GP_REGNUM_P (REGNO (operands[0])) + && GP_REGNUM_P (REGNO (operands[1]))) + { + enum machine_mode mode = CCmode; + rtx cc_reg = aarch64_gen_compare_reg (<CMP>, operands[1], operands[2]); + rtx comparison = gen_rtx_<CMP> (mode, operands[1], operands[2]); + emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); + DONE; + } + /* Otherwise, we expand to a similar pattern which does not + clobber CC_REGNUM. */ } - [(set_attr "type" "neon_compare, neon_compare_zero")] + [(set_attr "type" "neon_compare,multiple")] +) + +(define_insn "*aarch64_cm<optab>di" + [(set (match_operand:DI 0 "register_operand" "=w") + (neg:DI + (UCOMPARISONS:DI + (match_operand:DI 1 "register_operand" "w") + (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w") + )))] + "TARGET_SIMD && reload_completed" + "cm<n_optab>\t%d0, %d<cmp_1>, %d<cmp_2>" + [(set_attr "type" "neon_compare")] ) ;; cmtst @@ -3502,23 +3541,44 @@ (const_int 0)))) (clobber (reg:CC CC_REGNUM))] "TARGET_SIMD" - "@ - cmtst\t%d0, %d1, %d2 - #" - "reload_completed - /* We need to prevent the split from - happening in the 'w' constraint cases. */ - && GP_REGNUM_P (REGNO (operands[0])) - && GP_REGNUM_P (REGNO (operands[1]))" - [(const_int 0)] + "#" + "reload_completed" + [(set (match_operand:DI 0 "register_operand") + (neg:DI + (ne:DI + (and:DI + (match_operand:DI 1 "register_operand") + (match_operand:DI 2 "register_operand")) + (const_int 0))))] { - rtx and_tree = gen_rtx_AND (DImode, operands[1], operands[2]); - enum machine_mode mode = SELECT_CC_MODE (NE, and_tree, const0_rtx); - rtx cc_reg = aarch64_gen_compare_reg (NE, and_tree, const0_rtx); - rtx comparison = gen_rtx_NE (mode, and_tree, const0_rtx); - emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); - DONE; + /* If we are in the general purpose register file, + we split to a sequence of comparison and store. */ + if (GP_REGNUM_P (REGNO (operands[0])) + && GP_REGNUM_P (REGNO (operands[1]))) + { + rtx and_tree = gen_rtx_AND (DImode, operands[1], operands[2]); + enum machine_mode mode = SELECT_CC_MODE (NE, and_tree, const0_rtx); + rtx cc_reg = aarch64_gen_compare_reg (NE, and_tree, const0_rtx); + rtx comparison = gen_rtx_NE (mode, and_tree, const0_rtx); + emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); + DONE; + } + /* Otherwise, we expand to a similar pattern which does not + clobber CC_REGNUM. */ } + [(set_attr "type" "neon_tst,multiple")] +) + +(define_insn "*aarch64_cmtstdi" + [(set (match_operand:DI 0 "register_operand" "=w") + (neg:DI + (ne:DI + (and:DI + (match_operand:DI 1 "register_operand" "w") + (match_operand:DI 2 "register_operand" "w")) + (const_int 0))))] + "TARGET_SIMD" + "cmtst\t%d0, %d1, %d2" [(set_attr "type" "neon_tst")] ) diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 32601329a69..443fbc45eda 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -3836,34 +3836,34 @@ aarch64_print_operand_address (FILE *f, rtx x) if (addr.offset == const0_rtx) asm_fprintf (f, "[%s]", reg_names [REGNO (addr.base)]); else - asm_fprintf (f, "[%s,%wd]", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, %wd]", reg_names [REGNO (addr.base)], INTVAL (addr.offset)); return; case ADDRESS_REG_REG: if (addr.shift == 0) - asm_fprintf (f, "[%s,%s]", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, %s]", reg_names [REGNO (addr.base)], reg_names [REGNO (addr.offset)]); else - asm_fprintf (f, "[%s,%s,lsl %u]", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, %s, lsl %u]", reg_names [REGNO (addr.base)], reg_names [REGNO (addr.offset)], addr.shift); return; case ADDRESS_REG_UXTW: if (addr.shift == 0) - asm_fprintf (f, "[%s,w%d,uxtw]", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, w%d, uxtw]", reg_names [REGNO (addr.base)], REGNO (addr.offset) - R0_REGNUM); else - asm_fprintf (f, "[%s,w%d,uxtw %u]", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, w%d, uxtw %u]", reg_names [REGNO (addr.base)], REGNO (addr.offset) - R0_REGNUM, addr.shift); return; case ADDRESS_REG_SXTW: if (addr.shift == 0) - asm_fprintf (f, "[%s,w%d,sxtw]", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, w%d, sxtw]", reg_names [REGNO (addr.base)], REGNO (addr.offset) - R0_REGNUM); else - asm_fprintf (f, "[%s,w%d,sxtw %u]", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, w%d, sxtw %u]", reg_names [REGNO (addr.base)], REGNO (addr.offset) - R0_REGNUM, addr.shift); return; @@ -3871,27 +3871,27 @@ aarch64_print_operand_address (FILE *f, rtx x) switch (GET_CODE (x)) { case PRE_INC: - asm_fprintf (f, "[%s,%d]!", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, %d]!", reg_names [REGNO (addr.base)], GET_MODE_SIZE (aarch64_memory_reference_mode)); return; case POST_INC: - asm_fprintf (f, "[%s],%d", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s], %d", reg_names [REGNO (addr.base)], GET_MODE_SIZE (aarch64_memory_reference_mode)); return; case PRE_DEC: - asm_fprintf (f, "[%s,-%d]!", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, -%d]!", reg_names [REGNO (addr.base)], GET_MODE_SIZE (aarch64_memory_reference_mode)); return; case POST_DEC: - asm_fprintf (f, "[%s],-%d", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s], -%d", reg_names [REGNO (addr.base)], GET_MODE_SIZE (aarch64_memory_reference_mode)); return; case PRE_MODIFY: - asm_fprintf (f, "[%s,%wd]!", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s, %wd]!", reg_names [REGNO (addr.base)], INTVAL (addr.offset)); return; case POST_MODIFY: - asm_fprintf (f, "[%s],%wd", reg_names [REGNO (addr.base)], + asm_fprintf (f, "[%s], %wd", reg_names [REGNO (addr.base)], INTVAL (addr.offset)); return; default: @@ -3900,7 +3900,7 @@ aarch64_print_operand_address (FILE *f, rtx x) break; case ADDRESS_LO_SUM: - asm_fprintf (f, "[%s,#:lo12:", reg_names [REGNO (addr.base)]); + asm_fprintf (f, "[%s, #:lo12:", reg_names [REGNO (addr.base)]); output_addr_const (f, addr.offset); asm_fprintf (f, "]"); return; @@ -4847,9 +4847,11 @@ aarch64_address_cost (rtx x ATTRIBUTE_UNUSED, } static int -aarch64_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED, - reg_class_t from, reg_class_t to) +aarch64_register_move_cost (enum machine_mode mode, + reg_class_t from_i, reg_class_t to_i) { + enum reg_class from = (enum reg_class) from_i; + enum reg_class to = (enum reg_class) to_i; const struct cpu_regmove_cost *regmove_cost = aarch64_tune_params->regmove_cost; @@ -4875,8 +4877,7 @@ aarch64_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED, secondary reload. A general register is used as a scratch to move the upper DI value and the lower DI value is moved directly, hence the cost is the sum of three moves. */ - - if (! TARGET_SIMD && GET_MODE_SIZE (from) == 128 && GET_MODE_SIZE (to) == 128) + if (! TARGET_SIMD && GET_MODE_SIZE (mode) == 128) return regmove_cost->GP2FP + regmove_cost->FP2GP + regmove_cost->FP2FP; return regmove_cost->FP2FP; diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index c86a29d8e7f..98a03e4dd35 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -3188,7 +3188,7 @@ ;; ------------------------------------------------------------------- ;; frint floating-point round to integral standard patterns. -;; Expands to btrunc, ceil, floor, nearbyint, rint, round. +;; Expands to btrunc, ceil, floor, nearbyint, rint, round, frintn. (define_insn "<frint_pattern><mode>2" [(set (match_operand:GPF 0 "register_operand" "=w") @@ -3299,20 +3299,24 @@ [(set_attr "type" "f_cvtf2i")] ) -(define_insn "float<GPI:mode><GPF:mode>2" - [(set (match_operand:GPF 0 "register_operand" "=w") - (float:GPF (match_operand:GPI 1 "register_operand" "r")))] - "TARGET_FLOAT" - "scvtf\\t%<GPF:s>0, %<GPI:w>1" - [(set_attr "type" "f_cvti2f")] +(define_insn "<optab><fcvt_target><GPF:mode>2" + [(set (match_operand:GPF 0 "register_operand" "=w,w") + (FLOATUORS:GPF (match_operand:<FCVT_TARGET> 1 "register_operand" "w,r")))] + "" + "@ + <su_optab>cvtf\t%<GPF:s>0, %<s>1 + <su_optab>cvtf\t%<GPF:s>0, %<w1>1" + [(set_attr "simd" "yes,no") + (set_attr "fp" "no,yes") + (set_attr "type" "neon_int_to_fp_<Vetype>,f_cvti2f")] ) -(define_insn "floatuns<GPI:mode><GPF:mode>2" +(define_insn "<optab><fcvt_iesize><GPF:mode>2" [(set (match_operand:GPF 0 "register_operand" "=w") - (unsigned_float:GPF (match_operand:GPI 1 "register_operand" "r")))] + (FLOATUORS:GPF (match_operand:<FCVT_IESIZE> 1 "register_operand" "r")))] "TARGET_FLOAT" - "ucvtf\\t%<GPF:s>0, %<GPI:w>1" - [(set_attr "type" "f_cvt")] + "<su_optab>cvtf\t%<GPF:s>0, %<w2>1" + [(set_attr "type" "f_cvti2f")] ) ;; ------------------------------------------------------------------- diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index 747a292ba9b..a3c15ac3da2 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -22481,6 +22481,12 @@ vrnd_f32 (float32x2_t __a) return __builtin_aarch64_btruncv2sf (__a); } +__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +vrnd_f64 (float64x1_t __a) +{ + return vset_lane_f64 (__builtin_trunc (vget_lane_f64 (__a, 0)), __a, 0); +} + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) vrndq_f32 (float32x4_t __a) { @@ -22501,6 +22507,12 @@ vrnda_f32 (float32x2_t __a) return __builtin_aarch64_roundv2sf (__a); } +__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +vrnda_f64 (float64x1_t __a) +{ + return vset_lane_f64 (__builtin_round (vget_lane_f64 (__a, 0)), __a, 0); +} + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) vrndaq_f32 (float32x4_t __a) { @@ -22521,6 +22533,12 @@ vrndi_f32 (float32x2_t __a) return __builtin_aarch64_nearbyintv2sf (__a); } +__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +vrndi_f64 (float64x1_t __a) +{ + return vset_lane_f64 (__builtin_nearbyint (vget_lane_f64 (__a, 0)), __a, 0); +} + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) vrndiq_f32 (float32x4_t __a) { @@ -22541,6 +22559,12 @@ vrndm_f32 (float32x2_t __a) return __builtin_aarch64_floorv2sf (__a); } +__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +vrndm_f64 (float64x1_t __a) +{ + return vset_lane_f64 (__builtin_floor (vget_lane_f64 (__a, 0)), __a, 0); +} + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) vrndmq_f32 (float32x4_t __a) { @@ -22560,6 +22584,13 @@ vrndn_f32 (float32x2_t __a) { return __builtin_aarch64_frintnv2sf (__a); } + +__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +vrndn_f64 (float64x1_t __a) +{ + return __builtin_aarch64_frintndf (__a); +} + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) vrndnq_f32 (float32x4_t __a) { @@ -22580,6 +22611,12 @@ vrndp_f32 (float32x2_t __a) return __builtin_aarch64_ceilv2sf (__a); } +__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +vrndp_f64 (float64x1_t __a) +{ + return vset_lane_f64 (__builtin_ceil (vget_lane_f64 (__a, 0)), __a, 0); +} + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) vrndpq_f32 (float32x4_t __a) { @@ -22600,6 +22637,12 @@ vrndx_f32 (float32x2_t __a) return __builtin_aarch64_rintv2sf (__a); } +__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +vrndx_f64 (float64x1_t __a) +{ + return vset_lane_f64 (__builtin_rint (vget_lane_f64 (__a, 0)), __a, 0); +} + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) vrndxq_f32 (float32x4_t __a) { diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index f1339b8cc80..03b1889af46 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -293,6 +293,10 @@ ;; 32-bit version and "%x0" in the 64-bit version. (define_mode_attr w [(QI "w") (HI "w") (SI "w") (DI "x") (SF "s") (DF "d")]) +;; For inequal width int to float conversion +(define_mode_attr w1 [(SF "w") (DF "x")]) +(define_mode_attr w2 [(SF "x") (DF "w")]) + ;; For constraints used in scalar immediate vector moves (define_mode_attr hq [(HI "h") (QI "q")]) @@ -558,8 +562,12 @@ (define_mode_attr atomic_sfx [(QI "b") (HI "h") (SI "") (DI "")]) -(define_mode_attr fcvt_target [(V2DF "v2di") (V4SF "v4si") (V2SF "v2si")]) -(define_mode_attr FCVT_TARGET [(V2DF "V2DI") (V4SF "V4SI") (V2SF "V2SI")]) +(define_mode_attr fcvt_target [(V2DF "v2di") (V4SF "v4si") (V2SF "v2si") (SF "si") (DF "di")]) +(define_mode_attr FCVT_TARGET [(V2DF "V2DI") (V4SF "V4SI") (V2SF "V2SI") (SF "SI") (DF "DI")]) + +;; for the inequal width integer to fp conversions +(define_mode_attr fcvt_iesize [(SF "di") (DF "si")]) +(define_mode_attr FCVT_IESIZE [(SF "DI") (DF "SI")]) (define_mode_attr VSWAP_WIDTH [(V8QI "V16QI") (V16QI "V8QI") (V4HI "V8HI") (V8HI "V4HI") diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 2b12844cdb7..987a7c9a55a 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -607,7 +607,6 @@ const pass_data pass_data_arc_ifcvt = RTL_PASS, "arc_ifcvt", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_IFCVT2, /* tv_id */ 0, /* properties_required */ @@ -626,7 +625,7 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_arc_ifcvt (m_ctxt); } - unsigned int execute () { return arc_ifcvt (); } + virtual unsigned int execute (function *) { return arc_ifcvt (); } }; } // anon namespace @@ -646,7 +645,6 @@ const pass_data pass_data_arc_predicate_delay_insns = RTL_PASS, "arc_predicate_delay_insns", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_IFCVT2, /* tv_id */ 0, /* properties_required */ @@ -664,7 +662,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return arc_predicate_delay_insns (); } + virtual unsigned int execute (function *) + { + return arc_predicate_delay_insns (); + } }; } // anon namespace diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h index 13874ee6e50..74645ee1d24 100644 --- a/gcc/config/arm/arm-protos.h +++ b/gcc/config/arm/arm-protos.h @@ -272,6 +272,11 @@ struct tune_params const struct cpu_vec_costs* vec_costs; /* Prefer Neon for 64-bit bitops. */ bool prefer_neon_for_64bits; + /* Prefer 32-bit encoding instead of flag-setting 16-bit encoding. */ + bool disparage_flag_setting_t16_encodings; + /* Prefer 32-bit encoding instead of 16-bit encoding where subset of flags + would be set. */ + bool disparage_partial_flag_setting_t16_encodings; }; extern const struct tune_params *current_tune; diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index bb7dc6f0b77..aadd51219eb 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -1484,7 +1484,8 @@ const struct tune_params arm_slowmul_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_fastmul_tune = @@ -1500,7 +1501,8 @@ const struct tune_params arm_fastmul_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; /* StrongARM has early execution of branches, so a sequence that is worth @@ -1519,7 +1521,8 @@ const struct tune_params arm_strongarm_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_xscale_tune = @@ -1535,7 +1538,8 @@ const struct tune_params arm_xscale_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_9e_tune = @@ -1551,7 +1555,8 @@ const struct tune_params arm_9e_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_v6t2_tune = @@ -1567,7 +1572,8 @@ const struct tune_params arm_v6t2_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; /* Generic Cortex tuning. Use more specific tunings if appropriate. */ @@ -1584,7 +1590,8 @@ const struct tune_params arm_cortex_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_cortex_a7_tune = @@ -1600,7 +1607,8 @@ const struct tune_params arm_cortex_a7_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_cortex_a15_tune = @@ -1616,7 +1624,8 @@ const struct tune_params arm_cortex_a15_tune = true, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + true, true /* Prefer 32-bit encodings. */ }; const struct tune_params arm_cortex_a53_tune = @@ -1632,7 +1641,8 @@ const struct tune_params arm_cortex_a53_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_cortex_a57_tune = @@ -1667,7 +1677,8 @@ const struct tune_params arm_cortex_a5_tune = false, /* Prefer LDRD/STRD. */ {false, false}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_cortex_a9_tune = @@ -1683,7 +1694,8 @@ const struct tune_params arm_cortex_a9_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_cortex_a12_tune = @@ -1722,7 +1734,8 @@ const struct tune_params arm_v7m_tune = false, /* Prefer LDRD/STRD. */ {false, false}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; /* The arm_v6m_tune is duplicated from arm_cortex_tune, rather than @@ -1740,7 +1753,8 @@ const struct tune_params arm_v6m_tune = false, /* Prefer LDRD/STRD. */ {false, false}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; const struct tune_params arm_fa726te_tune = @@ -1756,7 +1770,8 @@ const struct tune_params arm_fa726te_tune = false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ - false /* Prefer Neon for 64-bits bitops. */ + false, /* Prefer Neon for 64-bits bitops. */ + false, false /* Prefer 32-bit encodings. */ }; @@ -16793,9 +16808,20 @@ thumb2_reorg (void) compute_bb_for_insn (); df_analyze (); + enum Convert_Action {SKIP, CONV, SWAP_CONV}; + FOR_EACH_BB_FN (bb, cfun) { + if (current_tune->disparage_flag_setting_t16_encodings + && optimize_bb_for_speed_p (bb)) + continue; + rtx insn; + Convert_Action action = SKIP; + Convert_Action action_for_partial_flag_setting + = (current_tune->disparage_partial_flag_setting_t16_encodings + && optimize_bb_for_speed_p (bb)) + ? SKIP : CONV; COPY_REG_SET (&live, DF_LR_OUT (bb)); df_simulate_initialize_backwards (bb, &live); @@ -16805,7 +16831,7 @@ thumb2_reorg (void) && !REGNO_REG_SET_P (&live, CC_REGNUM) && GET_CODE (PATTERN (insn)) == SET) { - enum {SKIP, CONV, SWAP_CONV} action = SKIP; + action = SKIP; rtx pat = PATTERN (insn); rtx dst = XEXP (pat, 0); rtx src = XEXP (pat, 1); @@ -16886,10 +16912,11 @@ thumb2_reorg (void) /* ANDS <Rdn>,<Rm> */ if (rtx_equal_p (dst, op0) && low_register_operand (op1, SImode)) - action = CONV; + action = action_for_partial_flag_setting; else if (rtx_equal_p (dst, op1) && low_register_operand (op0, SImode)) - action = SWAP_CONV; + action = action_for_partial_flag_setting == SKIP + ? SKIP : SWAP_CONV; break; case ASHIFTRT: @@ -16900,26 +16927,30 @@ thumb2_reorg (void) /* LSLS <Rdn>,<Rm> */ if (rtx_equal_p (dst, op0) && low_register_operand (op1, SImode)) - action = CONV; + action = action_for_partial_flag_setting; /* ASRS <Rd>,<Rm>,#<imm5> */ /* LSRS <Rd>,<Rm>,#<imm5> */ /* LSLS <Rd>,<Rm>,#<imm5> */ else if (low_register_operand (op0, SImode) && CONST_INT_P (op1) && IN_RANGE (INTVAL (op1), 0, 31)) - action = CONV; + action = action_for_partial_flag_setting; break; case ROTATERT: /* RORS <Rdn>,<Rm> */ if (rtx_equal_p (dst, op0) && low_register_operand (op1, SImode)) - action = CONV; + action = action_for_partial_flag_setting; break; case NOT: - case NEG: /* MVNS <Rd>,<Rm> */ + if (low_register_operand (op0, SImode)) + action = action_for_partial_flag_setting; + break; + + case NEG: /* NEGS <Rd>,<Rm> (a.k.a RSBS) */ if (low_register_operand (op0, SImode)) action = CONV; @@ -16929,7 +16960,7 @@ thumb2_reorg (void) /* MOVS <Rd>,#<imm8> */ if (CONST_INT_P (src) && IN_RANGE (INTVAL (src), 0, 255)) - action = CONV; + action = action_for_partial_flag_setting; break; case REG: @@ -21427,7 +21458,7 @@ arm_print_operand (FILE *stream, rtx x, int code) register. */ case 'p': { - int mode = GET_MODE (x); + enum machine_mode mode = GET_MODE (x); int regno; if (GET_MODE_SIZE (mode) != 8 || !REG_P (x)) @@ -21451,7 +21482,7 @@ arm_print_operand (FILE *stream, rtx x, int code) case 'P': case 'q': { - int mode = GET_MODE (x); + enum machine_mode mode = GET_MODE (x); int is_quad = (code == 'q'); int regno; @@ -21487,7 +21518,7 @@ arm_print_operand (FILE *stream, rtx x, int code) case 'e': case 'f': { - int mode = GET_MODE (x); + enum machine_mode mode = GET_MODE (x); int regno; if ((GET_MODE_SIZE (mode) != 16 @@ -21620,7 +21651,7 @@ arm_print_operand (FILE *stream, rtx x, int code) /* Translate an S register number into a D register number and element index. */ case 'y': { - int mode = GET_MODE (x); + enum machine_mode mode = GET_MODE (x); int regno; if (GET_MODE_SIZE (mode) != 4 || !REG_P (x)) @@ -21654,7 +21685,7 @@ arm_print_operand (FILE *stream, rtx x, int code) number into a D register number and element index. */ case 'z': { - int mode = GET_MODE (x); + enum machine_mode mode = GET_MODE (x); int regno; if (GET_MODE_SIZE (mode) != 2 || !REG_P (x)) @@ -22615,12 +22646,19 @@ arm_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode) } /* We allow almost any value to be stored in the general registers. - Restrict doubleword quantities to even register pairs so that we can - use ldrd. Do not allow very large Neon structure opaque modes in - general registers; they would use too many. */ + Restrict doubleword quantities to even register pairs in ARM state + so that we can use ldrd. Do not allow very large Neon structure + opaque modes in general registers; they would use too many. */ if (regno <= LAST_ARM_REGNUM) - return !(TARGET_LDRD && GET_MODE_SIZE (mode) > 4 && (regno & 1) != 0) - && ARM_NUM_REGS (mode) <= 4; + { + if (ARM_NUM_REGS (mode) > 4) + return FALSE; + + if (TARGET_THUMB2) + return TRUE; + + return !(TARGET_LDRD && GET_MODE_SIZE (mode) > 4 && (regno & 1) != 0); + } if (regno == FRAME_POINTER_REGNUM || regno == ARG_POINTER_REGNUM) @@ -25894,7 +25932,7 @@ thumb_exit (FILE *f, int reg_containing_return_addr) int pops_needed; unsigned available; unsigned required; - int mode; + enum machine_mode mode; int size; int restore_a4 = FALSE; diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 4b81ee27211..9aa0d352bbd 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -2863,6 +2863,28 @@ (set_attr "type" "multiple")] ) +(define_insn_and_split "*anddi_notdi_zesidi" + [(set (match_operand:DI 0 "s_register_operand" "=r") + (and:DI (not:DI (match_operand:DI 2 "s_register_operand" "r")) + (zero_extend:DI + (match_operand:SI 1 "s_register_operand" "r"))))] + "TARGET_32BIT" + "#" + "TARGET_32BIT && reload_completed" + [(set (match_dup 0) (and:SI (not:SI (match_dup 2)) (match_dup 1))) + (set (match_dup 3) (const_int 0))] + " + { + operands[3] = gen_highpart (SImode, operands[0]); + operands[0] = gen_lowpart (SImode, operands[0]); + operands[2] = gen_lowpart (SImode, operands[2]); + }" + [(set_attr "length" "8") + (set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "multiple")] +) + (define_insn_and_split "*anddi_notsesidi_di" [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") (and:DI (not:DI (sign_extend:DI diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index d84938f304e..10bc8b1c530 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -1370,6 +1370,103 @@ (set_attr "type" "alu_reg")] ) +; Constants for op 2 will never be given to these patterns. +(define_insn_and_split "*iordi_notdi_di" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (ior:DI (not:DI (match_operand:DI 1 "s_register_operand" "0,r")) + (match_operand:DI 2 "s_register_operand" "r,0")))] + "TARGET_THUMB2" + "#" + "TARGET_THUMB2 && reload_completed" + [(set (match_dup 0) (ior:SI (not:SI (match_dup 1)) (match_dup 2))) + (set (match_dup 3) (ior:SI (not:SI (match_dup 4)) (match_dup 5)))] + " + { + operands[3] = gen_highpart (SImode, operands[0]); + operands[0] = gen_lowpart (SImode, operands[0]); + operands[4] = gen_highpart (SImode, operands[1]); + operands[1] = gen_lowpart (SImode, operands[1]); + operands[5] = gen_highpart (SImode, operands[2]); + operands[2] = gen_lowpart (SImode, operands[2]); + }" + [(set_attr "length" "8") + (set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "multiple")] +) + +(define_insn_and_split "*iordi_notzesidi_di" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (ior:DI (not:DI (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r"))) + (match_operand:DI 1 "s_register_operand" "0,?r")))] + "TARGET_THUMB2" + "#" + ; (not (zero_extend...)) means operand0 will always be 0xffffffff + "TARGET_THUMB2 && reload_completed" + [(set (match_dup 0) (ior:SI (not:SI (match_dup 2)) (match_dup 1))) + (set (match_dup 3) (const_int -1))] + " + { + operands[3] = gen_highpart (SImode, operands[0]); + operands[0] = gen_lowpart (SImode, operands[0]); + operands[1] = gen_lowpart (SImode, operands[1]); + }" + [(set_attr "length" "4,8") + (set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "multiple")] +) + +(define_insn_and_split "*iordi_notdi_zesidi" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (ior:DI (not:DI (match_operand:DI 2 "s_register_operand" "0,?r")) + (zero_extend:DI + (match_operand:SI 1 "s_register_operand" "r,r"))))] + "TARGET_THUMB2" + "#" + "TARGET_THUMB2 && reload_completed" + [(set (match_dup 0) (ior:SI (not:SI (match_dup 2)) (match_dup 1))) + (set (match_dup 3) (not:SI (match_dup 4)))] + " + { + operands[3] = gen_highpart (SImode, operands[0]); + operands[0] = gen_lowpart (SImode, operands[0]); + operands[1] = gen_lowpart (SImode, operands[1]); + operands[4] = gen_highpart (SImode, operands[2]); + operands[2] = gen_lowpart (SImode, operands[2]); + }" + [(set_attr "length" "8") + (set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "multiple")] +) + +(define_insn_and_split "*iordi_notsesidi_di" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (ior:DI (not:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r"))) + (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_THUMB2" + "#" + "TARGET_THUMB2 && reload_completed" + [(set (match_dup 0) (ior:SI (not:SI (match_dup 2)) (match_dup 1))) + (set (match_dup 3) (ior:SI (not:SI + (ashiftrt:SI (match_dup 2) (const_int 31))) + (match_dup 4)))] + " + { + operands[3] = gen_highpart (SImode, operands[0]); + operands[0] = gen_lowpart (SImode, operands[0]); + operands[4] = gen_highpart (SImode, operands[1]); + operands[1] = gen_lowpart (SImode, operands[1]); + }" + [(set_attr "length" "8") + (set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "multiple")] +) + (define_insn "*orsi_notsi_si" [(set (match_operand:SI 0 "s_register_operand" "=r") (ior:SI (not:SI (match_operand:SI 2 "s_register_operand" "r")) diff --git a/gcc/config/epiphany/mode-switch-use.c b/gcc/config/epiphany/mode-switch-use.c index a0aa2492557..9617041a310 100644 --- a/gcc/config/epiphany/mode-switch-use.c +++ b/gcc/config/epiphany/mode-switch-use.c @@ -78,7 +78,6 @@ const pass_data pass_data_mode_switch_use = RTL_PASS, /* type */ "mode_switch_use", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -96,7 +95,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return insert_uses (); } + virtual unsigned int execute (function *) { return insert_uses (); } }; // class pass_mode_switch_use diff --git a/gcc/config/epiphany/resolve-sw-modes.c b/gcc/config/epiphany/resolve-sw-modes.c index 16849182ced..fa8fea50977 100644 --- a/gcc/config/epiphany/resolve-sw-modes.c +++ b/gcc/config/epiphany/resolve-sw-modes.c @@ -38,6 +38,35 @@ along with GCC; see the file COPYING3. If not see #include "insn-attr-common.h" #include "tree-pass.h" +namespace { + +const pass_data pass_data_resolve_sw_modes = +{ + RTL_PASS, /* type */ + "resolve_sw_modes", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_MODE_SWITCH, /* tv_id */ + 0, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_df_finish | TODO_verify_rtl_sharing | 0 ), /* todo_flags_finish */ +}; + +class pass_resolve_sw_modes : public rtl_opt_pass +{ +public: + pass_resolve_sw_modes(gcc::context *ctxt) + : rtl_opt_pass(pass_data_resolve_sw_modes, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return optimize; } + virtual unsigned int execute (function *); + +}; // class pass_resolve_sw_modes + /* Clean-up after mode switching: Check for mode setting insns that have FP_MODE_ROUND_UNKNOWN. If only one rounding mode is required, select that one. @@ -45,14 +74,8 @@ along with GCC; see the file COPYING3. If not see insert new mode setting insns on the edges where the other mode becomes unambigous. */ -static bool -gate_resolve_sw_modes (void) -{ - return optimize; -} - -static unsigned -resolve_sw_modes (void) +unsigned +pass_resolve_sw_modes::execute (function *fun) { basic_block bb; rtx insn, src; @@ -61,15 +84,15 @@ resolve_sw_modes (void) bool need_commit = false; bool finalize_fp_sets = (MACHINE_FUNCTION (cfun)->unknown_mode_sets == 0); - todo.create (last_basic_block_for_fn (cfun)); - pushed = sbitmap_alloc (last_basic_block_for_fn (cfun)); + todo.create (last_basic_block_for_fn (fun)); + pushed = sbitmap_alloc (last_basic_block_for_fn (fun)); bitmap_clear (pushed); if (!finalize_fp_sets) { df_note_add_problem (); df_analyze (); } - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) FOR_BB_INSNS (bb, insn) { enum attr_fp_mode selected_mode; @@ -161,36 +184,6 @@ resolve_sw_modes (void) return 0; } -namespace { - -const pass_data pass_data_resolve_sw_modes = -{ - RTL_PASS, /* type */ - "resolve_sw_modes", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_MODE_SWITCH, /* tv_id */ - 0, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_df_finish | TODO_verify_rtl_sharing | 0 ), /* todo_flags_finish */ -}; - -class pass_resolve_sw_modes : public rtl_opt_pass -{ -public: - pass_resolve_sw_modes(gcc::context *ctxt) - : rtl_opt_pass(pass_data_resolve_sw_modes, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_resolve_sw_modes (); } - unsigned int execute () { return resolve_sw_modes (); } - -}; // class pass_resolve_sw_modes - } // anon namespace rtl_opt_pass * diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 3aa2ac4832c..655e1ebe2aa 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2495,12 +2495,6 @@ static const struct ptt processor_target_table[PROCESSOR_max] = {"btver2", &btver2_cost, 16, 10, 16, 7, 11} }; -static bool -gate_insert_vzeroupper (void) -{ - return TARGET_AVX && !TARGET_AVX512F && TARGET_VZEROUPPER; -} - static unsigned int rest_of_handle_insert_vzeroupper (void) { @@ -2527,7 +2521,6 @@ const pass_data pass_data_insert_vzeroupper = RTL_PASS, /* type */ "vzeroupper", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -2545,8 +2538,15 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_insert_vzeroupper (); } - unsigned int execute () { return rest_of_handle_insert_vzeroupper (); } + virtual bool gate (function *) + { + return TARGET_AVX && !TARGET_AVX512F && TARGET_VZEROUPPER; + } + + virtual unsigned int execute (function *) + { + return rest_of_handle_insert_vzeroupper (); + } }; // class pass_insert_vzeroupper @@ -16669,8 +16669,7 @@ ix86_expand_clear (rtx dest) dest = gen_rtx_REG (SImode, REGNO (dest)); tmp = gen_rtx_SET (VOIDmode, dest, const0_rtx); - /* This predicate should match that for movsi_xor and movdi_xor_rex64. */ - if (!TARGET_USE_MOV0 || optimize_insn_for_speed_p ()) + if (!TARGET_USE_MOV0 || optimize_insn_for_size_p ()) { rtx clob = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, FLAGS_REG)); tmp = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, tmp, clob)); @@ -35400,7 +35399,8 @@ rdrand_step: else op2 = gen_rtx_SUBREG (SImode, op0, 0); - if (target == 0) + if (target == 0 + || !register_operand (target, SImode)) target = gen_reg_rtx (SImode); pat = gen_rtx_GEU (VOIDmode, gen_rtx_REG (CCCmode, FLAGS_REG), @@ -35442,7 +35442,8 @@ rdseed_step: const0_rtx); emit_insn (gen_rtx_SET (VOIDmode, op2, pat)); - if (target == 0) + if (target == 0 + || !register_operand (target, SImode)) target = gen_reg_rtx (SImode); emit_insn (gen_zero_extendqisi2 (target, op2)); diff --git a/gcc/config/i386/sol2-9.h b/gcc/config/i386/sol2-9.h deleted file mode 100644 index 9ae88aae5dc..00000000000 --- a/gcc/config/i386/sol2-9.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Target definitions for GCC for Intel 80386 running Solaris 9 - Copyright (C) 2014 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC 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, or (at your option) -any later version. - -GCC 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 GCC; see the file COPYING3. If not see -<http://www.gnu.org/licenses/>. */ - -/* Solaris 9 only guarantees 4-byte stack alignment as required by the i386 - psABI, so realign it as necessary for SSE instructions. */ -#undef STACK_REALIGN_DEFAULT -#define STACK_REALIGN_DEFAULT 1 diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 83fe55b6661..45256e99250 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -16533,7 +16533,6 @@ const pass_data pass_data_mips_machine_reorg2 = RTL_PASS, /* type */ "mach2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_MACH_DEP, /* tv_id */ 0, /* properties_required */ @@ -16551,7 +16550,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return mips_machine_reorg2 (); } + virtual unsigned int execute (function *) { return mips_machine_reorg2 (); } }; // class pass_mips_machine_reorg2 diff --git a/gcc/config/rl78/rl78.c b/gcc/config/rl78/rl78.c index b5cd2ad7516..0731491a23f 100644 --- a/gcc/config/rl78/rl78.c +++ b/gcc/config/rl78/rl78.c @@ -117,21 +117,6 @@ rl78_init_machine_status (void) return m; } -/* Returns whether to run the devirtualization pass. */ -static bool -devirt_gate (void) -{ - return true; -} - -/* Runs the devirtualization pass. */ -static unsigned int -devirt_pass (void) -{ - rl78_reorg (); - return 0; -} - /* This pass converts virtual instructions using virtual registers, to real instructions using real registers. Rather than run it as reorg, we reschedule it before vartrack to help with debugging. */ @@ -142,7 +127,6 @@ const pass_data pass_data_rl78_devirt = RTL_PASS, /* type */ "devirt", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_MACH_DEP, /* tv_id */ 0, /* properties_required */ @@ -161,8 +145,12 @@ public: } /* opt_pass methods: */ - bool gate () { return devirt_gate (); } - unsigned int execute () { return devirt_pass (); } + virtual unsigned int execute (function *) + { + rl78_reorg (); + return 0; + } + }; } // anon namespace @@ -226,7 +214,6 @@ const pass_data pass_data_rl78_move_elim = RTL_PASS, /* type */ "move_elim", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_MACH_DEP, /* tv_id */ 0, /* properties_required */ @@ -245,8 +232,7 @@ public: } /* opt_pass methods: */ - bool gate () { return devirt_gate (); } - unsigned int execute () { return move_elim_pass (); } + virtual unsigned int execute (function *) { return move_elim_pass (); } }; } // anon namespace diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 51283aae5f2..bab79df7760 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -2283,6 +2283,24 @@ rs6000_debug_reg_global (void) if (rs6000_float_gprs) fprintf (stderr, DEBUG_FMT_S, "float_gprs", "true"); + fprintf (stderr, DEBUG_FMT_S, "fprs", + (TARGET_FPRS ? "true" : "false")); + + fprintf (stderr, DEBUG_FMT_S, "single_float", + (TARGET_SINGLE_FLOAT ? "true" : "false")); + + fprintf (stderr, DEBUG_FMT_S, "double_float", + (TARGET_DOUBLE_FLOAT ? "true" : "false")); + + fprintf (stderr, DEBUG_FMT_S, "soft_float", + (TARGET_SOFT_FLOAT ? "true" : "false")); + + fprintf (stderr, DEBUG_FMT_S, "e500_single", + (TARGET_E500_SINGLE ? "true" : "false")); + + fprintf (stderr, DEBUG_FMT_S, "e500_double", + (TARGET_E500_DOUBLE ? "true" : "false")); + if (TARGET_LINK_STACK) fprintf (stderr, DEBUG_FMT_S, "link_stack", "true"); @@ -2329,6 +2347,8 @@ rs6000_setup_reg_addr_masks (void) for (m = 0; m < NUM_MACHINE_MODES; ++m) { + enum machine_mode m2 = (enum machine_mode)m; + /* SDmode is special in that we want to access it only via REG+REG addressing on power7 and above, since we want to use the LFIWZX and STFIWZX instructions to load it. */ @@ -2363,13 +2383,13 @@ rs6000_setup_reg_addr_masks (void) if (TARGET_UPDATE && (rc == RELOAD_REG_GPR || rc == RELOAD_REG_FPR) - && GET_MODE_SIZE (m) <= 8 - && !VECTOR_MODE_P (m) - && !COMPLEX_MODE_P (m) + && GET_MODE_SIZE (m2) <= 8 + && !VECTOR_MODE_P (m2) + && !COMPLEX_MODE_P (m2) && !indexed_only_p - && !(TARGET_E500_DOUBLE && GET_MODE_SIZE (m) == 8) - && !(m == DFmode && TARGET_UPPER_REGS_DF) - && !(m == SFmode && TARGET_UPPER_REGS_SF)) + && !(TARGET_E500_DOUBLE && GET_MODE_SIZE (m2) == 8) + && !(m2 == DFmode && TARGET_UPPER_REGS_DF) + && !(m2 == SFmode && TARGET_UPPER_REGS_SF)) { addr_mask |= RELOAD_REG_PRE_INCDEC; @@ -2815,6 +2835,7 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) for (m = 0; m < NUM_MACHINE_MODES; ++m) { + enum machine_mode m2 = (enum machine_mode)m; int reg_size2 = reg_size; /* TFmode/TDmode always takes 2 registers, even in VSX. */ @@ -2823,7 +2844,7 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) reg_size2 = UNITS_PER_FP_WORD; rs6000_class_max_nregs[m][c] - = (GET_MODE_SIZE (m) + reg_size2 - 1) / reg_size2; + = (GET_MODE_SIZE (m2) + reg_size2 - 1) / reg_size2; } } diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 6fab081c36a..cdefc8f78c4 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -6534,6 +6534,49 @@ [(set_attr "length" "8") (set_attr "type" "fpload")]) +;; Define the TImode operations that can be done in a small number +;; of instructions. The & constraints are to prevent the register +;; allocator from allocating registers that overlap with the inputs +;; (for example, having an input in 7,8 and an output in 6,7). We +;; also allow for the output being the same as one of the inputs. + +(define_insn "addti3" + [(set (match_operand:TI 0 "gpc_reg_operand" "=&r,&r,r,r") + (plus:TI (match_operand:TI 1 "gpc_reg_operand" "%r,r,0,0") + (match_operand:TI 2 "reg_or_short_operand" "r,I,r,I")))] + "TARGET_64BIT" +{ + if (WORDS_BIG_ENDIAN) + return (GET_CODE (operands[2])) != CONST_INT + ? \"addc %L0,%L1,%L2\;adde %0,%1,%2\" + : \"addic %L0,%L1,%2\;add%G2e %0,%1\"; + else + return (GET_CODE (operands[2])) != CONST_INT + ? \"addc %0,%1,%2\;adde %L0,%L1,%L2\" + : \"addic %0,%1,%2\;add%G2e %L0,%L1\"; +} + [(set_attr "type" "two") + (set_attr "length" "8")]) + +(define_insn "subti3" + [(set (match_operand:TI 0 "gpc_reg_operand" "=&r,&r,r,r,r") + (minus:TI (match_operand:TI 1 "reg_or_short_operand" "r,I,0,r,I") + (match_operand:TI 2 "gpc_reg_operand" "r,r,r,0,0")))] + "TARGET_64BIT" +{ + if (WORDS_BIG_ENDIAN) + return (GET_CODE (operands[1]) != CONST_INT) + ? \"subfc %L0,%L2,%L1\;subfe %0,%2,%1\" + : \"subfic %L0,%L2,%1\;subf%G1e %0,%2\"; + else + return (GET_CODE (operands[1]) != CONST_INT) + ? \"subfc %0,%2,%1\;subfe %L0,%L2,%L1\" + : \"subfic %0,%2,%1\;subf%G1e %L0,%L2\"; +} + [(set_attr "type" "two") + (set_attr "length" "8")]) + + ;; Define the DImode operations that can be done in a small number ;; of instructions. The & constraints are to prevent the register ;; allocator from allocating registers that overlap with the inputs @@ -9395,7 +9438,8 @@ (match_operand:FMOVE64 1 "input_operand" "r,Y,r,G,H,F"))] "! TARGET_POWERPC64 && ((TARGET_FPRS && TARGET_SINGLE_FLOAT) - || TARGET_SOFT_FLOAT || TARGET_E500_SINGLE) + || TARGET_SOFT_FLOAT || TARGET_E500_SINGLE + || (<MODE>mode == DDmode && TARGET_E500_DOUBLE)) && (gpc_reg_operand (operands[0], <MODE>mode) || gpc_reg_operand (operands[1], <MODE>mode))" "#" diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md index d83cdc3df34..23d85ab0628 100644 --- a/gcc/config/rs6000/vsx.md +++ b/gcc/config/rs6000/vsx.md @@ -1891,7 +1891,12 @@ (parallel [(const_int 0) (const_int 4) (const_int 1) (const_int 5)])))] "VECTOR_MEM_VSX_P (<MODE>mode)" - "xxmrghw %x0,%x1,%x2" +{ + if (BYTES_BIG_ENDIAN) + return "xxmrghw %x0,%x1,%x2"; + else + return "xxmrglw %x0,%x2,%x1"; +} [(set_attr "type" "vecperm")]) (define_insn "vsx_xxmrglw_<mode>" @@ -1903,7 +1908,12 @@ (parallel [(const_int 2) (const_int 6) (const_int 3) (const_int 7)])))] "VECTOR_MEM_VSX_P (<MODE>mode)" - "xxmrglw %x0,%x1,%x2" +{ + if (BYTES_BIG_ENDIAN) + return "xxmrglw %x0,%x1,%x2"; + else + return "xxmrghw %x0,%x2,%x1"; +} [(set_attr "type" "vecperm")]) ;; Shift left double by word immediate diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index aac8de848ac..cc8f32e169c 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -8631,33 +8631,6 @@ s390_restore_gprs_from_fprs (void) /* A pass run immediately before shrink-wrapping and prologue and epilogue generation. */ -static unsigned int -s390_early_mach (void) -{ - rtx insn; - - /* Try to get rid of the FPR clobbers. */ - s390_optimize_nonescaping_tx (); - - /* Re-compute register info. */ - s390_register_info (); - - /* If we're using a base register, ensure that it is always valid for - the first non-prologue instruction. */ - if (cfun->machine->base_reg) - emit_insn_at_entry (gen_main_pool (cfun->machine->base_reg)); - - /* Annotate all constant pool references to let the scheduler know - they implicitly use the base register. */ - for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) - if (INSN_P (insn)) - { - annotate_constant_pool_refs (&PATTERN (insn)); - df_insn_rescan (insn); - } - return 0; -} - namespace { const pass_data pass_data_s390_early_mach = @@ -8665,7 +8638,6 @@ const pass_data pass_data_s390_early_mach = RTL_PASS, /* type */ "early_mach", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_MACH_DEP, /* tv_id */ 0, /* properties_required */ @@ -8684,10 +8656,37 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return s390_early_mach (); } + virtual unsigned int execute (function *); }; // class pass_s390_early_mach +unsigned int +pass_s390_early_mach::execute (function *fun) +{ + rtx insn; + + /* Try to get rid of the FPR clobbers. */ + s390_optimize_nonescaping_tx (); + + /* Re-compute register info. */ + s390_register_info (); + + /* If we're using a base register, ensure that it is always valid for + the first non-prologue instruction. */ + if (fun->machine->base_reg) + emit_insn_at_entry (gen_main_pool (fun->machine->base_reg)); + + /* Annotate all constant pool references to let the scheduler know + they implicitly use the base register. */ + for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) + if (INSN_P (insn)) + { + annotate_constant_pool_refs (&PATTERN (insn)); + df_insn_rescan (insn); + } + return 0; +} + } // anon namespace /* Expand the prologue into a bunch of separate insns. */ diff --git a/gcc/config/sh/sh_optimize_sett_clrt.cc b/gcc/config/sh/sh_optimize_sett_clrt.cc index 313e5b5f4c2..5b1afcd961b 100644 --- a/gcc/config/sh/sh_optimize_sett_clrt.cc +++ b/gcc/config/sh/sh_optimize_sett_clrt.cc @@ -79,7 +79,7 @@ class sh_optimize_sett_clrt : public rtl_opt_pass public: sh_optimize_sett_clrt (gcc::context* ctx, const char* name); virtual ~sh_optimize_sett_clrt (void); - virtual bool gate (void); + virtual bool gate (function *); virtual unsigned int execute (void); private: @@ -138,7 +138,6 @@ const pass_data sh_optimize_sett_clrt::default_pass_data = RTL_PASS, // type "", // name (overwritten by the constructor) OPTGROUP_NONE, // optinfo_flags - true, // has_gate true, // has_execute TV_OPTIMIZE, // tv_id 0, // properties_required @@ -162,7 +161,7 @@ sh_optimize_sett_clrt::~sh_optimize_sett_clrt (void) } bool -sh_optimize_sett_clrt::gate (void) +sh_optimize_sett_clrt::gate (function *) { return optimize > 0; } diff --git a/gcc/config/sh/sh_treg_combine.cc b/gcc/config/sh/sh_treg_combine.cc index e7360402251..57eddd29406 100644 --- a/gcc/config/sh/sh_treg_combine.cc +++ b/gcc/config/sh/sh_treg_combine.cc @@ -424,7 +424,7 @@ class sh_treg_combine : public rtl_opt_pass public: sh_treg_combine (gcc::context* ctx, bool split_insns, const char* name); virtual ~sh_treg_combine (void); - virtual bool gate (void); + virtual bool gate (function *); virtual unsigned int execute (void); private: @@ -593,7 +593,6 @@ const pass_data sh_treg_combine::default_pass_data = RTL_PASS, // type "", // name (overwritten by the constructor) OPTGROUP_NONE, // optinfo_flags - true, // has_gate true, // has_execute TV_OPTIMIZE, // tv_id 0, // properties_required @@ -1436,7 +1435,7 @@ sh_treg_combine::try_optimize_cbranch (rtx insn) } bool -sh_treg_combine::gate (void) +sh_treg_combine::gate (function *) { return optimize > 0; } diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index de8a8b9f384..088a2c80565 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -872,13 +872,6 @@ mem_ref (rtx x) pass runs as late as possible. The pass is inserted in the pass pipeline at the end of sparc_option_override. */ -static bool -sparc_gate_work_around_errata (void) -{ - /* The only errata we handle are those of the AT697F and UT699. */ - return sparc_fix_at697f != 0 || sparc_fix_ut699 != 0; -} - static unsigned int sparc_do_work_around_errata (void) { @@ -1130,7 +1123,6 @@ const pass_data pass_data_work_around_errata = RTL_PASS, /* type */ "errata", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_MACH_DEP, /* tv_id */ 0, /* properties_required */ @@ -1148,8 +1140,16 @@ public: {} /* opt_pass methods: */ - bool gate () { return sparc_gate_work_around_errata (); } - unsigned int execute () { return sparc_do_work_around_errata (); } + virtual bool gate (function *) + { + /* The only errata we handle are those of the AT697F and UT699. */ + return sparc_fix_at697f != 0 || sparc_fix_ut699 != 0; + } + + virtual unsigned int execute (function *) + { + return sparc_do_work_around_errata (); + } }; // class pass_work_around_errata @@ -4822,47 +4822,48 @@ sparc_init_modes (void) for (i = 0; i < NUM_MACHINE_MODES; i++) { - switch (GET_MODE_CLASS (i)) + enum machine_mode m = (enum machine_mode) i; + switch (GET_MODE_CLASS (m)) { case MODE_INT: case MODE_PARTIAL_INT: case MODE_COMPLEX_INT: - if (GET_MODE_SIZE (i) < 4) + if (GET_MODE_SIZE (m) < 4) sparc_mode_class[i] = 1 << (int) H_MODE; - else if (GET_MODE_SIZE (i) == 4) + else if (GET_MODE_SIZE (m) == 4) sparc_mode_class[i] = 1 << (int) S_MODE; - else if (GET_MODE_SIZE (i) == 8) + else if (GET_MODE_SIZE (m) == 8) sparc_mode_class[i] = 1 << (int) D_MODE; - else if (GET_MODE_SIZE (i) == 16) + else if (GET_MODE_SIZE (m) == 16) sparc_mode_class[i] = 1 << (int) T_MODE; - else if (GET_MODE_SIZE (i) == 32) + else if (GET_MODE_SIZE (m) == 32) sparc_mode_class[i] = 1 << (int) O_MODE; else sparc_mode_class[i] = 0; break; case MODE_VECTOR_INT: - if (GET_MODE_SIZE (i) == 4) + if (GET_MODE_SIZE (m) == 4) sparc_mode_class[i] = 1 << (int) SF_MODE; - else if (GET_MODE_SIZE (i) == 8) + else if (GET_MODE_SIZE (m) == 8) sparc_mode_class[i] = 1 << (int) DF_MODE; else sparc_mode_class[i] = 0; break; case MODE_FLOAT: case MODE_COMPLEX_FLOAT: - if (GET_MODE_SIZE (i) == 4) + if (GET_MODE_SIZE (m) == 4) sparc_mode_class[i] = 1 << (int) SF_MODE; - else if (GET_MODE_SIZE (i) == 8) + else if (GET_MODE_SIZE (m) == 8) sparc_mode_class[i] = 1 << (int) DF_MODE; - else if (GET_MODE_SIZE (i) == 16) + else if (GET_MODE_SIZE (m) == 16) sparc_mode_class[i] = 1 << (int) TF_MODE; - else if (GET_MODE_SIZE (i) == 32) + else if (GET_MODE_SIZE (m) == 32) sparc_mode_class[i] = 1 << (int) OF_MODE; else sparc_mode_class[i] = 0; break; case MODE_CC: - if (i == (int) CCFPmode || i == (int) CCFPEmode) + if (m == CCFPmode || m == CCFPEmode) sparc_mode_class[i] = 1 << (int) CCFP_MODE; else sparc_mode_class[i] = 1 << (int) CC_MODE; diff --git a/gcc/configure b/gcc/configure index 11fb90aae6c..fe6f31e77f9 100755 --- a/gcc/configure +++ b/gcc/configure @@ -6427,6 +6427,50 @@ fi done CFLAGS="$save_CFLAGS" +save_CFLAGS="$CFLAGS" +for real_option in -Woverloaded-virtual; do + # Do the check with the no- prefix removed since gcc silently + # accepts any -Wno-* option on purpose + case $real_option in + -Wno-*) option=-W`expr x$real_option : 'x-Wno-\(.*\)'` ;; + *) option=$real_option ;; + esac + as_acx_Woption=`$as_echo "acx_cv_prog_cc_warning_$option" | $as_tr_sh` + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports $option" >&5 +$as_echo_n "checking whether $CC supports $option... " >&6; } +if { as_var=$as_acx_Woption; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + CFLAGS="$option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_acx_Woption=yes" +else + eval "$as_acx_Woption=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +eval ac_res=\$$as_acx_Woption + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if test `eval 'as_val=${'$as_acx_Woption'};$as_echo "$as_val"'` = yes; then : + strict_warn="$strict_warn${strict_warn:+ }$real_option" +fi + done +CFLAGS="$save_CFLAGS" + c_strict_warn= save_CFLAGS="$CFLAGS" for real_option in -Wold-style-definition -Wc++-compat; do @@ -17927,7 +17971,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 17930 "configure" +#line 17974 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18033,7 +18077,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18036 "configure" +#line 18080 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -22147,35 +22191,7 @@ foobar:' > conftest.s $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then - -# Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with -# STV_HIDDEN, so disable .hidden support if so. -case "${target}" in - i?86-*-solaris2* | x86_64-*-solaris2.1[0-9]*) - if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then - cat > conftest.s <<EOF -.globl hidden - .hidden hidden -hidden: -.globl default - .set default,hidden -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \ - && $gcc_cv_objdump -t conftest.o 2>/dev/null | \ - grep '\.hidden default' > /dev/null; then - gcc_cv_as_hidden=no - else - gcc_cv_as_hidden=yes - fi - else - # Assume bug is present if objdump is missing. - gcc_cv_as_hidden=no - fi - ;; - *) - gcc_cv_as_hidden=yes - ;; -esac + gcc_cv_as_hidden=yes else echo "configure: failed program was" >&5 cat conftest.s >&5 @@ -22308,7 +22324,7 @@ else hppa64*-*-hpux* | ia64*-*-hpux*) gcc_cv_ld_hidden=yes ;; - *-*-solaris2.9* | *-*-solaris2.1[0-9]*) + *-*-solaris2.1[0-9]*) # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but # .symbolic was only added in Solaris 9 12/02. gcc_cv_ld_hidden=yes @@ -23695,34 +23711,7 @@ case "$target" in # TLS on x86 was only introduced in Solaris 9 4/04, replacing the earlier # Sun style that Sun ld and GCC don't support any longer. *-*-solaris2.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker and ld.so.1 TLS support" >&5 -$as_echo_n "checking linker and ld.so.1 TLS support... " >&6; } - ld_tls_support=no - # Check ld and ld.so.1 TLS support. - if echo "$ld_ver" | grep GNU > /dev/null; then - # Assume all interesting versions of GNU ld have TLS support. - # FIXME: still need ld.so.1 support, i.e. ld version checks below. - ld_tls_support=yes - else - case "$target" in - # Solaris 9/x86 ld has GNU style TLS support since version 1.374. - i?86-*-solaris2.9) - min_tls_ld_vers_minor=374 - ;; - # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS. - sparc*-*-solaris2.9 | *-*-solaris2.1[0-9]*) - min_tls_ld_vers_minor=343 - ;; - esac - if test "$ld_vers_major" -gt 1 || \ - test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then - ld_tls_support=yes - else - set_have_as_tls=no - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_tls_support" >&5 -$as_echo "$ld_tls_support" >&6; } + ld_tls_support=yes save_LIBS="$LIBS" save_LDFLAGS="$LDFLAGS" @@ -26524,18 +26513,7 @@ fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then - # The native Solaris 9/Intel assembler doesn't understand --gstabs - # and warns about it, but still exits successfully. So check for - # this. - if { ac_try='$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } - then : - else gcc_cv_as_gstabs_flag=yes - fi + gcc_cv_as_gstabs_flag=yes else echo "configure: failed program was" >&5 cat conftest.s >&5 diff --git a/gcc/configure.ac b/gcc/configure.ac index 47e85d5deb9..d78955774c4 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -340,6 +340,8 @@ ACX_PROG_CC_WARNING_OPTS( ACX_PROG_CC_WARNING_OPTS( m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn]) ACX_PROG_CC_WARNING_OPTS( + m4_quote(m4_do([-Woverloaded-virtual])), [strict_warn]) +ACX_PROG_CC_WARNING_OPTS( m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn]) ACX_PROG_CC_WARNING_ALMOST_PEDANTIC( m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], @@ -2314,35 +2316,7 @@ gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat, gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden, [elf,2,13,0],, [ .hidden foobar -foobar:],[ -# Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with -# STV_HIDDEN, so disable .hidden support if so. -case "${target}" in - i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*) - if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then - cat > conftest.s <<EOF -.globl hidden - .hidden hidden -hidden: -.globl default - .set default,hidden -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \ - && $gcc_cv_objdump -t conftest.o 2>/dev/null | \ - grep '\.hidden default' > /dev/null; then - gcc_cv_as_hidden=no - else - gcc_cv_as_hidden=yes - fi - else - # Assume bug is present if objdump is missing. - gcc_cv_as_hidden=no - fi - ;; - *) - gcc_cv_as_hidden=yes - ;; -esac]) +foobar:]) case "${target}" in *-*-darwin*) # Darwin as has some visibility support, though with a different syntax. @@ -2458,7 +2432,7 @@ else hppa64*-*-hpux* | ia64*-*-hpux*) gcc_cv_ld_hidden=yes ;; - *-*-solaris2.9* | *-*-solaris2.1[0-9]*) + *-*-solaris2.1[0-9]*) # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but # .symbolic was only added in Solaris 9 12/02. gcc_cv_ld_hidden=yes @@ -3339,32 +3313,7 @@ case "$target" in # TLS on x86 was only introduced in Solaris 9 4/04, replacing the earlier # Sun style that Sun ld and GCC don't support any longer. *-*-solaris2.*) - AC_MSG_CHECKING(linker and ld.so.1 TLS support) - ld_tls_support=no - # Check ld and ld.so.1 TLS support. - if echo "$ld_ver" | grep GNU > /dev/null; then - # Assume all interesting versions of GNU ld have TLS support. - # FIXME: still need ld.so.1 support, i.e. ld version checks below. - ld_tls_support=yes - else - case "$target" in - # Solaris 9/x86 ld has GNU style TLS support since version 1.374. - i?86-*-solaris2.9) - min_tls_ld_vers_minor=374 - ;; - # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS. - sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*) - min_tls_ld_vers_minor=343 - ;; - esac - if test "$ld_vers_major" -gt 1 || \ - test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then - ld_tls_support=yes - else - set_have_as_tls=no - fi - fi - AC_MSG_RESULT($ld_tls_support) + ld_tls_support=yes save_LIBS="$LIBS" save_LDFLAGS="$LDFLAGS" @@ -4431,14 +4380,7 @@ if test x"$insn" != x; then gcc_GAS_CHECK_FEATURE([--gstabs option], gcc_cv_as_gstabs_flag, - [elf,2,11,0], [--gstabs], [$insn], - [# The native Solaris 9/Intel assembler doesn't understand --gstabs - # and warns about it, but still exits successfully. So check for - # this. - if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null]) - then : - else gcc_cv_as_gstabs_flag=yes - fi], + [elf,2,11,0], [--gstabs], [$insn],, [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1, [Define if your assembler supports the --gstabs option.])]) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e10a2272219..b7db35039f1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2014-04-18 Jason Merrill <jason@redhat.com> + + DR 1571 + * call.c (reference_binding): Recurse on user-defined conversion. + + PR c++/60872 + * call.c (standard_conversion): Don't try to apply restrict to void. + 2014-04-16 Marc Glisse <marc.glisse@inria.fr> * decl.c (reshape_init_r): Handle a single element of vector type. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 96b4adac0b5..857df57c60c 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -1197,9 +1197,10 @@ standard_conversion (tree to, tree from, tree expr, bool c_cast_p, && TREE_CODE (TREE_TYPE (from)) != FUNCTION_TYPE) { tree nfrom = TREE_TYPE (from); + /* Don't try to apply restrict to void. */ + int quals = cp_type_quals (nfrom) & ~TYPE_QUAL_RESTRICT; from = build_pointer_type - (cp_build_qualified_type (void_type_node, - cp_type_quals (nfrom))); + (cp_build_qualified_type (void_type_node, quals)); conv = build_conv (ck_ptr, from, conv); } else if (TYPE_PTRDATAMEM_P (from)) @@ -1684,20 +1685,30 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags, if (!conv) return NULL; + if (conv->user_conv_p) + { + /* If initializing the temporary used a conversion function, + recalculate the second conversion sequence. */ + for (conversion *t = conv; t; t = next_conversion (t)) + if (t->kind == ck_user + && DECL_CONV_FN_P (t->cand->fn)) + { + tree ftype = TREE_TYPE (TREE_TYPE (t->cand->fn)); + int sflags = (flags|LOOKUP_NO_CONVERSION)&~LOOKUP_NO_TEMP_BIND; + conversion *new_second + = reference_binding (rto, ftype, NULL_TREE, c_cast_p, + sflags, complain); + if (!new_second) + return NULL; + return merge_conversion_sequences (t, new_second); + } + } + conv = build_conv (ck_ref_bind, rto, conv); /* This reference binding, unlike those above, requires the creation of a temporary. */ conv->need_temporary_p = true; - if (TYPE_REF_IS_RVALUE (rto)) - { - conv->rvaluedness_matches_p = 1; - /* In the second case, if the reference is an rvalue reference and - the second standard conversion sequence of the user-defined - conversion sequence includes an lvalue-to-rvalue conversion, the - program is ill-formed. */ - if (conv->user_conv_p && next_conversion (conv)->kind == ck_rvalue) - conv->bad_p = 1; - } + conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto); return conv; } diff --git a/gcc/cprop.c b/gcc/cprop.c index c3acb05c171..d29b6f68f27 100644 --- a/gcc/cprop.c +++ b/gcc/cprop.c @@ -1896,14 +1896,6 @@ one_cprop_pass (void) setjmp. FIXME: Should just handle setjmp via REG_SETJMP notes. */ -static bool -gate_rtl_cprop (void) -{ - return optimize > 0 && flag_gcse - && !cfun->calls_setjmp - && dbg_cnt (cprop); -} - static unsigned int execute_rtl_cprop (void) { @@ -1925,7 +1917,6 @@ const pass_data pass_data_rtl_cprop = RTL_PASS, /* type */ "cprop", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_CPROP, /* tv_id */ PROP_cfglayout, /* properties_required */ @@ -1945,8 +1936,14 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_rtl_cprop (m_ctxt); } - bool gate () { return gate_rtl_cprop (); } - unsigned int execute () { return execute_rtl_cprop (); } + virtual bool gate (function *fun) + { + return optimize > 0 && flag_gcse + && !fun->calls_setjmp + && dbg_cnt (cprop); + } + + virtual unsigned int execute (function *) { return execute_rtl_cprop (); } }; // class pass_rtl_cprop diff --git a/gcc/cse.c b/gcc/cse.c index abe5dfcfbe4..5ee3f9b7688 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -7463,12 +7463,6 @@ cse_condition_code_reg (void) /* Perform common subexpression elimination. Nonzero value from `cse_main' means that jumps were simplified and some code may now be unreachable, so do jump optimization again. */ -static bool -gate_handle_cse (void) -{ - return optimize > 0; -} - static unsigned int rest_of_handle_cse (void) { @@ -7503,7 +7497,6 @@ const pass_data pass_data_cse = RTL_PASS, /* type */ "cse1", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_CSE, /* tv_id */ 0, /* properties_required */ @@ -7522,8 +7515,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_cse (); } - unsigned int execute () { return rest_of_handle_cse (); } + virtual bool gate (function *) { return optimize > 0; } + virtual unsigned int execute (function *) { return rest_of_handle_cse (); } }; // class pass_cse @@ -7536,12 +7529,6 @@ make_pass_cse (gcc::context *ctxt) } -static bool -gate_handle_cse2 (void) -{ - return optimize > 0 && flag_rerun_cse_after_loop; -} - /* Run second CSE pass after loop optimizations. */ static unsigned int rest_of_handle_cse2 (void) @@ -7583,7 +7570,6 @@ const pass_data pass_data_cse2 = RTL_PASS, /* type */ "cse2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_CSE2, /* tv_id */ 0, /* properties_required */ @@ -7602,8 +7588,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_cse2 (); } - unsigned int execute () { return rest_of_handle_cse2 (); } + virtual bool gate (function *) + { + return optimize > 0 && flag_rerun_cse_after_loop; + } + + virtual unsigned int execute (function *) { return rest_of_handle_cse2 (); } }; // class pass_cse2 @@ -7615,12 +7605,6 @@ make_pass_cse2 (gcc::context *ctxt) return new pass_cse2 (ctxt); } -static bool -gate_handle_cse_after_global_opts (void) -{ - return optimize > 0 && flag_rerun_cse_after_global_opts; -} - /* Run second CSE pass after loop optimizations. */ static unsigned int rest_of_handle_cse_after_global_opts (void) @@ -7661,7 +7645,6 @@ const pass_data pass_data_cse_after_global_opts = RTL_PASS, /* type */ "cse_local", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_CSE, /* tv_id */ 0, /* properties_required */ @@ -7680,10 +7663,15 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_cse_after_global_opts (); } - unsigned int execute () { - return rest_of_handle_cse_after_global_opts (); - } + virtual bool gate (function *) + { + return optimize > 0 && flag_rerun_cse_after_global_opts; + } + + virtual unsigned int execute (function *) + { + return rest_of_handle_cse_after_global_opts (); + } }; // class pass_cse_after_global_opts diff --git a/gcc/dce.c b/gcc/dce.c index 07592f46a0e..344e31af074 100644 --- a/gcc/dce.c +++ b/gcc/dce.c @@ -779,13 +779,6 @@ rest_of_handle_ud_dce (void) } -static bool -gate_ud_dce (void) -{ - return optimize > 1 && flag_dce - && dbg_cnt (dce_ud); -} - namespace { const pass_data pass_data_ud_rtl_dce = @@ -793,7 +786,6 @@ const pass_data pass_data_ud_rtl_dce = RTL_PASS, /* type */ "ud_dce", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_DCE, /* tv_id */ 0, /* properties_required */ @@ -811,8 +803,15 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_ud_dce (); } - unsigned int execute () { return rest_of_handle_ud_dce (); } + virtual bool gate (function *) + { + return optimize > 1 && flag_dce && dbg_cnt (dce_ud); + } + + virtual unsigned int execute (function *) + { + return rest_of_handle_ud_dce (); + } }; // class pass_ud_rtl_dce @@ -1212,13 +1211,6 @@ run_fast_dce (void) } -static bool -gate_fast_dce (void) -{ - return optimize > 0 && flag_dce - && dbg_cnt (dce_fast); -} - namespace { const pass_data pass_data_fast_rtl_dce = @@ -1226,7 +1218,6 @@ const pass_data pass_data_fast_rtl_dce = RTL_PASS, /* type */ "rtl_dce", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_DCE, /* tv_id */ 0, /* properties_required */ @@ -1244,8 +1235,15 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_fast_dce (); } - unsigned int execute () { return rest_of_handle_fast_dce (); } + virtual bool gate (function *) + { + return optimize > 0 && flag_dce && dbg_cnt (dce_fast); + } + + virtual unsigned int execute (function *) + { + return rest_of_handle_fast_dce (); + } }; // class pass_fast_rtl_dce diff --git a/gcc/df-core.c b/gcc/df-core.c index edb3b25727a..9fdf601071c 100644 --- a/gcc/df-core.c +++ b/gcc/df-core.c @@ -740,13 +740,6 @@ rest_of_handle_df_initialize (void) } -static bool -gate_opt (void) -{ - return optimize > 0; -} - - namespace { const pass_data pass_data_df_initialize_opt = @@ -754,7 +747,6 @@ const pass_data pass_data_df_initialize_opt = RTL_PASS, /* type */ "dfinit", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_DF_SCAN, /* tv_id */ 0, /* properties_required */ @@ -772,8 +764,11 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_opt (); } - unsigned int execute () { return rest_of_handle_df_initialize (); } + virtual bool gate (function *) { return optimize > 0; } + virtual unsigned int execute (function *) + { + return rest_of_handle_df_initialize (); + } }; // class pass_df_initialize_opt @@ -786,13 +781,6 @@ make_pass_df_initialize_opt (gcc::context *ctxt) } -static bool -gate_no_opt (void) -{ - return optimize == 0; -} - - namespace { const pass_data pass_data_df_initialize_no_opt = @@ -800,7 +788,6 @@ const pass_data pass_data_df_initialize_no_opt = RTL_PASS, /* type */ "no-opt dfinit", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_DF_SCAN, /* tv_id */ 0, /* properties_required */ @@ -818,8 +805,11 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_no_opt (); } - unsigned int execute () { return rest_of_handle_df_initialize (); } + virtual bool gate (function *) { return optimize == 0; } + virtual unsigned int execute (function *) + { + return rest_of_handle_df_initialize (); + } }; // class pass_df_initialize_no_opt @@ -866,7 +856,6 @@ const pass_data pass_data_df_finish = RTL_PASS, /* type */ "dfinish", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -884,7 +873,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_handle_df_finish (); } + virtual unsigned int execute (function *) + { + return rest_of_handle_df_finish (); + } }; // class pass_df_finish diff --git a/gcc/doc/gimple.texi b/gcc/doc/gimple.texi index 54cbb92d124..9bb16e812dc 100644 --- a/gcc/doc/gimple.texi +++ b/gcc/doc/gimple.texi @@ -701,7 +701,7 @@ Return true if the code of g is @code{GIMPLE_CALL}. Return true if the code of g is @code{GIMPLE_DEBUG}. @end deftypefn -@deftypefn {GIMPLE function} bool gimple_assign_cast_p (gimple g) +@deftypefn {GIMPLE function} bool gimple_assign_cast_p (const_gimple g) Return true if g is a @code{GIMPLE_ASSIGN} that performs a type cast operation. @end deftypefn @@ -1102,7 +1102,7 @@ Set @code{RHS} to be the third operand on the @code{RHS} of assignment statement @code{G}. @end deftypefn -@deftypefn {GIMPLE function} bool gimple_assign_cast_p (gimple s) +@deftypefn {GIMPLE function} bool gimple_assign_cast_p (const_gimple s) Return true if @code{S} is a type-cast assignment. @end deftypefn diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index c32f1f90e30..0b2b3657577 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -3110,8 +3110,6 @@ information have to. @item @uref{#ix86-x-linux,,i?86-*-linux*} @item -@uref{#ix86-x-solaris289,,i?86-*-solaris2.9} -@item @uref{#ix86-x-solaris210,,i?86-*-solaris2.10} @item @uref{#ia64-x-linux,,ia64-*-linux} @@ -3676,27 +3674,6 @@ found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}. @html <hr /> @end html -@anchor{ix86-x-solaris29} -@heading i?86-*-solaris2.9 -The Sun assembler in Solaris 9 has several bugs and limitations. -While GCC works around them, several features are missing, so it is -@c FIXME: which ones? -recommended to use the GNU assembler instead. There is no bundled -version, but the current version, from GNU binutils 2.22, is known to -work. - -Solaris@tie{}2/x86 doesn't support the execution of SSE/SSE2 instructions -before Solaris@tie{}9 4/04, even if the CPU supports them. Programs will -receive @code{SIGILL} if they try. The fix is available both in -Solaris@tie{}9 Update@tie{}6 and kernel patch 112234-12 or newer. To -avoid this problem, -@option{-march} defaults to @samp{pentiumpro} on Solaris 9. If -you have the patch installed, you can configure GCC with an appropriate -@option{--with-arch} option, but need GNU @command{as} for SSE2 support. - -@html -<hr /> -@end html @anchor{ix86-x-solaris210} @heading i?86-*-solaris2.10 Use this for Solaris 10 or later on x86 and x86-64 systems. Starting @@ -4250,10 +4227,9 @@ supported as cross-compilation target only. @c alone is too unspecific and must be avoided. @anchor{x-x-solaris2} @heading *-*-solaris2* -Support for Solaris 9 has been obsoleted in GCC 4.9, but can still be -enabled by configuring with @option{--enable-obsolete}. Support will be -removed in GCC 4.10. Support for Solaris 8 has removed in GCC 4.8. -Support for Solaris 7 has been removed in GCC 4.6. +Support for Solaris 9 has been removed in GCC 4.10. Support for Solaris +8 has been removed in GCC 4.8. Support for Solaris 7 has been removed +in GCC 4.6. Sun does not ship a C compiler with Solaris 2 before Solaris 10, though you can download the Sun Studio compilers for free. In Solaris 10 and @@ -4333,25 +4309,6 @@ program which is used only by the GCC testsuite driver. When the bug causes the @command{expect} program to miss anticipated output, extra testsuite failures appear. -There are patches for Solaris 9 (117171-11 or newer for -SPARC, 117172-11 or newer for Intel) that address this problem. - -Thread-local storage (TLS) is supported in Solaris@tie{}9, but requires -some patches. The @samp{libthread} patches provide the -@code{__tls_get_addr} (SPARC, 64-bit x86) resp.@ @code{___tls_get_addr} -(32-bit x86) functions. On Solaris@tie{}9, the necessary support -on SPARC is present since FCS, while 114432-05 or newer is required on -Intel. Additionally, on Solaris@tie{}9/x86, patch 113986-02 or newer is -required for the Sun @command{ld} and runtime linker (@command{ld.so.1}) -support, while Solaris@tie{}9/SPARC works since FCS. The linker -patches must be installed even if GNU @command{ld} is used. Sun -@command{as} in Solaris@tie{}9 doesn't support the necessary -relocations, so GNU @command{as} must be used. The @command{configure} -script checks for those prerequisites and automatically enables TLS -support if they are met. Although those minimal patch versions should -work, it is recommended to use the latest patch versions which include -additional bug fixes. - @html <hr /> @end html diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 3fdfeb9571d..8004da86f4f 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -9409,7 +9409,8 @@ before applying @option{--param inline-unit-growth}. The default is 10000. @item inline-unit-growth Specifies maximal overall growth of the compilation unit caused by inlining. The default value is 30 which limits unit growth to 1.3 times the original -size. +size. Cold functions (either marked cold via an attribibute or by profile +feedback) are not accounted into the unit size. @item ipcp-unit-growth Specifies maximal overall growth of the compilation unit caused by diff --git a/gcc/dse.c b/gcc/dse.c index 09dc5df6e93..88b8c373bbf 100644 --- a/gcc/dse.c +++ b/gcc/dse.c @@ -608,11 +608,6 @@ static bitmap kill_on_calls; /* The number of bits used in the global bitmaps. */ static unsigned int current_position; - - -static bool gate_dse1 (void); -static bool gate_dse2 (void); - /*---------------------------------------------------------------------------- Zeroth step. @@ -3712,20 +3707,6 @@ rest_of_handle_dse (void) return 0; } -static bool -gate_dse1 (void) -{ - return optimize > 0 && flag_dse - && dbg_cnt (dse1); -} - -static bool -gate_dse2 (void) -{ - return optimize > 0 && flag_dse - && dbg_cnt (dse2); -} - namespace { const pass_data pass_data_rtl_dse1 = @@ -3733,7 +3714,6 @@ const pass_data pass_data_rtl_dse1 = RTL_PASS, /* type */ "dse1", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_DSE1, /* tv_id */ 0, /* properties_required */ @@ -3751,8 +3731,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_dse1 (); } - unsigned int execute () { return rest_of_handle_dse (); } + virtual bool gate (function *) + { + return optimize > 0 && flag_dse && dbg_cnt (dse1); + } + + virtual unsigned int execute (function *) { return rest_of_handle_dse (); } }; // class pass_rtl_dse1 @@ -3771,7 +3755,6 @@ const pass_data pass_data_rtl_dse2 = RTL_PASS, /* type */ "dse2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_DSE2, /* tv_id */ 0, /* properties_required */ @@ -3789,8 +3772,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_dse2 (); } - unsigned int execute () { return rest_of_handle_dse (); } + virtual bool gate (function *) + { + return optimize > 0 && flag_dse && dbg_cnt (dse2); + } + + virtual unsigned int execute (function *) { return rest_of_handle_dse (); } }; // class pass_rtl_dse2 diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c index abcdeb34461..41808905bc1 100644 --- a/gcc/dwarf2cfi.c +++ b/gcc/dwarf2cfi.c @@ -3377,21 +3377,6 @@ dwarf2out_do_cfi_asm (void) return true; } -static bool -gate_dwarf2_frame (void) -{ -#ifndef HAVE_prologue - /* Targets which still implement the prologue in assembler text - cannot use the generic dwarf2 unwinding. */ - return false; -#endif - - /* ??? What to do for UI_TARGET unwinding? They might be able to benefit - from the optimized shrink-wrapping annotations that we will compute. - For now, only produce the CFI notes for dwarf2. */ - return dwarf2out_do_frame (); -} - namespace { const pass_data pass_data_dwarf2_frame = @@ -3399,7 +3384,6 @@ const pass_data pass_data_dwarf2_frame = RTL_PASS, /* type */ "dwarf2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_FINAL, /* tv_id */ 0, /* properties_required */ @@ -3417,11 +3401,26 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_dwarf2_frame (); } - unsigned int execute () { return execute_dwarf2_frame (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) { return execute_dwarf2_frame (); } }; // class pass_dwarf2_frame +bool +pass_dwarf2_frame::gate (function *) +{ +#ifndef HAVE_prologue + /* Targets which still implement the prologue in assembler text + cannot use the generic dwarf2 unwinding. */ + return false; +#endif + + /* ??? What to do for UI_TARGET unwinding? They might be able to benefit + from the optimized shrink-wrapping annotations that we will compute. + For now, only produce the CFI notes for dwarf2. */ + return dwarf2out_do_frame (); +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/except.c b/gcc/except.c index 908954cbbbf..5b33c9cc301 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -2008,7 +2008,6 @@ const pass_data pass_data_set_nothrow_function_flags = RTL_PASS, /* type */ "nothrow", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -2026,7 +2025,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return set_nothrow_function_flags (); } + virtual unsigned int execute (function *) + { + return set_nothrow_function_flags (); + } }; // class pass_set_nothrow_function_flags @@ -2621,17 +2623,6 @@ convert_to_eh_region_ranges (void) return 0; } -static bool -gate_convert_to_eh_region_ranges (void) -{ - /* Nothing to do for SJLJ exceptions or if no regions created. */ - if (cfun->eh->region_tree == NULL) - return false; - if (targetm_common.except_unwind_info (&global_options) == UI_SJLJ) - return false; - return true; -} - namespace { const pass_data pass_data_convert_to_eh_region_ranges = @@ -2639,7 +2630,6 @@ const pass_data pass_data_convert_to_eh_region_ranges = RTL_PASS, /* type */ "eh_ranges", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -2657,11 +2647,25 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_convert_to_eh_region_ranges (); } - unsigned int execute () { return convert_to_eh_region_ranges (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) + { + return convert_to_eh_region_ranges (); + } }; // class pass_convert_to_eh_region_ranges +bool +pass_convert_to_eh_region_ranges::gate (function *) +{ + /* Nothing to do for SJLJ exceptions or if no regions created. */ + if (cfun->eh->region_tree == NULL) + return false; + if (targetm_common.except_unwind_info (&global_options) == UI_SJLJ) + return false; + return true; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/final.c b/gcc/final.c index c50c4293340..0497834b977 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -855,7 +855,6 @@ const pass_data pass_data_compute_alignments = RTL_PASS, /* type */ "alignments", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -873,7 +872,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return compute_alignments (); } + virtual unsigned int execute (function *) { return compute_alignments (); } }; // class pass_compute_alignments @@ -4497,7 +4496,6 @@ const pass_data pass_data_final = RTL_PASS, /* type */ "final", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_FINAL, /* tv_id */ 0, /* properties_required */ @@ -4515,7 +4513,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_handle_final (); } + virtual unsigned int execute (function *) { return rest_of_handle_final (); } }; // class pass_final @@ -4543,7 +4541,6 @@ const pass_data pass_data_shorten_branches = RTL_PASS, /* type */ "shorten", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_SHORTEN_BRANCH, /* tv_id */ 0, /* properties_required */ @@ -4561,7 +4558,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_handle_shorten_branches (); } + virtual unsigned int execute (function *) + { + return rest_of_handle_shorten_branches (); + } }; // class pass_shorten_branches @@ -4707,7 +4707,6 @@ const pass_data pass_data_clean_state = RTL_PASS, /* type */ "*clean_state", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_FINAL, /* tv_id */ 0, /* properties_required */ @@ -4725,7 +4724,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_clean_state (); } + virtual unsigned int execute (function *) + { + return rest_of_clean_state (); + } }; // class pass_clean_state diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 29ea5f7871c..d2b666040d0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2014-04-17 Jakub Jelinek <jakub@redhat.com> + + * trans-types.c (gfc_init_kinds): Make sure GET_MODE_BITSIZE + argument is enum machine_mode. + 2014-04-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/58085 diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 1f48bb00981..9f735e19f9a 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -373,7 +373,7 @@ gfc_init_kinds (void) /* The middle end doesn't support constants larger than 2*HWI. Perhaps the target hook shouldn't have accepted these either, but just to be safe... */ - bitsize = GET_MODE_BITSIZE (mode); + bitsize = GET_MODE_BITSIZE ((enum machine_mode) mode); if (bitsize > 2*HOST_BITS_PER_WIDE_INT) continue; diff --git a/gcc/function.c b/gcc/function.c index a61e4757c7a..383a52a8fc0 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -1950,7 +1950,6 @@ const pass_data pass_data_instantiate_virtual_regs = RTL_PASS, /* type */ "vregs", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -1968,7 +1967,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return instantiate_virtual_regs (); } + virtual unsigned int execute (function *) + { + return instantiate_virtual_regs (); + } }; // class pass_instantiate_virtual_regs @@ -6949,7 +6951,6 @@ const pass_data pass_data_leaf_regs = RTL_PASS, /* type */ "*leaf_regs", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -6967,7 +6968,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_handle_check_leaf_regs (); } + virtual unsigned int execute (function *) + { + return rest_of_handle_check_leaf_regs (); + } }; // class pass_leaf_regs @@ -7009,7 +7013,6 @@ const pass_data pass_data_thread_prologue_and_epilogue = RTL_PASS, /* type */ "pro_and_epilogue", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_THREAD_PROLOGUE_AND_EPILOGUE, /* tv_id */ 0, /* properties_required */ @@ -7028,9 +7031,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { - return rest_of_handle_thread_prologue_and_epilogue (); - } + virtual unsigned int execute (function *) + { + return rest_of_handle_thread_prologue_and_epilogue (); + } }; // class pass_thread_prologue_and_epilogue @@ -7187,8 +7191,36 @@ match_asm_constraints_1 (rtx insn, rtx *p_sets, int noutputs) df_insn_rescan (insn); } -static unsigned -rest_of_match_asm_constraints (void) +namespace { + +const pass_data pass_data_match_asm_constraints = +{ + RTL_PASS, /* type */ + "asmcons", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + 0, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_match_asm_constraints : public rtl_opt_pass +{ +public: + pass_match_asm_constraints (gcc::context *ctxt) + : rtl_opt_pass (pass_data_match_asm_constraints, ctxt) + {} + + /* opt_pass methods: */ + virtual unsigned int execute (function *); + +}; // class pass_match_asm_constraints + +unsigned +pass_match_asm_constraints::execute (function *fun) { basic_block bb; rtx insn, pat, *p_sets; @@ -7198,7 +7230,7 @@ rest_of_match_asm_constraints (void) return 0; df_set_flags (DF_DEFER_INSN_RESCAN); - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { FOR_BB_INSNS (bb, insn) { @@ -7222,35 +7254,6 @@ rest_of_match_asm_constraints (void) return TODO_df_finish; } -namespace { - -const pass_data pass_data_match_asm_constraints = -{ - RTL_PASS, /* type */ - "asmcons", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - 0, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_match_asm_constraints : public rtl_opt_pass -{ -public: - pass_match_asm_constraints (gcc::context *ctxt) - : rtl_opt_pass (pass_data_match_asm_constraints, ctxt) - {} - - /* opt_pass methods: */ - unsigned int execute () { return rest_of_match_asm_constraints (); } - -}; // class pass_match_asm_constraints - } // anon namespace rtl_opt_pass * diff --git a/gcc/fwprop.c b/gcc/fwprop.c index 4317f51f0da..6960d62e250 100644 --- a/gcc/fwprop.c +++ b/gcc/fwprop.c @@ -1490,7 +1490,6 @@ const pass_data pass_data_rtl_fwprop = RTL_PASS, /* type */ "fwprop1", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_FWPROP, /* tv_id */ 0, /* properties_required */ @@ -1509,8 +1508,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_fwprop (); } - unsigned int execute () { return fwprop (); } + virtual bool gate (function *) { return gate_fwprop (); } + virtual unsigned int execute (function *) { return fwprop (); } }; // class pass_rtl_fwprop @@ -1557,7 +1556,6 @@ const pass_data pass_data_rtl_fwprop_addr = RTL_PASS, /* type */ "fwprop2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_FWPROP, /* tv_id */ 0, /* properties_required */ @@ -1575,8 +1573,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_fwprop (); } - unsigned int execute () { return fwprop_addr (); } + virtual bool gate (function *) { return gate_fwprop (); } + virtual unsigned int execute (function *) { return fwprop_addr (); } }; // class pass_rtl_fwprop_addr diff --git a/gcc/gcse.c b/gcc/gcse.c index b852aa1bf22..d88b2750d52 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -4157,24 +4157,6 @@ is_too_expensive (const char *pass) return false; } -/* All the passes implemented in this file. Each pass has its - own gate and execute function, and at the end of the file a - pass definition for passes.c. - - We do not construct an accurate cfg in functions which call - setjmp, so none of these passes runs if the function calls - setjmp. - FIXME: Should just handle setjmp via REG_SETJMP notes. */ - -static bool -gate_rtl_pre (void) -{ - return optimize > 0 && flag_gcse - && !cfun->calls_setjmp - && optimize_function_for_speed_p (cfun) - && dbg_cnt (pre); -} - static unsigned int execute_rtl_pre (void) { @@ -4188,18 +4170,6 @@ execute_rtl_pre (void) return 0; } -static bool -gate_rtl_hoist (void) -{ - return optimize > 0 && flag_gcse - && !cfun->calls_setjmp - /* It does not make sense to run code hoisting unless we are optimizing - for code size -- it rarely makes programs faster, and can make then - bigger if we did PRE (when optimizing for space, we don't run PRE). */ - && optimize_function_for_size_p (cfun) - && dbg_cnt (hoist); -} - static unsigned int execute_rtl_hoist (void) { @@ -4220,7 +4190,6 @@ const pass_data pass_data_rtl_pre = RTL_PASS, /* type */ "rtl pre", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_PRE, /* tv_id */ PROP_cfglayout, /* properties_required */ @@ -4239,11 +4208,25 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_rtl_pre (); } - unsigned int execute () { return execute_rtl_pre (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) { return execute_rtl_pre (); } }; // class pass_rtl_pre +/* We do not construct an accurate cfg in functions which call + setjmp, so none of these passes runs if the function calls + setjmp. + FIXME: Should just handle setjmp via REG_SETJMP notes. */ + +bool +pass_rtl_pre::gate (function *fun) +{ + return optimize > 0 && flag_gcse + && !fun->calls_setjmp + && optimize_function_for_speed_p (fun) + && dbg_cnt (pre); +} + } // anon namespace rtl_opt_pass * @@ -4259,7 +4242,6 @@ const pass_data pass_data_rtl_hoist = RTL_PASS, /* type */ "hoist", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_HOIST, /* tv_id */ PROP_cfglayout, /* properties_required */ @@ -4278,11 +4260,23 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_rtl_hoist (); } - unsigned int execute () { return execute_rtl_hoist (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) { return execute_rtl_hoist (); } }; // class pass_rtl_hoist +bool +pass_rtl_hoist::gate (function *) +{ + return optimize > 0 && flag_gcse + && !cfun->calls_setjmp + /* It does not make sense to run code hoisting unless we are optimizing + for code size -- it rarely makes programs faster, and can make then + bigger if we did PRE (when optimizing for space, we don't run PRE). */ + && optimize_function_for_size_p (cfun) + && dbg_cnt (hoist); +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/genmodes.c b/gcc/genmodes.c index 8cc3cdeeeb3..99078788c52 100644 --- a/gcc/genmodes.c +++ b/gcc/genmodes.c @@ -72,6 +72,8 @@ struct mode_data unsigned int counter; /* Rank ordering of modes */ unsigned int ibit; /* the number of integral bits */ unsigned int fbit; /* the number of fractional bits */ + bool need_bytesize_adj; /* true if this mode need dynamic size + adjustment */ }; static struct mode_data *modes[MAX_MODE_CLASS]; @@ -82,7 +84,7 @@ static const struct mode_data blank_mode = { 0, "<unknown>", MAX_MODE_CLASS, -1U, -1U, -1U, -1U, 0, 0, 0, 0, 0, - "<unknown>", 0, 0, 0, 0 + "<unknown>", 0, 0, 0, 0, false }; static htab_t modes_by_name; @@ -904,6 +906,105 @@ emit_max_int (void) printf ("#define MAX_BITSIZE_MODE_ANY_MODE (%d*BITS_PER_UNIT)\n", mmax); } +/* Emit mode_size_inline routine into insn-modes.h header. */ +static void +emit_mode_size_inline (void) +{ + int c; + struct mode_adjust *a; + struct mode_data *m; + + /* Size adjustments must be propagated to all containing modes. */ + for (a = adj_bytesize; a; a = a->next) + { + a->mode->need_bytesize_adj = true; + for (m = a->mode->contained; m; m = m->next_cont) + m->need_bytesize_adj = true; + } + + printf ("\ +#ifdef __cplusplus\n\ +inline __attribute__((__always_inline__))\n\ +#else\n\ +extern __inline__ __attribute__((__always_inline__, __gnu_inline__))\n\ +#endif\n\ +unsigned char\n\ +mode_size_inline (enum machine_mode mode)\n\ +{\n\ + extern %sunsigned char mode_size[NUM_MACHINE_MODES];\n\ + switch (mode)\n\ + {\n", adj_bytesize ? "" : "const "); + + for_all_modes (c, m) + if (!m->need_bytesize_adj) + printf (" case %smode: return %u;\n", m->name, m->bytesize); + + puts ("\ + default: return mode_size[mode];\n\ + }\n\ +}\n"); +} + +/* Emit mode_nunits_inline routine into insn-modes.h header. */ +static void +emit_mode_nunits_inline (void) +{ + int c; + struct mode_data *m; + + puts ("\ +#ifdef __cplusplus\n\ +inline __attribute__((__always_inline__))\n\ +#else\n\ +extern __inline__ __attribute__((__always_inline__, __gnu_inline__))\n\ +#endif\n\ +unsigned char\n\ +mode_nunits_inline (enum machine_mode mode)\n\ +{\n\ + extern const unsigned char mode_nunits[NUM_MACHINE_MODES];\n\ + switch (mode)\n\ + {"); + + for_all_modes (c, m) + printf (" case %smode: return %u;\n", m->name, m->ncomponents); + + puts ("\ + default: return mode_nunits[mode];\n\ + }\n\ +}\n"); +} + +/* Emit mode_inner_inline routine into insn-modes.h header. */ +static void +emit_mode_inner_inline (void) +{ + int c; + struct mode_data *m; + + puts ("\ +#ifdef __cplusplus\n\ +inline __attribute__((__always_inline__))\n\ +#else\n\ +extern __inline__ __attribute__((__always_inline__, __gnu_inline__))\n\ +#endif\n\ +unsigned char\n\ +mode_inner_inline (enum machine_mode mode)\n\ +{\n\ + extern const unsigned char mode_inner[NUM_MACHINE_MODES];\n\ + switch (mode)\n\ + {"); + + for_all_modes (c, m) + printf (" case %smode: return %smode;\n", m->name, + c != MODE_PARTIAL_INT && m->component + ? m->component->name : void_mode->name); + + puts ("\ + default: return mode_inner[mode];\n\ + }\n\ +}\n"); +} + static void emit_insn_modes_h (void) { @@ -969,6 +1070,12 @@ enum machine_mode\n{"); printf ("#define CONST_MODE_IBIT%s\n", adj_ibit ? "" : " const"); printf ("#define CONST_MODE_FBIT%s\n", adj_fbit ? "" : " const"); emit_max_int (); + puts ("\n#if GCC_VERSION >= 4001\n"); + emit_mode_size_inline (); + emit_mode_nunits_inline (); + emit_mode_inner_inline (); + puts ("#endif /* GCC_VERSION >= 4001 */"); + puts ("\ \n\ #endif /* insn-modes.h */"); diff --git a/gcc/gimple-iterator.c b/gcc/gimple-iterator.c index 1cfeb731ec5..8a1ec53a765 100644 --- a/gcc/gimple-iterator.c +++ b/gcc/gimple-iterator.c @@ -689,6 +689,15 @@ gsi_insert_seq_on_edge (edge e, gimple_seq seq) gimple_seq_add_seq (&PENDING_STMT (e), seq); } +/* Return a new iterator pointing to the first statement in sequence of + statements on edge E. Such statements need to be subsequently moved into a + basic block by calling gsi_commit_edge_inserts. */ + +gimple_stmt_iterator +gsi_start_edge (edge e) +{ + return gsi_start (PENDING_STMT (e)); +} /* Insert the statement pointed-to by GSI into edge E. Every attempt is made to place the statement in an existing basic block, but diff --git a/gcc/gimple-iterator.h b/gcc/gimple-iterator.h index c35dc816c3f..909d58be892 100644 --- a/gcc/gimple-iterator.h +++ b/gcc/gimple-iterator.h @@ -123,6 +123,8 @@ gsi_start_bb (basic_block bb) return i; } +gimple_stmt_iterator gsi_start_edge (edge e); + /* Return a new iterator initially pointing to GIMPLE_SEQ's last statement. */ static inline gimple_stmt_iterator diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c index da3fb9fb35e..eff4b4f84ba 100644 --- a/gcc/gimple-low.c +++ b/gcc/gimple-low.c @@ -163,7 +163,6 @@ const pass_data pass_data_lower_cf = GIMPLE_PASS, /* type */ "lower", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ @@ -181,7 +180,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return lower_function_body (); } + virtual unsigned int execute (function *) { return lower_function_body (); } }; // class pass_lower_cf diff --git a/gcc/gimple-ssa-isolate-paths.c b/gcc/gimple-ssa-isolate-paths.c index 56fcfc84258..b01417d09e5 100644 --- a/gcc/gimple-ssa-isolate-paths.c +++ b/gcc/gimple-ssa-isolate-paths.c @@ -414,22 +414,12 @@ gimple_ssa_isolate_erroneous_paths (void) return 0; } -static bool -gate_isolate_erroneous_paths (void) -{ - /* If we do not have a suitable builtin function for the trap statement, - then do not perform the optimization. */ - return (flag_isolate_erroneous_paths_dereference != 0 - || flag_isolate_erroneous_paths_attribute != 0); -} - namespace { const pass_data pass_data_isolate_erroneous_paths = { GIMPLE_PASS, /* type */ "isolate-paths", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_ISOLATE_ERRONEOUS_PATHS, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -448,8 +438,18 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_isolate_erroneous_paths (m_ctxt); } - bool gate () { return gate_isolate_erroneous_paths (); } - unsigned int execute () { return gimple_ssa_isolate_erroneous_paths (); } + virtual bool gate (function *) + { + /* If we do not have a suitable builtin function for the trap statement, + then do not perform the optimization. */ + return (flag_isolate_erroneous_paths_dereference != 0 + || flag_isolate_erroneous_paths_attribute != 0); + } + + virtual unsigned int execute (function *) + { + return gimple_ssa_isolate_erroneous_paths (); + } }; // class pass_isolate_erroneous_paths } diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c index 5e35b12d3c8..cf252d4269d 100644 --- a/gcc/gimple-ssa-strength-reduction.c +++ b/gcc/gimple-ssa-strength-reduction.c @@ -3585,8 +3585,37 @@ analyze_candidates_and_replace (void) } } -static unsigned -execute_strength_reduction (void) +namespace { + +const pass_data pass_data_strength_reduction = +{ + GIMPLE_PASS, /* type */ + "slsr", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_GIMPLE_SLSR, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_ssa, /* todo_flags_finish */ +}; + +class pass_strength_reduction : public gimple_opt_pass +{ +public: + pass_strength_reduction (gcc::context *ctxt) + : gimple_opt_pass (pass_data_strength_reduction, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return flag_tree_slsr; } + virtual unsigned int execute (function *); + +}; // class pass_strength_reduction + +unsigned +pass_strength_reduction::execute (function *fun) { /* Create the obstack where candidates will reside. */ gcc_obstack_init (&cand_obstack); @@ -3613,7 +3642,7 @@ execute_strength_reduction (void) /* Walk the CFG in predominator order looking for strength reduction candidates. */ find_candidates_dom_walker (CDI_DOMINATORS) - .walk (cfun->cfg->x_entry_block_ptr); + .walk (fun->cfg->x_entry_block_ptr); if (dump_file && (dump_flags & TDF_DETAILS)) { @@ -3637,42 +3666,6 @@ execute_strength_reduction (void) return 0; } -static bool -gate_strength_reduction (void) -{ - return flag_tree_slsr; -} - -namespace { - -const pass_data pass_data_strength_reduction = -{ - GIMPLE_PASS, /* type */ - "slsr", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_GIMPLE_SLSR, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_ssa, /* todo_flags_finish */ -}; - -class pass_strength_reduction : public gimple_opt_pass -{ -public: - pass_strength_reduction (gcc::context *ctxt) - : gimple_opt_pass (pass_data_strength_reduction, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_strength_reduction (); } - unsigned int execute () { return execute_strength_reduction (); } - -}; // class pass_strength_reduction - } // anon namespace gimple_opt_pass * diff --git a/gcc/gimple.h b/gcc/gimple.h index 11959a82e62..26e8627bc44 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -2330,7 +2330,7 @@ gimple_assign_rhs_class (const_gimple gs) and do not have the semantics of a copy, such as COND_EXPR. */ static inline bool -gimple_assign_single_p (gimple gs) +gimple_assign_single_p (const_gimple gs) { return (is_gimple_assign (gs) && gimple_assign_rhs_class (gs) == GIMPLE_SINGLE_RHS); @@ -2339,7 +2339,7 @@ gimple_assign_single_p (gimple gs) /* Return true if GS performs a store to its lhs. */ static inline bool -gimple_store_p (gimple gs) +gimple_store_p (const_gimple gs) { tree lhs = gimple_get_lhs (gs); return lhs && !is_gimple_reg (lhs); @@ -2348,7 +2348,7 @@ gimple_store_p (gimple gs) /* Return true if GS is an assignment that loads from its rhs1. */ static inline bool -gimple_assign_load_p (gimple gs) +gimple_assign_load_p (const_gimple gs) { tree rhs; if (!gimple_assign_single_p (gs)) @@ -2365,7 +2365,7 @@ gimple_assign_load_p (gimple gs) /* Return true if S is a type-cast assignment. */ static inline bool -gimple_assign_cast_p (gimple s) +gimple_assign_cast_p (const_gimple s) { if (is_gimple_assign (s)) { @@ -2381,7 +2381,7 @@ gimple_assign_cast_p (gimple s) /* Return true if S is a clobber statement. */ static inline bool -gimple_clobber_p (gimple s) +gimple_clobber_p (const_gimple s) { return gimple_assign_single_p (s) && TREE_CLOBBER_P (gimple_assign_rhs1 (s)); diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 0d153fa02e6..c8beaec2c94 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,8 @@ +2014-04-17 Chris Manghane <cmang@google.com> + + * go-gcc.cc (Gcc_backend::named_constant_expression): New + function. + 2014-04-14 Chris Manghane <cmang@google.com> * go-gcc.cc: Include "convert.h". diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc index b91a7848cda..74a42ffb6bc 100644 --- a/gcc/go/go-gcc.cc +++ b/gcc/go/go-gcc.cc @@ -227,6 +227,10 @@ class Gcc_backend : public Backend indirect_expression(Bexpression* expr, bool known_valid, Location); Bexpression* + named_constant_expression(Btype* btype, const std::string& name, + Bexpression* val, Location); + + Bexpression* integer_constant_expression(Btype* btype, mpz_t val); Bexpression* @@ -961,6 +965,29 @@ Gcc_backend::indirect_expression(Bexpression* expr, bool known_valid, return tree_to_expr(ret); } +// Return an expression that declares a constant named NAME with the +// constant value VAL in BTYPE. + +Bexpression* +Gcc_backend::named_constant_expression(Btype* btype, const std::string& name, + Bexpression* val, Location location) +{ + tree type_tree = btype->get_tree(); + tree const_val = val->get_tree(); + if (type_tree == error_mark_node || const_val == error_mark_node) + return this->error_expression(); + + tree name_tree = get_identifier_from_string(name); + tree decl = build_decl(location.gcc_location(), CONST_DECL, name_tree, + type_tree); + DECL_INITIAL(decl) = const_val; + TREE_CONSTANT(decl) = 1; + TREE_READONLY(decl) = 1; + + go_preserve_from_gc(decl); + return this->make_expression(decl); +} + // Return a typed value as a constant integer. Bexpression* diff --git a/gcc/go/gofrontend/backend.h b/gcc/go/gofrontend/backend.h index fd657ecc989..dd76204e70c 100644 --- a/gcc/go/gofrontend/backend.h +++ b/gcc/go/gofrontend/backend.h @@ -257,6 +257,12 @@ class Backend virtual Bexpression* indirect_expression(Bexpression* expr, bool known_valid, Location) = 0; + // Return an expression that declares a constant named NAME with the + // constant value VAL in BTYPE. + virtual Bexpression* + named_constant_expression(Btype* btype, const std::string& name, + Bexpression* val, Location) = 0; + // Return an expression for the multi-precision integer VAL in BTYPE. virtual Bexpression* integer_constant_expression(Btype* btype, mpz_t val) = 0; diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index bd2e3183bfe..74ae9ddcd7d 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -555,6 +555,10 @@ class Error_expression : public Expression { return true; } bool + do_is_immutable() const + { return true; } + + bool do_numeric_constant_value(Numeric_constant* nc) const { nc->set_unsigned_long(NULL, 0); @@ -1422,6 +1426,10 @@ class Boolean_expression : public Expression do_is_constant() const { return true; } + bool + do_is_immutable() const + { return true; } + Type* do_type(); @@ -1790,6 +1798,10 @@ class Integer_expression : public Expression { return true; } bool + do_is_immutable() const + { return true; } + + bool do_numeric_constant_value(Numeric_constant* nc) const; Type* @@ -2109,6 +2121,10 @@ class Float_expression : public Expression { return true; } bool + do_is_immutable() const + { return true; } + + bool do_numeric_constant_value(Numeric_constant* nc) const { nc->set_float(this->type_, this->val_); @@ -2292,6 +2308,10 @@ class Complex_expression : public Expression { return true; } bool + do_is_immutable() const + { return true; } + + bool do_numeric_constant_value(Numeric_constant* nc) const { nc->set_complex(this->type_, this->real_, this->imag_); @@ -2506,6 +2526,10 @@ class Const_expression : public Expression { return true; } bool + do_is_immutable() const + { return true; } + + bool do_numeric_constant_value(Numeric_constant* nc) const; bool @@ -2768,12 +2792,12 @@ Const_expression::do_get_tree(Translate_context* context) // If the type has been set for this expression, but the underlying // object is an abstract int or float, we try to get the abstract // value. Otherwise we may lose something in the conversion. + Expression* expr = this->constant_->const_value()->expr(); if (this->type_ != NULL && this->type_->is_numeric_type() && (this->constant_->const_value()->type() == NULL || this->constant_->const_value()->type()->is_abstract())) { - Expression* expr = this->constant_->const_value()->expr(); Numeric_constant nc; if (expr->numeric_constant_value(&nc) && nc.set_type(this->type_, false, this->location())) @@ -2783,15 +2807,9 @@ Const_expression::do_get_tree(Translate_context* context) } } - Gogo* gogo = context->gogo(); - Bexpression* ret = - tree_to_expr(this->constant_->get_tree(gogo, context->function())); if (this->type_ != NULL) - { - Btype* btype = this->type_->get_backend(gogo); - ret = gogo->backend()->convert_expression(btype, ret, this->location()); - } - return expr_to_tree(ret); + expr = Expression::make_cast(this->type_, expr, this->location()); + return expr->get_tree(context); } // Dump ast representation for constant expression. @@ -2994,6 +3012,9 @@ class Type_conversion_expression : public Expression do_is_constant() const; bool + do_is_immutable() const; + + bool do_numeric_constant_value(Numeric_constant*) const; bool @@ -3175,6 +3196,27 @@ Type_conversion_expression::do_is_constant() const return true; } +// Return whether a type conversion is immutable. + +bool +Type_conversion_expression::do_is_immutable() const +{ + Type* type = this->type_; + Type* expr_type = this->expr_->type(); + + if (type->interface_type() != NULL + || expr_type->interface_type() != NULL) + return false; + + if (!this->expr_->is_immutable()) + return false; + + if (Type::are_identical(type, expr_type, false, NULL)) + return true; + + return type->is_basic_type() && expr_type->is_basic_type(); +} + // Return the constant numeric value if there is one. bool @@ -3599,7 +3641,8 @@ class Unary_expression : public Expression bool do_is_immutable() const - { return this->expr_->is_immutable(); } + { return this->expr_->is_immutable() + || (this->op_ == OPERATOR_AND && this->expr_->is_variable()); } bool do_numeric_constant_value(Numeric_constant*) const; @@ -9570,9 +9613,20 @@ Call_expression::do_get_tree(Translate_context* context) fn = Expression::make_compound(set_closure, fn, location); } - Btype* bft = fntype->get_backend_fntype(gogo); Bexpression* bfn = tree_to_expr(fn->get_tree(context)); - bfn = gogo->backend()->convert_expression(bft, bfn, location); + + // When not calling a named function directly, use a type conversion + // in case the type of the function is a recursive type which refers + // to itself. We don't do this for an interface method because 1) + // an interface method never refers to itself, so we always have a + // function type here; 2) we pass an extra first argument to an + // interface method, so fntype is not correct. + if (func == NULL && !is_interface_method) + { + Btype* bft = fntype->get_backend_fntype(gogo); + bfn = gogo->backend()->convert_expression(bft, bfn, location); + } + Bexpression* call = gogo->backend()->call_expression(bfn, fn_args, location); if (this->results_ != NULL) @@ -14076,6 +14130,10 @@ class Type_info_expression : public Expression { } protected: + bool + do_is_immutable() const + { return true; } + Type* do_type(); diff --git a/gcc/go/gofrontend/gogo-tree.cc b/gcc/go/gofrontend/gogo-tree.cc index e92acae7af4..32a7f38093f 100644 --- a/gcc/go/gofrontend/gogo-tree.cc +++ b/gcc/go/gofrontend/gogo-tree.cc @@ -1015,44 +1015,22 @@ Named_object::get_tree(Gogo* gogo, Named_object* function) { case NAMED_OBJECT_CONST: { - Named_constant* named_constant = this->u_.const_value; Translate_context subcontext(gogo, function, NULL, NULL); - tree expr_tree = named_constant->expr()->get_tree(&subcontext); - if (expr_tree == error_mark_node) - decl = error_mark_node; - else + Type* type = this->u_.const_value->type(); + Location loc = this->location(); + + Expression* const_ref = Expression::make_const_reference(this, loc); + Bexpression* const_decl = + tree_to_expr(const_ref->get_tree(&subcontext)); + if (type != NULL && type->is_numeric_type()) { - Type* type = named_constant->type(); - if (type != NULL && !type->is_abstract()) - { - if (type->is_error()) - expr_tree = error_mark_node; - else - { - Btype* btype = type->get_backend(gogo); - expr_tree = fold_convert(type_to_tree(btype), expr_tree); - } - } - if (expr_tree == error_mark_node) - decl = error_mark_node; - else if (INTEGRAL_TYPE_P(TREE_TYPE(expr_tree))) - { - tree name = get_identifier_from_string(this->get_id(gogo)); - decl = build_decl(named_constant->location().gcc_location(), - CONST_DECL, name, TREE_TYPE(expr_tree)); - DECL_INITIAL(decl) = expr_tree; - TREE_CONSTANT(decl) = 1; - TREE_READONLY(decl) = 1; - } - else - { - // A CONST_DECL is only for an enum constant, so we - // shouldn't use for non-integral types. Instead we - // just return the constant itself, rather than a - // decl. - decl = expr_tree; - } + Btype* btype = type->get_backend(gogo); + std::string name = this->get_id(gogo); + const_decl = + gogo->backend()->named_constant_expression(btype, name, + const_decl, loc); } + decl = expr_to_tree(const_decl); } break; diff --git a/gcc/graphite.c b/gcc/graphite.c index 311b7e36152..2e1f439ef9e 100644 --- a/gcc/graphite.c +++ b/gcc/graphite.c @@ -357,7 +357,6 @@ const pass_data pass_data_graphite = GIMPLE_PASS, /* type */ "graphite0", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_GRAPHITE, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -375,7 +374,7 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_graphite_transforms (); } + virtual bool gate (function *) { return gate_graphite_transforms (); } }; // class pass_graphite @@ -394,7 +393,6 @@ const pass_data pass_data_graphite_transforms = GIMPLE_PASS, /* type */ "graphite", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_GRAPHITE_TRANSFORMS, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -412,8 +410,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_graphite_transforms (); } - unsigned int execute () { return graphite_transforms (); } + virtual bool gate (function *) { return gate_graphite_transforms (); } + virtual unsigned int execute (function *) { return graphite_transforms (); } }; // class pass_graphite_transforms diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 0d1adce952e..e8a9fec9d66 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -4512,13 +4512,6 @@ if_convert (bool after_combine) #endif } -static bool -gate_handle_if_conversion (void) -{ - return (optimize > 0) - && dbg_cnt (if_conversion); -} - /* If-conversion and CFG cleanup. */ static unsigned int rest_of_handle_if_conversion (void) @@ -4545,7 +4538,6 @@ const pass_data pass_data_rtl_ifcvt = RTL_PASS, /* type */ "ce1", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IFCVT, /* tv_id */ 0, /* properties_required */ @@ -4563,8 +4555,15 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_if_conversion (); } - unsigned int execute () { return rest_of_handle_if_conversion (); } + virtual bool gate (function *) + { + return (optimize > 0) && dbg_cnt (if_conversion); + } + + virtual unsigned int execute (function *) + { + return rest_of_handle_if_conversion (); + } }; // class pass_rtl_ifcvt @@ -4576,22 +4575,9 @@ make_pass_rtl_ifcvt (gcc::context *ctxt) return new pass_rtl_ifcvt (ctxt); } -static bool -gate_handle_if_after_combine (void) -{ - return optimize > 0 && flag_if_conversion - && dbg_cnt (if_after_combine); -} - /* Rerun if-conversion, as combine may have simplified things enough to now meet sequence length restrictions. */ -static unsigned int -rest_of_handle_if_after_combine (void) -{ - if_convert (true); - return 0; -} namespace { @@ -4600,7 +4586,6 @@ const pass_data pass_data_if_after_combine = RTL_PASS, /* type */ "ce2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IFCVT, /* tv_id */ 0, /* properties_required */ @@ -4618,8 +4603,17 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_if_after_combine (); } - unsigned int execute () { return rest_of_handle_if_after_combine (); } + virtual bool gate (function *) + { + return optimize > 0 && flag_if_conversion + && dbg_cnt (if_after_combine); + } + + virtual unsigned int execute (function *) + { + if_convert (true); + return 0; + } }; // class pass_if_after_combine @@ -4632,21 +4626,6 @@ make_pass_if_after_combine (gcc::context *ctxt) } -static bool -gate_handle_if_after_reload (void) -{ - return optimize > 0 && flag_if_conversion2 - && dbg_cnt (if_after_reload); -} - -static unsigned int -rest_of_handle_if_after_reload (void) -{ - if_convert (true); - return 0; -} - - namespace { const pass_data pass_data_if_after_reload = @@ -4654,7 +4633,6 @@ const pass_data pass_data_if_after_reload = RTL_PASS, /* type */ "ce3", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IFCVT2, /* tv_id */ 0, /* properties_required */ @@ -4672,8 +4650,17 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_if_after_reload (); } - unsigned int execute () { return rest_of_handle_if_after_reload (); } + virtual bool gate (function *) + { + return optimize > 0 && flag_if_conversion2 + && dbg_cnt (if_after_reload); + } + + virtual unsigned int execute (function *) + { + if_convert (true); + return 0; + } }; // class pass_if_after_reload diff --git a/gcc/init-regs.c b/gcc/init-regs.c index fcc6e2ca798..59c5bc91004 100644 --- a/gcc/init-regs.c +++ b/gcc/init-regs.c @@ -125,19 +125,6 @@ initialize_uninitialized_regs (void) BITMAP_FREE (already_genned); } -static bool -gate_initialize_regs (void) -{ - return optimize > 0; -} - -static unsigned int -rest_of_handle_initialize_regs (void) -{ - initialize_uninitialized_regs (); - return 0; -} - namespace { const pass_data pass_data_initialize_regs = @@ -145,7 +132,6 @@ const pass_data pass_data_initialize_regs = RTL_PASS, /* type */ "init-regs", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -163,8 +149,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_initialize_regs (); } - unsigned int execute () { return rest_of_handle_initialize_regs (); } + virtual bool gate (function *) { return optimize > 0; } + virtual unsigned int execute (function *) + { + initialize_uninitialized_regs (); + return 0; + } }; // class pass_initialize_regs diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 689378a736f..479963cdb6b 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -3762,16 +3762,6 @@ ipcp_read_summary (void) ipa_prop_read_jump_functions (); } -/* Gate for IPCP optimization. */ - -static bool -cgraph_gate_cp (void) -{ - /* FIXME: We should remove the optimize check after we ensure we never run - IPA passes when not optimizing. */ - return flag_ipa_cp && optimize; -} - namespace { const pass_data pass_data_ipa_cp = @@ -3779,7 +3769,6 @@ const pass_data pass_data_ipa_cp = IPA_PASS, /* type */ "cp", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_CONSTANT_PROP, /* tv_id */ 0, /* properties_required */ @@ -3808,8 +3797,14 @@ public: {} /* opt_pass methods: */ - bool gate () { return cgraph_gate_cp (); } - unsigned int execute () { return ipcp_driver (); } + virtual bool gate (function *) + { + /* FIXME: We should remove the optimize check after we ensure we never run + IPA passes when not optimizing. */ + return flag_ipa_cp && optimize; + } + + virtual unsigned int execute (function *) { return ipcp_driver (); } }; // class pass_ipa_cp diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index 399485e5610..085e64856d4 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -2096,16 +2096,6 @@ ipa_devirt (void) return ndevirtualized ? TODO_remove_functions : 0; } -/* Gate for speculative IPA devirtualization optimization. */ - -static bool -gate_ipa_devirt (void) -{ - return (flag_devirtualize - && flag_devirtualize_speculatively - && optimize); -} - namespace { const pass_data pass_data_ipa_devirt = @@ -2113,7 +2103,6 @@ const pass_data pass_data_ipa_devirt = IPA_PASS, /* type */ "devirt", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_DEVIRT, /* tv_id */ 0, /* properties_required */ @@ -2140,8 +2129,14 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_ipa_devirt (); } - unsigned int execute () { return ipa_devirt (); } + virtual bool gate (function *) + { + return (flag_devirtualize + && flag_devirtualize_speculatively + && optimize); + } + + virtual unsigned int execute (function *) { return ipa_devirt (); } }; // class pass_ipa_devirt diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index 8e0f5dd8988..dfe305810fc 100644 --- a/gcc/ipa-inline-analysis.c +++ b/gcc/ipa-inline-analysis.c @@ -671,6 +671,11 @@ dump_inline_hints (FILE *f, inline_hints hints) hints &= ~INLINE_HINT_array_index; fprintf (f, " array_index"); } + if (hints & INLINE_HINT_known_hot) + { + hints &= ~INLINE_HINT_known_hot; + fprintf (f, " known_hot"); + } gcc_assert (!hints); } @@ -2920,7 +2925,6 @@ const pass_data pass_data_inline_parameters = GIMPLE_PASS, /* type */ "inline_param", /* name */ OPTGROUP_INLINE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_INLINE_PARAMETERS, /* tv_id */ 0, /* properties_required */ @@ -2939,9 +2943,10 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_inline_parameters (m_ctxt); } - unsigned int execute () { - return compute_inline_parameters_for_current (); - } + virtual unsigned int execute (function *) + { + return compute_inline_parameters_for_current (); + } }; // class pass_inline_parameters @@ -3666,6 +3671,17 @@ do_estimate_edge_time (struct cgraph_edge *edge) &known_aggs); estimate_node_size_and_time (callee, clause, known_vals, known_binfos, known_aggs, &size, &min_size, &time, &hints, es->param); + + /* When we have profile feedback, we can quite safely identify hot + edges and for those we disable size limits. Don't do that when + probability that caller will call the callee is low however, since it + may hurt optimization of the caller's hot path. */ + if (edge->count && cgraph_maybe_hot_edge_p (edge) + && (edge->count * 2 + > (edge->caller->global.inlined_to + ? edge->caller->global.inlined_to->count : edge->caller->count))) + hints |= INLINE_HINT_known_hot; + known_vals.release (); known_binfos.release (); known_aggs.release (); diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 40518194040..65e653320ad 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -127,6 +127,7 @@ along with GCC; see the file COPYING3. If not see static int overall_size; static gcov_type max_count; static sreal max_count_real, max_relbenefit_real, half_int_min_real; +static gcov_type spec_rem; /* Return false when inlining edge E would lead to violating limits on function unit growth or stack usage growth. @@ -577,18 +578,21 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report) inline cnadidate. At themoment we allow inline hints to promote non-inline function to inline and we increase MAX_INLINE_INSNS_SINGLE 16fold for inline functions. */ - else if (!DECL_DECLARED_INLINE_P (callee->decl) + else if ((!DECL_DECLARED_INLINE_P (callee->decl) + && (!e->count || !cgraph_maybe_hot_edge_p (e))) && inline_summary (callee)->min_size - inline_edge_summary (e)->call_stmt_size > MAX (MAX_INLINE_INSNS_SINGLE, MAX_INLINE_INSNS_AUTO)) { e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; want_inline = false; } - else if (DECL_DECLARED_INLINE_P (callee->decl) + else if ((DECL_DECLARED_INLINE_P (callee->decl) || e->count) && inline_summary (callee)->min_size - inline_edge_summary (e)->call_stmt_size > 16 * MAX_INLINE_INSNS_SINGLE) { - e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; + e->inline_failed = (DECL_DECLARED_INLINE_P (callee->decl) + ? CIF_MAX_INLINE_INSNS_SINGLE_LIMIT + : CIF_MAX_INLINE_INSNS_AUTO_LIMIT); want_inline = false; } else @@ -605,6 +609,7 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report) && growth >= MAX_INLINE_INSNS_SINGLE && ((!big_speedup && !(hints & (INLINE_HINT_indirect_call + | INLINE_HINT_known_hot | INLINE_HINT_loop_iterations | INLINE_HINT_array_index | INLINE_HINT_loop_stride))) @@ -629,6 +634,7 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report) inlining given function is very profitable. */ else if (!DECL_DECLARED_INLINE_P (callee->decl) && !big_speedup + && !(hints & INLINE_HINT_known_hot) && growth >= ((hints & (INLINE_HINT_indirect_call | INLINE_HINT_loop_iterations | INLINE_HINT_array_index @@ -1533,6 +1539,7 @@ resolve_noninline_speculation (fibheap_t edge_heap, struct cgraph_edge *edge) ? node->global.inlined_to : node; bitmap updated_nodes = BITMAP_ALLOC (NULL); + spec_rem += edge->count; cgraph_resolve_speculation (edge, NULL); reset_edge_caches (where); inline_update_overall_summary (where); @@ -1585,7 +1592,10 @@ inline_small_functions (void) struct inline_summary *info = inline_summary (node); struct ipa_dfs_info *dfs = (struct ipa_dfs_info *) node->aux; - if (!DECL_EXTERNAL (node->decl)) + /* Do not account external functions, they will be optimized out + if not inlined. Also only count the non-cold portion of program. */ + if (!DECL_EXTERNAL (node->decl) + && node->frequency != NODE_FREQUENCY_UNLIKELY_EXECUTED) initial_size += info->size; info->growth = estimate_growth (node); if (dfs && dfs->next_cycle) @@ -1993,6 +2003,130 @@ inline_to_all_callers (struct cgraph_node *node, void *data) return false; } +/* Output overall time estimate. */ +static void +dump_overall_stats (void) +{ + HOST_WIDEST_INT sum_weighted = 0, sum = 0; + struct cgraph_node *node; + + FOR_EACH_DEFINED_FUNCTION (node) + if (!node->global.inlined_to + && !node->alias) + { + int time = inline_summary (node)->time; + sum += time; + sum_weighted += time * node->count; + } + fprintf (dump_file, "Overall time estimate: " + HOST_WIDEST_INT_PRINT_DEC" weighted by profile: " + HOST_WIDEST_INT_PRINT_DEC"\n", sum, sum_weighted); +} + +/* Output some useful stats about inlining. */ + +static void +dump_inline_stats (void) +{ + HOST_WIDEST_INT inlined_cnt = 0, inlined_indir_cnt = 0; + HOST_WIDEST_INT inlined_virt_cnt = 0, inlined_virt_indir_cnt = 0; + HOST_WIDEST_INT noninlined_cnt = 0, noninlined_indir_cnt = 0; + HOST_WIDEST_INT noninlined_virt_cnt = 0, noninlined_virt_indir_cnt = 0; + HOST_WIDEST_INT inlined_speculative = 0, inlined_speculative_ply = 0; + HOST_WIDEST_INT indirect_poly_cnt = 0, indirect_cnt = 0; + HOST_WIDEST_INT reason[CIF_N_REASONS][3]; + int i; + struct cgraph_node *node; + + memset (reason, 0, sizeof (reason)); + FOR_EACH_DEFINED_FUNCTION (node) + { + struct cgraph_edge *e; + for (e = node->callees; e; e = e->next_callee) + { + if (e->inline_failed) + { + reason[(int) e->inline_failed][0] += e->count; + reason[(int) e->inline_failed][1] += e->frequency; + reason[(int) e->inline_failed][2] ++; + if (DECL_VIRTUAL_P (e->callee->decl)) + { + if (e->indirect_inlining_edge) + noninlined_virt_indir_cnt += e->count; + else + noninlined_virt_cnt += e->count; + } + else + { + if (e->indirect_inlining_edge) + noninlined_indir_cnt += e->count; + else + noninlined_cnt += e->count; + } + } + else + { + if (e->speculative) + { + if (DECL_VIRTUAL_P (e->callee->decl)) + inlined_speculative_ply += e->count; + else + inlined_speculative += e->count; + } + else if (DECL_VIRTUAL_P (e->callee->decl)) + { + if (e->indirect_inlining_edge) + inlined_virt_indir_cnt += e->count; + else + inlined_virt_cnt += e->count; + } + else + { + if (e->indirect_inlining_edge) + inlined_indir_cnt += e->count; + else + inlined_cnt += e->count; + } + } + } + for (e = node->indirect_calls; e; e = e->next_callee) + if (e->indirect_info->polymorphic) + indirect_poly_cnt += e->count; + else + indirect_cnt += e->count; + } + if (max_count) + { + fprintf (dump_file, + "Inlined " HOST_WIDEST_INT_PRINT_DEC " + speculative " + HOST_WIDEST_INT_PRINT_DEC " + speculative polymorphic " + HOST_WIDEST_INT_PRINT_DEC " + previously indirect " + HOST_WIDEST_INT_PRINT_DEC " + virtual " + HOST_WIDEST_INT_PRINT_DEC " + virtual and previously indirect " + HOST_WIDEST_INT_PRINT_DEC "\n" "Not inlined " + HOST_WIDEST_INT_PRINT_DEC " + previously indirect " + HOST_WIDEST_INT_PRINT_DEC " + virtual " + HOST_WIDEST_INT_PRINT_DEC " + virtual and previously indirect " + HOST_WIDEST_INT_PRINT_DEC " + stil indirect " + HOST_WIDEST_INT_PRINT_DEC " + still indirect polymorphic " + HOST_WIDEST_INT_PRINT_DEC "\n", inlined_cnt, + inlined_speculative, inlined_speculative_ply, + inlined_indir_cnt, inlined_virt_cnt, inlined_virt_indir_cnt, + noninlined_cnt, noninlined_indir_cnt, noninlined_virt_cnt, + noninlined_virt_indir_cnt, indirect_cnt, indirect_poly_cnt); + fprintf (dump_file, + "Removed speculations " HOST_WIDEST_INT_PRINT_DEC "\n", + spec_rem); + } + dump_overall_stats (); + fprintf (dump_file, "\nWhy inlining failed?\n"); + for (i = 0; i < CIF_N_REASONS; i++) + if (reason[i][2]) + fprintf (dump_file, "%-50s: %8i calls, %8i freq, "HOST_WIDEST_INT_PRINT_DEC" count\n", + cgraph_inline_failed_string ((cgraph_inline_failed_t) i), + (int) reason[i][2], (int) reason[i][1], reason[i][0]); +} + /* Decide on the inlining. We do so in the topological order to avoid expenses on updating data structures. */ @@ -2045,6 +2179,8 @@ ipa_inline (void) flatten_function (node, false); } } + if (dump_file) + dump_overall_stats (); inline_small_functions (); @@ -2089,6 +2225,7 @@ ipa_inline (void) if (edge->speculative && !speculation_useful_p (edge, false)) { cgraph_resolve_speculation (edge, NULL); + spec_rem += edge->count; update = true; remove_functions = true; } @@ -2119,9 +2256,12 @@ ipa_inline (void) ipa_free_all_structures_after_iinln (); if (dump_file) - fprintf (dump_file, - "\nInlined %i calls, eliminated %i functions\n\n", - ncalls_inlined, nfunctions_inlined); + { + fprintf (dump_file, + "\nInlined %i calls, eliminated %i functions\n\n", + ncalls_inlined, nfunctions_inlined); + dump_inline_stats (); + } if (dump_file) dump_inline_summaries (dump_file); @@ -2231,8 +2371,37 @@ early_inline_small_functions (struct cgraph_node *node) /* Do inlining of small functions. Doing so early helps profiling and other passes to be somewhat more effective and avoids some code duplication in later real inlining pass for testcases with very many function calls. */ -static unsigned int -early_inliner (void) + +namespace { + +const pass_data pass_data_early_inline = +{ + GIMPLE_PASS, /* type */ + "einline", /* name */ + OPTGROUP_INLINE, /* optinfo_flags */ + true, /* has_execute */ + TV_EARLY_INLINING, /* tv_id */ + PROP_ssa, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_early_inline : public gimple_opt_pass +{ +public: + pass_early_inline (gcc::context *ctxt) + : gimple_opt_pass (pass_data_early_inline, ctxt) + {} + + /* opt_pass methods: */ + virtual unsigned int execute (function *); + +}; // class pass_early_inline + +unsigned int +pass_early_inline::execute (function *fun) { struct cgraph_node *node = cgraph_get_node (current_function_decl); struct cgraph_edge *edge; @@ -2328,40 +2497,11 @@ early_inliner (void) timevar_pop (TV_INTEGRATION); } - cfun->always_inline_functions_inlined = true; + fun->always_inline_functions_inlined = true; return todo; } -namespace { - -const pass_data pass_data_early_inline = -{ - GIMPLE_PASS, /* type */ - "einline", /* name */ - OPTGROUP_INLINE, /* optinfo_flags */ - false, /* has_gate */ - true, /* has_execute */ - TV_EARLY_INLINING, /* tv_id */ - PROP_ssa, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_early_inline : public gimple_opt_pass -{ -public: - pass_early_inline (gcc::context *ctxt) - : gimple_opt_pass (pass_data_early_inline, ctxt) - {} - - /* opt_pass methods: */ - unsigned int execute () { return early_inliner (); } - -}; // class pass_early_inline - } // anon namespace gimple_opt_pass * @@ -2377,7 +2517,6 @@ const pass_data pass_data_ipa_inline = IPA_PASS, /* type */ "inline", /* name */ OPTGROUP_INLINE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_IPA_INLINING, /* tv_id */ 0, /* properties_required */ @@ -2404,7 +2543,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return ipa_inline (); } + virtual unsigned int execute (function *) { return ipa_inline (); } }; // class pass_ipa_inline diff --git a/gcc/ipa-inline.h b/gcc/ipa-inline.h index 8ee075f9300..1e9ff4ca0a8 100644 --- a/gcc/ipa-inline.h +++ b/gcc/ipa-inline.h @@ -68,7 +68,9 @@ enum inline_hints_vals { INLINE_HINT_cross_module = 64, /* If array indexes of loads/stores become known there may be room for further optimization. */ - INLINE_HINT_array_index = 128 + INLINE_HINT_array_index = 128, + /* We know that the callee is hot by profile. */ + INLINE_HINT_known_hot = 256 }; typedef int inline_hints; diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c index 17de6876e6c..71bd61b1212 100644 --- a/gcc/ipa-profile.c +++ b/gcc/ipa-profile.c @@ -711,12 +711,6 @@ ipa_profile (void) return 0; } -static bool -gate_ipa_profile (void) -{ - return flag_ipa_profile; -} - namespace { const pass_data pass_data_ipa_profile = @@ -724,7 +718,6 @@ const pass_data pass_data_ipa_profile = IPA_PASS, /* type */ "profile_estimate", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_PROFILE, /* tv_id */ 0, /* properties_required */ @@ -751,8 +744,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_ipa_profile (); } - unsigned int execute () { return ipa_profile (); } + virtual bool gate (function *) { return flag_ipa_profile; } + virtual unsigned int execute (function *) { return ipa_profile (); } }; // class pass_ipa_profile diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index 7d358809965..0ebfe5d5994 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -1515,7 +1515,6 @@ const pass_data pass_data_ipa_pure_const = IPA_PASS, /* type */ "pure-const", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_PURE_CONST, /* tv_id */ 0, /* properties_required */ @@ -1542,8 +1541,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_pure_const (); } - unsigned int execute () { return propagate (); } + virtual bool gate (function *) { return gate_pure_const (); } + virtual unsigned int execute (function *) { return propagate (); } }; // class pass_ipa_pure_const @@ -1582,8 +1581,38 @@ skip_function_for_local_pure_const (struct cgraph_node *node) ipa_pure_const. This pass is effective when executed together with other optimization passes in early optimization pass queue. */ -static unsigned int -local_pure_const (void) +namespace { + +const pass_data pass_data_local_pure_const = +{ + GIMPLE_PASS, /* type */ + "local-pure-const", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_IPA_PURE_CONST, /* tv_id */ + 0, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_local_pure_const : public gimple_opt_pass +{ +public: + pass_local_pure_const (gcc::context *ctxt) + : gimple_opt_pass (pass_data_local_pure_const, ctxt) + {} + + /* opt_pass methods: */ + opt_pass * clone () { return new pass_local_pure_const (m_ctxt); } + virtual bool gate (function *) { return gate_pure_const (); } + virtual unsigned int execute (function *); + +}; // class pass_local_pure_const + +unsigned int +pass_local_pure_const::execute (function *fun) { bool changed = false; funct_state l; @@ -1601,17 +1630,17 @@ local_pure_const (void) /* Do NORETURN discovery. */ if (!skip && !TREE_THIS_VOLATILE (current_function_decl) - && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (cfun)->preds) == 0) + && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (fun)->preds) == 0) { - warn_function_noreturn (cfun->decl); + warn_function_noreturn (fun->decl); if (dump_file) - fprintf (dump_file, "Function found to be noreturn: %s\n", - current_function_name ()); + fprintf (dump_file, "Function found to be noreturn: %s\n", + current_function_name ()); /* Update declaration and reduce profile to executed once. */ TREE_THIS_VOLATILE (current_function_decl) = 1; if (node->frequency > NODE_FREQUENCY_EXECUTED_ONCE) - node->frequency = NODE_FREQUENCY_EXECUTED_ONCE; + node->frequency = NODE_FREQUENCY_EXECUTED_ONCE; changed = true; } @@ -1692,37 +1721,6 @@ local_pure_const (void) return 0; } -namespace { - -const pass_data pass_data_local_pure_const = -{ - GIMPLE_PASS, /* type */ - "local-pure-const", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_IPA_PURE_CONST, /* tv_id */ - 0, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_local_pure_const : public gimple_opt_pass -{ -public: - pass_local_pure_const (gcc::context *ctxt) - : gimple_opt_pass (pass_data_local_pure_const, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_local_pure_const (m_ctxt); } - bool gate () { return gate_pure_const (); } - unsigned int execute () { return local_pure_const (); } - -}; // class pass_local_pure_const - } // anon namespace gimple_opt_pass * @@ -1733,21 +1731,6 @@ make_pass_local_pure_const (gcc::context *ctxt) /* Emit noreturn warnings. */ -static unsigned int -execute_warn_function_noreturn (void) -{ - if (!TREE_THIS_VOLATILE (current_function_decl) - && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (cfun)->preds) == 0) - warn_function_noreturn (current_function_decl); - return 0; -} - -static bool -gate_warn_function_noreturn (void) -{ - return warn_suggest_attribute_noreturn; -} - namespace { const pass_data pass_data_warn_function_noreturn = @@ -1755,7 +1738,6 @@ const pass_data pass_data_warn_function_noreturn = GIMPLE_PASS, /* type */ "*warn_function_noreturn", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -1773,8 +1755,14 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_warn_function_noreturn (); } - unsigned int execute () { return execute_warn_function_noreturn (); } + virtual bool gate (function *) { return warn_suggest_attribute_noreturn; } + virtual unsigned int execute (function *fun) + { + if (!TREE_THIS_VOLATILE (current_function_decl) + && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (fun)->preds) == 0) + warn_function_noreturn (current_function_decl); + return 0; + } }; // class pass_warn_function_noreturn diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c index dbe32e4371a..dc1169da66d 100644 --- a/gcc/ipa-reference.c +++ b/gcc/ipa-reference.c @@ -1148,14 +1148,6 @@ ipa_reference_read_optimization_summary (void) } } -static bool -gate_reference (void) -{ - return (flag_ipa_reference - /* Don't bother doing anything if the program has errors. */ - && !seen_error ()); -} - namespace { const pass_data pass_data_ipa_reference = @@ -1163,7 +1155,6 @@ const pass_data pass_data_ipa_reference = IPA_PASS, /* type */ "static-var", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_REFERENCE, /* tv_id */ 0, /* properties_required */ @@ -1192,8 +1183,14 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_reference (); } - unsigned int execute () { return propagate (); } + virtual bool gate (function *) + { + return (flag_ipa_reference + /* Don't bother doing anything if the program has errors. */ + && !seen_error ()); + } + + virtual unsigned int execute (function *) { return propagate (); } }; // class pass_ipa_reference diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c index 38bd88365d8..eefa1954e30 100644 --- a/gcc/ipa-split.c +++ b/gcc/ipa-split.c @@ -1646,17 +1646,6 @@ execute_split_functions (void) return todo; } -/* Gate function splitting pass. When doing profile feedback, we want - to execute the pass after profiling is read. So disable one in - early optimization. */ - -static bool -gate_split_functions (void) -{ - return (flag_partial_inlining - && !profile_arc_flag && !flag_branch_probabilities); -} - namespace { const pass_data pass_data_split_functions = @@ -1664,7 +1653,6 @@ const pass_data pass_data_split_functions = GIMPLE_PASS, /* type */ "fnsplit", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_FNSPLIT, /* tv_id */ PROP_cfg, /* properties_required */ @@ -1682,11 +1670,23 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_split_functions (); } - unsigned int execute () { return execute_split_functions (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) + { + return execute_split_functions (); + } }; // class pass_split_functions +bool +pass_split_functions::gate (function *) +{ + /* When doing profile feedback, we want to execute the pass after profiling + is read. So disable one in early optimization. */ + return (flag_partial_inlining + && !profile_arc_flag && !flag_branch_probabilities); +} + } // anon namespace gimple_opt_pass * @@ -1695,17 +1695,6 @@ make_pass_split_functions (gcc::context *ctxt) return new pass_split_functions (ctxt); } -/* Gate feedback driven function splitting pass. - We don't need to split when profiling at all, we are producing - lousy code anyway. */ - -static bool -gate_feedback_split_functions (void) -{ - return (flag_partial_inlining - && flag_branch_probabilities); -} - /* Execute function splitting pass. */ static unsigned int @@ -1724,7 +1713,6 @@ const pass_data pass_data_feedback_split_functions = GIMPLE_PASS, /* type */ "feedback_fnsplit", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_FNSPLIT, /* tv_id */ PROP_cfg, /* properties_required */ @@ -1742,11 +1730,23 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_feedback_split_functions (); } - unsigned int execute () { return execute_feedback_split_functions (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) + { + return execute_feedback_split_functions (); + } }; // class pass_feedback_split_functions +bool +pass_feedback_split_functions::gate (function *) +{ + /* We don't need to split when profiling at all, we are producing + lousy code anyway. */ + return (flag_partial_inlining + && flag_branch_probabilities); +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/ipa.c b/gcc/ipa.c index 3d82a39286c..8b65abdb349 100644 --- a/gcc/ipa.c +++ b/gcc/ipa.c @@ -1193,12 +1193,6 @@ function_and_variable_visibility (bool whole_program) /* Local function pass handling visibilities. This happens before LTO streaming so in particular -fwhole-program should be ignored at this level. */ -static unsigned int -local_function_and_variable_visibility (void) -{ - return function_and_variable_visibility (flag_whole_program && !flag_lto); -} - namespace { const pass_data pass_data_ipa_function_and_variable_visibility = @@ -1206,7 +1200,6 @@ const pass_data pass_data_ipa_function_and_variable_visibility = SIMPLE_IPA_PASS, /* type */ "visibility", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_CGRAPHOPT, /* tv_id */ 0, /* properties_required */ @@ -1225,9 +1218,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { - return local_function_and_variable_visibility (); - } + virtual unsigned int execute (function *) + { + return function_and_variable_visibility (flag_whole_program && !flag_lto); + } }; // class pass_ipa_function_and_variable_visibility @@ -1241,13 +1235,6 @@ make_pass_ipa_function_and_variable_visibility (gcc::context *ctxt) /* Free inline summary. */ -static unsigned -free_inline_summary (void) -{ - inline_free_summary (); - return 0; -} - namespace { const pass_data pass_data_ipa_free_inline_summary = @@ -1255,7 +1242,6 @@ const pass_data pass_data_ipa_free_inline_summary = SIMPLE_IPA_PASS, /* type */ "*free_inline_summary", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_IPA_FREE_INLINE_SUMMARY, /* tv_id */ 0, /* properties_required */ @@ -1273,7 +1259,11 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return free_inline_summary (); } + virtual unsigned int execute (function *) + { + inline_free_summary (); + return 0; + } }; // class pass_ipa_free_inline_summary @@ -1285,14 +1275,6 @@ make_pass_ipa_free_inline_summary (gcc::context *ctxt) return new pass_ipa_free_inline_summary (ctxt); } -/* Do not re-run on ltrans stage. */ - -static bool -gate_whole_program_function_and_variable_visibility (void) -{ - return !flag_ltrans; -} - /* Bring functionss local at LTO time with -fwhole-program. */ static unsigned int @@ -1311,7 +1293,6 @@ const pass_data pass_data_ipa_whole_program_visibility = IPA_PASS, /* type */ "whole-program", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_CGRAPHOPT, /* tv_id */ 0, /* properties_required */ @@ -1338,12 +1319,16 @@ public: {} /* opt_pass methods: */ - bool gate () { - return gate_whole_program_function_and_variable_visibility (); - } - unsigned int execute () { - return whole_program_function_and_variable_visibility (); - } + + virtual bool gate (function *) + { + /* Do not re-run on ltrans stage. */ + return !flag_ltrans; + } + virtual unsigned int execute (function *) + { + return whole_program_function_and_variable_visibility (); + } }; // class pass_ipa_whole_program_visibility @@ -1627,16 +1612,6 @@ ipa_cdtor_merge (void) return 0; } -/* Perform the pass when we have no ctors/dtors support - or at LTO time to merge multiple constructors into single - function. */ - -static bool -gate_ipa_cdtor_merge (void) -{ - return !targetm.have_ctors_dtors || (optimize && in_lto_p); -} - namespace { const pass_data pass_data_ipa_cdtor_merge = @@ -1644,7 +1619,6 @@ const pass_data pass_data_ipa_cdtor_merge = IPA_PASS, /* type */ "cdtor", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_CGRAPHOPT, /* tv_id */ 0, /* properties_required */ @@ -1671,11 +1645,20 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_ipa_cdtor_merge (); } - unsigned int execute () { return ipa_cdtor_merge (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) { return ipa_cdtor_merge (); } }; // class pass_ipa_cdtor_merge +bool +pass_ipa_cdtor_merge::gate (function *) +{ + /* Perform the pass when we have no ctors/dtors support + or at LTO time to merge multiple constructors into single + function. */ + return !targetm.have_ctors_dtors || (optimize && in_lto_p); +} + } // anon namespace ipa_opt_pass_d * diff --git a/gcc/ira.c b/gcc/ira.c index 4d91d2196a6..d9730011c03 100644 --- a/gcc/ira.c +++ b/gcc/ira.c @@ -5548,12 +5548,6 @@ do_reload (void) } /* Run the integrated register allocator. */ -static unsigned int -rest_of_handle_ira (void) -{ - ira (dump_file); - return 0; -} namespace { @@ -5562,7 +5556,6 @@ const pass_data pass_data_ira = RTL_PASS, /* type */ "ira", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_IRA, /* tv_id */ 0, /* properties_required */ @@ -5580,7 +5573,11 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_handle_ira (); } + virtual unsigned int execute (function *) + { + ira (dump_file); + return 0; + } }; // class pass_ira @@ -5592,13 +5589,6 @@ make_pass_ira (gcc::context *ctxt) return new pass_ira (ctxt); } -static unsigned int -rest_of_handle_reload (void) -{ - do_reload (); - return 0; -} - namespace { const pass_data pass_data_reload = @@ -5606,7 +5596,6 @@ const pass_data pass_data_reload = RTL_PASS, /* type */ "reload", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_RELOAD, /* tv_id */ 0, /* properties_required */ @@ -5624,7 +5613,11 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_handle_reload (); } + virtual unsigned int execute (function *) + { + do_reload (); + return 0; + } }; // class pass_reload diff --git a/gcc/jump.c b/gcc/jump.c index e6dabd05c5c..cdea8d5b885 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -146,7 +146,6 @@ const pass_data pass_data_cleanup_barriers = RTL_PASS, /* type */ "barriers", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -164,7 +163,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return cleanup_barriers (); } + virtual unsigned int execute (function *) { return cleanup_barriers (); } }; // class pass_cleanup_barriers diff --git a/gcc/loop-init.c b/gcc/loop-init.c index 2c2c269b83a..90453f67eca 100644 --- a/gcc/loop-init.c +++ b/gcc/loop-init.c @@ -287,31 +287,8 @@ fix_loop_structure (bitmap changed_bbs) return number_of_loops (cfun) - old_nloops; } -/* Gate for the RTL loop superpass. The actual passes are subpasses. - See passes.c for more on that. */ - -static bool -gate_handle_loop2 (void) -{ - if (optimize > 0 - && (flag_move_loop_invariants - || flag_unswitch_loops - || flag_peel_loops - || flag_unroll_loops -#ifdef HAVE_doloop_end - || (flag_branch_on_count_reg && HAVE_doloop_end) -#endif - )) - return true; - else - { - /* No longer preserve loops, remove them now. */ - cfun->curr_properties &= ~PROP_loops; - if (current_loops) - loop_optimizer_finalize (); - return false; - } -} +/* The RTL loop superpass. The actual passes are subpasses. See passes.c for + more on that. */ namespace { @@ -320,7 +297,6 @@ const pass_data pass_data_loop2 = RTL_PASS, /* type */ "loop2", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_LOOP, /* tv_id */ 0, /* properties_required */ @@ -338,10 +314,33 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_loop2 (); } + virtual bool gate (function *); }; // class pass_loop2 +bool +pass_loop2::gate (function *fun) +{ + if (optimize > 0 + && (flag_move_loop_invariants + || flag_unswitch_loops + || flag_peel_loops + || flag_unroll_loops +#ifdef HAVE_doloop_end + || (flag_branch_on_count_reg && HAVE_doloop_end) +#endif + )) + return true; + else + { + /* No longer preserve loops, remove them now. */ + fun->curr_properties &= ~PROP_loops; + if (current_loops) + loop_optimizer_finalize (); + return false; + } +} + } // anon namespace rtl_opt_pass * @@ -374,7 +373,6 @@ const pass_data pass_data_rtl_loop_init = RTL_PASS, /* type */ "loop2_init", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_LOOP, /* tv_id */ 0, /* properties_required */ @@ -392,7 +390,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rtl_loop_init (); } + virtual unsigned int execute (function *) { return rtl_loop_init (); } }; // class pass_rtl_loop_init @@ -407,24 +405,6 @@ make_pass_rtl_loop_init (gcc::context *ctxt) /* Finalization of the RTL loop passes. */ -static unsigned int -rtl_loop_done (void) -{ - /* No longer preserve loops, remove them now. */ - cfun->curr_properties &= ~PROP_loops; - loop_optimizer_finalize (); - free_dominance_info (CDI_DOMINATORS); - - cleanup_cfg (0); - if (dump_file) - { - dump_reg_info (dump_file); - dump_flow_info (dump_file, dump_flags); - } - - return 0; -} - namespace { const pass_data pass_data_rtl_loop_done = @@ -432,7 +412,6 @@ const pass_data pass_data_rtl_loop_done = RTL_PASS, /* type */ "loop2_done", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_LOOP, /* tv_id */ 0, /* properties_required */ @@ -450,10 +429,28 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rtl_loop_done (); } + virtual unsigned int execute (function *); }; // class pass_rtl_loop_done +unsigned int +pass_rtl_loop_done::execute (function *fun) +{ + /* No longer preserve loops, remove them now. */ + fun->curr_properties &= ~PROP_loops; + loop_optimizer_finalize (); + free_dominance_info (CDI_DOMINATORS); + + cleanup_cfg (0); + if (dump_file) + { + dump_reg_info (dump_file); + dump_flow_info (dump_file, dump_flags); + } + + return 0; +} + } // anon namespace rtl_opt_pass * @@ -464,19 +461,6 @@ make_pass_rtl_loop_done (gcc::context *ctxt) /* Loop invariant code motion. */ -static bool -gate_rtl_move_loop_invariants (void) -{ - return flag_move_loop_invariants; -} - -static unsigned int -rtl_move_loop_invariants (void) -{ - if (number_of_loops (cfun) > 1) - move_loop_invariants (); - return 0; -} namespace { @@ -485,7 +469,6 @@ const pass_data pass_data_rtl_move_loop_invariants = RTL_PASS, /* type */ "loop2_invariant", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_LOOP_MOVE_INVARIANTS, /* tv_id */ 0, /* properties_required */ @@ -504,8 +487,13 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_rtl_move_loop_invariants (); } - unsigned int execute () { return rtl_move_loop_invariants (); } + virtual bool gate (function *) { return flag_move_loop_invariants; } + virtual unsigned int execute (function *fun) + { + if (number_of_loops (fun) > 1) + move_loop_invariants (); + return 0; + } }; // class pass_rtl_move_loop_invariants @@ -518,21 +506,6 @@ make_pass_rtl_move_loop_invariants (gcc::context *ctxt) } -/* Loop unswitching for RTL. */ -static bool -gate_rtl_unswitch (void) -{ - return flag_unswitch_loops; -} - -static unsigned int -rtl_unswitch (void) -{ - if (number_of_loops (cfun) > 1) - unswitch_loops (); - return 0; -} - namespace { const pass_data pass_data_rtl_unswitch = @@ -540,7 +513,6 @@ const pass_data pass_data_rtl_unswitch = RTL_PASS, /* type */ "loop2_unswitch", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_LOOP_UNSWITCH, /* tv_id */ 0, /* properties_required */ @@ -558,8 +530,13 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_rtl_unswitch (); } - unsigned int execute () { return rtl_unswitch (); } + virtual bool gate (function *) { return flag_unswitch_loops; } + virtual unsigned int execute (function *fun) + { + if (number_of_loops (fun) > 1) + unswitch_loops (); + return 0; + } }; // class pass_rtl_unswitch @@ -572,34 +549,6 @@ make_pass_rtl_unswitch (gcc::context *ctxt) } -/* Loop unswitching for RTL. */ -static bool -gate_rtl_unroll_and_peel_loops (void) -{ - return (flag_peel_loops || flag_unroll_loops || flag_unroll_all_loops); -} - -static unsigned int -rtl_unroll_and_peel_loops (void) -{ - if (number_of_loops (cfun) > 1) - { - int flags = 0; - if (dump_file) - df_dump (dump_file); - - if (flag_peel_loops) - flags |= UAP_PEEL; - if (flag_unroll_loops) - flags |= UAP_UNROLL; - if (flag_unroll_all_loops) - flags |= UAP_UNROLL_ALL; - - unroll_and_peel_loops (flags); - } - return 0; -} - namespace { const pass_data pass_data_rtl_unroll_and_peel_loops = @@ -607,7 +556,6 @@ const pass_data pass_data_rtl_unroll_and_peel_loops = RTL_PASS, /* type */ "loop2_unroll", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_LOOP_UNROLL, /* tv_id */ 0, /* properties_required */ @@ -625,11 +573,36 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_rtl_unroll_and_peel_loops (); } - unsigned int execute () { return rtl_unroll_and_peel_loops (); } + virtual bool gate (function *) + { + return (flag_peel_loops || flag_unroll_loops || flag_unroll_all_loops); + } + + virtual unsigned int execute (function *); }; // class pass_rtl_unroll_and_peel_loops +unsigned int +pass_rtl_unroll_and_peel_loops::execute (function *fun) +{ + if (number_of_loops (fun) > 1) + { + int flags = 0; + if (dump_file) + df_dump (dump_file); + + if (flag_peel_loops) + flags |= UAP_PEEL; + if (flag_unroll_loops) + flags |= UAP_UNROLL; + if (flag_unroll_all_loops) + flags |= UAP_UNROLL_ALL; + + unroll_and_peel_loops (flags); + } + return 0; +} + } // anon namespace rtl_opt_pass * @@ -639,27 +612,6 @@ make_pass_rtl_unroll_and_peel_loops (gcc::context *ctxt) } -/* The doloop optimization. */ -static bool -gate_rtl_doloop (void) -{ -#ifdef HAVE_doloop_end - return (flag_branch_on_count_reg && HAVE_doloop_end); -#else - return 0; -#endif -} - -static unsigned int -rtl_doloop (void) -{ -#ifdef HAVE_doloop_end - if (number_of_loops (cfun) > 1) - doloop_optimize_loops (); -#endif - return 0; -} - namespace { const pass_data pass_data_rtl_doloop = @@ -667,7 +619,6 @@ const pass_data pass_data_rtl_doloop = RTL_PASS, /* type */ "loop2_doloop", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_LOOP_DOLOOP, /* tv_id */ 0, /* properties_required */ @@ -685,11 +636,31 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_rtl_doloop (); } - unsigned int execute () { return rtl_doloop (); } + virtual bool gate (function *); + virtual unsigned int execute (function *); }; // class pass_rtl_doloop +bool +pass_rtl_doloop::gate (function *) +{ +#ifdef HAVE_doloop_end + return (flag_branch_on_count_reg && HAVE_doloop_end); +#else + return false; +#endif +} + +unsigned int +pass_rtl_doloop::execute (function *fun ATTRIBUTE_UNUSED) +{ +#ifdef HAVE_doloop_end + if (number_of_loops (fun) > 1) + doloop_optimize_loops (); +#endif + return 0; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index a1331c00507..ae935f76459 100644 --- a/gcc/lower-subreg.c +++ b/gcc/lower-subreg.c @@ -1371,7 +1371,7 @@ dump_choices (bool speed_p, const char *description) fprintf (dump_file, "Choices when optimizing for %s:\n", description); for (i = 0; i < MAX_MACHINE_MODE; i++) - if (GET_MODE_SIZE (i) > UNITS_PER_WORD) + if (GET_MODE_SIZE ((enum machine_mode) i) > UNITS_PER_WORD) fprintf (dump_file, " %s mode %s for copy lowering.\n", choices[speed_p].move_modes_to_split[i] ? "Splitting" @@ -1687,32 +1687,8 @@ decompose_multiword_subregs (bool decompose_copies) BITMAP_FREE (subreg_context); } -/* Gate function for lower subreg pass. */ - -static bool -gate_handle_lower_subreg (void) -{ - return flag_split_wide_types != 0; -} - /* Implement first lower subreg pass. */ -static unsigned int -rest_of_handle_lower_subreg (void) -{ - decompose_multiword_subregs (false); - return 0; -} - -/* Implement second lower subreg pass. */ - -static unsigned int -rest_of_handle_lower_subreg2 (void) -{ - decompose_multiword_subregs (true); - return 0; -} - namespace { const pass_data pass_data_lower_subreg = @@ -1720,7 +1696,6 @@ const pass_data pass_data_lower_subreg = RTL_PASS, /* type */ "subreg1", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_LOWER_SUBREG, /* tv_id */ 0, /* properties_required */ @@ -1738,8 +1713,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_lower_subreg (); } - unsigned int execute () { return rest_of_handle_lower_subreg (); } + virtual bool gate (function *) { return flag_split_wide_types != 0; } + virtual unsigned int execute (function *) + { + decompose_multiword_subregs (false); + return 0; + } }; // class pass_lower_subreg @@ -1751,6 +1730,8 @@ make_pass_lower_subreg (gcc::context *ctxt) return new pass_lower_subreg (ctxt); } +/* Implement second lower subreg pass. */ + namespace { const pass_data pass_data_lower_subreg2 = @@ -1758,7 +1739,6 @@ const pass_data pass_data_lower_subreg2 = RTL_PASS, /* type */ "subreg2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_LOWER_SUBREG, /* tv_id */ 0, /* properties_required */ @@ -1777,8 +1757,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_lower_subreg (); } - unsigned int execute () { return rest_of_handle_lower_subreg2 (); } + virtual bool gate (function *) { return flag_split_wide_types != 0; } + virtual unsigned int execute (function *) + { + decompose_multiword_subregs (true); + return 0; + } }; // class pass_lower_subreg2 diff --git a/gcc/machmode.h b/gcc/machmode.h index bc5d901d245..8d6ea187b4d 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -177,7 +177,13 @@ extern const unsigned char mode_class[NUM_MACHINE_MODES]; /* Get the size in bytes and bits of an object of mode MODE. */ extern CONST_MODE_SIZE unsigned char mode_size[NUM_MACHINE_MODES]; +#if GCC_VERSION >= 4001 +#define GET_MODE_SIZE(MODE) \ + ((unsigned short) (__builtin_constant_p (MODE) \ + ? mode_size_inline (MODE) : mode_size[MODE])) +#else #define GET_MODE_SIZE(MODE) ((unsigned short) mode_size[MODE]) +#endif #define GET_MODE_BITSIZE(MODE) \ ((unsigned short) (GET_MODE_SIZE (MODE) * BITS_PER_UNIT)) @@ -203,7 +209,13 @@ extern const unsigned HOST_WIDE_INT mode_mask_array[NUM_MACHINE_MODES]; /* Return the mode of the inner elements in a vector. */ extern const unsigned char mode_inner[NUM_MACHINE_MODES]; +#if GCC_VERSION >= 4001 +#define GET_MODE_INNER(MODE) \ + ((enum machine_mode) (__builtin_constant_p (MODE) \ + ? mode_inner_inline (MODE) : mode_inner[MODE])) +#else #define GET_MODE_INNER(MODE) ((enum machine_mode) mode_inner[MODE]) +#endif /* Get the size in bytes or bites of the basic parts of an object of mode MODE. */ @@ -224,7 +236,13 @@ extern const unsigned char mode_inner[NUM_MACHINE_MODES]; /* Get the number of units in the object. */ extern const unsigned char mode_nunits[NUM_MACHINE_MODES]; +#if GCC_VERSION >= 4001 +#define GET_MODE_NUNITS(MODE) \ + ((unsigned char) (__builtin_constant_p (MODE) \ + ? mode_nunits_inline (MODE) : mode_nunits[MODE])) +#else #define GET_MODE_NUNITS(MODE) mode_nunits[MODE] +#endif /* Get the next wider natural mode (eg, QI -> HI -> SI -> DI -> TI). */ @@ -253,6 +271,8 @@ extern enum machine_mode smallest_mode_for_size (unsigned int, extern enum machine_mode int_mode_for_mode (enum machine_mode); +extern enum machine_mode bitwise_mode_for_mode (enum machine_mode); + /* Return a mode that is suitable for representing a vector, or BLKmode on failure. */ diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c index 2848da34c1f..b132cba4f2a 100644 --- a/gcc/mode-switching.c +++ b/gcc/mode-switching.c @@ -789,26 +789,6 @@ optimize_mode_switching (void) #endif /* OPTIMIZE_MODE_SWITCHING */ -static bool -gate_mode_switching (void) -{ -#ifdef OPTIMIZE_MODE_SWITCHING - return true; -#else - return false; -#endif -} - -static unsigned int -rest_of_handle_mode_switching (void) -{ -#ifdef OPTIMIZE_MODE_SWITCHING - optimize_mode_switching (); -#endif /* OPTIMIZE_MODE_SWITCHING */ - return 0; -} - - namespace { const pass_data pass_data_mode_switching = @@ -816,7 +796,6 @@ const pass_data pass_data_mode_switching = RTL_PASS, /* type */ "mode_sw", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_MODE_SWITCH, /* tv_id */ 0, /* properties_required */ @@ -837,8 +816,22 @@ public: /* The epiphany backend creates a second instance of this pass, so we need a clone method. */ opt_pass * clone () { return new pass_mode_switching (m_ctxt); } - bool gate () { return gate_mode_switching (); } - unsigned int execute () { return rest_of_handle_mode_switching (); } + virtual bool gate (function *) + { +#ifdef OPTIMIZE_MODE_SWITCHING + return true; +#else + return false; +#endif + } + + virtual unsigned int execute (function *) + { +#ifdef OPTIMIZE_MODE_SWITCHING + optimize_mode_switching (); +#endif /* OPTIMIZE_MODE_SWITCHING */ + return 0; + } }; // class pass_mode_switching diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c index 7ba3ddb6698..2e454f553e7 100644 --- a/gcc/modulo-sched.c +++ b/gcc/modulo-sched.c @@ -3323,37 +3323,8 @@ rotate_partial_schedule (partial_schedule_ptr ps, int start_cycle) #endif /* INSN_SCHEDULING */ -static bool -gate_handle_sms (void) -{ - return (optimize > 0 && flag_modulo_sched); -} - - /* Run instruction scheduler. */ /* Perform SMS module scheduling. */ -static unsigned int -rest_of_handle_sms (void) -{ -#ifdef INSN_SCHEDULING - basic_block bb; - - /* Collect loop information to be used in SMS. */ - cfg_layout_initialize (0); - sms_schedule (); - - /* Update the life information, because we add pseudos. */ - max_regno = max_reg_num (); - - /* Finalize layout changes. */ - FOR_EACH_BB_FN (bb, cfun) - if (bb->next_bb != EXIT_BLOCK_PTR_FOR_FN (cfun)) - bb->aux = bb->next_bb; - free_dominance_info (CDI_DOMINATORS); - cfg_layout_finalize (); -#endif /* INSN_SCHEDULING */ - return 0; -} namespace { @@ -3362,7 +3333,6 @@ const pass_data pass_data_sms = RTL_PASS, /* type */ "sms", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_SMS, /* tv_id */ 0, /* properties_required */ @@ -3381,11 +3351,38 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_sms (); } - unsigned int execute () { return rest_of_handle_sms (); } + virtual bool gate (function *) +{ + return (optimize > 0 && flag_modulo_sched); +} + + virtual unsigned int execute (function *); }; // class pass_sms +unsigned int +pass_sms::execute (function *fun ATTRIBUTE_UNUSED) +{ +#ifdef INSN_SCHEDULING + basic_block bb; + + /* Collect loop information to be used in SMS. */ + cfg_layout_initialize (0); + sms_schedule (); + + /* Update the life information, because we add pseudos. */ + max_regno = max_reg_num (); + + /* Finalize layout changes. */ + FOR_EACH_BB_FN (bb, fun) + if (bb->next_bb != EXIT_BLOCK_PTR_FOR_FN (fun)) + bb->aux = bb->next_bb; + free_dominance_info (CDI_DOMINATORS); + cfg_layout_finalize (); +#endif /* INSN_SCHEDULING */ + return 0; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 91468e95ab6..5411e00a3c4 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -8324,13 +8324,6 @@ execute_expand_omp (void) /* OMP expansion -- the default pass, run before creation of SSA form. */ -static bool -gate_expand_omp (void) -{ - return ((flag_openmp != 0 || flag_openmp_simd != 0 - || flag_cilkplus != 0) && !seen_error ()); -} - namespace { const pass_data pass_data_expand_omp = @@ -8338,7 +8331,6 @@ const pass_data pass_data_expand_omp = GIMPLE_PASS, /* type */ "ompexp", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ @@ -8356,8 +8348,13 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_expand_omp (); } - unsigned int execute () { return execute_expand_omp (); } + virtual bool gate (function *) + { + return ((flag_openmp != 0 || flag_openmp_simd != 0 + || flag_cilkplus != 0) && !seen_error ()); + } + + virtual unsigned int execute (function *) { return execute_expand_omp (); } }; // class pass_expand_omp @@ -10199,7 +10196,6 @@ const pass_data pass_data_lower_omp = GIMPLE_PASS, /* type */ "omplower", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ @@ -10217,7 +10213,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return execute_lower_omp (); } + virtual unsigned int execute (function *) { return execute_lower_omp (); } }; // class pass_lower_omp @@ -10617,12 +10613,6 @@ diagnose_omp_structured_block_errors (void) return 0; } -static bool -gate_diagnose_omp_blocks (void) -{ - return flag_openmp || flag_cilkplus; -} - namespace { const pass_data pass_data_diagnose_omp_blocks = @@ -10630,7 +10620,6 @@ const pass_data pass_data_diagnose_omp_blocks = GIMPLE_PASS, /* type */ "*diagnose_omp_blocks", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ @@ -10648,10 +10637,11 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_diagnose_omp_blocks (); } - unsigned int execute () { - return diagnose_omp_structured_block_errors (); - } + virtual bool gate (function *) { return flag_openmp || flag_cilkplus; } + virtual unsigned int execute (function *) + { + return diagnose_omp_structured_block_errors (); + } }; // class pass_diagnose_omp_blocks @@ -11289,45 +11279,53 @@ static tree ipa_simd_modify_stmt_ops (tree *tp, int *walk_subtrees, void *data) { struct walk_stmt_info *wi = (struct walk_stmt_info *) data; - if (!SSA_VAR_P (*tp)) + struct modify_stmt_info *info = (struct modify_stmt_info *) wi->info; + tree *orig_tp = tp; + if (TREE_CODE (*tp) == ADDR_EXPR) + tp = &TREE_OPERAND (*tp, 0); + struct ipa_parm_adjustment *cand = NULL; + if (TREE_CODE (*tp) == PARM_DECL) + cand = ipa_get_adjustment_candidate (&tp, NULL, info->adjustments, true); + else { - /* Make sure we treat subtrees as a RHS. This makes sure that - when examining the `*foo' in *foo=x, the `foo' get treated as - a use properly. */ - wi->is_lhs = false; - wi->val_only = true; if (TYPE_P (*tp)) *walk_subtrees = 0; - return NULL_TREE; } - struct modify_stmt_info *info = (struct modify_stmt_info *) wi->info; - struct ipa_parm_adjustment *cand - = ipa_get_adjustment_candidate (&tp, NULL, info->adjustments, true); - if (!cand) - return NULL_TREE; - tree t = *tp; - tree repl = make_ssa_name (TREE_TYPE (t), NULL); - - gimple stmt; - gimple_stmt_iterator gsi = gsi_for_stmt (info->stmt); - if (wi->is_lhs) + tree repl = NULL_TREE; + if (cand) + repl = unshare_expr (cand->new_decl); + else { - stmt = gimple_build_assign (unshare_expr (cand->new_decl), repl); - gsi_insert_after (&gsi, stmt, GSI_SAME_STMT); - SSA_NAME_DEF_STMT (repl) = info->stmt; + if (tp != orig_tp) + { + *walk_subtrees = 0; + bool modified = info->modified; + info->modified = false; + walk_tree (tp, ipa_simd_modify_stmt_ops, wi, wi->pset); + if (!info->modified) + { + info->modified = modified; + return NULL_TREE; + } + info->modified = modified; + repl = *tp; + } + else + return NULL_TREE; } - else + + if (tp != orig_tp) { - /* You'd think we could skip the extra SSA variable when - wi->val_only=true, but we may have `*var' which will get - replaced into `*var_array[iter]' and will likely be something - not gimple. */ - stmt = gimple_build_assign (repl, unshare_expr (cand->new_decl)); + repl = build_fold_addr_expr (repl); + gimple stmt + = gimple_build_assign (make_ssa_name (TREE_TYPE (repl), NULL), repl); + repl = gimple_assign_lhs (stmt); + gimple_stmt_iterator gsi = gsi_for_stmt (info->stmt); gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); + *orig_tp = repl; } - - if (!useless_type_conversion_p (TREE_TYPE (*tp), TREE_TYPE (repl))) + else if (!useless_type_conversion_p (TREE_TYPE (*tp), TREE_TYPE (repl))) { tree vce = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (*tp), repl); *tp = vce; @@ -11336,8 +11334,6 @@ ipa_simd_modify_stmt_ops (tree *tp, int *walk_subtrees, void *data) *tp = repl; info->modified = true; - wi->is_lhs = false; - wi->val_only = true; return NULL_TREE; } @@ -11356,7 +11352,7 @@ ipa_simd_modify_function_body (struct cgraph_node *node, tree retval_array, tree iter) { basic_block bb; - unsigned int i, j; + unsigned int i, j, l; /* Re-use the adjustments array, but this time use it to replace every function argument use to an offset into the corresponding @@ -11379,6 +11375,46 @@ ipa_simd_modify_function_body (struct cgraph_node *node, j += node->simdclone->simdlen / TYPE_VECTOR_SUBPARTS (vectype) - 1; } + l = adjustments.length (); + for (i = 1; i < num_ssa_names; i++) + { + tree name = ssa_name (i); + if (name + && SSA_NAME_VAR (name) + && TREE_CODE (SSA_NAME_VAR (name)) == PARM_DECL) + { + for (j = 0; j < l; j++) + if (SSA_NAME_VAR (name) == adjustments[j].base + && adjustments[j].new_decl) + { + tree base_var; + if (adjustments[j].new_ssa_base == NULL_TREE) + { + base_var + = copy_var_decl (adjustments[j].base, + DECL_NAME (adjustments[j].base), + TREE_TYPE (adjustments[j].base)); + adjustments[j].new_ssa_base = base_var; + } + else + base_var = adjustments[j].new_ssa_base; + if (SSA_NAME_IS_DEFAULT_DEF (name)) + { + bb = single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun)); + gimple_stmt_iterator gsi = gsi_after_labels (bb); + tree new_decl = unshare_expr (adjustments[j].new_decl); + set_ssa_default_def (cfun, adjustments[j].base, NULL_TREE); + SET_SSA_NAME_VAR_OR_IDENTIFIER (name, base_var); + SSA_NAME_IS_DEFAULT_DEF (name) = 0; + gimple stmt = gimple_build_assign (name, new_decl); + gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); + } + else + SET_SSA_NAME_VAR_OR_IDENTIFIER (name, base_var); + } + } + } + struct modify_stmt_info info; info.adjustments = adjustments; @@ -11795,7 +11831,6 @@ const pass_data pass_data_omp_simd_clone = SIMPLE_IPA_PASS, /* type */ "simdclone", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -11813,13 +11848,19 @@ public: {} /* opt_pass methods: */ - bool gate () { return ((flag_openmp || flag_openmp_simd - || flag_cilkplus || (in_lto_p && !flag_wpa)) - && (targetm.simd_clone.compute_vecsize_and_simdlen - != NULL)); } - unsigned int execute () { return ipa_omp_simd_clone (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) { return ipa_omp_simd_clone (); } }; +bool +pass_omp_simd_clone::gate (function *) +{ + return ((flag_openmp || flag_openmp_simd + || flag_cilkplus + || (in_lto_p && !flag_wpa)) + && (targetm.simd_clone.compute_vecsize_and_simdlen != NULL)); +} + } // anon namespace simple_ipa_opt_pass * diff --git a/gcc/pass_manager.h b/gcc/pass_manager.h index e1d81439acd..9f4d67bc84c 100644 --- a/gcc/pass_manager.h +++ b/gcc/pass_manager.h @@ -91,8 +91,7 @@ public: private: void set_pass_for_id (int id, opt_pass *pass); - int register_dump_files_1 (opt_pass *pass, int properties); - void register_dump_files (opt_pass *pass, int properties); + void register_dump_files (opt_pass *pass); private: context *m_ctxt; diff --git a/gcc/passes.c b/gcc/passes.c index 60fb13536fa..2be7856f29b 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -108,13 +108,13 @@ opt_pass::clone () } bool -opt_pass::gate () +opt_pass::gate (function *) { return true; } unsigned int -opt_pass::execute () +opt_pass::execute (function *) { return 0; } @@ -138,7 +138,7 @@ pass_manager::execute_early_local_passes () unsigned int pass_manager::execute_pass_mode_switching () { - return pass_mode_switching_1->execute (); + return pass_mode_switching_1->execute (cfun); } @@ -337,15 +337,6 @@ execute_all_early_local_passes (void) return 0; } -/* Gate: execute, or not, all of the non-trivial optimizations. */ - -static bool -gate_all_early_local_passes (void) -{ - /* Don't bother doing anything if the program has errors. */ - return (!seen_error () && !in_lto_p); -} - namespace { const pass_data pass_data_early_local_passes = @@ -353,7 +344,6 @@ const pass_data pass_data_early_local_passes = SIMPLE_IPA_PASS, /* type */ "early_local_cleanups", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_EARLY_LOCAL, /* tv_id */ 0, /* properties_required */ @@ -371,8 +361,16 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_all_early_local_passes (); } - unsigned int execute () { return execute_all_early_local_passes (); } + virtual bool gate (function *) + { + /* Don't bother doing anything if the program has errors. */ + return (!seen_error () && !in_lto_p); + } + + virtual unsigned int execute (function *) + { + return execute_all_early_local_passes (); + } }; // class pass_early_local_passes @@ -384,16 +382,6 @@ make_pass_early_local_passes (gcc::context *ctxt) return new pass_early_local_passes (ctxt); } -/* Gate: execute, or not, all of the non-trivial optimizations. */ - -static bool -gate_all_early_optimizations (void) -{ - return (optimize >= 1 - /* Don't bother doing anything if the program has errors. */ - && !seen_error ()); -} - namespace { const pass_data pass_data_all_early_optimizations = @@ -401,7 +389,6 @@ const pass_data pass_data_all_early_optimizations = GIMPLE_PASS, /* type */ "early_optimizations", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -419,7 +406,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_all_early_optimizations (); } + virtual bool gate (function *) + { + return (optimize >= 1 + /* Don't bother doing anything if the program has errors. */ + && !seen_error ()); + } }; // class pass_all_early_optimizations @@ -431,14 +423,6 @@ make_pass_all_early_optimizations (gcc::context *ctxt) return new pass_all_early_optimizations (ctxt); } -/* Gate: execute, or not, all of the non-trivial optimizations. */ - -static bool -gate_all_optimizations (void) -{ - return optimize >= 1 && !optimize_debug; -} - namespace { const pass_data pass_data_all_optimizations = @@ -446,7 +430,6 @@ const pass_data pass_data_all_optimizations = GIMPLE_PASS, /* type */ "*all_optimizations", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_OPTIMIZE, /* tv_id */ 0, /* properties_required */ @@ -464,7 +447,7 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_all_optimizations (); } + virtual bool gate (function *) { return optimize >= 1 && !optimize_debug; } }; // class pass_all_optimizations @@ -476,14 +459,6 @@ make_pass_all_optimizations (gcc::context *ctxt) return new pass_all_optimizations (ctxt); } -/* Gate: execute, or not, all of the non-trivial optimizations. */ - -static bool -gate_all_optimizations_g (void) -{ - return optimize >= 1 && optimize_debug; -} - namespace { const pass_data pass_data_all_optimizations_g = @@ -491,7 +466,6 @@ const pass_data pass_data_all_optimizations_g = GIMPLE_PASS, /* type */ "*all_optimizations_g", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_OPTIMIZE, /* tv_id */ 0, /* properties_required */ @@ -509,7 +483,7 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_all_optimizations_g (); } + virtual bool gate (function *) { return optimize >= 1 && optimize_debug; } }; // class pass_all_optimizations_g @@ -521,14 +495,6 @@ make_pass_all_optimizations_g (gcc::context *ctxt) return new pass_all_optimizations_g (ctxt); } -static bool -gate_rest_of_compilation (void) -{ - /* Early return if there were errors. We can run afoul of our - consistency checks, and there's not really much point in fixing them. */ - return !(rtl_dump_and_exit || flag_syntax_only || seen_error ()); -} - namespace { const pass_data pass_data_rest_of_compilation = @@ -536,7 +502,6 @@ const pass_data pass_data_rest_of_compilation = RTL_PASS, /* type */ "*rest_of_compilation", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_REST_OF_COMPILATION, /* tv_id */ PROP_rtl, /* properties_required */ @@ -554,7 +519,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_rest_of_compilation (); } + virtual bool gate (function *) + { + /* Early return if there were errors. We can run afoul of our + consistency checks, and there's not really much point in fixing them. */ + return !(rtl_dump_and_exit || flag_syntax_only || seen_error ()); + } }; // class pass_rest_of_compilation @@ -566,12 +536,6 @@ make_pass_rest_of_compilation (gcc::context *ctxt) return new pass_rest_of_compilation (ctxt); } -static bool -gate_postreload (void) -{ - return reload_completed; -} - namespace { const pass_data pass_data_postreload = @@ -579,7 +543,6 @@ const pass_data pass_data_postreload = RTL_PASS, /* type */ "*all-postreload", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_POSTRELOAD, /* tv_id */ PROP_rtl, /* properties_required */ @@ -597,7 +560,7 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_postreload (); } + virtual bool gate (function *) { return reload_completed; } }; // class pass_postreload @@ -706,47 +669,22 @@ pass_manager::register_one_dump_file (opt_pass *pass) free (CONST_CAST (char *, full_name)); } -/* Recursive worker function for register_dump_files. */ +/* Register the dump files for the pass_manager starting at PASS. */ -int -pass_manager:: -register_dump_files_1 (opt_pass *pass, int properties) +void +pass_manager::register_dump_files (opt_pass *pass) { do { - int new_properties = (properties | pass->properties_provided) - & ~pass->properties_destroyed; - if (pass->name && pass->name[0] != '*') register_one_dump_file (pass); if (pass->sub) - new_properties = register_dump_files_1 (pass->sub, new_properties); - - /* If we have a gate, combine the properties that we could have with - and without the pass being examined. */ - if (pass->has_gate) - properties &= new_properties; - else - properties = new_properties; + register_dump_files (pass->sub); pass = pass->next; } while (pass); - - return properties; -} - -/* Register the dump files for the pass_manager starting at PASS. - PROPERTIES reflects the properties that are guaranteed to be available at - the beginning of the pipeline. */ - -void -pass_manager:: -register_dump_files (opt_pass *pass,int properties) -{ - pass->properties_required |= properties; - register_dump_files_1 (pass, properties); } struct pass_registry @@ -854,7 +792,7 @@ dump_one_pass (opt_pass *pass, int pass_indent) const char *pn; bool is_on, is_really_on; - is_on = pass->has_gate ? pass->gate () : true; + is_on = pass->gate (cfun); is_really_on = override_gate_status (pass, current_function_decl, is_on); if (pass->static_pass_number <= 0) @@ -1548,19 +1486,11 @@ pass_manager::pass_manager (context *ctxt) #undef TERMINATE_PASS_LIST /* Register the passes with the tree dump code. */ - register_dump_files (all_lowering_passes, PROP_gimple_any); - register_dump_files (all_small_ipa_passes, - PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh - | PROP_cfg); - register_dump_files (all_regular_ipa_passes, - PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh - | PROP_cfg); - register_dump_files (all_late_ipa_passes, - PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh - | PROP_cfg); - register_dump_files (all_passes, - PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh - | PROP_cfg); + register_dump_files (all_lowering_passes); + register_dump_files (all_small_ipa_passes); + register_dump_files (all_regular_ipa_passes); + register_dump_files (all_late_ipa_passes); + register_dump_files (all_passes); } /* If we are in IPA mode (i.e., current_function_decl is NULL), call @@ -2015,7 +1945,7 @@ execute_ipa_summary_passes (ipa_opt_pass_d *ipa_pass) /* Execute all of the IPA_PASSes in the list. */ if (ipa_pass->type == IPA_PASS - && ((!pass->has_gate) || pass->gate ()) + && pass->gate (cfun) && ipa_pass->generate_summary) { pass_init_dump_file (pass); @@ -2167,7 +2097,7 @@ execute_one_pass (opt_pass *pass) /* Check whether gate check should be avoided. User controls the value of the gate through the parameter "gate_status". */ - gate_status = pass->has_gate ? pass->gate () : true; + gate_status = pass->gate (cfun); gate_status = override_gate_status (pass, current_function_decl, gate_status); /* Override gate with plugin. */ @@ -2226,7 +2156,7 @@ execute_one_pass (opt_pass *pass) /* Do it! */ if (pass->has_execute) { - todo_after = pass->execute (); + todo_after = pass->execute (cfun); do_per_function (clear_last_verified, NULL); } @@ -2313,7 +2243,7 @@ ipa_write_summaries_2 (opt_pass *pass, struct lto_out_decl_state *state) gcc_assert (pass->type == SIMPLE_IPA_PASS || pass->type == IPA_PASS); if (pass->type == IPA_PASS && ipa_pass->write_summary - && ((!pass->has_gate) || pass->gate ())) + && pass->gate (cfun)) { /* If a timevar is present, start it. */ if (pass->tv_id) @@ -2431,7 +2361,7 @@ ipa_write_optimization_summaries_1 (opt_pass *pass, gcc_assert (pass->type == SIMPLE_IPA_PASS || pass->type == IPA_PASS); if (pass->type == IPA_PASS && ipa_pass->write_optimization_summary - && ((!pass->has_gate) || pass->gate ())) + && pass->gate (cfun)) { /* If a timevar is present, start it. */ if (pass->tv_id) @@ -2509,7 +2439,7 @@ ipa_read_summaries_1 (opt_pass *pass) gcc_assert (!cfun); gcc_assert (pass->type == SIMPLE_IPA_PASS || pass->type == IPA_PASS); - if ((!pass->has_gate) || pass->gate ()) + if (pass->gate (cfun)) { if (pass->type == IPA_PASS && ipa_pass->read_summary) { @@ -2559,7 +2489,7 @@ ipa_read_optimization_summaries_1 (opt_pass *pass) gcc_assert (!cfun); gcc_assert (pass->type == SIMPLE_IPA_PASS || pass->type == IPA_PASS); - if ((!pass->has_gate) || pass->gate ()) + if (pass->gate (cfun)) { if (pass->type == IPA_PASS && ipa_pass->read_optimization_summary) { @@ -2636,7 +2566,7 @@ execute_ipa_stmt_fixups (opt_pass *pass, { /* Execute all of the IPA_PASSes in the list. */ if (pass->type == IPA_PASS - && ((!pass->has_gate) || pass->gate ())) + && pass->gate (cfun)) { ipa_opt_pass_d *ipa_pass = (ipa_opt_pass_d *) pass; diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c index 5555794a321..f5d53633539 100644 --- a/gcc/postreload-gcse.c +++ b/gcc/postreload-gcse.c @@ -1308,13 +1308,6 @@ gcse_after_reload_main (rtx f ATTRIBUTE_UNUSED) } -static bool -gate_handle_gcse2 (void) -{ - return (optimize > 0 && flag_gcse_after_reload - && optimize_function_for_speed_p (cfun)); -} - static unsigned int rest_of_handle_gcse2 (void) @@ -1331,7 +1324,6 @@ const pass_data pass_data_gcse2 = RTL_PASS, /* type */ "gcse2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_GCSE_AFTER_RELOAD, /* tv_id */ 0, /* properties_required */ @@ -1349,8 +1341,13 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_gcse2 (); } - unsigned int execute () { return rest_of_handle_gcse2 (); } + virtual bool gate (function *fun) + { + return (optimize > 0 && flag_gcse_after_reload + && optimize_function_for_speed_p (fun)); + } + + virtual unsigned int execute (function *) { return rest_of_handle_gcse2 (); } }; // class pass_gcse2 diff --git a/gcc/postreload.c b/gcc/postreload.c index cf3f0cfb85e..ea83c3c9b73 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -2315,30 +2315,6 @@ move2add_note_store (rtx dst, const_rtx set, void *data) } } -static bool -gate_handle_postreload (void) -{ - return (optimize > 0 && reload_completed); -} - - -static unsigned int -rest_of_handle_postreload (void) -{ - if (!dbg_cnt (postreload_cse)) - return 0; - - /* Do a very simple CSE pass over just the hard registers. */ - reload_cse_regs (get_insns ()); - /* Reload_cse_regs can eliminate potentially-trapping MEMs. - Remove any EH edges associated with them. */ - if (cfun->can_throw_non_call_exceptions - && purge_all_dead_edges ()) - cleanup_cfg (0); - - return 0; -} - namespace { const pass_data pass_data_postreload_cse = @@ -2346,7 +2322,6 @@ const pass_data pass_data_postreload_cse = RTL_PASS, /* type */ "postreload", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_RELOAD_CSE_REGS, /* tv_id */ 0, /* properties_required */ @@ -2364,11 +2339,29 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_postreload (); } - unsigned int execute () { return rest_of_handle_postreload (); } + virtual bool gate (function *) { return (optimize > 0 && reload_completed); } + + virtual unsigned int execute (function *); }; // class pass_postreload_cse +unsigned int +pass_postreload_cse::execute (function *fun) +{ + if (!dbg_cnt (postreload_cse)) + return 0; + + /* Do a very simple CSE pass over just the hard registers. */ + reload_cse_regs (get_insns ()); + /* Reload_cse_regs can eliminate potentially-trapping MEMs. + Remove any EH edges associated with them. */ + if (fun->can_throw_non_call_exceptions + && purge_all_dead_edges ()) + cleanup_cfg (0); + + return 0; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/predict.c b/gcc/predict.c index 66a1711dfc5..c9c106606e7 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -1968,59 +1968,6 @@ expr_expected_value (tree expr, bitmap visited, return expr_expected_value_1 (TREE_TYPE (expr), op0, code, op1, visited, predictor); } - - -/* Get rid of all builtin_expect calls and GIMPLE_PREDICT statements - we no longer need. */ -static unsigned int -strip_predict_hints (void) -{ - basic_block bb; - gimple ass_stmt; - tree var; - - FOR_EACH_BB_FN (bb, cfun) - { - gimple_stmt_iterator bi; - for (bi = gsi_start_bb (bb); !gsi_end_p (bi);) - { - gimple stmt = gsi_stmt (bi); - - if (gimple_code (stmt) == GIMPLE_PREDICT) - { - gsi_remove (&bi, true); - continue; - } - else if (is_gimple_call (stmt)) - { - tree fndecl = gimple_call_fndecl (stmt); - - if ((fndecl - && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL - && DECL_FUNCTION_CODE (fndecl) == BUILT_IN_EXPECT - && gimple_call_num_args (stmt) == 2) - || (gimple_call_internal_p (stmt) - && gimple_call_internal_fn (stmt) == IFN_BUILTIN_EXPECT)) - { - var = gimple_call_lhs (stmt); - if (var) - { - ass_stmt - = gimple_build_assign (var, gimple_call_arg (stmt, 0)); - gsi_replace (&bi, ass_stmt, true); - } - else - { - gsi_remove (&bi, true); - continue; - } - } - } - gsi_next (&bi); - } - } - return 0; -} /* Predict using opcode of the last statement in basic block. */ static void @@ -2450,37 +2397,6 @@ tree_estimate_probability (void) free_dominance_info (CDI_POST_DOMINATORS); remove_fake_exit_edges (); } - -/* Predict branch probabilities and estimate profile of the tree CFG. - This is the driver function for PASS_PROFILE. */ - -static unsigned int -tree_estimate_probability_driver (void) -{ - unsigned nb_loops; - - loop_optimizer_init (LOOPS_NORMAL); - if (dump_file && (dump_flags & TDF_DETAILS)) - flow_loops_dump (dump_file, NULL, 0); - - mark_irreducible_loops (); - - nb_loops = number_of_loops (cfun); - if (nb_loops > 1) - scev_initialize (); - - tree_estimate_probability (); - - if (nb_loops > 1) - scev_finalize (); - - loop_optimizer_finalize (); - if (dump_file && (dump_flags & TDF_DETAILS)) - gimple_dump_cfg (dump_file, dump_flags); - if (profile_status_for_fn (cfun) == PROFILE_ABSENT) - profile_status_for_fn (cfun) = PROFILE_GUESSED; - return 0; -} /* Predict edges to successors of CUR whose sources are not postdominated by BB by PRED and recurse to all postdominators. */ @@ -3113,12 +3029,6 @@ compute_function_frequency (void) } } -static bool -gate_estimate_probability (void) -{ - return flag_guess_branch_prob; -} - /* Build PREDICT_EXPR. */ tree build_predict_expr (enum br_predictor predictor, enum prediction taken) @@ -3135,6 +3045,8 @@ predictor_name (enum br_predictor predictor) return predictor_info[predictor].name; } +/* Predict branch probabilities and estimate profile of the tree CFG. */ + namespace { const pass_data pass_data_profile = @@ -3142,7 +3054,6 @@ const pass_data pass_data_profile = GIMPLE_PASS, /* type */ "profile_estimate", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_BRANCH_PROB, /* tv_id */ PROP_cfg, /* properties_required */ @@ -3160,11 +3071,39 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_estimate_probability (); } - unsigned int execute () { return tree_estimate_probability_driver (); } + virtual bool gate (function *) { return flag_guess_branch_prob; } + virtual unsigned int execute (function *); }; // class pass_profile +unsigned int +pass_profile::execute (function *fun) +{ + unsigned nb_loops; + + loop_optimizer_init (LOOPS_NORMAL); + if (dump_file && (dump_flags & TDF_DETAILS)) + flow_loops_dump (dump_file, NULL, 0); + + mark_irreducible_loops (); + + nb_loops = number_of_loops (fun); + if (nb_loops > 1) + scev_initialize (); + + tree_estimate_probability (); + + if (nb_loops > 1) + scev_finalize (); + + loop_optimizer_finalize (); + if (dump_file && (dump_flags & TDF_DETAILS)) + gimple_dump_cfg (dump_file, dump_flags); + if (profile_status_for_fn (fun) == PROFILE_ABSENT) + profile_status_for_fn (fun) = PROFILE_GUESSED; + return 0; +} + } // anon namespace gimple_opt_pass * @@ -3180,7 +3119,6 @@ const pass_data pass_data_strip_predict_hints = GIMPLE_PASS, /* type */ "*strip_predict_hints", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_BRANCH_PROB, /* tv_id */ PROP_cfg, /* properties_required */ @@ -3199,10 +3137,62 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_strip_predict_hints (m_ctxt); } - unsigned int execute () { return strip_predict_hints (); } + virtual unsigned int execute (function *); }; // class pass_strip_predict_hints +/* Get rid of all builtin_expect calls and GIMPLE_PREDICT statements + we no longer need. */ +unsigned int +pass_strip_predict_hints::execute (function *fun) +{ + basic_block bb; + gimple ass_stmt; + tree var; + + FOR_EACH_BB_FN (bb, fun) + { + gimple_stmt_iterator bi; + for (bi = gsi_start_bb (bb); !gsi_end_p (bi);) + { + gimple stmt = gsi_stmt (bi); + + if (gimple_code (stmt) == GIMPLE_PREDICT) + { + gsi_remove (&bi, true); + continue; + } + else if (is_gimple_call (stmt)) + { + tree fndecl = gimple_call_fndecl (stmt); + + if ((fndecl + && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL + && DECL_FUNCTION_CODE (fndecl) == BUILT_IN_EXPECT + && gimple_call_num_args (stmt) == 2) + || (gimple_call_internal_p (stmt) + && gimple_call_internal_fn (stmt) == IFN_BUILTIN_EXPECT)) + { + var = gimple_call_lhs (stmt); + if (var) + { + ass_stmt + = gimple_build_assign (var, gimple_call_arg (stmt, 0)); + gsi_replace (&bi, ass_stmt, true); + } + else + { + gsi_remove (&bi, true); + continue; + } + } + } + gsi_next (&bi); + } + } + return 0; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/recog.c b/gcc/recog.c index 81184c5ff7b..653c5358b74 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -3854,12 +3854,6 @@ if_test_bypass_p (rtx out_insn, rtx in_insn) return true; } -static bool -gate_handle_peephole2 (void) -{ - return (optimize > 0 && flag_peephole2); -} - static unsigned int rest_of_handle_peephole2 (void) { @@ -3876,7 +3870,6 @@ const pass_data pass_data_peephole2 = RTL_PASS, /* type */ "peephole2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_PEEPHOLE2, /* tv_id */ 0, /* properties_required */ @@ -3897,8 +3890,11 @@ public: /* The epiphany backend creates a second instance of this pass, so we need a clone method. */ opt_pass * clone () { return new pass_peephole2 (m_ctxt); } - bool gate () { return gate_handle_peephole2 (); } - unsigned int execute () { return rest_of_handle_peephole2 (); } + virtual bool gate (function *) { return (optimize > 0 && flag_peephole2); } + virtual unsigned int execute (function *) + { + return rest_of_handle_peephole2 (); + } }; // class pass_peephole2 @@ -3910,13 +3906,6 @@ make_pass_peephole2 (gcc::context *ctxt) return new pass_peephole2 (ctxt); } -static unsigned int -rest_of_handle_split_all_insns (void) -{ - split_all_insns (); - return 0; -} - namespace { const pass_data pass_data_split_all_insns = @@ -3924,7 +3913,6 @@ const pass_data pass_data_split_all_insns = RTL_PASS, /* type */ "split1", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -3945,7 +3933,11 @@ public: /* The epiphany backend creates a second instance of this pass, so we need a clone method. */ opt_pass * clone () { return new pass_split_all_insns (m_ctxt); } - unsigned int execute () { return rest_of_handle_split_all_insns (); } + virtual unsigned int execute (function *) + { + split_all_insns (); + return 0; + } }; // class pass_split_all_insns @@ -3975,7 +3967,6 @@ const pass_data pass_data_split_after_reload = RTL_PASS, /* type */ "split2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -3993,7 +3984,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_handle_split_after_reload (); } + virtual unsigned int execute (function *) + { + return rest_of_handle_split_after_reload (); + } }; // class pass_split_after_reload @@ -4005,31 +3999,6 @@ make_pass_split_after_reload (gcc::context *ctxt) return new pass_split_after_reload (ctxt); } -static bool -gate_handle_split_before_regstack (void) -{ -#if HAVE_ATTR_length && defined (STACK_REGS) - /* If flow2 creates new instructions which need splitting - and scheduling after reload is not done, they might not be - split until final which doesn't allow splitting - if HAVE_ATTR_length. */ -# ifdef INSN_SCHEDULING - return (optimize && !flag_schedule_insns_after_reload); -# else - return (optimize); -# endif -#else - return 0; -#endif -} - -static unsigned int -rest_of_handle_split_before_regstack (void) -{ - split_all_insns (); - return 0; -} - namespace { const pass_data pass_data_split_before_regstack = @@ -4037,7 +4006,6 @@ const pass_data pass_data_split_before_regstack = RTL_PASS, /* type */ "split3", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -4055,13 +4023,33 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_split_before_regstack (); } - unsigned int execute () { - return rest_of_handle_split_before_regstack (); - } + virtual bool gate (function *); + virtual unsigned int execute (function *) + { + split_all_insns (); + return 0; + } }; // class pass_split_before_regstack +bool +pass_split_before_regstack::gate (function *) +{ +#if HAVE_ATTR_length && defined (STACK_REGS) + /* If flow2 creates new instructions which need splitting + and scheduling after reload is not done, they might not be + split until final which doesn't allow splitting + if HAVE_ATTR_length. */ +# ifdef INSN_SCHEDULING + return (optimize && !flag_schedule_insns_after_reload); +# else + return (optimize); +# endif +#else + return 0; +#endif +} + } // anon namespace rtl_opt_pass * @@ -4070,16 +4058,6 @@ make_pass_split_before_regstack (gcc::context *ctxt) return new pass_split_before_regstack (ctxt); } -static bool -gate_handle_split_before_sched2 (void) -{ -#ifdef INSN_SCHEDULING - return optimize > 0 && flag_schedule_insns_after_reload; -#else - return 0; -#endif -} - static unsigned int rest_of_handle_split_before_sched2 (void) { @@ -4096,7 +4074,6 @@ const pass_data pass_data_split_before_sched2 = RTL_PASS, /* type */ "split4", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -4114,8 +4091,19 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_split_before_sched2 (); } - unsigned int execute () { return rest_of_handle_split_before_sched2 (); } + virtual bool gate (function *) + { +#ifdef INSN_SCHEDULING + return optimize > 0 && flag_schedule_insns_after_reload; +#else + return false; +#endif + } + + virtual unsigned int execute (function *) + { + return rest_of_handle_split_before_sched2 (); + } }; // class pass_split_before_sched2 @@ -4127,18 +4115,6 @@ make_pass_split_before_sched2 (gcc::context *ctxt) return new pass_split_before_sched2 (ctxt); } -/* The placement of the splitting that we do for shorten_branches - depends on whether regstack is used by the target or not. */ -static bool -gate_do_final_split (void) -{ -#if HAVE_ATTR_length && !defined (STACK_REGS) - return 1; -#else - return 0; -#endif -} - namespace { const pass_data pass_data_split_for_shorten_branches = @@ -4146,7 +4122,6 @@ const pass_data pass_data_split_for_shorten_branches = RTL_PASS, /* type */ "split5", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -4164,8 +4139,21 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_do_final_split (); } - unsigned int execute () { return split_all_insns_noflow (); } + virtual bool gate (function *) + { + /* The placement of the splitting that we do for shorten_branches + depends on whether regstack is used by the target or not. */ +#if HAVE_ATTR_length && !defined (STACK_REGS) + return true; +#else + return false; +#endif + } + + virtual unsigned int execute (function *) + { + return split_all_insns_noflow (); + } }; // class pass_split_for_shorten_branches diff --git a/gcc/ree.c b/gcc/ree.c index fcde9a0f399..b4710333ba7 100644 --- a/gcc/ree.c +++ b/gcc/ree.c @@ -1093,14 +1093,6 @@ rest_of_handle_ree (void) return 0; } -/* Run REE pass when flag_ree is set at optimization level > 0. */ - -static bool -gate_handle_ree (void) -{ - return (optimize > 0 && flag_ree); -} - namespace { const pass_data pass_data_ree = @@ -1108,7 +1100,6 @@ const pass_data pass_data_ree = RTL_PASS, /* type */ "ree", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_REE, /* tv_id */ 0, /* properties_required */ @@ -1126,8 +1117,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_ree (); } - unsigned int execute () { return rest_of_handle_ree (); } + virtual bool gate (function *) { return (optimize > 0 && flag_ree); } + virtual unsigned int execute (function *) { return rest_of_handle_ree (); } }; // class pass_ree diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index a92830bf734..7aa8a6b800e 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -3285,16 +3285,6 @@ reg_to_stack (void) } #endif /* STACK_REGS */ -static bool -gate_handle_stack_regs (void) -{ -#ifdef STACK_REGS - return 1; -#else - return 0; -#endif -} - namespace { const pass_data pass_data_stack_regs = @@ -3302,7 +3292,6 @@ const pass_data pass_data_stack_regs = RTL_PASS, /* type */ "*stack_regs", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_REG_STACK, /* tv_id */ 0, /* properties_required */ @@ -3320,7 +3309,14 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_stack_regs (); } + virtual bool gate (function *) + { +#ifdef STACK_REGS + return true; +#else + return false; +#endif + } }; // class pass_stack_regs @@ -3351,7 +3347,6 @@ const pass_data pass_data_stack_regs_run = RTL_PASS, /* type */ "stack", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_REG_STACK, /* tv_id */ 0, /* properties_required */ @@ -3369,7 +3364,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_handle_stack_regs (); } + virtual unsigned int execute (function *) + { + return rest_of_handle_stack_regs (); + } }; // class pass_stack_regs_run diff --git a/gcc/regcprop.c b/gcc/regcprop.c index 101de76ef10..c1fbb65ca4f 100644 --- a/gcc/regcprop.c +++ b/gcc/regcprop.c @@ -1056,93 +1056,6 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd) return anything_changed; } -/* Main entry point for the forward copy propagation optimization. */ - -static unsigned int -copyprop_hardreg_forward (void) -{ - struct value_data *all_vd; - basic_block bb; - sbitmap visited; - bool analyze_called = false; - - all_vd = XNEWVEC (struct value_data, last_basic_block_for_fn (cfun)); - - visited = sbitmap_alloc (last_basic_block_for_fn (cfun)); - bitmap_clear (visited); - - if (MAY_HAVE_DEBUG_INSNS) - debug_insn_changes_pool - = create_alloc_pool ("debug insn changes pool", - sizeof (struct queued_debug_insn_change), 256); - - FOR_EACH_BB_FN (bb, cfun) - { - bitmap_set_bit (visited, bb->index); - - /* If a block has a single predecessor, that we've already - processed, begin with the value data that was live at - the end of the predecessor block. */ - /* ??? Ought to use more intelligent queuing of blocks. */ - if (single_pred_p (bb) - && bitmap_bit_p (visited, single_pred (bb)->index) - && ! (single_pred_edge (bb)->flags & (EDGE_ABNORMAL_CALL | EDGE_EH))) - { - all_vd[bb->index] = all_vd[single_pred (bb)->index]; - if (all_vd[bb->index].n_debug_insn_changes) - { - unsigned int regno; - - for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) - { - if (all_vd[bb->index].e[regno].debug_insn_changes) - { - all_vd[bb->index].e[regno].debug_insn_changes = NULL; - if (--all_vd[bb->index].n_debug_insn_changes == 0) - break; - } - } - } - } - else - init_value_data (all_vd + bb->index); - - copyprop_hardreg_forward_1 (bb, all_vd + bb->index); - } - - if (MAY_HAVE_DEBUG_INSNS) - { - FOR_EACH_BB_FN (bb, cfun) - if (bitmap_bit_p (visited, bb->index) - && all_vd[bb->index].n_debug_insn_changes) - { - unsigned int regno; - bitmap live; - - if (!analyze_called) - { - df_analyze (); - analyze_called = true; - } - live = df_get_live_out (bb); - for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) - if (all_vd[bb->index].e[regno].debug_insn_changes) - { - if (REGNO_REG_SET_P (live, regno)) - apply_debug_insn_changes (all_vd + bb->index, regno); - if (all_vd[bb->index].n_debug_insn_changes == 0) - break; - } - } - - free_alloc_pool (debug_insn_changes_pool); - } - - sbitmap_free (visited); - free (all_vd); - return 0; -} - /* Dump the value chain data to stderr. */ DEBUG_FUNCTION void @@ -1247,13 +1160,6 @@ validate_value_data (struct value_data *vd) } #endif -static bool -gate_handle_cprop (void) -{ - return (optimize > 0 && (flag_cprop_registers)); -} - - namespace { const pass_data pass_data_cprop_hardreg = @@ -1261,7 +1167,6 @@ const pass_data pass_data_cprop_hardreg = RTL_PASS, /* type */ "cprop_hardreg", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_CPROP_REGISTERS, /* tv_id */ 0, /* properties_required */ @@ -1279,11 +1184,100 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_cprop (); } - unsigned int execute () { return copyprop_hardreg_forward (); } + virtual bool gate (function *) + { + return (optimize > 0 && (flag_cprop_registers)); + } + + virtual unsigned int execute (function *); }; // class pass_cprop_hardreg +unsigned int +pass_cprop_hardreg::execute (function *fun) +{ + struct value_data *all_vd; + basic_block bb; + sbitmap visited; + bool analyze_called = false; + + all_vd = XNEWVEC (struct value_data, last_basic_block_for_fn (fun)); + + visited = sbitmap_alloc (last_basic_block_for_fn (fun)); + bitmap_clear (visited); + + if (MAY_HAVE_DEBUG_INSNS) + debug_insn_changes_pool + = create_alloc_pool ("debug insn changes pool", + sizeof (struct queued_debug_insn_change), 256); + + FOR_EACH_BB_FN (bb, fun) + { + bitmap_set_bit (visited, bb->index); + + /* If a block has a single predecessor, that we've already + processed, begin with the value data that was live at + the end of the predecessor block. */ + /* ??? Ought to use more intelligent queuing of blocks. */ + if (single_pred_p (bb) + && bitmap_bit_p (visited, single_pred (bb)->index) + && ! (single_pred_edge (bb)->flags & (EDGE_ABNORMAL_CALL | EDGE_EH))) + { + all_vd[bb->index] = all_vd[single_pred (bb)->index]; + if (all_vd[bb->index].n_debug_insn_changes) + { + unsigned int regno; + + for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) + { + if (all_vd[bb->index].e[regno].debug_insn_changes) + { + all_vd[bb->index].e[regno].debug_insn_changes = NULL; + if (--all_vd[bb->index].n_debug_insn_changes == 0) + break; + } + } + } + } + else + init_value_data (all_vd + bb->index); + + copyprop_hardreg_forward_1 (bb, all_vd + bb->index); + } + + if (MAY_HAVE_DEBUG_INSNS) + { + FOR_EACH_BB_FN (bb, fun) + if (bitmap_bit_p (visited, bb->index) + && all_vd[bb->index].n_debug_insn_changes) + { + unsigned int regno; + bitmap live; + + if (!analyze_called) + { + df_analyze (); + analyze_called = true; + } + live = df_get_live_out (bb); + for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) + if (all_vd[bb->index].e[regno].debug_insn_changes) + { + if (REGNO_REG_SET_P (live, regno)) + apply_debug_insn_changes (all_vd + bb->index, regno); + if (all_vd[bb->index].n_debug_insn_changes == 0) + break; + } + } + + free_alloc_pool (debug_insn_changes_pool); + } + + sbitmap_free (visited); + free (all_vd); + return 0; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/reginfo.c b/gcc/reginfo.c index bdb980da3e1..42668a158eb 100644 --- a/gcc/reginfo.c +++ b/gcc/reginfo.c @@ -968,7 +968,6 @@ const pass_data pass_data_reginfo_init = RTL_PASS, /* type */ "reginfo", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -986,7 +985,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return reginfo_init (); } + virtual unsigned int execute (function *) { return reginfo_init (); } }; // class pass_reginfo_init diff --git a/gcc/regrename.c b/gcc/regrename.c index 6517f4e384d..68e8ad73015 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -1836,12 +1836,6 @@ regrename_optimize (void) return 0; } -static bool -gate_handle_regrename (void) -{ - return (optimize > 0 && (flag_rename_registers)); -} - namespace { const pass_data pass_data_regrename = @@ -1849,7 +1843,6 @@ const pass_data pass_data_regrename = RTL_PASS, /* type */ "rnreg", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_RENAME_REGISTERS, /* tv_id */ 0, /* properties_required */ @@ -1867,8 +1860,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_regrename (); } - unsigned int execute () { return regrename_optimize (); } + virtual bool gate (function *) + { + return (optimize > 0 && (flag_rename_registers)); + } + + virtual unsigned int execute (function *) { return regrename_optimize (); } }; // class pass_regrename diff --git a/gcc/reorg.c b/gcc/reorg.c index 054304a188a..95e942f3eaf 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -3863,17 +3863,6 @@ dbr_schedule (rtx first) } #endif /* DELAY_SLOTS */ -static bool -gate_handle_delay_slots (void) -{ -#ifdef DELAY_SLOTS - /* At -O0 dataflow info isn't updated after RA. */ - return optimize > 0 && flag_delayed_branch && !crtl->dbr_scheduled_p; -#else - return 0; -#endif -} - /* Run delay slot optimization. */ static unsigned int rest_of_handle_delay_slots (void) @@ -3891,7 +3880,6 @@ const pass_data pass_data_delay_slots = RTL_PASS, /* type */ "dbr", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_DBR_SCHED, /* tv_id */ 0, /* properties_required */ @@ -3909,11 +3897,25 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_delay_slots (); } - unsigned int execute () { return rest_of_handle_delay_slots (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) + { + return rest_of_handle_delay_slots (); + } }; // class pass_delay_slots +bool +pass_delay_slots::gate (function *) +{ +#ifdef DELAY_SLOTS + /* At -O0 dataflow info isn't updated after RA. */ + return optimize > 0 && flag_delayed_branch && !crtl->dbr_scheduled_p; +#else + return 0; +#endif +} + } // anon namespace rtl_opt_pass * @@ -3923,19 +3925,6 @@ make_pass_delay_slots (gcc::context *ctxt) } /* Machine dependent reorg pass. */ -static bool -gate_handle_machine_reorg (void) -{ - return targetm.machine_dependent_reorg != 0; -} - - -static unsigned int -rest_of_handle_machine_reorg (void) -{ - targetm.machine_dependent_reorg (); - return 0; -} namespace { @@ -3944,7 +3933,6 @@ const pass_data pass_data_machine_reorg = RTL_PASS, /* type */ "mach", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_MACH_DEP, /* tv_id */ 0, /* properties_required */ @@ -3962,8 +3950,16 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_machine_reorg (); } - unsigned int execute () { return rest_of_handle_machine_reorg (); } + virtual bool gate (function *) + { + return targetm.machine_dependent_reorg != 0; + } + + virtual unsigned int execute (function *) + { + targetm.machine_dependent_reorg (); + return 0; + } }; // class pass_machine_reorg diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index dc6fa16a19e..ce3fe5df016 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -3591,16 +3591,6 @@ advance_target_bb (basic_block bb, rtx insn) #endif -static bool -gate_handle_live_range_shrinkage (void) -{ -#ifdef INSN_SCHEDULING - return flag_live_range_shrinkage; -#else - return 0; -#endif -} - /* Run instruction scheduler. */ static unsigned int rest_of_handle_live_range_shrinkage (void) @@ -3618,16 +3608,6 @@ rest_of_handle_live_range_shrinkage (void) return 0; } -static bool -gate_handle_sched (void) -{ -#ifdef INSN_SCHEDULING - return optimize > 0 && flag_schedule_insns && dbg_cnt (sched_func); -#else - return 0; -#endif -} - /* Run instruction scheduler. */ static unsigned int rest_of_handle_sched (void) @@ -3642,17 +3622,6 @@ rest_of_handle_sched (void) return 0; } -static bool -gate_handle_sched2 (void) -{ -#ifdef INSN_SCHEDULING - return optimize > 0 && flag_schedule_insns_after_reload - && !targetm.delay_sched2 && dbg_cnt (sched2_func); -#else - return 0; -#endif -} - /* Run second scheduling pass after reload. */ static unsigned int rest_of_handle_sched2 (void) @@ -3681,7 +3650,6 @@ const pass_data pass_data_live_range_shrinkage = RTL_PASS, /* type */ "lr_shrinkage", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_LIVE_RANGE_SHRINKAGE, /* tv_id */ 0, /* properties_required */ @@ -3700,8 +3668,19 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_live_range_shrinkage (); } - unsigned int execute () { return rest_of_handle_live_range_shrinkage (); } + virtual bool gate (function *) + { +#ifdef INSN_SCHEDULING + return flag_live_range_shrinkage; +#else + return 0; +#endif + } + + virtual unsigned int execute (function *) + { + return rest_of_handle_live_range_shrinkage (); + } }; // class pass_live_range_shrinkage @@ -3720,7 +3699,6 @@ const pass_data pass_data_sched = RTL_PASS, /* type */ "sched1", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_SCHED, /* tv_id */ 0, /* properties_required */ @@ -3739,11 +3717,21 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_sched (); } - unsigned int execute () { return rest_of_handle_sched (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) { return rest_of_handle_sched (); } }; // class pass_sched +bool +pass_sched::gate (function *) +{ +#ifdef INSN_SCHEDULING + return optimize > 0 && flag_schedule_insns && dbg_cnt (sched_func); +#else + return 0; +#endif +} + } // anon namespace rtl_opt_pass * @@ -3759,7 +3747,6 @@ const pass_data pass_data_sched2 = RTL_PASS, /* type */ "sched2", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_SCHED2, /* tv_id */ 0, /* properties_required */ @@ -3778,11 +3765,25 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_sched2 (); } - unsigned int execute () { return rest_of_handle_sched2 (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) + { + return rest_of_handle_sched2 (); + } }; // class pass_sched2 +bool +pass_sched2::gate (function *) +{ +#ifdef INSN_SCHEDULING + return optimize > 0 && flag_schedule_insns_after_reload + && !targetm.delay_sched2 && dbg_cnt (sched2_func); +#else + return 0; +#endif +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/stack-ptr-mod.c b/gcc/stack-ptr-mod.c index 6b78085f1d4..75bec2fbdcd 100644 --- a/gcc/stack-ptr-mod.c +++ b/gcc/stack-ptr-mod.c @@ -48,48 +48,10 @@ notice_stack_pointer_modification_1 (rtx x, const_rtx pat ATTRIBUTE_UNUSED, crtl->sp_is_unchanging = 0; } -static void -notice_stack_pointer_modification (void) -{ - basic_block bb; - rtx insn; - - /* Assume that the stack pointer is unchanging if alloca hasn't - been used. */ - crtl->sp_is_unchanging = !cfun->calls_alloca; - if (crtl->sp_is_unchanging) - FOR_EACH_BB_FN (bb, cfun) - FOR_BB_INSNS (bb, insn) - { - if (INSN_P (insn)) - { - /* Check if insn modifies the stack pointer. */ - note_stores (PATTERN (insn), - notice_stack_pointer_modification_1, - NULL); - if (! crtl->sp_is_unchanging) - return; - } - } - - /* The value coming into this pass was 0, and the exit block uses - are based on this. If the value is now 1, we need to redo the - exit block uses. */ - if (df && crtl->sp_is_unchanging) - df_update_exit_block_uses (); -} - /* Some targets can emit simpler epilogues if they know that sp was not ever modified during the function. After reload, of course, we've already emitted the epilogue so there's no sense searching. */ -static unsigned int -rest_of_handle_stack_ptr_mod (void) -{ - notice_stack_pointer_modification (); - return 0; -} - namespace { const pass_data pass_data_stack_ptr_mod = @@ -97,7 +59,6 @@ const pass_data pass_data_stack_ptr_mod = RTL_PASS, /* type */ "*stack_ptr_mod", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ 0, /* properties_required */ @@ -115,10 +76,43 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return rest_of_handle_stack_ptr_mod (); } + virtual unsigned int execute (function *); }; // class pass_stack_ptr_mod +unsigned int +pass_stack_ptr_mod::execute (function *fun) +{ + basic_block bb; + rtx insn; + + /* Assume that the stack pointer is unchanging if alloca hasn't + been used. */ + crtl->sp_is_unchanging = !fun->calls_alloca; + if (crtl->sp_is_unchanging) + FOR_EACH_BB_FN (bb, fun) + FOR_BB_INSNS (bb, insn) + { + if (INSN_P (insn)) + { + /* Check if insn modifies the stack pointer. */ + note_stores (PATTERN (insn), + notice_stack_pointer_modification_1, + NULL); + if (! crtl->sp_is_unchanging) + return 0; + } + } + + /* The value coming into this pass was 0, and the exit block uses + are based on this. If the value is now 1, we need to redo the + exit block uses. */ + if (df && crtl->sp_is_unchanging) + df_update_exit_block_uses (); + + return 0; +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index ebcea9a3934..8fa4dc884b1 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -403,6 +403,73 @@ int_mode_for_mode (enum machine_mode mode) return mode; } +/* Find a mode that can be used for efficient bitwise operations on MODE. + Return BLKmode if no such mode exists. */ + +enum machine_mode +bitwise_mode_for_mode (enum machine_mode mode) +{ + /* Quick exit if we already have a suitable mode. */ + unsigned int bitsize = GET_MODE_BITSIZE (mode); + if (SCALAR_INT_MODE_P (mode) && bitsize <= MAX_FIXED_MODE_SIZE) + return mode; + + /* Reuse the sanity checks from int_mode_for_mode. */ + gcc_checking_assert ((int_mode_for_mode (mode), true)); + + /* Try to replace complex modes with complex modes. In general we + expect both components to be processed independently, so we only + care whether there is a register for the inner mode. */ + if (COMPLEX_MODE_P (mode)) + { + enum machine_mode trial = mode; + if (GET_MODE_CLASS (mode) != MODE_COMPLEX_INT) + trial = mode_for_size (bitsize, MODE_COMPLEX_INT, false); + if (trial != BLKmode + && have_regs_of_mode[GET_MODE_INNER (trial)]) + return trial; + } + + /* Try to replace vector modes with vector modes. Also try using vector + modes if an integer mode would be too big. */ + if (VECTOR_MODE_P (mode) || bitsize > MAX_FIXED_MODE_SIZE) + { + enum machine_mode trial = mode; + if (GET_MODE_CLASS (mode) != MODE_VECTOR_INT) + trial = mode_for_size (bitsize, MODE_VECTOR_INT, 0); + if (trial != BLKmode + && have_regs_of_mode[trial] + && targetm.vector_mode_supported_p (trial)) + return trial; + } + + /* Otherwise fall back on integers while honoring MAX_FIXED_MODE_SIZE. */ + return mode_for_size (bitsize, MODE_INT, true); +} + +/* Find a type that can be used for efficient bitwise operations on MODE. + Return null if no such mode exists. */ + +tree +bitwise_type_for_mode (enum machine_mode mode) +{ + mode = bitwise_mode_for_mode (mode); + if (mode == BLKmode) + return NULL_TREE; + + unsigned int inner_size = GET_MODE_UNIT_BITSIZE (mode); + tree inner_type = build_nonstandard_integer_type (inner_size, true); + + if (VECTOR_MODE_P (mode)) + return build_vector_type_for_mode (inner_type, mode); + + if (COMPLEX_MODE_P (mode)) + return build_complex_type (inner_type); + + gcc_checking_assert (GET_MODE_INNER (mode) == VOIDmode); + return inner_type; +} + /* Find a mode that is suitable for representing a vector with NUNITS elements of mode INNERMODE. Returns BLKmode if there is no suitable mode. */ diff --git a/gcc/stor-layout.h b/gcc/stor-layout.h index 7a4dc210252..0ff98f8f051 100644 --- a/gcc/stor-layout.h +++ b/gcc/stor-layout.h @@ -98,6 +98,8 @@ extern tree make_unsigned_type (int); mode_for_size, but is passed a tree. */ extern enum machine_mode mode_for_size_tree (const_tree, enum mode_class, int); +extern tree bitwise_type_for_mode (enum machine_mode); + /* Given a VAR_DECL, PARM_DECL or RESULT_DECL, clears the results of a previous call to layout_decl and calls it again. */ extern void relayout_decl (tree); diff --git a/gcc/store-motion.c b/gcc/store-motion.c index f383ca597a7..920da531213 100644 --- a/gcc/store-motion.c +++ b/gcc/store-motion.c @@ -1223,15 +1223,6 @@ one_store_motion_pass (void) } -static bool -gate_rtl_store_motion (void) -{ - return optimize > 0 && flag_gcse_sm - && !cfun->calls_setjmp - && optimize_function_for_speed_p (cfun) - && dbg_cnt (store_motion); -} - static unsigned int execute_rtl_store_motion (void) { @@ -1248,7 +1239,6 @@ const pass_data pass_data_rtl_store_motion = RTL_PASS, /* type */ "store_motion", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_LSM, /* tv_id */ PROP_cfglayout, /* properties_required */ @@ -1267,11 +1257,23 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_rtl_store_motion (); } - unsigned int execute () { return execute_rtl_store_motion (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) + { + return execute_rtl_store_motion (); + } }; // class pass_rtl_store_motion +bool +pass_rtl_store_motion::gate (function *fun) +{ + return optimize > 0 && flag_gcse_sm + && !fun->calls_setjmp + && optimize_function_for_speed_p (fun) + && dbg_cnt (store_motion); +} + } // anon namespace rtl_opt_pass * diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d27064c78ad..53f5e27d946 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,107 @@ +2014-04-22 Richard Sandiford <rdsandiford@googlemail.com> + + * gcc.dg/memcpy-5.c: New test. + +2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * gcc.c-torture/compile/pr28865.c: Remove dg-xfail-if. + + * gcc.dg/c99-stdint-6.c: Remove dg-options for *-*-solaris2.9. + * gcc.dg/lto/20090210_0.c: Remove dg-extra-ld-options for + *-*-solaris2.9. + * gcc.dg/torture/pr47917.c: Remove dg-options for *-*-solaris2.9. + * gcc.target/i386/pr22076.c: Remove i?86-*-solaris2.9 handling + from dg-options. + * gcc.target/i386/pr22152.c: Remove i?86-*-solaris2.9 handling + from dg-additional-options. + * gcc.target/i386/vect8-ret.c: Remove i?86-*-solaris2.9 handling + from dg-options. + + * gcc.dg/vect/tree-vect.h (check_vect): Remove Solaris 9 SSE2 + execution check. + * gcc.target/i386/sse-os-support.h [__sun__ && __svr4__] + (sigill_hdlr): Remove. + (sse_os_support) [__sun__ && __svr4__]: Remove SSE execution + check. + + * gfortran.dg/erf_3.F90: Remove sparc*-*-solaris2.9* handling. + * gfortran.dg/fmt_en.f90: Remove i?86-*-solaris2.9* handling. + * gfortran.dg/round_4.f90: Remove *-*-solaris2.9* handling. + + * lib/target-supports.exp (add_options_for_tls): Remove + *-*-solaris2.9* handling. + +2014-04-22 Vidya Praveen <vidyapraveen@arm.com> + + * gcc.target/aarch64/vect_cvtf_1.c: New. + +2014-04-22 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/60823 + * c-c++-common/gomp/pr60823-1.c: New test. + * c-c++-common/gomp/pr60823-2.c: New test. + * c-c++-common/gomp/pr60823-3.c: New test. + +2014-04-22 Ian Bolton <ian.bolton@arm.com> + + * gcc.target/arm/anddi_notdi-1.c: New test. + * gcc.target/arm/iordi_notdi-1.c: New test case. + +2014-04-22 Ian Bolton <ian.bolton@arm.com> + + * gcc.target/arm/iordi_notdi-1.c: New test. + +2014-04-22 Alex Velenko <Alex.Velenko@arm.com> + + * gcc.target/aarch64/vrnd_f64_1.c : New file. + +2014-04-21 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/60735 + * gcc.target/powerpc/pr60735.c: New test. Insure _Decimal64 does + not cause errors if -mspe. + +2014-04-21 Uros Bizjak <ubizjak@gmail.com> + + PR target/60909 + * gcc.target/i386/pr60909-1.c: New test. + * gcc.target/i386/pr60909-2.c: Ditto. + +2014-04-18 Cong Hou <congh@google.com> + + * gcc.dg/vect/vect-widen-mult-u8-s16-s32.c: New test. + * gcc.dg/vect/vect-widen-mult-u8-u32.c: New test. + +2014-04-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + + * gcc.dg/vmx/merge-vsx.c: Add V4SI and V4SF tests. + * gcc.dg/vmx/merge-vsx-be-order.c: Likewise. + +2014-04-17 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/59200 + * g++.dg/cpp0x/alias-decl-42.C: New. + +2014-04-17 Pat Haugen <pthaugen@us.ibm.com> + + * gcc.target/powerpc/ti_math1.c: New. + * gcc.target/powerpc/ti_math2.c: New. + +2014-04-17 Martin Jambor <mjambor@suse.cz> + + * gnat.dg/opt34.adb: New. + * gnat.dg/opt34_pkg.ads: Likewise. + +2014-04-17 Trevor Saunders <tsaunders@mozilla.com> + + * g++.dg/plugin/dumb_plugin.c, g++.dg/plugin/selfasign.c, + gcc.dg/plugin/one_time_plugin.c, gcc.dg/plugin/selfasign.c: Adjust. + +2014-04-17 Trevor Saunders <tsaunders@mozilla.com> + + * g++.dg/plugin/dumb_plugin.c, g++.dg/plugin/selfassign.c, + gcc.dg/plugin/one_time_plugin.c, gcc.dg/plugin/selfassign.c: Adjust. + 2014-04-17 Jakub Jelinek <jakub@redhat.com> PR target/60847 @@ -122,7 +226,7 @@ * gcc.dg/lto/pr55113_0.c: Skip on i?86-*-solaris2.1[0-1]*. 2014-04-14 Richard Biener <rguenther@suse.de> - Marc Glisse <marc.glisse@inria.fr> + Marc Glisse <marc.glisse@inria.fr> PR c/60819 * gcc.target/i386/vec-may_alias.c: New testcase. @@ -299,8 +403,7 @@ 2014-04-08 Jason Merrill <jason@redhat.com> - * lib/gcc-dg.exp (dg-build-dso): Reset dg-do-what-default to - compile. + * lib/gcc-dg.exp (dg-build-dso): Reset dg-do-what-default to compile. 2014-04-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> @@ -420,10 +523,10 @@ 2014-04-04 Martin Jambor <mjambor@suse.cz> PR ipa/60640 - * g++.dg/ipa/pr60640-1.C: New test. - * g++.dg/ipa/pr60640-2.C: Likewise. - * g++.dg/ipa/pr60640-3.C: Likewise. - * g++.dg/ipa/pr60640-4.C: Likewise. + * g++.dg/ipa/pr60640-1.C: New test. + * g++.dg/ipa/pr60640-2.C: Likewise. + * g++.dg/ipa/pr60640-3.C: Likewise. + * g++.dg/ipa/pr60640-4.C: Likewise. 2014-04-04 Jeff Law <law@redhat.com> @@ -535,7 +638,7 @@ 2014-04-01 Fabien Chêne <fabien@gcc.gnu.org> - * g++.dg/init/ctor4.C: Adjust. + * g++.dg/init/ctor4.C: Adjust. * g++.dg/init/ctor4-1.C: New. * g++.dg/cpp0x/defaulted2.C: Adjust. @@ -623,8 +726,8 @@ 2014-03-27 Jeff Law <law@redhat.com> - PR target/60648 - * g++.dg/pr60648.C: New test. + PR target/60648 + * g++.dg/pr60648.C: New test. 2014-03-28 Adam Butcher <adam@jessamine.co.uk> @@ -657,14 +760,13 @@ 2014-03-28 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> - * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Remove s390 special - option. + * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Remove s390 special option. * lib/target-supports.exp: Return true for s390 - in check_effective_logical_op_short_circuit. + in check_effective_logical_op_short_circuit. 2014-03-28 Kirill Yukhin <kirill.yukhin@intel.com> - * gcc.target/i386/avx512f-vshuff32x4-2.c: Fix initialization + * gcc.target/i386/avx512f-vshuff32x4-2.c: Fix initialization of second source operand. * gcc.target/i386/avx512f-vshuff64x2-2.c: Ditto. * gcc.target/i386/avx512f-vshufi32x4-2.c: Ditto. @@ -799,8 +901,8 @@ 2014-03-24 Marek Polacek <polacek@redhat.com> - * c-c++-common/ubsan/div-by-zero-4.c: Don't include limits.h. Define - INT_MIN. + * c-c++-common/ubsan/div-by-zero-4.c: Don't include limits.h. + Define INT_MIN. * c-c++-common/ubsan/overflow-1.c: Check for unwanted output. * c-c++-common/ubsan/overflow-add-1.c: Likewise. * c-c++-common/ubsan/overflow-mul-1.c: Likewise. @@ -885,8 +987,7 @@ 2014-03-21 Tobias Burnus <burnus@net-b.de> PR fortran/60599 - * lib/gcc-dg.exp (scan-module): Uncompress .mod files for - reading. + * lib/gcc-dg.exp (scan-module): Uncompress .mod files for reading. 2014-03-20 Jakub Jelinek <jakub@redhat.com> diff --git a/gcc/testsuite/c-c++-common/gomp/pr60823-1.c b/gcc/testsuite/c-c++-common/gomp/pr60823-1.c new file mode 100644 index 00000000000..5f985724dae --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr60823-1.c @@ -0,0 +1,19 @@ +/* PR tree-optimization/60823 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fopenmp-simd" } */ + +#pragma omp declare simd simdlen(4) notinbranch +int +foo (const double c1, const double c2) +{ + double z1 = c1, z2 = c2; + int res = 100, i; + + for (i = 0; i < 100; i++) + { + res = (z1 * z1 + z2 * z2 > 4.0) ? (i < res ? i : res) : res; + z1 = c1 + z1 * z1 - z2 * z2; + z2 = c2 + 2.0 * z1 * z2; + } + return res; +} diff --git a/gcc/testsuite/c-c++-common/gomp/pr60823-2.c b/gcc/testsuite/c-c++-common/gomp/pr60823-2.c new file mode 100644 index 00000000000..e0bf570ddca --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr60823-2.c @@ -0,0 +1,43 @@ +/* PR tree-optimization/60823 */ +/* { dg-do run } */ +/* { dg-options "-O2 -fopenmp-simd" } */ + +#pragma omp declare simd simdlen(4) notinbranch +__attribute__((noinline)) int +foo (double c1, double c2) +{ + double z1 = c1, z2 = c2; + int res = 100, i; + + for (i = 0; i < 5; i++) + { + res = (z1 * z1 + z2 * z2 > 4.0) ? (i < res ? i : res) : res; + z1 = c1 + z1 * z1 - z2 * z2; + z2 = c2 + 2.0 * z1 * z2; + c1 += 0.5; + c2 += 0.5; + } + return res; +} + +__attribute__((noinline, noclone)) void +bar (double *x, double *y) +{ + asm volatile ("" : : "rm" (x), "rm" (y) : "memory"); +} + +int +main () +{ + int i; + double c[4] = { 0.0, 1.0, 0.0, 1.0 }; + double d[4] = { 0.0, 1.0, 2.0, 0.0 }; + int e[4]; + bar (c, d); +#pragma omp simd safelen(4) + for (i = 0; i < 4; i++) + e[i] = foo (c[i], d[i]); + if (e[0] != 3 || e[1] != 1 || e[2] != 1 || e[3] != 2) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/c-c++-common/gomp/pr60823-3.c b/gcc/testsuite/c-c++-common/gomp/pr60823-3.c new file mode 100644 index 00000000000..93e9fbe3a16 --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr60823-3.c @@ -0,0 +1,32 @@ +/* PR tree-optimization/60823 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fopenmp-simd -fno-strict-aliasing" } */ + +void bar (char *, double *); + +#if __SIZEOF_DOUBLE__ >= 4 + +struct S { char c[sizeof (double)]; }; +void baz (struct S, struct S); +union U { struct S s; double d; }; + +#pragma omp declare simd simdlen(4) notinbranch +__attribute__((noinline)) int +foo (double c1, double c2) +{ + double *a = &c1; + char *b = (char *) &c1 + 2; + + b[-2]++; + b[1]--; + *a++; + c2++; + bar ((char *) &c2 + 1, &c2); + c2 *= 3.0; + bar (b, a); + baz (((union U) { .d = c1 }).s, ((union U) { .d = c2 }).s); + baz (*(struct S *)&c1, *(struct S *)&c2); + return c1 + c2 + ((struct S *)&c1)->c[1]; +} + +#endif diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-42.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-42.C new file mode 100644 index 00000000000..09a75e45a3d --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-42.C @@ -0,0 +1,18 @@ +// PR c++/59200 +// { dg-do compile { target c++11 } } + +struct A +{ + static constexpr bool value = true; +}; + +template<typename T> +struct B +{ + template<typename U> + using C = A; +}; + +template<typename T> +template<typename U> + const bool B<T>::C<U>::value; // { dg-error "too many" } diff --git a/gcc/testsuite/g++.dg/cpp0x/overload3.C b/gcc/testsuite/g++.dg/cpp0x/overload3.C index 2d957830c22..0eecabdecc7 100644 --- a/gcc/testsuite/g++.dg/cpp0x/overload3.C +++ b/gcc/testsuite/g++.dg/cpp0x/overload3.C @@ -13,5 +13,5 @@ struct wrap int main() { wrap w; - f(w); // { dg-error "lvalue" } + f(w); // { dg-error "" } } diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-init1.C b/gcc/testsuite/g++.dg/cpp0x/rv-init1.C new file mode 100644 index 00000000000..2e8d4f748ef --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/rv-init1.C @@ -0,0 +1,26 @@ +// Core DR 1604/1571/1572 +// { dg-require-effective-target c++11 } + +struct Banana { }; +struct Enigma { operator const Banana(); }; +struct Doof { operator Banana&(); }; +void enigmatic() { + typedef const Banana ConstBanana; + Banana &&banana1 = ConstBanana(); // { dg-error "" } + Banana &&banana2 = Enigma(); // { dg-error "" } + Banana &&banana3 = Doof(); // { dg-error "" } +} + +class A { +public: + operator volatile int &(); +}; +A a; + +const int & ir1a = a.operator volatile int&(); // { dg-error "" } +const int & ir2a = a; // { dg-error "" } + +struct X { + operator int&(); +} x; +int&& rri2 = X(); // { dg-error "" } diff --git a/gcc/testsuite/g++.dg/ext/restrict2.C b/gcc/testsuite/g++.dg/ext/restrict2.C new file mode 100644 index 00000000000..f053210028a --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/restrict2.C @@ -0,0 +1,8 @@ +// PR c++/60872 +// { dg-options "" } + +typedef double *__restrict T; +void f(T* p) +{ + void *p2 = p; +} diff --git a/gcc/testsuite/g++.dg/plugin/dumb_plugin.c b/gcc/testsuite/g++.dg/plugin/dumb_plugin.c index e197d667251..35eae15ffe5 100644 --- a/gcc/testsuite/g++.dg/plugin/dumb_plugin.c +++ b/gcc/testsuite/g++.dg/plugin/dumb_plugin.c @@ -44,20 +44,6 @@ handle_end_of_compilation_unit (void *event_data, void *data) } -static unsigned int -execute_dumb_plugin_example (void) -{ - warning (0, G_("Analyze function %s"), - IDENTIFIER_POINTER (DECL_NAME (current_function_decl))); - return 0; -} - -static bool -gate_dumb_plugin_example (void) -{ - return true; -} - namespace { const pass_data pass_data_dumb_plugin_example = @@ -65,7 +51,6 @@ const pass_data pass_data_dumb_plugin_example = GIMPLE_PASS, /* type */ "dumb_plugin_example", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -83,11 +68,18 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_dumb_plugin_example (); } - unsigned int execute () { return execute_dumb_plugin_example (); } + virtual unsigned int execute (function *); }; // class pass_dumb_plugin_example +unsigned int +pass_dumb_plugin_example::execute (function *) +{ + warning (0, G_("Analyze function %s"), + IDENTIFIER_POINTER (DECL_NAME (current_function_decl))); + return 0; +} + } // anon namespace static gimple_opt_pass * diff --git a/gcc/testsuite/g++.dg/plugin/selfassign.c b/gcc/testsuite/g++.dg/plugin/selfassign.c index 041f25dce34..59bb03ac2a7 100644 --- a/gcc/testsuite/g++.dg/plugin/selfassign.c +++ b/gcc/testsuite/g++.dg/plugin/selfassign.c @@ -253,31 +253,6 @@ warn_self_assign (gimple stmt) } } -/* Entry point for the self-assignment detection pass. */ - -static unsigned int -execute_warn_self_assign (void) -{ - gimple_stmt_iterator gsi; - basic_block bb; - - FOR_EACH_BB_FN (bb, cfun) - { - for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - warn_self_assign (gsi_stmt (gsi)); - } - - return 0; -} - -/* Pass gate function. Currently always returns true. */ - -static bool -gate_warn_self_assign (void) -{ - return true; -} - namespace { const pass_data pass_data_warn_self_assign = @@ -285,7 +260,6 @@ const pass_data pass_data_warn_self_assign = GIMPLE_PASS, /* type */ "warn_self_assign", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ @@ -303,11 +277,26 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_warn_self_assign (); } - unsigned int execute () { return execute_warn_self_assign (); } + bool gate (function *) { return true; } + virtual unsigned int execute (function *); }; // class pass_warn_self_assign +unsigned int +pass_warn_self_assign::execute (function *fun) +{ + gimple_stmt_iterator gsi; + basic_block bb; + + FOR_EACH_BB_FN (bb, fun) + { + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + warn_self_assign (gsi_stmt (gsi)); + } + + return 0; +} + } // anon namespace static gimple_opt_pass * diff --git a/gcc/testsuite/gcc.c-torture/compile/pr28865.c b/gcc/testsuite/gcc.c-torture/compile/pr28865.c index 4ad0f5c4306..aa6ae078aca 100644 --- a/gcc/testsuite/gcc.c-torture/compile/pr28865.c +++ b/gcc/testsuite/gcc.c-torture/compile/pr28865.c @@ -1,5 +1,3 @@ -/* { dg-xfail-if "PR target/60602" { sparc*-*-solaris2.9* && { ! gas } } { "-O0" } } */ - struct var_len { int field1; diff --git a/gcc/testsuite/gcc.dg/c99-stdint-6.c b/gcc/testsuite/gcc.dg/c99-stdint-6.c index b5727eebbfb..150666ce689 100644 --- a/gcc/testsuite/gcc.dg/c99-stdint-6.c +++ b/gcc/testsuite/gcc.dg/c99-stdint-6.c @@ -2,7 +2,6 @@ with any system <inttypes.h> header. */ /* { dg-do compile { target inttypes_types } } */ /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ -/* { dg-options "-std=gnu99 -pedantic-errors -DNO_FAST_TYPES" { target *-*-solaris2.9* } } */ #include <inttypes.h> #ifndef SIGNAL_SUPPRESS diff --git a/gcc/testsuite/gcc.dg/lto/20090210_0.c b/gcc/testsuite/gcc.dg/lto/20090210_0.c index ce9dfac1095..78e7d03bddb 100644 --- a/gcc/testsuite/gcc.dg/lto/20090210_0.c +++ b/gcc/testsuite/gcc.dg/lto/20090210_0.c @@ -2,7 +2,6 @@ /* { dg-require-effective-target fpic } */ /* { dg-suppress-ld-options {-fPIC} } */ /* { dg-require-effective-target tls_runtime } */ -/* { dg-extra-ld-options "-pthread" { target *-*-solaris2.9 } } */ int foo (int x) { return x; diff --git a/gcc/testsuite/gcc.dg/memcpy-5.c b/gcc/testsuite/gcc.dg/memcpy-5.c new file mode 100644 index 00000000000..dc5afed1907 --- /dev/null +++ b/gcc/testsuite/gcc.dg/memcpy-5.c @@ -0,0 +1,27 @@ +/* { dg-options "-O -fdump-tree-optimized" } */ + +extern void *memcpy (void *, const void *, __SIZE_TYPE__); + +#define TEST(NAME, TYPE) \ + TYPE NAME##x; \ + char NAME##y[sizeof (NAME##x)] __attribute__((aligned (__alignof__ (NAME##x)))); \ + void NAME (void) { memcpy (&NAME##x, &NAME##y, sizeof (NAME##x)); } + +TEST (f, float); +TEST (d, double); +TEST (ld, long double); +TEST (cf, _Complex float); +TEST (cd, _Complex double); +TEST (cld, _Complex long double); +TEST (d8f, float __attribute__((vector_size (8)))); +TEST (d16f, float __attribute__((vector_size (16)))); +TEST (d32f, float __attribute__((vector_size (32)))); +TEST (d64f, float __attribute__((vector_size (64)))); +TEST (d128f, float __attribute__((vector_size (128)))); +TEST (d16d, double __attribute__((vector_size (16)))); +TEST (d32d, double __attribute__((vector_size (32)))); +TEST (d64d, double __attribute__((vector_size (64)))); +TEST (d128d, double __attribute__((vector_size (128)))); + +/* { dg-final { scan-tree-dump-not "memcpy" "optimized" { target x86_64-*-* } } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c index f80719a4ff0..d70f5584dc2 100644 --- a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c +++ b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c @@ -31,7 +31,6 @@ const pass_data pass_data_one_pass = GIMPLE_PASS, /* type */ "cfg", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ @@ -50,8 +49,8 @@ public: {} /* opt_pass methods: */ - bool gate (); - unsigned int execute (); + virtual bool gate (function *); + virtual unsigned int execute (function *); private: int counter; @@ -59,12 +58,13 @@ private: } // anon namespace -bool one_pass::gate (void) +bool one_pass::gate (function *) { return true; } -unsigned int one_pass::execute () +unsigned int +one_pass::execute (function *) { if (counter > 0) { printf ("Executed more than once \n"); diff --git a/gcc/testsuite/gcc.dg/plugin/selfassign.c b/gcc/testsuite/gcc.dg/plugin/selfassign.c index 041f25dce34..4dad0c28817 100644 --- a/gcc/testsuite/gcc.dg/plugin/selfassign.c +++ b/gcc/testsuite/gcc.dg/plugin/selfassign.c @@ -253,31 +253,6 @@ warn_self_assign (gimple stmt) } } -/* Entry point for the self-assignment detection pass. */ - -static unsigned int -execute_warn_self_assign (void) -{ - gimple_stmt_iterator gsi; - basic_block bb; - - FOR_EACH_BB_FN (bb, cfun) - { - for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - warn_self_assign (gsi_stmt (gsi)); - } - - return 0; -} - -/* Pass gate function. Currently always returns true. */ - -static bool -gate_warn_self_assign (void) -{ - return true; -} - namespace { const pass_data pass_data_warn_self_assign = @@ -285,7 +260,6 @@ const pass_data pass_data_warn_self_assign = GIMPLE_PASS, /* type */ "warn_self_assign", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ @@ -303,11 +277,25 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_warn_self_assign (); } - unsigned int execute () { return execute_warn_self_assign (); } + virtual unsigned int execute (function *); }; // class pass_warn_self_assign +unsigned int +pass_warn_self_assign::execute (function *fun) +{ + gimple_stmt_iterator gsi; + basic_block bb; + + FOR_EACH_BB_FN (bb, fun) + { + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + warn_self_assign (gsi_stmt (gsi)); + } + + return 0; +} + } // anon namespace static gimple_opt_pass * diff --git a/gcc/testsuite/gcc.dg/torture/pr47917.c b/gcc/testsuite/gcc.dg/torture/pr47917.c index f89d44987cf..0b45e064e36 100644 --- a/gcc/testsuite/gcc.dg/torture/pr47917.c +++ b/gcc/testsuite/gcc.dg/torture/pr47917.c @@ -1,6 +1,5 @@ /* { dg-do run } */ /* { dg-options "-std=c99" } */ -/* { dg-options "-std=c99 -D_XOPEN_SOURCE=500" { target *-*-solaris2.9 } } */ /* { dg-options "-std=gnu99" { target *-*-hpux* } } */ /* { dg-additional-options "-D__USE_MINGW_ANSI_STDIO=1" { target *-*-mingw* } } */ /* { dg-xfail-run-if "no C99 snprintf function" { *-*-hpux10* } } */ diff --git a/gcc/testsuite/gcc.dg/vect/tree-vect.h b/gcc/testsuite/gcc.dg/vect/tree-vect.h index ed59d7976b9..2f21c2b1673 100644 --- a/gcc/testsuite/gcc.dg/vect/tree-vect.h +++ b/gcc/testsuite/gcc.dg/vect/tree-vect.h @@ -41,11 +41,6 @@ check_vect (void) want_level = 1, want_c = bit_SSSE3, want_d = 0; # else want_level = 1, want_c = 0, want_d = bit_SSE2; -# if defined(__sun__) && defined(__svr4__) - /* Before Solaris 9 4/04, trying to execute an SSE2 instruction gives - SIGILL even if the CPU can handle them. */ - asm volatile ("unpcklpd %xmm0,%xmm2"); -# endif # endif if (!__get_cpuid (want_level, &a, &b, &c, &d) diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-s16-s32.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-s16-s32.c new file mode 100644 index 00000000000..ae485499971 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-s16-s32.c @@ -0,0 +1,48 @@ +/* { dg-require-effective-target vect_int } */ + +#include <stdarg.h> +#include "tree-vect.h" + +#define N 64 + +unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +int result[N]; + +/* unsigned char * short -> int widening-mult. */ +__attribute__ ((noinline)) int +foo (int len) { + int i; + + for (i=0; i<len; i++) { + result[i] = X[i] * Y[i]; + } +} + +int main (void) +{ + int i; + + check_vect (); + + for (i=0; i<N; i++) { + X[i] = i; + Y[i] = 64-i; + __asm__ volatile (""); + } + + foo (N); + + for (i=0; i<N; i++) { + if (result[i] != X[i] * Y[i]) + abort (); + } + + return 0; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */ +/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */ +/* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ + diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-u32.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-u32.c new file mode 100644 index 00000000000..adc578ad503 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-u32.c @@ -0,0 +1,48 @@ +/* { dg-require-effective-target vect_int } */ + +#include <stdarg.h> +#include "tree-vect.h" + +#define N 64 + +unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +unsigned int result[N]; + +/* unsigned char-> unsigned int widening-mult. */ +__attribute__ ((noinline)) int +foo (int len) { + int i; + + for (i=0; i<len; i++) { + result[i] = X[i] * Y[i]; + } +} + +int main (void) +{ + int i; + + check_vect (); + + for (i=0; i<N; i++) { + X[i] = i; + Y[i] = 64-i; + __asm__ volatile (""); + } + + foo (N); + + for (i=0; i<N; i++) { + if (result[i] != X[i] * Y[i]) + abort (); + } + + return 0; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */ +/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_qi_to_hi_pattern } } } */ +/* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_qi_to_hi_pattern } } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ + diff --git a/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c b/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c index 440ac9a004d..56e0b0e6c2e 100644 --- a/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c @@ -21,10 +21,19 @@ static void test() vector long long vlb = {0,1}; vector double vda = {-2.0,-1.0}; vector double vdb = {0.0,1.0}; + vector unsigned int vuia = {0,1,2,3}; + vector unsigned int vuib = {4,5,6,7}; + vector signed int vsia = {-4,-3,-2,-1}; + vector signed int vsib = {0,1,2,3}; + vector float vfa = {-4.0,-3.0,-2.0,-1.0}; + vector float vfb = {0.0,1.0,2.0,3.0}; /* Result vectors. */ vector long long vlh, vll; vector double vdh, vdl; + vector unsigned int vuih, vuil; + vector signed int vsih, vsil; + vector float vfh, vfl; /* Expected result vectors. */ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ @@ -32,20 +41,44 @@ static void test() vector long long vlrl = {0,-2}; vector double vdrh = {1.0,-1.0}; vector double vdrl = {0.0,-2.0}; + vector unsigned int vuirh = {6,2,7,3}; + vector unsigned int vuirl = {4,0,5,1}; + vector signed int vsirh = {2,-2,3,-1}; + vector signed int vsirl = {0,-4,1,-3}; + vector float vfrh = {2.0,-2.0,3.0,-1.0}; + vector float vfrl = {0.0,-4.0,1.0,-3.0}; #else vector long long vlrh = {-2,0}; vector long long vlrl = {-1,1}; vector double vdrh = {-2.0,0.0}; vector double vdrl = {-1.0,1.0}; + vector unsigned int vuirh = {0,4,1,5}; + vector unsigned int vuirl = {2,6,3,7}; + vector signed int vsirh = {-4,0,-3,1}; + vector signed int vsirl = {-2,2,-1,3}; + vector float vfrh = {-4.0,0.0,-3.0,1.0}; + vector float vfrl = {-2.0,2.0,-1.0,3.0}; #endif vlh = vec_mergeh (vla, vlb); vll = vec_mergel (vla, vlb); vdh = vec_mergeh (vda, vdb); vdl = vec_mergel (vda, vdb); + vuih = vec_mergeh (vuia, vuib); + vuil = vec_mergel (vuia, vuib); + vsih = vec_mergeh (vsia, vsib); + vsil = vec_mergel (vsia, vsib); + vfh = vec_mergeh (vfa, vfb ); + vfl = vec_mergel (vfa, vfb ); check (vec_long_long_eq (vlh, vlrh), "vlh"); check (vec_long_long_eq (vll, vlrl), "vll"); check (vec_double_eq (vdh, vdrh), "vdh" ); check (vec_double_eq (vdl, vdrl), "vdl" ); + check (vec_all_eq (vuih, vuirh), "vuih"); + check (vec_all_eq (vuil, vuirl), "vuil"); + check (vec_all_eq (vsih, vsirh), "vsih"); + check (vec_all_eq (vsil, vsirl), "vsil"); + check (vec_all_eq (vfh, vfrh), "vfh"); + check (vec_all_eq (vfl, vfrl), "vfl"); } diff --git a/gcc/testsuite/gcc.dg/vmx/merge-vsx.c b/gcc/testsuite/gcc.dg/vmx/merge-vsx.c index 851f35bd3e8..40693e95b33 100644 --- a/gcc/testsuite/gcc.dg/vmx/merge-vsx.c +++ b/gcc/testsuite/gcc.dg/vmx/merge-vsx.c @@ -21,24 +21,51 @@ static void test() vector long long vlb = {0,1}; vector double vda = {-2.0,-1.0}; vector double vdb = {0.0,1.0}; + vector unsigned int vuia = {0,1,2,3}; + vector unsigned int vuib = {4,5,6,7}; + vector signed int vsia = {-4,-3,-2,-1}; + vector signed int vsib = {0,1,2,3}; + vector float vfa = {-4.0,-3.0,-2.0,-1.0}; + vector float vfb = {0.0,1.0,2.0,3.0}; /* Result vectors. */ vector long long vlh, vll; vector double vdh, vdl; + vector unsigned int vuih, vuil; + vector signed int vsih, vsil; + vector float vfh, vfl; /* Expected result vectors. */ vector long long vlrh = {-2,0}; vector long long vlrl = {-1,1}; vector double vdrh = {-2.0,0.0}; vector double vdrl = {-1.0,1.0}; + vector unsigned int vuirh = {0,4,1,5}; + vector unsigned int vuirl = {2,6,3,7}; + vector signed int vsirh = {-4,0,-3,1}; + vector signed int vsirl = {-2,2,-1,3}; + vector float vfrh = {-4.0,0.0,-3.0,1.0}; + vector float vfrl = {-2.0,2.0,-1.0,3.0}; vlh = vec_mergeh (vla, vlb); vll = vec_mergel (vla, vlb); vdh = vec_mergeh (vda, vdb); vdl = vec_mergel (vda, vdb); + vuih = vec_mergeh (vuia, vuib); + vuil = vec_mergel (vuia, vuib); + vsih = vec_mergeh (vsia, vsib); + vsil = vec_mergel (vsia, vsib); + vfh = vec_mergeh (vfa, vfb ); + vfl = vec_mergel (vfa, vfb ); check (vec_long_long_eq (vlh, vlrh), "vlh"); check (vec_long_long_eq (vll, vlrl), "vll"); check (vec_double_eq (vdh, vdrh), "vdh" ); check (vec_double_eq (vdl, vdrl), "vdl" ); + check (vec_all_eq (vuih, vuirh), "vuih"); + check (vec_all_eq (vuil, vuirl), "vuil"); + check (vec_all_eq (vsih, vsirh), "vsih"); + check (vec_all_eq (vsil, vsirl), "vsil"); + check (vec_all_eq (vfh, vfrh), "vfh"); + check (vec_all_eq (vfl, vfrl), "vfl"); } diff --git a/gcc/testsuite/gcc.target/aarch64/cvtf_1.c b/gcc/testsuite/gcc.target/aarch64/cvtf_1.c new file mode 100644 index 00000000000..80ab9a5bb34 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/cvtf_1.c @@ -0,0 +1,95 @@ +/* { dg-do run } */ +/* { dg-options "-save-temps -fno-inline -O1" } */ + +#define FCVTDEF(ftype,itype) \ +void \ +cvt_##itype##_to_##ftype (itype a, ftype b)\ +{\ + ftype c;\ + c = (ftype) a;\ + if ( (c - b) > 0.00001) abort();\ +} + +#define force_simd_for_float(v) asm volatile ("mov %s0, %1.s[0]" :"=w" (v) :"w" (v) :) +#define force_simd_for_double(v) asm volatile ("mov %d0, %1.d[0]" :"=w" (v) :"w" (v) :) + +#define FCVTDEF_SISD(ftype,itype) \ +void \ +cvt_##itype##_to_##ftype##_sisd (itype a, ftype b)\ +{\ + ftype c;\ + force_simd_for_##ftype(a);\ + c = (ftype) a;\ + if ( (c - b) > 0.00001) abort();\ +} + +#define FCVT(ftype,itype,ival,fval) cvt_##itype##_to_##ftype (ival, fval); +#define FCVT_SISD(ftype,itype,ival,fval) cvt_##itype##_to_##ftype##_sisd (ival, fval); + +typedef int int32_t; +typedef unsigned int uint32_t; +typedef long long int int64_t; +typedef unsigned long long int uint64_t; + +extern void abort(); + +FCVTDEF (float, int32_t) +/* { dg-final { scan-assembler "scvtf\ts\[0-9\]+,\ w\[0-9\]+" } } */ +FCVTDEF (float, uint32_t) +/* { dg-final { scan-assembler "ucvtf\ts\[0-9\]+,\ w\[0-9\]+" } } */ +FCVTDEF (double, int32_t) +/* "scvtf\td\[0-9\]+,\ w\[0-9\]+" */ +FCVTDEF (double, uint32_t) +/* "ucvtf\td\[0-9\]+,\ w\[0-9\]+" */ +FCVTDEF (float, int64_t) +/* "scvtf\ts\[0-9\]+,\ x\[0-9\]+" */ +FCVTDEF (float, uint64_t) +/* "ucvtf\ts\[0-9\]+,\ x\[0-9\]+" */ +FCVTDEF (double, int64_t) +/* { dg-final { scan-assembler "scvtf\td\[0-9\]+,\ x\[0-9\]+" } } */ +FCVTDEF (double, uint64_t) +/* { dg-final { scan-assembler "ucvtf\td\[0-9\]+,\ x\[0-9\]+" } } */ +FCVTDEF_SISD (float, int32_t) +/* { dg-final { scan-assembler "scvtf\ts\[0-9\]+,\ s\[0-9\]+" } } */ +FCVTDEF_SISD (double, int64_t) +/* { dg-final { scan-assembler "scvtf\td\[0-9\]+,\ d\[0-9\]+" } } */ +FCVTDEF_SISD (float, uint32_t) +/* { dg-final { scan-assembler "ucvtf\ts\[0-9\]+,\ s\[0-9\]+" } } */ +FCVTDEF_SISD (double, uint64_t) +/* { dg-final { scan-assembler "ucvtf\td\[0-9\]+,\ d\[0-9\]+" } } */ +FCVTDEF_SISD (float, int64_t) +/* { dg-final { scan-assembler-times "scvtf\ts\[0-9\]+,\ x\[0-9\]+" 2 } } */ +FCVTDEF_SISD (float, uint64_t) +/* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\]+,\ x\[0-9\]+" 2 } } */ +FCVTDEF_SISD (double, int32_t) +/* { dg-final { scan-assembler-times "scvtf\td\[0-9\]+,\ w\[0-9\]+" 2 } } */ +FCVTDEF_SISD (double, uint32_t) +/* { dg-final { scan-assembler-times "ucvtf\td\[0-9\]+,\ w\[0-9\]+" 2 } } */ + +int32_t ival = -1234; +int64_t llival = -13031303L; +uint32_t uival = 1234; +uint64_t ullival = 13031303L; + +int main () +{ + float x; + double y; + + FCVT (float, int32_t, ival, -1234.0); + FCVT (float, uint32_t, uival, 1234.0); + FCVT (float, int64_t, llival, -13031303.0); + FCVT (float, uint64_t, ullival, 13031303.0); + FCVT (double, int32_t, ival, -1234.0); + FCVT (double, uint32_t, uival, 1234.0); + FCVT (double, int64_t, llival, -13031303.0); + FCVT (double, uint64_t, ullival, 13031303.0); + FCVT_SISD (float, int32_t, ival, -1234.0); + FCVT_SISD (double, int64_t, llival, -13031303.0); + FCVT_SISD (float, uint32_t, uival, 1234.0); + FCVT_SISD (double, uint64_t, ullival, 13031303.0); + + return 0; +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/vrnd_f64_1.c b/gcc/testsuite/gcc.target/aarch64/vrnd_f64_1.c new file mode 100644 index 00000000000..2451ecdcfb6 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/vrnd_f64_1.c @@ -0,0 +1,105 @@ +/* Test vrnd_f64 works correctly. */ +/* { dg-do run } */ +/* { dg-options "--save-temps" } */ + +#include "arm_neon.h" + +extern void abort (void); + +/* Bit offset to round mode field in FPCR. */ +#define RMODE_START 22 + +#define FPROUNDING_ZERO 3 + +/* Set RMODE field of FPCR control register + to rounding mode passed. */ +void __inline __attribute__ ((__always_inline__)) +set_rounding_mode (uint32_t mode) +{ + uint32_t r; + + /* Read current FPCR. */ + asm volatile ("mrs %[r], fpcr" : [r] "=r" (r) : :); + + /* Clear rmode. */ + r &= ~(3 << RMODE_START); + /* Calculate desired FPCR. */ + r |= mode << RMODE_START; + + /* Write desired FPCR back. */ + asm volatile ("msr fpcr, %[r]" : : [r] "r" (r) :); +} + +float64x1_t __attribute__ ((noinline)) +compare_f64 (float64x1_t passed, float64_t expected) +{ + return (__builtin_fabs (vget_lane_f64 (passed, 0) - expected) + > __DBL_EPSILON__); +} + +void __attribute__ ((noinline)) +run_round_tests (float64x1_t *tests, + float64_t expectations[][6]) +{ + int i; + + for (i = 0; i < 6; i++) + { + if (compare_f64 (vrnd_f64 (tests[i]), expectations[0][i])) + abort (); + if (compare_f64 (vrndx_f64 (tests[i]), expectations[1][i])) + abort (); + if (compare_f64 (vrndp_f64 (tests[i]), expectations[2][i])) + abort (); + if (compare_f64 (vrndn_f64 (tests[i]), expectations[3][i])) + abort (); + if (compare_f64 (vrndm_f64 (tests[i]), expectations[4][i])) + abort (); + if (compare_f64 (vrndi_f64 (tests[i]), expectations[5][i])) + abort (); + if (compare_f64 (vrnda_f64 (tests[i]), expectations[6][i])) + abort (); + } +} + +int +main (int argc, char **argv) +{ + float64x1_t tests[6] = + { + vcreate_f64 (0x3FE0000000000000), /* Hex for: 0.5. */ + vcreate_f64 (0x3FD999999999999A), /* Hex for: 0.4. */ + vcreate_f64 (0x3FE3333333333333), /* Hex for: 0.6. */ + vcreate_f64 (0xBFE0000000000000), /* Hex for: -0.5. */ + vcreate_f64 (0xBFD999999999999A), /* Hex for: -0.4. */ + vcreate_f64 (0xBFE3333333333333), /* Hex for: -0.6. */ + }; + + float64_t expectations[7][6] = + { + { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, /* vrnd - round towards zero. */ + { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, /* vrndx - round using FPCR mode. */ + { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 }, /* vrndp - round to plus infinity. */ + { 0.0, 0.0, 1.0, 0.0, 0.0, -1.0 }, /* vrndn - round ties to even. */ + { 0.0, 0.0, 0.0, -1.0, -1.0, -1.0 }, /* vrndm - round to minus infinity. */ + { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, /* vrndi - round using FPCR mode. */ + { 1.0, 0.0, 1.0, -1.0, 0.0, -1.0 }, /* vrnda - round ties away from 0. */ + }; + + /* Set floating point control register + to have predictable vrndx and vrndi behaviour. */ + set_rounding_mode (FPROUNDING_ZERO); + + run_round_tests (tests, expectations); + + return 0; +} + +/* { dg-final { scan-assembler-times "frintz\\td\[0-9\]+, d\[0-9\]+" 1 } } */ +/* { dg-final { scan-assembler-times "frintx\\td\[0-9\]+, d\[0-9\]+" 1 } } */ +/* { dg-final { scan-assembler-times "frintp\\td\[0-9\]+, d\[0-9\]+" 1 } } */ +/* { dg-final { scan-assembler-times "frintn\\td\[0-9\]+, d\[0-9\]+" 1 } } */ +/* { dg-final { scan-assembler-times "frintm\\td\[0-9\]+, d\[0-9\]+" 1 } } */ +/* { dg-final { scan-assembler-times "frinti\\td\[0-9\]+, d\[0-9\]+" 1 } } */ +/* { dg-final { scan-assembler-times "frinta\\td\[0-9\]+, d\[0-9\]+" 1 } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c b/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c new file mode 100644 index 00000000000..cfb33fcdc6f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c @@ -0,0 +1,65 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fno-inline --save-temps" } */ + +extern void abort (void); + +typedef long long s64int; +typedef int s32int; +typedef unsigned long long u64int; +typedef unsigned int u32int; + +s64int +anddi_di_notdi (s64int a, s64int b) +{ + return (a & ~b); +} + +s64int +anddi_di_notzesidi (s64int a, u32int b) +{ + return (a & ~(u64int) b); +} + +s64int +anddi_notdi_zesidi (s64int a, u32int b) +{ + return (~a & (u64int) b); +} + +s64int +anddi_di_notsesidi (s64int a, s32int b) +{ + return (a & ~(s64int) b); +} + +int main () +{ + s64int a64 = 0xdeadbeef0000ffffll; + s64int b64 = 0x000000005f470112ll; + s64int c64 = 0xdeadbeef300f0000ll; + + u32int c32 = 0x01124f4f; + s32int d32 = 0xabbaface; + + s64int z = anddi_di_notdi (c64, b64); + if (z != 0xdeadbeef20080000ll) + abort (); + + z = anddi_di_notzesidi (a64, c32); + if (z != 0xdeadbeef0000b0b0ll) + abort (); + + z = anddi_notdi_zesidi (c64, c32); + if (z != 0x0000000001104f4fll) + abort (); + + z = anddi_di_notsesidi (a64, d32); + if (z != 0x0000000000000531ll) + abort (); + + return 0; +} + +/* { dg-final { scan-assembler-times "bic\t" 6 } } */ + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/iordi_notdi-1.c b/gcc/testsuite/gcc.target/arm/iordi_notdi-1.c new file mode 100644 index 00000000000..249f0806ab2 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/iordi_notdi-1.c @@ -0,0 +1,65 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fno-inline --save-temps" } */ + +extern void abort (void); + +typedef long long s64int; +typedef int s32int; +typedef unsigned long long u64int; +typedef unsigned int u32int; + +s64int +iordi_di_notdi (s64int a, s64int b) +{ + return (a | ~b); +} + +s64int +iordi_di_notzesidi (s64int a, u32int b) +{ + return (a | ~(u64int) b); +} + +s64int +iordi_notdi_zesidi (s64int a, u32int b) +{ + return (~a | (u64int) b); +} + +s64int +iordi_di_notsesidi (s64int a, s32int b) +{ + return (a | ~(s64int) b); +} + +int main () +{ + s64int a64 = 0xdeadbeef00000000ll; + s64int b64 = 0x000000004f4f0112ll; + s64int c64 = 0xdeadbeef000f0000ll; + + u32int c32 = 0x01124f4f; + s32int d32 = 0xabbaface; + + s64int z = iordi_di_notdi (a64, b64); + if (z != 0xffffffffb0b0feedll) + abort (); + + z = iordi_di_notzesidi (a64, c32); + if (z != 0xfffffffffeedb0b0ll) + abort (); + + z = iordi_notdi_zesidi (c64, c32); + if (z != 0x21524110fff2ffffll) + abort (); + + z = iordi_di_notsesidi (a64, d32); + if (z != 0xdeadbeef54450531ll) + abort (); + + return 0; +} + +/* { dg-final { scan-assembler-times "orn\t" 6 { target arm_thumb2 } } } */ + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr22076.c b/gcc/testsuite/gcc.target/i386/pr22076.c index 38b40a26b57..e9916c9a583 100644 --- a/gcc/testsuite/gcc.target/i386/pr22076.c +++ b/gcc/testsuite/gcc.target/i386/pr22076.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx" } */ -/* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx -mno-vect8-ret-in-mem" { target i?86-*-solaris2.9 *-*-vxworks* } } */ +/* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx -mno-vect8-ret-in-mem" { target *-*-vxworks* } } */ #include <mmintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/pr22152.c b/gcc/testsuite/gcc.target/i386/pr22152.c index b20a22a4c90..5e2d4ac731b 100644 --- a/gcc/testsuite/gcc.target/i386/pr22152.c +++ b/gcc/testsuite/gcc.target/i386/pr22152.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -msse2 -mtune=core2" } */ -/* { dg-additional-options "-mno-vect8-ret-in-mem" { target i?86-*-solaris2.9 *-*-vxworks* } } */ +/* { dg-additional-options "-mno-vect8-ret-in-mem" { target *-*-vxworks* } } */ /* { dg-additional-options "-mabi=sysv" { target x86_64-*-mingw* } } */ #include <mmintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/pr60909-1.c b/gcc/testsuite/gcc.target/i386/pr60909-1.c new file mode 100644 index 00000000000..5a1ac3c0f6c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr60909-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-mrdrnd" } */ + +extern void bar (int); + +void +foo (unsigned *u) +{ + int i = __builtin_ia32_rdrand32_step (u); + bar (i); +} diff --git a/gcc/testsuite/gcc.target/i386/pr60909-2.c b/gcc/testsuite/gcc.target/i386/pr60909-2.c new file mode 100644 index 00000000000..dd356685ba9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr60909-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-mrdseed" } */ + +extern void bar (int); + +void +foo (unsigned *u) +{ + int i = __builtin_ia32_rdseed_si_step (u); + bar (i); +} diff --git a/gcc/testsuite/gcc.target/i386/sse-os-support.h b/gcc/testsuite/gcc.target/i386/sse-os-support.h index a2b4e2d3c7e..4830b7e4ce9 100644 --- a/gcc/testsuite/gcc.target/i386/sse-os-support.h +++ b/gcc/testsuite/gcc.target/i386/sse-os-support.h @@ -1,55 +1,8 @@ -#if defined(__sun__) && defined(__svr4__) -/* Make sure sigaction() is declared even with -std=c99. */ -#define __EXTENSIONS__ -#include <signal.h> -#include <ucontext.h> - -static volatile sig_atomic_t sigill_caught; - -static void -sigill_hdlr (int sig __attribute((unused)), - siginfo_t *sip __attribute__((unused)), - ucontext_t *ucp) -{ - sigill_caught = 1; - /* Set PC to the instruction after the faulting one to skip over it, - otherwise we enter an infinite loop. */ - ucp->uc_mcontext.gregs[EIP] += 4; - setcontext (ucp); -} -#endif - -/* Check if the OS supports executing SSE instructions. This function is - only used in sse-check.h, sse2-check.h, and sse3-check.h so far since - Solaris 8 and 9 won't run on newer CPUs anyway. */ +/* Check if the OS supports executing SSE instructions. */ static int sse_os_support (void) { -#if defined(__sun__) && defined(__svr4__) - /* Solaris 2 before Solaris 9 4/04 cannot execute SSE instructions - even if the CPU supports them. Programs receive SIGILL instead, so - check for that at runtime. */ - - struct sigaction act, oact; - - act.sa_handler = sigill_hdlr; - sigemptyset (&act.sa_mask); - /* Need to set SA_SIGINFO so a ucontext_t * is passed to the handler. */ - act.sa_flags = SA_SIGINFO; - sigaction (SIGILL, &act, &oact); - - /* We need a single SSE instruction here so the handler can safely skip - over it. */ - __asm__ volatile ("movss %xmm2,%xmm1"); - - sigaction (SIGILL, &oact, NULL); - - if (sigill_caught) - exit (0); - else - return 1; -#else + /* All currently supported OSes do. */ return 1; -#endif /* __sun__ && __svr4__ */ } diff --git a/gcc/testsuite/gcc.target/i386/vect8-ret.c b/gcc/testsuite/gcc.target/i386/vect8-ret.c index 513369d0fa5..09283d72bef 100644 --- a/gcc/testsuite/gcc.target/i386/vect8-ret.c +++ b/gcc/testsuite/gcc.target/i386/vect8-ret.c @@ -1,5 +1,5 @@ /* { dg-do compile { target ia32 } } */ -/* { dg-options "-mmmx" { target i?86-*-solaris2.9 *-*-vxworks* } } */ +/* { dg-options "-mmmx" { target *-*-vxworks* } } */ /* { dg-options "-mmmx -mvect8-ret-in-mem" } */ #include <mmintrin.h> diff --git a/gcc/testsuite/gcc.target/powerpc/pr60735.c b/gcc/testsuite/gcc.target/powerpc/pr60735.c new file mode 100644 index 00000000000..9bac30b51d9 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr60735.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-mcpu=8548 -mspe -mabi=spe -O2" } */ +/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */ + +/* In PR60735, the type _Decimal64 generated an insn not found message. */ + +void +pr60735 (_Decimal64 *p, _Decimal64 *q) +{ + *p = *q; +} diff --git a/gcc/testsuite/gcc.target/powerpc/ti_math1.c b/gcc/testsuite/gcc.target/powerpc/ti_math1.c new file mode 100644 index 00000000000..cdf92510048 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/ti_math1.c @@ -0,0 +1,20 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-options "-O2" } */ +/* { dg-final { scan-assembler-times "addc" 1 } } */ +/* { dg-final { scan-assembler-times "adde" 1 } } */ +/* { dg-final { scan-assembler-times "subfc" 1 } } */ +/* { dg-final { scan-assembler-times "subfe" 1 } } */ +/* { dg-final { scan-assembler-not "subf " } } */ + +__int128 +add_128 (__int128 *ptr, __int128 val) +{ + return (*ptr + val); +} + +__int128 +sub_128 (__int128 *ptr, __int128 val) +{ + return (*ptr - val); +} + diff --git a/gcc/testsuite/gcc.target/powerpc/ti_math2.c b/gcc/testsuite/gcc.target/powerpc/ti_math2.c new file mode 100644 index 00000000000..b9c03300d84 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/ti_math2.c @@ -0,0 +1,73 @@ +/* { dg-do run { target { powerpc*-*-* && lp64 } } } */ +/* { dg-options "-O2 -fno-inline" } */ + +union U { + __int128 i128; + struct { + long l1; + long l2; + } s; +}; + +union U u1,u2; + +__int128 +create_128 (long most_sig, long least_sig) +{ + union U u; + +#if __LITTLE_ENDIAN__ + u.s.l1 = least_sig; + u.s.l2 = most_sig; +#else + u.s.l1 = most_sig; + u.s.l2 = least_sig; +#endif + return u.i128; +} + +long most_sig (union U * u) +{ +#if __LITTLE_ENDIAN__ + return (*u).s.l2; +#else + return (*u).s.l1; +#endif +} + +long least_sig (union U * u) +{ +#if __LITTLE_ENDIAN__ + return (*u).s.l1; +#else + return (*u).s.l2; +#endif +} + +__int128 +add_128 (__int128 *ptr, __int128 val) +{ + return (*ptr + val); +} + +__int128 +sub_128 (__int128 *ptr, __int128 val) +{ + return (*ptr - val); +} + +int +main (void) +{ + /* Do a simple add/sub to make sure carry is happening between the dwords + and that dwords are in correct endian order. */ + u1.i128 = create_128 (1, -1); + u2.i128 = add_128 (&u1.i128, 1); + if ((most_sig (&u2) != 2) || (least_sig (&u2) != 0)) + __builtin_abort (); + u2.i128 = sub_128 (&u2.i128, 1); + if ((most_sig (&u2) != 1) || (least_sig (&u2) != -1)) + __builtin_abort (); + return 0; +} + diff --git a/gcc/testsuite/gfortran.dg/erf_3.F90 b/gcc/testsuite/gfortran.dg/erf_3.F90 index 32c1ba6e54e..df82e126bd8 100644 --- a/gcc/testsuite/gfortran.dg/erf_3.F90 +++ b/gcc/testsuite/gfortran.dg/erf_3.F90 @@ -1,7 +1,7 @@ ! { dg-do run { xfail spu-*-* ia64-*-linux* } } ! { dg-options "-fno-range-check -ffree-line-length-none -O0" } ! { dg-add-options ieee } -! { dg-skip-if "PR libfortran/59313" { sparc*-*-solaris2.9* hppa*-*-hpux* } } +! { dg-skip-if "PR libfortran/59313" { hppa*-*-hpux* } } ! ! Check that simplification functions and runtime library agree on ERF, ! ERFC and ERFC_SCALED, for quadruple-precision. diff --git a/gcc/testsuite/gfortran.dg/fmt_en.f90 b/gcc/testsuite/gfortran.dg/fmt_en.f90 index 4c5b7212333..89a6d95adb6 100644 --- a/gcc/testsuite/gfortran.dg/fmt_en.f90 +++ b/gcc/testsuite/gfortran.dg/fmt_en.f90 @@ -182,5 +182,5 @@ contains end subroutine end program -! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail { i?86-*-solaris2.9* hppa*-*-hpux* } } } } +! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail hppa*-*-hpux* } } } ! { dg-final { cleanup-saved-temps } } diff --git a/gcc/testsuite/gfortran.dg/round_4.f90 b/gcc/testsuite/gfortran.dg/round_4.f90 index 975cb20e440..ffeb9508377 100644 --- a/gcc/testsuite/gfortran.dg/round_4.f90 +++ b/gcc/testsuite/gfortran.dg/round_4.f90 @@ -1,6 +1,6 @@ ! { dg-do run } ! { dg-add-options ieee } -! { dg-skip-if "PR libfortran/58015" { *-*-solaris2.9* hppa*-*-hpux* } } +! { dg-skip-if "PR libfortran/58015" { hppa*-*-hpux* } } ! ! PR fortran/35862 ! diff --git a/gcc/testsuite/gnat.dg/opt34.adb b/gcc/testsuite/gnat.dg/opt34.adb new file mode 100644 index 00000000000..a5d0ab6319f --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt34.adb @@ -0,0 +1,29 @@ +-- { dg-do compile } +-- { dg-options "-O -fdump-tree-esra" } + +with Opt34_Pkg; use Opt34_Pkg; + +procedure Opt34 is + + function Local_Fun (Arg : T_Private) return T_Private is + Result : T_Private; + begin + + case Get_Integer (Arg) is + when 1 => + Result := Get_Private (100); + when 2 => + Result := T_Private_Zero; + when others => + null; + end case; + + return Result; + end Local_Fun; + +begin + Assert (Get_Integer (Local_Fun (Get_Private (1))) = 100); +end; + +-- { dg-final { scan-tree-dump "Created a replacement for result" "esra" } } +-- { dg-final { cleanup-tree-dump "esra" } } diff --git a/gcc/testsuite/gnat.dg/opt34_pkg.ads b/gcc/testsuite/gnat.dg/opt34_pkg.ads new file mode 100644 index 00000000000..83ecb493ef4 --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt34_pkg.ads @@ -0,0 +1,14 @@ +package Opt34_Pkg is + + type T_Private is record + I : Integer := 0; + end record; + + T_Private_Zero : constant T_Private := (I => 0); + + function Get_Private (I : Integer) return T_Private; + function Get_Integer (X : T_Private) return Integer; + + procedure Assert (Cond : Boolean); + +end Opt34_Pkg; diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 57b10d0a844..541a428efbc 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -593,7 +593,7 @@ proc add_options_for_tls { flags } { # libthread, so always pass -pthread for native TLS. Same for AIX. # Need to duplicate native TLS check from # check_effective_target_tls_native to avoid recursion. - if { ([istarget *-*-solaris2.9*] || [istarget powerpc-ibm-aix*]) && + if { ([istarget powerpc-ibm-aix*]) && [check_no_messages_and_pattern tls_native "!emutls" assembly { __thread int i; int f (void) { return i; } diff --git a/gcc/tracer.c b/gcc/tracer.c index f036c193b57..09a8f40c7f5 100644 --- a/gcc/tracer.c +++ b/gcc/tracer.c @@ -367,43 +367,7 @@ tail_duplicate (void) return changed; } - -/* Main entry point to this file. */ - -static unsigned int -tracer (void) -{ - bool changed; - - if (n_basic_blocks_for_fn (cfun) <= NUM_FIXED_BLOCKS + 1) - return 0; - - mark_dfs_back_edges (); - if (dump_file) - brief_dump_cfg (dump_file, dump_flags); - - /* Trace formation is done on the fly inside tail_duplicate */ - changed = tail_duplicate (); - if (changed) - { - free_dominance_info (CDI_DOMINATORS); - /* If we changed the CFG schedule loops for fixup by cleanup_cfg. */ - if (current_loops) - loops_state_set (LOOPS_NEED_FIXUP); - } - - if (dump_file) - brief_dump_cfg (dump_file, dump_flags); - - return changed ? TODO_cleanup_cfg : 0; -} -static bool -gate_tracer (void) -{ - return (optimize > 0 && flag_tracer && flag_reorder_blocks); -} - namespace { const pass_data pass_data_tracer = @@ -411,7 +375,6 @@ const pass_data pass_data_tracer = GIMPLE_PASS, /* type */ "tracer", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TRACER, /* tv_id */ 0, /* properties_required */ @@ -429,11 +392,42 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tracer (); } - unsigned int execute () { return tracer (); } + virtual bool gate (function *) + { + return (optimize > 0 && flag_tracer && flag_reorder_blocks); + } + + virtual unsigned int execute (function *); }; // class pass_tracer +unsigned int +pass_tracer::execute (function *fun) +{ + bool changed; + + if (n_basic_blocks_for_fn (fun) <= NUM_FIXED_BLOCKS + 1) + return 0; + + mark_dfs_back_edges (); + if (dump_file) + brief_dump_cfg (dump_file, dump_flags); + + /* Trace formation is done on the fly inside tail_duplicate */ + changed = tail_duplicate (); + if (changed) + { + free_dominance_info (CDI_DOMINATORS); + /* If we changed the CFG schedule loops for fixup by cleanup_cfg. */ + if (current_loops) + loops_state_set (LOOPS_NEED_FIXUP); + } + + if (dump_file) + brief_dump_cfg (dump_file, dump_flags); + + return changed ? TODO_cleanup_cfg : 0; +} } // anon namespace gimple_opt_pass * diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c index 87a8fd90e3e..417ca8a8fa2 100644 --- a/gcc/trans-mem.c +++ b/gcc/trans-mem.c @@ -456,14 +456,6 @@ build_tm_abort_call (location_t loc, bool is_outer) AR_USERABORT | (is_outer ? AR_OUTERABORT : 0))); } - -/* Common gateing function for several of the TM passes. */ - -static bool -gate_tm (void) -{ - return flag_tm; -} /* Map for aribtrary function replacement under TM, as created by the tm_wrap attribute. */ @@ -846,7 +838,6 @@ const pass_data pass_data_diagnose_tm_blocks = GIMPLE_PASS, /* type */ "*diagnose_tm_blocks", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TRANS_MEM, /* tv_id */ PROP_gimple_any, /* properties_required */ @@ -864,8 +855,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tm (); } - unsigned int execute () { return diagnose_tm_blocks (); } + virtual bool gate (function *) { return flag_tm; } + virtual unsigned int execute (function *) { return diagnose_tm_blocks (); } }; // class pass_diagnose_tm_blocks @@ -1769,7 +1760,6 @@ const pass_data pass_data_lower_tm = GIMPLE_PASS, /* type */ "tmlower", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TRANS_MEM, /* tv_id */ PROP_gimple_lcf, /* properties_required */ @@ -1787,8 +1777,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tm (); } - unsigned int execute () { return execute_lower_tm (); } + virtual bool gate (function *) { return flag_tm; } + virtual unsigned int execute (function *) { return execute_lower_tm (); } }; // class pass_lower_tm @@ -2047,7 +2037,6 @@ const pass_data pass_data_tm_init = GIMPLE_PASS, /* type */ "*tminit", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_TRANS_MEM, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -2065,7 +2054,7 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tm_init (); } + virtual bool gate (function *) { return gate_tm_init (); } }; // class pass_tm_init @@ -3023,7 +3012,6 @@ const pass_data pass_data_tm_mark = GIMPLE_PASS, /* type */ "tmmark", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_TRANS_MEM, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -3041,7 +3029,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return execute_tm_mark (); } + virtual unsigned int execute (function *) { return execute_tm_mark (); } }; // class pass_tm_mark @@ -3174,31 +3162,6 @@ expand_block_edges (struct tm_region *const region, basic_block bb) /* Entry point to the final expansion of transactional nodes. */ -static unsigned int -execute_tm_edges (void) -{ - vec<tm_region_p> bb_regions - = get_bb_regions_instrumented (/*traverse_clones=*/false, - /*include_uninstrumented_p=*/true); - struct tm_region *r; - unsigned i; - - FOR_EACH_VEC_ELT (bb_regions, i, r) - if (r != NULL) - expand_block_edges (r, BASIC_BLOCK_FOR_FN (cfun, i)); - - bb_regions.release (); - - /* We've got to release the dominance info now, to indicate that it - must be rebuilt completely. Otherwise we'll crash trying to update - the SSA web in the TODO section following this pass. */ - free_dominance_info (CDI_DOMINATORS); - bitmap_obstack_release (&tm_obstack); - all_tm_regions = NULL; - - return 0; -} - namespace { const pass_data pass_data_tm_edges = @@ -3206,7 +3169,6 @@ const pass_data pass_data_tm_edges = GIMPLE_PASS, /* type */ "tmedge", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_TRANS_MEM, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -3224,10 +3186,35 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return execute_tm_edges (); } + virtual unsigned int execute (function *); }; // class pass_tm_edges +unsigned int +pass_tm_edges::execute (function *fun) +{ + vec<tm_region_p> bb_regions + = get_bb_regions_instrumented (/*traverse_clones=*/false, + /*include_uninstrumented_p=*/true); + struct tm_region *r; + unsigned i; + + FOR_EACH_VEC_ELT (bb_regions, i, r) + if (r != NULL) + expand_block_edges (r, BASIC_BLOCK_FOR_FN (fun, i)); + + bb_regions.release (); + + /* We've got to release the dominance info now, to indicate that it + must be rebuilt completely. Otherwise we'll crash trying to update + the SSA web in the TODO section following this pass. */ + free_dominance_info (CDI_DOMINATORS); + bitmap_obstack_release (&tm_obstack); + all_tm_regions = NULL; + + return 0; +} + } // anon namespace gimple_opt_pass * @@ -3934,12 +3921,6 @@ execute_tm_memopt (void) return 0; } -static bool -gate_tm_memopt (void) -{ - return flag_tm && optimize > 0; -} - namespace { const pass_data pass_data_tm_memopt = @@ -3947,7 +3928,6 @@ const pass_data pass_data_tm_memopt = GIMPLE_PASS, /* type */ "tmmemopt", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TRANS_MEM, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -3965,8 +3945,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tm_memopt (); } - unsigned int execute () { return execute_tm_memopt (); } + virtual bool gate (function *) { return flag_tm && optimize > 0; } + virtual unsigned int execute (function *) { return execute_tm_memopt (); } }; // class pass_tm_memopt @@ -5584,7 +5564,6 @@ const pass_data pass_data_ipa_tm = SIMPLE_IPA_PASS, /* type */ "tmipa", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TRANS_MEM, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -5602,8 +5581,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tm (); } - unsigned int execute () { return ipa_tm_execute (); } + virtual bool gate (function *) { return flag_tm; } + virtual unsigned int execute (function *) { return ipa_tm_execute (); } }; // class pass_ipa_tm diff --git a/gcc/tree-call-cdce.c b/gcc/tree-call-cdce.c index d25d20d54b2..d8ad5201b8c 100644 --- a/gcc/tree-call-cdce.c +++ b/gcc/tree-call-cdce.c @@ -867,16 +867,51 @@ shrink_wrap_conditional_dead_built_in_calls (vec<gimple> calls) return changed; } -/* Pass entry points. */ +namespace { + +const pass_data pass_data_call_cdce = +{ + GIMPLE_PASS, /* type */ + "cdce", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_CALL_CDCE, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_ssa, /* todo_flags_finish */ +}; -static unsigned int -tree_call_cdce (void) +class pass_call_cdce : public gimple_opt_pass +{ +public: + pass_call_cdce (gcc::context *ctxt) + : gimple_opt_pass (pass_data_call_cdce, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *fun) + { + /* The limit constants used in the implementation + assume IEEE floating point format. Other formats + can be supported in the future if needed. */ + return flag_tree_builtin_call_dce != 0 + && optimize_function_for_speed_p (fun); + } + + virtual unsigned int execute (function *); + +}; // class pass_call_cdce + +unsigned int +pass_call_cdce::execute (function *fun) { basic_block bb; gimple_stmt_iterator i; bool something_changed = false; auto_vec<gimple> cond_dead_built_in_calls; - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { /* Collect dead call candidates. */ for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i)) @@ -910,52 +945,13 @@ tree_call_cdce (void) free_dominance_info (CDI_POST_DOMINATORS); /* As we introduced new control-flow we need to insert PHI-nodes for the call-clobbers of the remaining call. */ - mark_virtual_operands_for_renaming (cfun); + mark_virtual_operands_for_renaming (fun); return TODO_update_ssa; } return 0; } -static bool -gate_call_cdce (void) -{ - /* The limit constants used in the implementation - assume IEEE floating point format. Other formats - can be supported in the future if needed. */ - return flag_tree_builtin_call_dce != 0 && optimize_function_for_speed_p (cfun); -} - -namespace { - -const pass_data pass_data_call_cdce = -{ - GIMPLE_PASS, /* type */ - "cdce", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_CALL_CDCE, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_ssa, /* todo_flags_finish */ -}; - -class pass_call_cdce : public gimple_opt_pass -{ -public: - pass_call_cdce (gcc::context *ctxt) - : gimple_opt_pass (pass_data_call_cdce, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_call_cdce (); } - unsigned int execute () { return tree_call_cdce (); } - -}; // class pass_call_cdce - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index c4bc86209ec..f0845b66975 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -353,7 +353,6 @@ const pass_data pass_data_build_cfg = GIMPLE_PASS, /* type */ "cfg", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_TREE_CFG, /* tv_id */ PROP_gimple_leh, /* properties_required */ @@ -371,7 +370,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return execute_build_cfg (); } + virtual unsigned int execute (function *) { return execute_build_cfg (); } }; // class pass_build_cfg @@ -8086,7 +8085,6 @@ const pass_data pass_data_split_crit_edges = GIMPLE_PASS, /* type */ "crited", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_TREE_SPLIT_EDGES, /* tv_id */ PROP_cfg, /* properties_required */ @@ -8104,7 +8102,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return split_critical_edges (); } + virtual unsigned int execute (function *) { return split_critical_edges (); } opt_pass * clone () { return new pass_split_crit_edges (m_ctxt); } }; // class pass_split_crit_edges @@ -8169,64 +8167,6 @@ gimplify_build1 (gimple_stmt_iterator *gsi, enum tree_code code, tree type, -/* Emit return warnings. */ - -static unsigned int -execute_warn_function_return (void) -{ - source_location location; - gimple last; - edge e; - edge_iterator ei; - - if (!targetm.warn_func_return (cfun->decl)) - return 0; - - /* If we have a path to EXIT, then we do return. */ - if (TREE_THIS_VOLATILE (cfun->decl) - && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (cfun)->preds) > 0) - { - location = UNKNOWN_LOCATION; - FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR_FOR_FN (cfun)->preds) - { - last = last_stmt (e->src); - if ((gimple_code (last) == GIMPLE_RETURN - || gimple_call_builtin_p (last, BUILT_IN_RETURN)) - && (location = gimple_location (last)) != UNKNOWN_LOCATION) - break; - } - if (location == UNKNOWN_LOCATION) - location = cfun->function_end_locus; - warning_at (location, 0, "%<noreturn%> function does return"); - } - - /* If we see "return;" in some basic block, then we do reach the end - without returning a value. */ - else if (warn_return_type - && !TREE_NO_WARNING (cfun->decl) - && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (cfun)->preds) > 0 - && !VOID_TYPE_P (TREE_TYPE (TREE_TYPE (cfun->decl)))) - { - FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR_FOR_FN (cfun)->preds) - { - gimple last = last_stmt (e->src); - if (gimple_code (last) == GIMPLE_RETURN - && gimple_return_retval (last) == NULL - && !gimple_no_warning_p (last)) - { - location = gimple_location (last); - if (location == UNKNOWN_LOCATION) - location = cfun->function_end_locus; - warning_at (location, OPT_Wreturn_type, "control reaches end of non-void function"); - TREE_NO_WARNING (cfun->decl) = 1; - break; - } - } - } - return 0; -} - - /* Given a basic block B which ends with a conditional and has precisely two successors, determine which of the edges is taken if the conditional is true and which is taken if the conditional is @@ -8251,6 +8191,8 @@ extract_true_false_edges_from_block (basic_block b, } } +/* Emit return warnings. */ + namespace { const pass_data pass_data_warn_function_return = @@ -8258,7 +8200,6 @@ const pass_data pass_data_warn_function_return = GIMPLE_PASS, /* type */ "*warn_function_return", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -8276,10 +8217,65 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return execute_warn_function_return (); } + virtual unsigned int execute (function *); }; // class pass_warn_function_return +unsigned int +pass_warn_function_return::execute (function *fun) +{ + source_location location; + gimple last; + edge e; + edge_iterator ei; + + if (!targetm.warn_func_return (fun->decl)) + return 0; + + /* If we have a path to EXIT, then we do return. */ + if (TREE_THIS_VOLATILE (fun->decl) + && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (fun)->preds) > 0) + { + location = UNKNOWN_LOCATION; + FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR_FOR_FN (fun)->preds) + { + last = last_stmt (e->src); + if ((gimple_code (last) == GIMPLE_RETURN + || gimple_call_builtin_p (last, BUILT_IN_RETURN)) + && (location = gimple_location (last)) != UNKNOWN_LOCATION) + break; + } + if (location == UNKNOWN_LOCATION) + location = cfun->function_end_locus; + warning_at (location, 0, "%<noreturn%> function does return"); + } + + /* If we see "return;" in some basic block, then we do reach the end + without returning a value. */ + else if (warn_return_type + && !TREE_NO_WARNING (fun->decl) + && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (fun)->preds) > 0 + && !VOID_TYPE_P (TREE_TYPE (TREE_TYPE (fun->decl)))) + { + FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR_FOR_FN (fun)->preds) + { + gimple last = last_stmt (e->src); + if (gimple_code (last) == GIMPLE_RETURN + && gimple_return_retval (last) == NULL + && !gimple_no_warning_p (last)) + { + location = gimple_location (last); + if (location == UNKNOWN_LOCATION) + location = fun->function_end_locus; + warning_at (location, OPT_Wreturn_type, "control reaches end of non-void function"); + TREE_NO_WARNING (fun->decl) = 1; + break; + } + } + } + return 0; +} + } // anon namespace gimple_opt_pass * @@ -8353,19 +8349,6 @@ do_warn_unused_result (gimple_seq seq) } } -static unsigned int -run_warn_unused_result (void) -{ - do_warn_unused_result (gimple_body (current_function_decl)); - return 0; -} - -static bool -gate_warn_unused_result (void) -{ - return flag_warn_unused_result; -} - namespace { const pass_data pass_data_warn_unused_result = @@ -8373,7 +8356,6 @@ const pass_data pass_data_warn_unused_result = GIMPLE_PASS, /* type */ "*warn_unused_result", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ @@ -8391,8 +8373,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_warn_unused_result (); } - unsigned int execute () { return run_warn_unused_result (); } + virtual bool gate (function *) { return flag_warn_unused_result; } + virtual unsigned int execute (function *) + { + do_warn_unused_result (gimple_body (current_function_decl)); + return 0; + } }; // class pass_warn_unused_result @@ -8516,7 +8502,6 @@ const pass_data pass_data_fixup_cfg = GIMPLE_PASS, /* type */ "*free_cfg_annotations", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -8535,7 +8520,7 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_fixup_cfg (m_ctxt); } - unsigned int execute () { return execute_fixup_cfg (); } + virtual unsigned int execute (function *) { return execute_fixup_cfg (); } }; // class pass_fixup_cfg diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c index b7882cf6762..104620716ec 100644 --- a/gcc/tree-cfgcleanup.c +++ b/gcc/tree-cfgcleanup.c @@ -944,17 +944,46 @@ remove_forwarder_block_with_phi (basic_block bb) <L10>:; */ -static unsigned int -merge_phi_nodes (void) +namespace { + +const pass_data pass_data_merge_phi = +{ + GIMPLE_PASS, /* type */ + "mergephi", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_MERGE_PHI, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_ssa, /* todo_flags_finish */ +}; + +class pass_merge_phi : public gimple_opt_pass +{ +public: + pass_merge_phi (gcc::context *ctxt) + : gimple_opt_pass (pass_data_merge_phi, ctxt) + {} + + /* opt_pass methods: */ + opt_pass * clone () { return new pass_merge_phi (m_ctxt); } + virtual unsigned int execute (function *); + +}; // class pass_merge_phi + +unsigned int +pass_merge_phi::execute (function *fun) { - basic_block *worklist = XNEWVEC (basic_block, n_basic_blocks_for_fn (cfun)); + basic_block *worklist = XNEWVEC (basic_block, n_basic_blocks_for_fn (fun)); basic_block *current = worklist; basic_block bb; calculate_dominance_info (CDI_DOMINATORS); /* Find all PHI nodes that we may be able to merge. */ - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { basic_block dest; @@ -1035,43 +1064,6 @@ merge_phi_nodes (void) return 0; } -static bool -gate_merge_phi (void) -{ - return 1; -} - -namespace { - -const pass_data pass_data_merge_phi = -{ - GIMPLE_PASS, /* type */ - "mergephi", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_MERGE_PHI, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_ssa, /* todo_flags_finish */ -}; - -class pass_merge_phi : public gimple_opt_pass -{ -public: - pass_merge_phi (gcc::context *ctxt) - : gimple_opt_pass (pass_data_merge_phi, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_merge_phi (m_ctxt); } - bool gate () { return gate_merge_phi (); } - unsigned int execute () { return merge_phi_nodes (); } - -}; // class pass_merge_phi - } // anon namespace gimple_opt_pass * @@ -1133,7 +1125,6 @@ const pass_data pass_data_cleanup_cfg_post_optimizing = GIMPLE_PASS, /* type */ "optimized", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_TREE_CLEANUP_CFG, /* tv_id */ PROP_cfg, /* properties_required */ @@ -1151,9 +1142,10 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { - return execute_cleanup_cfg_post_optimizing (); - } + virtual unsigned int execute (function *) + { + return execute_cleanup_cfg_post_optimizing (); + } }; // class pass_cleanup_cfg_post_optimizing diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c index 4a657c06865..a97aaf974ce 100644 --- a/gcc/tree-complex.c +++ b/gcc/tree-complex.c @@ -1662,7 +1662,6 @@ const pass_data pass_data_lower_complex = GIMPLE_PASS, /* type */ "cplxlower", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ @@ -1681,7 +1680,7 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_lower_complex (m_ctxt); } - unsigned int execute () { return tree_lower_complex (); } + virtual unsigned int execute (function *) { return tree_lower_complex (); } }; // class pass_lower_complex @@ -1694,14 +1693,6 @@ make_pass_lower_complex (gcc::context *ctxt) } -static bool -gate_no_optimization (void) -{ - /* With errors, normal optimization passes are not run. If we don't - lower complex operations at all, rtl expansion will abort. */ - return !(cfun->curr_properties & PROP_gimple_lcx); -} - namespace { const pass_data pass_data_lower_complex_O0 = @@ -1709,7 +1700,6 @@ const pass_data pass_data_lower_complex_O0 = GIMPLE_PASS, /* type */ "cplxlower0", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -1727,8 +1717,14 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_no_optimization (); } - unsigned int execute () { return tree_lower_complex (); } + virtual bool gate (function *fun) + { + /* With errors, normal optimization passes are not run. If we don't + lower complex operations at all, rtl expansion will abort. */ + return !(fun->curr_properties & PROP_gimple_lcx); + } + + virtual unsigned int execute (function *) { return tree_lower_complex (); } }; // class pass_lower_complex_O0 diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 82b9b51227b..5107ed971ed 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -344,7 +344,7 @@ set_ssa_default_def (struct function *fn, tree var, tree def) { loc = htab_find_slot_with_hash (DEFAULT_DEFS (fn), &in, DECL_UID (var), NO_INSERT); - if (*loc) + if (loc) { SSA_NAME_IS_DEFAULT_DEF (*(tree *)loc) = false; htab_clear_slot (DEFAULT_DEFS (fn), loc); diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index 15f0ef448a0..b83274b1fb8 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -2121,8 +2121,36 @@ lower_eh_constructs_1 (struct leh_state *state, gimple_seq *pseq) lower_eh_constructs_2 (state, &gsi); } -static unsigned int -lower_eh_constructs (void) +namespace { + +const pass_data pass_data_lower_eh = +{ + GIMPLE_PASS, /* type */ + "eh", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_EH, /* tv_id */ + PROP_gimple_lcf, /* properties_required */ + PROP_gimple_leh, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_lower_eh : public gimple_opt_pass +{ +public: + pass_lower_eh (gcc::context *ctxt) + : gimple_opt_pass (pass_data_lower_eh, ctxt) + {} + + /* opt_pass methods: */ + virtual unsigned int execute (function *); + +}; // class pass_lower_eh + +unsigned int +pass_lower_eh::execute (function *fun) { struct leh_state null_state; gimple_seq bodyp; @@ -2155,7 +2183,7 @@ lower_eh_constructs (void) /* If this function needs a language specific EH personality routine and the frontend didn't already set one do so now. */ - if (function_needs_eh_personality (cfun) == eh_personality_lang + if (function_needs_eh_personality (fun) == eh_personality_lang && !DECL_FUNCTION_PERSONALITY (current_function_decl)) DECL_FUNCTION_PERSONALITY (current_function_decl) = lang_hooks.eh_personality (); @@ -2163,35 +2191,6 @@ lower_eh_constructs (void) return 0; } -namespace { - -const pass_data pass_data_lower_eh = -{ - GIMPLE_PASS, /* type */ - "eh", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ - true, /* has_execute */ - TV_TREE_EH, /* tv_id */ - PROP_gimple_lcf, /* properties_required */ - PROP_gimple_leh, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_lower_eh : public gimple_opt_pass -{ -public: - pass_lower_eh (gcc::context *ctxt) - : gimple_opt_pass (pass_data_lower_eh, ctxt) - {} - - /* opt_pass methods: */ - unsigned int execute () { return lower_eh_constructs (); } - -}; // class pass_lower_eh - } // anon namespace gimple_opt_pass * @@ -3109,19 +3108,6 @@ refactor_eh_r (gimple_seq seq) } } -static unsigned -refactor_eh (void) -{ - refactor_eh_r (gimple_body (current_function_decl)); - return 0; -} - -static bool -gate_refactor_eh (void) -{ - return flag_exceptions != 0; -} - namespace { const pass_data pass_data_refactor_eh = @@ -3129,7 +3115,6 @@ const pass_data pass_data_refactor_eh = GIMPLE_PASS, /* type */ "ehopt", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_EH, /* tv_id */ PROP_gimple_lcf, /* properties_required */ @@ -3147,8 +3132,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_refactor_eh (); } - unsigned int execute () { return refactor_eh (); } + virtual bool gate (function *) { return flag_exceptions != 0; } + virtual unsigned int execute (function *) + { + refactor_eh_r (gimple_body (current_function_decl)); + return 0; + } }; // class pass_refactor_eh @@ -3312,8 +3301,37 @@ lower_resx (basic_block bb, gimple stmt, struct pointer_map_t *mnt_map) return ret; } -static unsigned -execute_lower_resx (void) +namespace { + +const pass_data pass_data_lower_resx = +{ + GIMPLE_PASS, /* type */ + "resx", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_EH, /* tv_id */ + PROP_gimple_lcf, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_flow, /* todo_flags_finish */ +}; + +class pass_lower_resx : public gimple_opt_pass +{ +public: + pass_lower_resx (gcc::context *ctxt) + : gimple_opt_pass (pass_data_lower_resx, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return flag_exceptions != 0; } + virtual unsigned int execute (function *); + +}; // class pass_lower_resx + +unsigned +pass_lower_resx::execute (function *fun) { basic_block bb; struct pointer_map_t *mnt_map; @@ -3322,7 +3340,7 @@ execute_lower_resx (void) mnt_map = pointer_map_create (); - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple last = last_stmt (bb); if (last && is_gimple_resx (last)) @@ -3343,42 +3361,6 @@ execute_lower_resx (void) return any_rewritten ? TODO_update_ssa_only_virtuals : 0; } -static bool -gate_lower_resx (void) -{ - return flag_exceptions != 0; -} - -namespace { - -const pass_data pass_data_lower_resx = -{ - GIMPLE_PASS, /* type */ - "resx", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_EH, /* tv_id */ - PROP_gimple_lcf, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_flow, /* todo_flags_finish */ -}; - -class pass_lower_resx : public gimple_opt_pass -{ -public: - pass_lower_resx (gcc::context *ctxt) - : gimple_opt_pass (pass_data_lower_resx, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_lower_resx (); } - unsigned int execute () { return execute_lower_resx (); } - -}; // class pass_lower_resx - } // anon namespace gimple_opt_pass * @@ -3719,8 +3701,37 @@ lower_eh_dispatch (basic_block src, gimple stmt) return redirected; } -static unsigned -execute_lower_eh_dispatch (void) +namespace { + +const pass_data pass_data_lower_eh_dispatch = +{ + GIMPLE_PASS, /* type */ + "ehdisp", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_EH, /* tv_id */ + PROP_gimple_lcf, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_flow, /* todo_flags_finish */ +}; + +class pass_lower_eh_dispatch : public gimple_opt_pass +{ +public: + pass_lower_eh_dispatch (gcc::context *ctxt) + : gimple_opt_pass (pass_data_lower_eh_dispatch, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *fun) { return fun->eh->region_tree != NULL; } + virtual unsigned int execute (function *); + +}; // class pass_lower_eh_dispatch + +unsigned +pass_lower_eh_dispatch::execute (function *fun) { basic_block bb; int flags = 0; @@ -3728,7 +3739,7 @@ execute_lower_eh_dispatch (void) assign_filter_values (); - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple last = last_stmt (bb); if (last == NULL) @@ -3752,42 +3763,6 @@ execute_lower_eh_dispatch (void) return flags; } -static bool -gate_lower_eh_dispatch (void) -{ - return cfun->eh->region_tree != NULL; -} - -namespace { - -const pass_data pass_data_lower_eh_dispatch = -{ - GIMPLE_PASS, /* type */ - "ehdisp", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_EH, /* tv_id */ - PROP_gimple_lcf, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_flow, /* todo_flags_finish */ -}; - -class pass_lower_eh_dispatch : public gimple_opt_pass -{ -public: - pass_lower_eh_dispatch (gcc::context *ctxt) - : gimple_opt_pass (pass_data_lower_eh_dispatch, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_lower_eh_dispatch (); } - unsigned int execute () { return execute_lower_eh_dispatch (); } - -}; // class pass_lower_eh_dispatch - } // anon namespace gimple_opt_pass * @@ -4585,27 +4560,6 @@ execute_cleanup_eh_1 (void) return 0; } -static unsigned int -execute_cleanup_eh (void) -{ - int ret = execute_cleanup_eh_1 (); - - /* If the function no longer needs an EH personality routine - clear it. This exposes cross-language inlining opportunities - and avoids references to a never defined personality routine. */ - if (DECL_FUNCTION_PERSONALITY (current_function_decl) - && function_needs_eh_personality (cfun) != eh_personality_lang) - DECL_FUNCTION_PERSONALITY (current_function_decl) = NULL_TREE; - - return ret; -} - -static bool -gate_cleanup_eh (void) -{ - return cfun->eh != NULL && cfun->eh->region_tree != NULL; -} - namespace { const pass_data pass_data_cleanup_eh = @@ -4613,7 +4567,6 @@ const pass_data pass_data_cleanup_eh = GIMPLE_PASS, /* type */ "ehcleanup", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_EH, /* tv_id */ PROP_gimple_lcf, /* properties_required */ @@ -4632,11 +4585,30 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_cleanup_eh (m_ctxt); } - bool gate () { return gate_cleanup_eh (); } - unsigned int execute () { return execute_cleanup_eh (); } + virtual bool gate (function *fun) + { + return fun->eh != NULL && fun->eh->region_tree != NULL; + } + + virtual unsigned int execute (function *); }; // class pass_cleanup_eh +unsigned int +pass_cleanup_eh::execute (function *fun) +{ + int ret = execute_cleanup_eh_1 (); + + /* If the function no longer needs an EH personality routine + clear it. This exposes cross-language inlining opportunities + and avoids references to a never defined personality routine. */ + if (DECL_FUNCTION_PERSONALITY (current_function_decl) + && function_needs_eh_personality (fun) != eh_personality_lang) + DECL_FUNCTION_PERSONALITY (current_function_decl) = NULL_TREE; + + return ret; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-emutls.c b/gcc/tree-emutls.c index 3391cc3e9ae..0ed503aec3f 100644 --- a/gcc/tree-emutls.c +++ b/gcc/tree-emutls.c @@ -816,14 +816,6 @@ ipa_lower_emutls (void) return TODO_verify_all; } -/* If the target supports TLS natively, we need do nothing here. */ - -static bool -gate_emutls (void) -{ - return !targetm.have_tls; -} - namespace { const pass_data pass_data_ipa_lower_emutls = @@ -831,7 +823,6 @@ const pass_data pass_data_ipa_lower_emutls = SIMPLE_IPA_PASS, /* type */ "emutls", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_OPT, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -849,8 +840,13 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_emutls (); } - unsigned int execute () { return ipa_lower_emutls (); } + virtual bool gate (function *) + { + /* If the target supports TLS natively, we need do nothing here. */ + return !targetm.have_tls; + } + + virtual unsigned int execute (function *) { return ipa_lower_emutls (); } }; // class pass_ipa_lower_emutls diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 7ff21329cf1..21a9f05c78b 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -1986,44 +1986,6 @@ tree_if_conversion (struct loop *loop) /* Tree if-conversion pass management. */ -static unsigned int -main_tree_if_conversion (void) -{ - struct loop *loop; - unsigned todo = 0; - - if (number_of_loops (cfun) <= 1) - return 0; - - FOR_EACH_LOOP (loop, 0) - if (flag_tree_loop_if_convert == 1 - || flag_tree_loop_if_convert_stores == 1 - || ((flag_tree_loop_vectorize || loop->force_vectorize) - && !loop->dont_vectorize)) - todo |= tree_if_conversion (loop); - -#ifdef ENABLE_CHECKING - { - basic_block bb; - FOR_EACH_BB_FN (bb, cfun) - gcc_assert (!bb->aux); - } -#endif - - return todo; -} - -/* Returns true when the if-conversion pass is enabled. */ - -static bool -gate_tree_if_conversion (void) -{ - return (((flag_tree_loop_vectorize || cfun->has_force_vectorize_loops) - && flag_tree_loop_if_convert != 0) - || flag_tree_loop_if_convert == 1 - || flag_tree_loop_if_convert_stores == 1); -} - namespace { const pass_data pass_data_if_conversion = @@ -2031,7 +1993,6 @@ const pass_data pass_data_if_conversion = GIMPLE_PASS, /* type */ "ifcvt", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -2050,11 +2011,47 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_if_conversion (); } - unsigned int execute () { return main_tree_if_conversion (); } + virtual bool gate (function *); + virtual unsigned int execute (function *); }; // class pass_if_conversion +bool +pass_if_conversion::gate (function *fun) +{ + return (((flag_tree_loop_vectorize || fun->has_force_vectorize_loops) + && flag_tree_loop_if_convert != 0) + || flag_tree_loop_if_convert == 1 + || flag_tree_loop_if_convert_stores == 1); +} + +unsigned int +pass_if_conversion::execute (function *fun) +{ + struct loop *loop; + unsigned todo = 0; + + if (number_of_loops (fun) <= 1) + return 0; + + FOR_EACH_LOOP (loop, 0) + if (flag_tree_loop_if_convert == 1 + || flag_tree_loop_if_convert_stores == 1 + || ((flag_tree_loop_vectorize || loop->force_vectorize) + && !loop->dont_vectorize)) + todo |= tree_if_conversion (loop); + +#ifdef ENABLE_CHECKING + { + basic_block bb; + FOR_EACH_BB_FN (bb, fun) + gcc_assert (!bb->aux); + } +#endif + + return todo; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 3ca2bd10bcf..8fc419344c7 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -2299,15 +2299,49 @@ fini_ssa_renamer (void) Steps 3 and 4 are done using the dominator tree walker (walk_dominator_tree). */ -static unsigned int -rewrite_into_ssa (void) +namespace { + +const pass_data pass_data_build_ssa = +{ + GIMPLE_PASS, /* type */ + "ssa", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_SSA_OTHER, /* tv_id */ + PROP_cfg, /* properties_required */ + PROP_ssa, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_verify_ssa | TODO_remove_unused_locals ), /* todo_flags_finish */ +}; + +class pass_build_ssa : public gimple_opt_pass +{ +public: + pass_build_ssa (gcc::context *ctxt) + : gimple_opt_pass (pass_data_build_ssa, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *fun) + { + /* Do nothing for funcions that was produced already in SSA form. */ + return !(fun->curr_properties & PROP_ssa); + } + + virtual unsigned int execute (function *); + +}; // class pass_build_ssa + +unsigned int +pass_build_ssa::execute (function *fun) { bitmap_head *dfs; basic_block bb; unsigned i; /* Initialize operand data structures. */ - init_ssa_operands (cfun); + init_ssa_operands (fun); /* Initialize internal data needed by the renamer. */ init_ssa_renamer (); @@ -2315,12 +2349,12 @@ rewrite_into_ssa (void) /* Initialize the set of interesting blocks. The callback mark_def_sites will add to this set those blocks that the renamer should process. */ - interesting_blocks = sbitmap_alloc (last_basic_block_for_fn (cfun)); + interesting_blocks = sbitmap_alloc (last_basic_block_for_fn (fun)); bitmap_clear (interesting_blocks); /* Initialize dominance frontier. */ - dfs = XNEWVEC (bitmap_head, last_basic_block_for_fn (cfun)); - FOR_EACH_BB_FN (bb, cfun) + dfs = XNEWVEC (bitmap_head, last_basic_block_for_fn (fun)); + FOR_EACH_BB_FN (bb, fun) bitmap_initialize (&dfs[bb->index], &bitmap_default_obstack); /* 1- Compute dominance frontiers. */ @@ -2328,16 +2362,16 @@ rewrite_into_ssa (void) compute_dominance_frontiers (dfs); /* 2- Find and mark definition sites. */ - mark_def_dom_walker (CDI_DOMINATORS).walk (cfun->cfg->x_entry_block_ptr); + mark_def_dom_walker (CDI_DOMINATORS).walk (fun->cfg->x_entry_block_ptr); /* 3- Insert PHI nodes at dominance frontiers of definition blocks. */ insert_phi_nodes (dfs); /* 4- Rename all the blocks. */ - rewrite_blocks (ENTRY_BLOCK_PTR_FOR_FN (cfun), REWRITE_ALL); + rewrite_blocks (ENTRY_BLOCK_PTR_FOR_FN (fun), REWRITE_ALL); /* Free allocated memory. */ - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) bitmap_clear (&dfs[bb->index]); free (dfs); @@ -2365,45 +2399,6 @@ rewrite_into_ssa (void) return 0; } -/* Gate for IPCP optimization. */ - -static bool -gate_into_ssa (void) -{ - /* Do nothing for funcions that was produced already in SSA form. */ - return !(cfun->curr_properties & PROP_ssa); -} - -namespace { - -const pass_data pass_data_build_ssa = -{ - GIMPLE_PASS, /* type */ - "ssa", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_SSA_OTHER, /* tv_id */ - PROP_cfg, /* properties_required */ - PROP_ssa, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_verify_ssa | TODO_remove_unused_locals ), /* todo_flags_finish */ -}; - -class pass_build_ssa : public gimple_opt_pass -{ -public: - pass_build_ssa (gcc::context *ctxt) - : gimple_opt_pass (pass_data_build_ssa, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_into_ssa (); } - unsigned int execute () { return rewrite_into_ssa (); } - -}; // class pass_build_ssa - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index 9db92dbf9bf..5fff7be5bd8 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -1669,15 +1669,49 @@ distribute_loop (struct loop *loop, vec<gimple> stmts, /* Distribute all loops in the current function. */ -static unsigned int -tree_loop_distribution (void) +namespace { + +const pass_data pass_data_loop_distribution = +{ + GIMPLE_PASS, /* type */ + "ldist", /* name */ + OPTGROUP_LOOP, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_LOOP_DISTRIBUTION, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_ssa, /* todo_flags_finish */ +}; + +class pass_loop_distribution : public gimple_opt_pass +{ +public: + pass_loop_distribution (gcc::context *ctxt) + : gimple_opt_pass (pass_data_loop_distribution, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) + { + return flag_tree_loop_distribution + || flag_tree_loop_distribute_patterns; + } + + virtual unsigned int execute (function *); + +}; // class pass_loop_distribution + +unsigned int +pass_loop_distribution::execute (function *fun) { struct loop *loop; bool changed = false; basic_block bb; control_dependences *cd = NULL; - FOR_ALL_BB_FN (bb, cfun) + FOR_ALL_BB_FN (bb, fun) { gimple_stmt_iterator gsi; for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) @@ -1715,7 +1749,7 @@ tree_loop_distribution (void) if (virtual_operand_p (gimple_phi_result (phi))) continue; /* Distribute stmts which have defs that are used outside of - the loop. */ + the loop. */ if (!stmt_has_scalar_dependences_outside_loop (loop, phi)) continue; work_list.safe_push (phi); @@ -1725,7 +1759,7 @@ tree_loop_distribution (void) gimple stmt = gsi_stmt (gsi); /* If there is a stmt with side-effects bail out - we - cannot and should not distribute this loop. */ + cannot and should not distribute this loop. */ if (gimple_has_side_effects (stmt)) { work_list.truncate (0); @@ -1733,7 +1767,7 @@ tree_loop_distribution (void) } /* Distribute stmts which have defs that are used outside of - the loop. */ + the loop. */ if (stmt_has_scalar_dependences_outside_loop (loop, stmt)) ; /* Otherwise only distribute stores for now. */ @@ -1779,7 +1813,7 @@ out: if (changed) { - mark_virtual_operands_for_renaming (cfun); + mark_virtual_operands_for_renaming (fun); rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa); } @@ -1790,43 +1824,6 @@ out: return 0; } -static bool -gate_tree_loop_distribution (void) -{ - return flag_tree_loop_distribution - || flag_tree_loop_distribute_patterns; -} - -namespace { - -const pass_data pass_data_loop_distribution = -{ - GIMPLE_PASS, /* type */ - "ldist", /* name */ - OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_LOOP_DISTRIBUTION, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_ssa, /* todo_flags_finish */ -}; - -class pass_loop_distribution : public gimple_opt_pass -{ -public: - pass_loop_distribution (gcc::context *ctxt) - : gimple_opt_pass (pass_data_loop_distribution, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_tree_loop_distribution (); } - unsigned int execute () { return tree_loop_distribution (); } - -}; // class pass_loop_distribution - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-nrv.c b/gcc/tree-nrv.c index b443388a2a9..45b16f4f401 100644 --- a/gcc/tree-nrv.c +++ b/gcc/tree-nrv.c @@ -113,8 +113,38 @@ finalize_nrv_r (tree *tp, int *walk_subtrees, void *data) then we could either have the languages register the optimization or we could change the gating function to check the current language. */ -static unsigned int -tree_nrv (void) +namespace { + +const pass_data pass_data_nrv = +{ + GIMPLE_PASS, /* type */ + "nrv", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_NRV, /* tv_id */ + ( PROP_ssa | PROP_cfg ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_nrv : public gimple_opt_pass +{ +public: + pass_nrv (gcc::context *ctxt) + : gimple_opt_pass (pass_data_nrv, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return optimize > 0; } + + virtual unsigned int execute (function *); + +}; // class pass_nrv + +unsigned int +pass_nrv::execute (function *fun) { tree result = DECL_RESULT (current_function_decl); tree result_type = TREE_TYPE (result); @@ -144,7 +174,7 @@ tree_nrv (void) return 0; /* Look through each block for assignments to the RESULT_DECL. */ - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) { @@ -238,7 +268,7 @@ tree_nrv (void) RESULT. */ data.var = found; data.result = result; - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); ) { @@ -272,42 +302,6 @@ tree_nrv (void) return 0; } -static bool -gate_pass_return_slot (void) -{ - return optimize > 0; -} - -namespace { - -const pass_data pass_data_nrv = -{ - GIMPLE_PASS, /* type */ - "nrv", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_NRV, /* tv_id */ - ( PROP_ssa | PROP_cfg ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_nrv : public gimple_opt_pass -{ -public: - pass_nrv (gcc::context *ctxt) - : gimple_opt_pass (pass_data_nrv, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_pass_return_slot (); } - unsigned int execute () { return tree_nrv (); } - -}; // class pass_nrv - } // anon namespace gimple_opt_pass * @@ -353,35 +347,6 @@ dest_safe_for_nrv_p (gimple call) escaped prior to the call. If it has, modifications to the local variable will produce visible changes elsewhere, as in PR c++/19317. */ -static unsigned int -execute_return_slot_opt (void) -{ - basic_block bb; - - FOR_EACH_BB_FN (bb, cfun) - { - gimple_stmt_iterator gsi; - for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - { - gimple stmt = gsi_stmt (gsi); - bool slot_opt_p; - - if (is_gimple_call (stmt) - && gimple_call_lhs (stmt) - && !gimple_call_return_slot_opt_p (stmt) - && aggregate_value_p (TREE_TYPE (gimple_call_lhs (stmt)), - gimple_call_fndecl (stmt))) - { - /* Check if the location being assigned to is - clobbered by the call. */ - slot_opt_p = dest_safe_for_nrv_p (stmt); - gimple_call_set_return_slot_opt (stmt, slot_opt_p); - } - } - } - return 0; -} - namespace { const pass_data pass_data_return_slot = @@ -389,7 +354,6 @@ const pass_data pass_data_return_slot = GIMPLE_PASS, /* type */ "retslot", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ @@ -407,10 +371,39 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return execute_return_slot_opt (); } + virtual unsigned int execute (function *); }; // class pass_return_slot +unsigned int +pass_return_slot::execute (function *fun) +{ + basic_block bb; + + FOR_EACH_BB_FN (bb, fun) + { + gimple_stmt_iterator gsi; + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + { + gimple stmt = gsi_stmt (gsi); + bool slot_opt_p; + + if (is_gimple_call (stmt) + && gimple_call_lhs (stmt) + && !gimple_call_return_slot_opt_p (stmt) + && aggregate_value_p (TREE_TYPE (gimple_call_lhs (stmt)), + gimple_call_fndecl (stmt))) + { + /* Check if the location being assigned to is + clobbered by the call. */ + slot_opt_p = dest_safe_for_nrv_p (stmt); + gimple_call_set_return_slot_opt (stmt, slot_opt_p); + } + } + } + return 0; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index 86b74f7f724..865c1dfb17b 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -66,7 +66,6 @@ static bool merge_object_sizes (struct object_size_info *, tree, tree, unsigned HOST_WIDE_INT); static bool plus_stmt_object_size (struct object_size_info *, tree, gimple); static bool cond_expr_object_size (struct object_size_info *, tree, gimple); -static unsigned int compute_object_sizes (void); static void init_offset_limit (void); static void check_for_plus_in_loops (struct object_size_info *, tree); static void check_for_plus_in_loops_1 (struct object_size_info *, tree, @@ -1207,11 +1206,40 @@ fini_object_sizes (void) /* Simple pass to optimize all __builtin_object_size () builtins. */ -static unsigned int -compute_object_sizes (void) +namespace { + +const pass_data pass_data_object_sizes = +{ + GIMPLE_PASS, /* type */ + "objsz", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_ssa, /* todo_flags_finish */ +}; + +class pass_object_sizes : public gimple_opt_pass +{ +public: + pass_object_sizes (gcc::context *ctxt) + : gimple_opt_pass (pass_data_object_sizes, ctxt) + {} + + /* opt_pass methods: */ + opt_pass * clone () { return new pass_object_sizes (m_ctxt); } + virtual unsigned int execute (function *); + +}; // class pass_object_sizes + +unsigned int +pass_object_sizes::execute (function *fun) { basic_block bb; - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator i; for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i)) @@ -1281,36 +1309,6 @@ compute_object_sizes (void) return 0; } -namespace { - -const pass_data pass_data_object_sizes = -{ - GIMPLE_PASS, /* type */ - "objsz", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_ssa, /* todo_flags_finish */ -}; - -class pass_object_sizes : public gimple_opt_pass -{ -public: - pass_object_sizes (gcc::context *ctxt) - : gimple_opt_pass (pass_data_object_sizes, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_object_sizes (m_ctxt); } - unsigned int execute () { return compute_object_sizes (); } - -}; // class pass_object_sizes - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index 47179a967ec..79b327b02c0 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -2253,23 +2253,6 @@ parallelize_loops (void) /* Parallelization. */ -static bool -gate_tree_parallelize_loops (void) -{ - return flag_tree_parallelize_loops > 1; -} - -static unsigned -tree_parallelize_loops (void) -{ - if (number_of_loops (cfun) <= 1) - return 0; - - if (parallelize_loops ()) - return TODO_cleanup_cfg | TODO_rebuild_alias; - return 0; -} - namespace { const pass_data pass_data_parallelize_loops = @@ -2277,7 +2260,6 @@ const pass_data pass_data_parallelize_loops = GIMPLE_PASS, /* type */ "parloops", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_PARALLELIZE_LOOPS, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -2295,11 +2277,22 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_parallelize_loops (); } - unsigned int execute () { return tree_parallelize_loops (); } + virtual bool gate (function *) { return flag_tree_parallelize_loops > 1; } + virtual unsigned int execute (function *); }; // class pass_parallelize_loops +unsigned +pass_parallelize_loops::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + if (parallelize_loops ()) + return TODO_cleanup_cfg | TODO_rebuild_alias; + return 0; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 3b867709811..e63f3069068 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -25,6 +25,8 @@ along with GCC; see the file COPYING3. If not see #include "timevar.h" #include "dumpfile.h" +struct function; + /* Optimization pass type. */ enum opt_pass_type { @@ -47,10 +49,6 @@ struct pass_data /* The -fopt-info optimization group flags as defined in dumpfile.h. */ unsigned int optinfo_flags; - /* If true, this pass has its own implementation of the opt_pass::gate - method. */ - bool has_gate; - /* If true, this pass has its own implementation of the opt_pass::execute method. */ bool has_execute; @@ -90,16 +88,15 @@ public: The default implementation prints an error message and aborts. */ virtual opt_pass *clone (); - /* If has_gate is set, this pass and all sub-passes are executed only if - the function returns true. - The default implementation returns true. */ - virtual bool gate (); + /* This pass and all sub-passes are executed only if the function returns + true. The default implementation returns true. */ + virtual bool gate (function *fun); /* This is the code to run. If has_execute is false, then there should be sub-passes otherwise this pass does nothing. The return value contains TODOs to execute in addition to those in TODO_flags_finish. */ - virtual unsigned int execute (); + virtual unsigned int execute (function *fun); protected: opt_pass (const pass_data&, gcc::context *); diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c index 35743cbe3bd..2cb47db4e51 100644 --- a/gcc/tree-predcom.c +++ b/gcc/tree-predcom.c @@ -2573,12 +2573,6 @@ run_tree_predictive_commoning (void) return tree_predictive_commoning (); } -static bool -gate_tree_predictive_commoning (void) -{ - return flag_predictive_commoning != 0; -} - namespace { const pass_data pass_data_predcom = @@ -2586,7 +2580,6 @@ const pass_data pass_data_predcom = GIMPLE_PASS, /* type */ "pcom", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_PREDCOM, /* tv_id */ PROP_cfg, /* properties_required */ @@ -2604,8 +2597,11 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_predictive_commoning (); } - unsigned int execute () { return run_tree_predictive_commoning (); } + virtual bool gate (function *) { return flag_predictive_commoning != 0; } + virtual unsigned int execute (function *) + { + return run_tree_predictive_commoning (); + } }; // class pass_predcom diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c index 02e9ff27ed0..deefa8b992a 100644 --- a/gcc/tree-profile.c +++ b/gcc/tree-profile.c @@ -663,16 +663,6 @@ tree_profiling (void) return 0; } -/* When profile instrumentation, use or test coverage shall be performed. */ - -static bool -gate_tree_profile_ipa (void) -{ - return (!in_lto_p - && (flag_branch_probabilities || flag_test_coverage - || profile_arc_flag)); -} - namespace { const pass_data pass_data_ipa_tree_profile = @@ -680,7 +670,6 @@ const pass_data pass_data_ipa_tree_profile = SIMPLE_IPA_PASS, /* type */ "profile", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_PROFILE, /* tv_id */ 0, /* properties_required */ @@ -698,11 +687,20 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_profile_ipa (); } - unsigned int execute () { return tree_profiling (); } + virtual bool gate (function *); + virtual unsigned int execute (function *) { return tree_profiling (); } }; // class pass_ipa_tree_profile +bool +pass_ipa_tree_profile::gate (function *) +{ + /* When profile instrumentation, use or test coverage shall be performed. */ + return (!in_lto_p + && (flag_branch_probabilities || flag_test_coverage + || profile_arc_flag)); +} + } // anon namespace simple_ipa_opt_pass * diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 91286b44842..49bbee3deb7 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -1142,17 +1142,41 @@ build_access_from_expr (tree expr, gimple stmt, bool write) return false; } -/* Disqualify LHS and RHS for scalarization if STMT must end its basic block in - modes in which it matters, return true iff they have been disqualified. RHS - may be NULL, in that case ignore it. If we scalarize an aggregate in - intra-SRA we may need to add statements after each statement. This is not - possible if a statement unconditionally has to end the basic block. */ +/* Return the single non-EH successor edge of BB or NULL if there is none or + more than one. */ + +static edge +single_non_eh_succ (basic_block bb) +{ + edge e, res = NULL; + edge_iterator ei; + + FOR_EACH_EDGE (e, ei, bb->succs) + if (!(e->flags & EDGE_EH)) + { + if (res) + return NULL; + res = e; + } + + return res; +} + +/* Disqualify LHS and RHS for scalarization if STMT has to terminate its BB and + there is no alternative spot where to put statements SRA might need to + generate after it. The spot we are looking for is an edge leading to a + single non-EH successor, if it exists and is indeed single. RHS may be + NULL, in that case ignore it. */ + static bool -disqualify_ops_if_throwing_stmt (gimple stmt, tree lhs, tree rhs) +disqualify_if_bad_bb_terminating_stmt (gimple stmt, tree lhs, tree rhs) { if ((sra_mode == SRA_MODE_EARLY_INTRA || sra_mode == SRA_MODE_INTRA) - && (stmt_can_throw_internal (stmt) || stmt_ends_bb_p (stmt))) + && stmt_ends_bb_p (stmt)) { + if (single_non_eh_succ (gimple_bb (stmt))) + return false; + disqualify_base_of_expr (lhs, "LHS of a throwing stmt."); if (rhs) disqualify_base_of_expr (rhs, "RHS of a throwing stmt."); @@ -1180,7 +1204,7 @@ build_accesses_from_assign (gimple stmt) lhs = gimple_assign_lhs (stmt); rhs = gimple_assign_rhs1 (stmt); - if (disqualify_ops_if_throwing_stmt (stmt, lhs, rhs)) + if (disqualify_if_bad_bb_terminating_stmt (stmt, lhs, rhs)) return false; racc = build_access_from_expr_1 (rhs, stmt, false); @@ -1319,7 +1343,7 @@ scan_function (void) } t = gimple_call_lhs (stmt); - if (t && !disqualify_ops_if_throwing_stmt (stmt, t, NULL)) + if (t && !disqualify_if_bad_bb_terminating_stmt (stmt, t, NULL)) ret |= build_access_from_expr (t, stmt, true); break; @@ -2763,6 +2787,13 @@ sra_modify_expr (tree *expr, gimple_stmt_iterator *gsi, bool write) type = TREE_TYPE (*expr); loc = gimple_location (gsi_stmt (*gsi)); + gimple_stmt_iterator alt_gsi = gsi_none (); + if (write && stmt_ends_bb_p (gsi_stmt (*gsi))) + { + alt_gsi = gsi_start_edge (single_non_eh_succ (gsi_bb (*gsi))); + gsi = &alt_gsi; + } + if (access->grp_to_be_replaced) { tree repl = get_access_replacement (access); @@ -3226,14 +3257,23 @@ sra_modify_assign (gimple *stmt, gimple_stmt_iterator *gsi) if (modify_this_stmt || gimple_has_volatile_ops (*stmt) || contains_vce_or_bfcref_p (rhs) - || contains_vce_or_bfcref_p (lhs)) + || contains_vce_or_bfcref_p (lhs) + || stmt_ends_bb_p (*stmt)) { if (access_has_children_p (racc)) generate_subtree_copies (racc->first_child, racc->base, 0, 0, 0, gsi, false, false, loc); if (access_has_children_p (lacc)) - generate_subtree_copies (lacc->first_child, lacc->base, 0, 0, 0, - gsi, true, true, loc); + { + gimple_stmt_iterator alt_gsi = gsi_none (); + if (stmt_ends_bb_p (*stmt)) + { + alt_gsi = gsi_start_edge (single_non_eh_succ (gsi_bb (*gsi))); + gsi = &alt_gsi; + } + generate_subtree_copies (lacc->first_child, lacc->base, 0, 0, 0, + gsi, true, true, loc); + } sra_stats.separate_lhs_rhs_handling++; /* This gimplification must be done after generate_subtree_copies, @@ -3397,6 +3437,7 @@ sra_modify_function_body (void) } } + gsi_commit_edge_inserts (); return cfg_changed; } @@ -3507,7 +3548,6 @@ const pass_data pass_data_sra_early = GIMPLE_PASS, /* type */ "esra", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_SRA, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -3525,8 +3565,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_intra_sra (); } - unsigned int execute () { return early_intra_sra (); } + virtual bool gate (function *) { return gate_intra_sra (); } + virtual unsigned int execute (function *) { return early_intra_sra (); } }; // class pass_sra_early @@ -3545,7 +3585,6 @@ const pass_data pass_data_sra = GIMPLE_PASS, /* type */ "sra", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_SRA, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -3563,8 +3602,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_intra_sra (); } - unsigned int execute () { return late_intra_sra (); } + virtual bool gate (function *) { return gate_intra_sra (); } + virtual unsigned int execute (function *) { return late_intra_sra (); } }; // class pass_sra @@ -5053,13 +5092,6 @@ ipa_early_sra (void) return ret; } -/* Return if early ipa sra shall be performed. */ -static bool -ipa_early_sra_gate (void) -{ - return flag_ipa_sra && dbg_cnt (eipa_sra); -} - namespace { const pass_data pass_data_early_ipa_sra = @@ -5067,7 +5099,6 @@ const pass_data pass_data_early_ipa_sra = GIMPLE_PASS, /* type */ "eipa_sra", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_SRA, /* tv_id */ 0, /* properties_required */ @@ -5085,8 +5116,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return ipa_early_sra_gate (); } - unsigned int execute () { return ipa_early_sra (); } + virtual bool gate (function *) { return flag_ipa_sra && dbg_cnt (eipa_sra); } + virtual unsigned int execute (function *) { return ipa_early_sra (); } }; // class pass_early_ipa_sra diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index e5256683559..1fcbe09bb92 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -2324,13 +2324,6 @@ do_ssa_ccp (void) } -static bool -gate_ccp (void) -{ - return flag_tree_ccp != 0; -} - - namespace { const pass_data pass_data_ccp = @@ -2338,7 +2331,6 @@ const pass_data pass_data_ccp = GIMPLE_PASS, /* type */ "ccp", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_CCP, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -2358,8 +2350,8 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_ccp (m_ctxt); } - bool gate () { return gate_ccp (); } - unsigned int execute () { return do_ssa_ccp (); } + virtual bool gate (function *) { return flag_tree_ccp != 0; } + virtual unsigned int execute (function *) { return do_ssa_ccp (); } }; // class pass_ccp @@ -2604,14 +2596,43 @@ optimize_unreachable (gimple_stmt_iterator i) /* A simple pass that attempts to fold all builtin functions. This pass is run after we've propagated as many constants as we can. */ -static unsigned int -execute_fold_all_builtins (void) +namespace { + +const pass_data pass_data_fold_builtins = +{ + GIMPLE_PASS, /* type */ + "fab", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_verify_ssa | TODO_update_ssa ), /* todo_flags_finish */ +}; + +class pass_fold_builtins : public gimple_opt_pass +{ +public: + pass_fold_builtins (gcc::context *ctxt) + : gimple_opt_pass (pass_data_fold_builtins, ctxt) + {} + + /* opt_pass methods: */ + opt_pass * clone () { return new pass_fold_builtins (m_ctxt); } + virtual unsigned int execute (function *); + +}; // class pass_fold_builtins + +unsigned int +pass_fold_builtins::execute (function *fun) { bool cfg_changed = false; basic_block bb; unsigned int todoflags = 0; - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator i; for (i = gsi_start_bb (bb); !gsi_end_p (i); ) @@ -2653,7 +2674,7 @@ execute_fold_all_builtins (void) result = gimple_fold_builtin (stmt); if (result) - gimple_remove_stmt_histograms (cfun, stmt); + gimple_remove_stmt_histograms (fun, stmt); if (!result) switch (DECL_FUNCTION_CODE (callee)) @@ -2748,37 +2769,6 @@ execute_fold_all_builtins (void) return todoflags; } - -namespace { - -const pass_data pass_data_fold_builtins = -{ - GIMPLE_PASS, /* type */ - "fab", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_verify_ssa | TODO_update_ssa ), /* todo_flags_finish */ -}; - -class pass_fold_builtins : public gimple_opt_pass -{ -public: - pass_fold_builtins (gcc::context *ctxt) - : gimple_opt_pass (pass_data_fold_builtins, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_fold_builtins (m_ctxt); } - unsigned int execute () { return execute_fold_all_builtins (); } - -}; // class pass_fold_builtins - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c index 02f474355b7..6e3a5693aa7 100644 --- a/gcc/tree-ssa-copy.c +++ b/gcc/tree-ssa-copy.c @@ -644,12 +644,6 @@ execute_copy_prop (void) return 0; } -static bool -gate_copy_prop (void) -{ - return flag_tree_copy_prop != 0; -} - namespace { const pass_data pass_data_copy_prop = @@ -657,7 +651,6 @@ const pass_data pass_data_copy_prop = GIMPLE_PASS, /* type */ "copyprop", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_COPY_PROP, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -677,8 +670,8 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_copy_prop (m_ctxt); } - bool gate () { return gate_copy_prop (); } - unsigned int execute () { return execute_copy_prop (); } + virtual bool gate (function *) { return flag_tree_copy_prop != 0; } + virtual unsigned int execute (function *) { return execute_copy_prop (); } }; // class pass_copy_prop diff --git a/gcc/tree-ssa-copyrename.c b/gcc/tree-ssa-copyrename.c index bc947b608e3..b9c9ba39950 100644 --- a/gcc/tree-ssa-copyrename.c +++ b/gcc/tree-ssa-copyrename.c @@ -299,14 +299,44 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug) } +namespace { + +const pass_data pass_data_rename_ssa_copies = +{ + GIMPLE_PASS, /* type */ + "copyrename", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_COPY_RENAME, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_ssa, /* todo_flags_finish */ +}; + +class pass_rename_ssa_copies : public gimple_opt_pass +{ +public: + pass_rename_ssa_copies (gcc::context *ctxt) + : gimple_opt_pass (pass_data_rename_ssa_copies, ctxt) + {} + + /* opt_pass methods: */ + opt_pass * clone () { return new pass_rename_ssa_copies (m_ctxt); } + virtual bool gate (function *) { return flag_tree_copyrename != 0; } + virtual unsigned int execute (function *); + +}; // class pass_rename_ssa_copies + /* This function will make a pass through the IL, and attempt to coalesce any SSA versions which occur in PHI's or copies. Coalescing is accomplished by changing the underlying root variable of all coalesced version. This will then cause the SSA->normal pass to attempt to coalesce them all to the same variable. */ -static unsigned int -rename_ssa_copies (void) +unsigned int +pass_rename_ssa_copies::execute (function *fun) { var_map map; basic_block bb; @@ -325,7 +355,7 @@ rename_ssa_copies (void) map = init_var_map (num_ssa_names); - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { /* Scan for real copies. */ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) @@ -341,7 +371,7 @@ rename_ssa_copies (void) } } - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { /* Treat PHI nodes as copies between the result and each argument. */ for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) @@ -429,51 +459,12 @@ rename_ssa_copies (void) replace_ssa_name_symbol (var, SSA_NAME_VAR (part_var)); } - statistics_counter_event (cfun, "copies coalesced", + statistics_counter_event (fun, "copies coalesced", stats.coalesced); delete_var_map (map); return 0; } -/* Return true if copy rename is to be performed. */ - -static bool -gate_copyrename (void) -{ - return flag_tree_copyrename != 0; -} - -namespace { - -const pass_data pass_data_rename_ssa_copies = -{ - GIMPLE_PASS, /* type */ - "copyrename", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_COPY_RENAME, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_ssa, /* todo_flags_finish */ -}; - -class pass_rename_ssa_copies : public gimple_opt_pass -{ -public: - pass_rename_ssa_copies (gcc::context *ctxt) - : gimple_opt_pass (pass_data_rename_ssa_copies, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_rename_ssa_copies (m_ctxt); } - bool gate () { return gate_copyrename (); } - unsigned int execute () { return rename_ssa_copies (); } - -}; // class pass_rename_ssa_copies - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index 13a71ceea0b..6389f238604 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -1504,12 +1504,6 @@ tree_ssa_cd_dce (void) return perform_tree_ssa_dce (/*aggressive=*/optimize >= 2); } -static bool -gate_dce (void) -{ - return flag_tree_dce != 0; -} - namespace { const pass_data pass_data_dce = @@ -1517,7 +1511,6 @@ const pass_data pass_data_dce = GIMPLE_PASS, /* type */ "dce", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_DCE, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -1536,8 +1529,8 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_dce (m_ctxt); } - bool gate () { return gate_dce (); } - unsigned int execute () { return tree_ssa_dce (); } + virtual bool gate (function *) { return flag_tree_dce != 0; } + virtual unsigned int execute (function *) { return tree_ssa_dce (); } }; // class pass_dce @@ -1556,7 +1549,6 @@ const pass_data pass_data_dce_loop = GIMPLE_PASS, /* type */ "dceloop", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_DCE, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -1575,8 +1567,8 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_dce_loop (m_ctxt); } - bool gate () { return gate_dce (); } - unsigned int execute () { return tree_ssa_dce_loop (); } + virtual bool gate (function *) { return flag_tree_dce != 0; } + virtual unsigned int execute (function *) { return tree_ssa_dce_loop (); } }; // class pass_dce_loop @@ -1595,7 +1587,6 @@ const pass_data pass_data_cd_dce = GIMPLE_PASS, /* type */ "cddce", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_CD_DCE, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -1614,8 +1605,8 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_cd_dce (m_ctxt); } - bool gate () { return gate_dce (); } - unsigned int execute () { return tree_ssa_cd_dce (); } + virtual bool gate (function *) { return flag_tree_dce != 0; } + virtual unsigned int execute (function *) { return tree_ssa_cd_dce (); } }; // class pass_cd_dce diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 91253dc0592..15c4fb07596 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -832,8 +832,40 @@ private: every new symbol exposed, its corresponding bit will be set in VARS_TO_RENAME. */ -static unsigned int -tree_ssa_dominator_optimize (void) +namespace { + +const pass_data pass_data_dominator = +{ + GIMPLE_PASS, /* type */ + "dom", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_SSA_DOMINATOR_OPTS, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_cleanup_cfg | TODO_update_ssa + | TODO_verify_ssa + | TODO_verify_flow ), /* todo_flags_finish */ +}; + +class pass_dominator : public gimple_opt_pass +{ +public: + pass_dominator (gcc::context *ctxt) + : gimple_opt_pass (pass_data_dominator, ctxt) + {} + + /* opt_pass methods: */ + opt_pass * clone () { return new pass_dominator (m_ctxt); } + virtual bool gate (function *) { return flag_tree_dom != 0; } + virtual unsigned int execute (function *); + +}; // class pass_dominator + +unsigned int +pass_dominator::execute (function *fun) { memset (&opt_stats, 0, sizeof (opt_stats)); @@ -867,12 +899,12 @@ tree_ssa_dominator_optimize (void) mark_dfs_back_edges (); /* Recursively walk the dominator tree optimizing statements. */ - dom_opt_dom_walker (CDI_DOMINATORS).walk (cfun->cfg->x_entry_block_ptr); + dom_opt_dom_walker (CDI_DOMINATORS).walk (fun->cfg->x_entry_block_ptr); { gimple_stmt_iterator gsi; basic_block bb; - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) update_stmt_if_modified (gsi_stmt (gsi)); @@ -908,13 +940,13 @@ tree_ssa_dominator_optimize (void) iterator. */ EXECUTE_IF_SET_IN_BITMAP (need_eh_cleanup, 0, i, bi) { - basic_block bb = BASIC_BLOCK_FOR_FN (cfun, i); + basic_block bb = BASIC_BLOCK_FOR_FN (fun, i); if (bb == NULL) continue; while (single_succ_p (bb) && (single_succ_edge (bb)->flags & EDGE_EH) == 0) bb = single_succ (bb); - if (bb == EXIT_BLOCK_PTR_FOR_FN (cfun)) + if (bb == EXIT_BLOCK_PTR_FOR_FN (fun)) continue; if ((unsigned) bb->index != i) bitmap_set_bit (need_eh_cleanup, bb->index); @@ -924,11 +956,11 @@ tree_ssa_dominator_optimize (void) bitmap_clear (need_eh_cleanup); } - statistics_counter_event (cfun, "Redundant expressions eliminated", + statistics_counter_event (fun, "Redundant expressions eliminated", opt_stats.num_re); - statistics_counter_event (cfun, "Constants propagated", + statistics_counter_event (fun, "Constants propagated", opt_stats.num_const_prop); - statistics_counter_event (cfun, "Copies propagated", + statistics_counter_event (fun, "Copies propagated", opt_stats.num_copy_prop); /* Debugging dumps. */ @@ -952,45 +984,6 @@ tree_ssa_dominator_optimize (void) return 0; } -static bool -gate_dominator (void) -{ - return flag_tree_dom != 0; -} - -namespace { - -const pass_data pass_data_dominator = -{ - GIMPLE_PASS, /* type */ - "dom", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_SSA_DOMINATOR_OPTS, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_cleanup_cfg | TODO_update_ssa - | TODO_verify_ssa - | TODO_verify_flow ), /* todo_flags_finish */ -}; - -class pass_dominator : public gimple_opt_pass -{ -public: - pass_dominator (gcc::context *ctxt) - : gimple_opt_pass (pass_data_dominator, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_dominator (m_ctxt); } - bool gate () { return gate_dominator (); } - unsigned int execute () { return tree_ssa_dominator_optimize (); } - -}; // class pass_dominator - } // anon namespace gimple_opt_pass * @@ -3032,8 +3025,40 @@ eliminate_degenerate_phis_1 (basic_block bb, bitmap interesting_names) pick up the secondary optimization opportunities with minimal cost. */ -static unsigned int -eliminate_degenerate_phis (void) +namespace { + +const pass_data pass_data_phi_only_cprop = +{ + GIMPLE_PASS, /* type */ + "phicprop", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_PHI_CPROP, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_cleanup_cfg | TODO_verify_ssa + | TODO_verify_stmts + | TODO_update_ssa ), /* todo_flags_finish */ +}; + +class pass_phi_only_cprop : public gimple_opt_pass +{ +public: + pass_phi_only_cprop (gcc::context *ctxt) + : gimple_opt_pass (pass_data_phi_only_cprop, ctxt) + {} + + /* opt_pass methods: */ + opt_pass * clone () { return new pass_phi_only_cprop (m_ctxt); } + virtual bool gate (function *) { return flag_tree_dom != 0; } + virtual unsigned int execute (function *); + +}; // class pass_phi_only_cprop + +unsigned int +pass_phi_only_cprop::execute (function *fun) { bitmap interesting_names; bitmap interesting_names1; @@ -3066,7 +3091,7 @@ eliminate_degenerate_phis (void) phase in dominator order. Presumably this is because walking in dominator order leaves fewer PHIs for later examination by the worklist phase. */ - eliminate_degenerate_phis_1 (ENTRY_BLOCK_PTR_FOR_FN (cfun), + eliminate_degenerate_phis_1 (ENTRY_BLOCK_PTR_FOR_FN (fun), interesting_names); /* Second phase. Eliminate second order degenerate PHIs as well @@ -3116,39 +3141,6 @@ eliminate_degenerate_phis (void) return 0; } -namespace { - -const pass_data pass_data_phi_only_cprop = -{ - GIMPLE_PASS, /* type */ - "phicprop", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_PHI_CPROP, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_cleanup_cfg | TODO_verify_ssa - | TODO_verify_stmts - | TODO_update_ssa ), /* todo_flags_finish */ -}; - -class pass_phi_only_cprop : public gimple_opt_pass -{ -public: - pass_phi_only_cprop (gcc::context *ctxt) - : gimple_opt_pass (pass_data_phi_only_cprop, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_phi_only_cprop (m_ctxt); } - bool gate () { return gate_dominator (); } - unsigned int execute () { return eliminate_degenerate_phis (); } - -}; // class pass_phi_only_cprop - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c index 2c2f3f7985a..af69063bd20 100644 --- a/gcc/tree-ssa-dse.c +++ b/gcc/tree-ssa-dse.c @@ -80,9 +80,6 @@ along with GCC; see the file COPYING3. If not see remove their dead edges eventually. */ static bitmap need_eh_cleanup; -static bool gate_dse (void); -static unsigned int tree_ssa_dse (void); - /* A helper of dse_optimize_stmt. Given a GIMPLE_ASSIGN in STMT, find a candidate statement *USE_STMT that @@ -328,10 +325,38 @@ dse_dom_walker::before_dom_children (basic_block bb) } } -/* Main entry point. */ +namespace { + +const pass_data pass_data_dse = +{ + GIMPLE_PASS, /* type */ + "dse", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_DSE, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_verify_ssa, /* todo_flags_finish */ +}; + +class pass_dse : public gimple_opt_pass +{ +public: + pass_dse (gcc::context *ctxt) + : gimple_opt_pass (pass_data_dse, ctxt) + {} -static unsigned int -tree_ssa_dse (void) + /* opt_pass methods: */ + opt_pass * clone () { return new pass_dse (m_ctxt); } + virtual bool gate (function *) { return flag_tree_dse != 0; } + virtual unsigned int execute (function *); + +}; // class pass_dse + +unsigned int +pass_dse::execute (function *fun) { need_eh_cleanup = BITMAP_ALLOC (NULL); @@ -346,7 +371,7 @@ tree_ssa_dse (void) /* Dead store elimination is fundamentally a walk of the post-dominator tree and a backwards walk of statements within each block. */ - dse_dom_walker (CDI_POST_DOMINATORS).walk (cfun->cfg->x_exit_block_ptr); + dse_dom_walker (CDI_POST_DOMINATORS).walk (fun->cfg->x_exit_block_ptr); /* Removal of stores may make some EH edges dead. Purge such edges from the CFG as needed. */ @@ -363,43 +388,6 @@ tree_ssa_dse (void) return 0; } -static bool -gate_dse (void) -{ - return flag_tree_dse != 0; -} - -namespace { - -const pass_data pass_data_dse = -{ - GIMPLE_PASS, /* type */ - "dse", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_DSE, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_ssa, /* todo_flags_finish */ -}; - -class pass_dse : public gimple_opt_pass -{ -public: - pass_dse (gcc::context *ctxt) - : gimple_opt_pass (pass_data_dse, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_dse (m_ctxt); } - bool gate () { return gate_dse (); } - unsigned int execute () { return tree_ssa_dse (); } - -}; // class pass_dse - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c index f921dc0b151..9a990f93122 100644 --- a/gcc/tree-ssa-forwprop.c +++ b/gcc/tree-ssa-forwprop.c @@ -3569,15 +3569,45 @@ simplify_mult (gimple_stmt_iterator *gsi) /* Main entry point for the forward propagation and statement combine optimizer. */ -static unsigned int -ssa_forward_propagate_and_combine (void) +namespace { + +const pass_data pass_data_forwprop = +{ + GIMPLE_PASS, /* type */ + "forwprop", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_FORWPROP, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_update_ssa | TODO_verify_ssa ), /* todo_flags_finish */ +}; + +class pass_forwprop : public gimple_opt_pass +{ +public: + pass_forwprop (gcc::context *ctxt) + : gimple_opt_pass (pass_data_forwprop, ctxt) + {} + + /* opt_pass methods: */ + opt_pass * clone () { return new pass_forwprop (m_ctxt); } + virtual bool gate (function *) { return flag_tree_forwprop; } + virtual unsigned int execute (function *); + +}; // class pass_forwprop + +unsigned int +pass_forwprop::execute (function *fun) { basic_block bb; unsigned int todoflags = 0; cfg_changed = false; - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator gsi; @@ -3662,7 +3692,7 @@ ssa_forward_propagate_and_combine (void) else if (TREE_CODE_CLASS (code) == tcc_comparison) { if (forward_propagate_comparison (&gsi)) - cfg_changed = true; + cfg_changed = true; } else gsi_next (&gsi); @@ -3833,44 +3863,6 @@ ssa_forward_propagate_and_combine (void) return todoflags; } - -static bool -gate_forwprop (void) -{ - return flag_tree_forwprop; -} - -namespace { - -const pass_data pass_data_forwprop = -{ - GIMPLE_PASS, /* type */ - "forwprop", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_FORWPROP, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_update_ssa | TODO_verify_ssa ), /* todo_flags_finish */ -}; - -class pass_forwprop : public gimple_opt_pass -{ -public: - pass_forwprop (gcc::context *ctxt) - : gimple_opt_pass (pass_data_forwprop, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_forwprop (m_ctxt); } - bool gate () { return gate_forwprop (); } - unsigned int execute () { return ssa_forward_propagate_and_combine (); } - -}; // class pass_forwprop - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c index be28fb00417..0ce02a04f08 100644 --- a/gcc/tree-ssa-ifcombine.c +++ b/gcc/tree-ssa-ifcombine.c @@ -723,8 +723,36 @@ tree_ssa_ifcombine_bb (basic_block inner_cond_bb) /* Main entry for the tree if-conversion pass. */ -static unsigned int -tree_ssa_ifcombine (void) +namespace { + +const pass_data pass_data_tree_ifcombine = +{ + GIMPLE_PASS, /* type */ + "ifcombine", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_IFCOMBINE, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_update_ssa | TODO_verify_ssa ), /* todo_flags_finish */ +}; + +class pass_tree_ifcombine : public gimple_opt_pass +{ +public: + pass_tree_ifcombine (gcc::context *ctxt) + : gimple_opt_pass (pass_data_tree_ifcombine, ctxt) + {} + + /* opt_pass methods: */ + virtual unsigned int execute (function *); + +}; // class pass_tree_ifcombine + +unsigned int +pass_tree_ifcombine::execute (function *fun) { basic_block *bbs; bool cfg_changed = false; @@ -741,7 +769,7 @@ tree_ssa_ifcombine (void) inner ones, and also that we do not try to visit a removed block. This is opposite of PHI-OPT, because we cascade the combining rather than cascading PHIs. */ - for (i = n_basic_blocks_for_fn (cfun) - NUM_FIXED_BLOCKS - 1; i >= 0; i--) + for (i = n_basic_blocks_for_fn (fun) - NUM_FIXED_BLOCKS - 1; i >= 0; i--) { basic_block bb = bbs[i]; gimple stmt = last_stmt (bb); @@ -756,42 +784,6 @@ tree_ssa_ifcombine (void) return cfg_changed ? TODO_cleanup_cfg : 0; } -static bool -gate_ifcombine (void) -{ - return 1; -} - -namespace { - -const pass_data pass_data_tree_ifcombine = -{ - GIMPLE_PASS, /* type */ - "ifcombine", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_IFCOMBINE, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_update_ssa | TODO_verify_ssa ), /* todo_flags_finish */ -}; - -class pass_tree_ifcombine : public gimple_opt_pass -{ -public: - pass_tree_ifcombine (gcc::context *ctxt) - : gimple_opt_pass (pass_data_tree_ifcombine, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_ifcombine (); } - unsigned int execute () { return tree_ssa_ifcombine (); } - -}; // class pass_tree_ifcombine - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c index 0a6b1c1e453..fb86de4a7b0 100644 --- a/gcc/tree-ssa-loop-ch.c +++ b/gcc/tree-ssa-loop-ch.c @@ -131,8 +131,38 @@ do_while_loop_p (struct loop *loop) of the loop. This is beneficial since it increases efficiency of code motion optimizations. It also saves one jump on entry to the loop. */ -static unsigned int -copy_loop_headers (void) +namespace { + +const pass_data pass_data_ch = +{ + GIMPLE_PASS, /* type */ + "ch", /* name */ + OPTGROUP_LOOP, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_CH, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_cleanup_cfg | TODO_verify_ssa + | TODO_verify_flow ), /* todo_flags_finish */ +}; + +class pass_ch : public gimple_opt_pass +{ +public: + pass_ch (gcc::context *ctxt) + : gimple_opt_pass (pass_data_ch, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return flag_tree_ch != 0; } + virtual unsigned int execute (function *); + +}; // class pass_ch + +unsigned int +pass_ch::execute (function *fun) { struct loop *loop; basic_block header; @@ -143,15 +173,15 @@ copy_loop_headers (void) loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_SIMPLE_LATCHES); - if (number_of_loops (cfun) <= 1) + if (number_of_loops (fun) <= 1) { loop_optimizer_finalize (); return 0; } - bbs = XNEWVEC (basic_block, n_basic_blocks_for_fn (cfun)); - copied_bbs = XNEWVEC (basic_block, n_basic_blocks_for_fn (cfun)); - bbs_size = n_basic_blocks_for_fn (cfun); + bbs = XNEWVEC (basic_block, n_basic_blocks_for_fn (fun)); + copied_bbs = XNEWVEC (basic_block, n_basic_blocks_for_fn (fun)); + bbs_size = n_basic_blocks_for_fn (fun); FOR_EACH_LOOP (loop, 0) { @@ -257,43 +287,6 @@ copy_loop_headers (void) return 0; } -static bool -gate_ch (void) -{ - return flag_tree_ch != 0; -} - -namespace { - -const pass_data pass_data_ch = -{ - GIMPLE_PASS, /* type */ - "ch", /* name */ - OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_CH, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_cleanup_cfg | TODO_verify_ssa - | TODO_verify_flow ), /* todo_flags_finish */ -}; - -class pass_ch : public gimple_opt_pass -{ -public: - pass_ch (gcc::context *ctxt) - : gimple_opt_pass (pass_data_ch, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_ch (); } - unsigned int execute () { return copy_loop_headers (); } - -}; // class pass_ch - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c index aee7e4d02ba..2e67f620ea0 100644 --- a/gcc/tree-ssa-loop-im.c +++ b/gcc/tree-ssa-loop-im.c @@ -2529,21 +2529,6 @@ tree_ssa_lim (void) /* Loop invariant motion pass. */ -static unsigned int -tree_ssa_loop_im (void) -{ - if (number_of_loops (cfun) <= 1) - return 0; - - return tree_ssa_lim (); -} - -static bool -gate_tree_ssa_loop_im (void) -{ - return flag_tree_loop_im != 0; -} - namespace { const pass_data pass_data_lim = @@ -2551,7 +2536,6 @@ const pass_data pass_data_lim = GIMPLE_PASS, /* type */ "lim", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_LIM, /* tv_id */ PROP_cfg, /* properties_required */ @@ -2570,11 +2554,20 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_lim (m_ctxt); } - bool gate () { return gate_tree_ssa_loop_im (); } - unsigned int execute () { return tree_ssa_loop_im (); } + virtual bool gate (function *) { return flag_tree_loop_im != 0; } + virtual unsigned int execute (function *); }; // class pass_lim +unsigned int +pass_lim::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + return tree_ssa_lim (); +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c index 7fcff4bdd37..6b5a4eb5d00 100644 --- a/gcc/tree-ssa-loop-ivcanon.c +++ b/gcc/tree-ssa-loop-ivcanon.c @@ -1256,21 +1256,6 @@ tree_unroll_loops_completely (bool may_increase_size, bool unroll_outer) /* Canonical induction variable creation pass. */ -static unsigned int -tree_ssa_loop_ivcanon (void) -{ - if (number_of_loops (cfun) <= 1) - return 0; - - return canonicalize_induction_variables (); -} - -static bool -gate_tree_ssa_loop_ivcanon (void) -{ - return flag_tree_loop_ivcanon != 0; -} - namespace { const pass_data pass_data_iv_canon = @@ -1278,7 +1263,6 @@ const pass_data pass_data_iv_canon = GIMPLE_PASS, /* type */ "ivcanon", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_LOOP_IVCANON, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -1296,11 +1280,20 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_ssa_loop_ivcanon (); } - unsigned int execute () { return tree_ssa_loop_ivcanon (); } + virtual bool gate (function *) { return flag_tree_loop_ivcanon != 0; } + virtual unsigned int execute (function *fun); }; // class pass_iv_canon +unsigned int +pass_iv_canon::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + return canonicalize_induction_variables (); +} + } // anon namespace gimple_opt_pass * @@ -1311,23 +1304,6 @@ make_pass_iv_canon (gcc::context *ctxt) /* Complete unrolling of loops. */ -static unsigned int -tree_complete_unroll (void) -{ - if (number_of_loops (cfun) <= 1) - return 0; - - return tree_unroll_loops_completely (flag_unroll_loops - || flag_peel_loops - || optimize >= 3, true); -} - -static bool -gate_tree_complete_unroll (void) -{ - return true; -} - namespace { const pass_data pass_data_complete_unroll = @@ -1335,7 +1311,6 @@ const pass_data pass_data_complete_unroll = GIMPLE_PASS, /* type */ "cunroll", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_COMPLETE_UNROLL, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -1353,11 +1328,21 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_complete_unroll (); } - unsigned int execute () { return tree_complete_unroll (); } + virtual unsigned int execute (function *); }; // class pass_complete_unroll +unsigned int +pass_complete_unroll::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + return tree_unroll_loops_completely (flag_unroll_loops + || flag_peel_loops + || optimize >= 3, true); +} + } // anon namespace gimple_opt_pass * @@ -1368,31 +1353,6 @@ make_pass_complete_unroll (gcc::context *ctxt) /* Complete unrolling of inner loops. */ -static unsigned int -tree_complete_unroll_inner (void) -{ - unsigned ret = 0; - - loop_optimizer_init (LOOPS_NORMAL - | LOOPS_HAVE_RECORDED_EXITS); - if (number_of_loops (cfun) > 1) - { - scev_initialize (); - ret = tree_unroll_loops_completely (optimize >= 3, false); - free_numbers_of_iterations_estimates (); - scev_finalize (); - } - loop_optimizer_finalize (); - - return ret; -} - -static bool -gate_tree_complete_unroll_inner (void) -{ - return optimize >= 2; -} - namespace { const pass_data pass_data_complete_unrolli = @@ -1400,7 +1360,6 @@ const pass_data pass_data_complete_unrolli = GIMPLE_PASS, /* type */ "cunrolli", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_COMPLETE_UNROLL, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -1418,11 +1377,30 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_complete_unroll_inner (); } - unsigned int execute () { return tree_complete_unroll_inner (); } + virtual bool gate (function *) { return optimize >= 2; } + virtual unsigned int execute (function *); }; // class pass_complete_unrolli +unsigned int +pass_complete_unrolli::execute (function *fun) +{ + unsigned ret = 0; + + loop_optimizer_init (LOOPS_NORMAL + | LOOPS_HAVE_RECORDED_EXITS); + if (number_of_loops (fun) > 1) + { + scev_initialize (); + ret = tree_unroll_loops_completely (optimize >= 3, false); + free_numbers_of_iterations_estimates (); + scev_finalize (); + } + loop_optimizer_finalize (); + + return ret; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c index c0968c8f582..1cf650a71e0 100644 --- a/gcc/tree-ssa-loop-prefetch.c +++ b/gcc/tree-ssa-loop-prefetch.c @@ -2004,21 +2004,6 @@ tree_ssa_prefetch_arrays (void) /* Prefetching. */ -static unsigned int -tree_ssa_loop_prefetch (void) -{ - if (number_of_loops (cfun) <= 1) - return 0; - - return tree_ssa_prefetch_arrays (); -} - -static bool -gate_tree_ssa_loop_prefetch (void) -{ - return flag_prefetch_loop_arrays > 0; -} - namespace { const pass_data pass_data_loop_prefetch = @@ -2026,7 +2011,6 @@ const pass_data pass_data_loop_prefetch = GIMPLE_PASS, /* type */ "aprefetch", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_PREFETCH, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -2044,11 +2028,20 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_ssa_loop_prefetch (); } - unsigned int execute () { return tree_ssa_loop_prefetch (); } + virtual bool gate (function *) { return flag_prefetch_loop_arrays > 0; } + virtual unsigned int execute (function *); }; // class pass_loop_prefetch +unsigned int +pass_loop_prefetch::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + return tree_ssa_prefetch_arrays (); +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-loop-unswitch.c b/gcc/tree-ssa-loop-unswitch.c index 5031378671a..a9a27d7e708 100644 --- a/gcc/tree-ssa-loop-unswitch.c +++ b/gcc/tree-ssa-loop-unswitch.c @@ -402,21 +402,6 @@ tree_unswitch_loop (struct loop *loop, /* Loop unswitching pass. */ -static unsigned int -tree_ssa_loop_unswitch (void) -{ - if (number_of_loops (cfun) <= 1) - return 0; - - return tree_ssa_unswitch_loops (); -} - -static bool -gate_tree_ssa_loop_unswitch (void) -{ - return flag_unswitch_loops != 0; -} - namespace { const pass_data pass_data_tree_unswitch = @@ -424,7 +409,6 @@ const pass_data pass_data_tree_unswitch = GIMPLE_PASS, /* type */ "unswitch", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_LOOP_UNSWITCH, /* tv_id */ PROP_cfg, /* properties_required */ @@ -442,11 +426,20 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_ssa_loop_unswitch (); } - unsigned int execute () { return tree_ssa_loop_unswitch (); } + virtual bool gate (function *) { return flag_unswitch_loops != 0; } + virtual unsigned int execute (function *); }; // class pass_tree_unswitch +unsigned int +pass_tree_unswitch::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + return tree_ssa_unswitch_loops (); +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index 4008b2bf439..ccc812152cf 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -44,12 +44,6 @@ along with GCC; see the file COPYING3. If not see /* The loop superpass. */ -static bool -gate_tree_loop (void) -{ - return flag_tree_loop_optimize != 0; -} - namespace { const pass_data pass_data_tree_loop = @@ -57,7 +51,6 @@ const pass_data pass_data_tree_loop = GIMPLE_PASS, /* type */ "loop", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_TREE_LOOP, /* tv_id */ PROP_cfg, /* properties_required */ @@ -75,7 +68,7 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_loop (); } + virtual bool gate (function *) { return flag_tree_loop_optimize != 0; } }; // class pass_tree_loop @@ -89,23 +82,6 @@ make_pass_tree_loop (gcc::context *ctxt) /* Loop optimizer initialization. */ -static unsigned int -tree_ssa_loop_init (void) -{ - loop_optimizer_init (LOOPS_NORMAL - | LOOPS_HAVE_RECORDED_EXITS); - rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa); - - /* We might discover new loops, e.g. when turning irreducible - regions into reducible. */ - scev_initialize (); - - if (number_of_loops (cfun) <= 1) - return 0; - - return 0; -} - namespace { const pass_data pass_data_tree_loop_init = @@ -113,7 +89,6 @@ const pass_data pass_data_tree_loop_init = GIMPLE_PASS, /* type */ "loopinit", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -131,35 +106,37 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return tree_ssa_loop_init (); } + virtual unsigned int execute (function *); }; // class pass_tree_loop_init -} // anon namespace - -gimple_opt_pass * -make_pass_tree_loop_init (gcc::context *ctxt) +unsigned int +pass_tree_loop_init::execute (function *fun) { - return new pass_tree_loop_init (ctxt); -} + loop_optimizer_init (LOOPS_NORMAL + | LOOPS_HAVE_RECORDED_EXITS); + rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa); -/* Loop autovectorization. */ + /* We might discover new loops, e.g. when turning irreducible + regions into reducible. */ + scev_initialize (); -static unsigned int -tree_loop_vectorize (void) -{ - if (number_of_loops (cfun) <= 1) + if (number_of_loops (fun) <= 1) return 0; - return vectorize_loops (); + return 0; } -static bool -gate_tree_loop_vectorize (void) +} // anon namespace + +gimple_opt_pass * +make_pass_tree_loop_init (gcc::context *ctxt) { - return flag_tree_loop_vectorize || cfun->has_force_vectorize_loops; + return new pass_tree_loop_init (ctxt); } +/* Loop autovectorization. */ + namespace { const pass_data pass_data_vectorize = @@ -167,7 +144,6 @@ const pass_data pass_data_vectorize = GIMPLE_PASS, /* type */ "vect", /* name */ OPTGROUP_LOOP | OPTGROUP_VEC, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_VECTORIZATION, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -185,11 +161,24 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_loop_vectorize (); } - unsigned int execute () { return tree_loop_vectorize (); } + virtual bool gate (function *fun) + { + return flag_tree_loop_vectorize || fun->has_force_vectorize_loops; + } + + virtual unsigned int execute (function *); }; // class pass_vectorize +unsigned int +pass_vectorize::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + return vectorize_loops (); +} + } // anon namespace gimple_opt_pass * @@ -200,22 +189,6 @@ make_pass_vectorize (gcc::context *ctxt) /* Check the correctness of the data dependence analyzers. */ -static unsigned int -check_data_deps (void) -{ - if (number_of_loops (cfun) <= 1) - return 0; - - tree_check_data_deps (); - return 0; -} - -static bool -gate_check_data_deps (void) -{ - return flag_check_data_deps != 0; -} - namespace { const pass_data pass_data_check_data_deps = @@ -223,7 +196,6 @@ const pass_data pass_data_check_data_deps = GIMPLE_PASS, /* type */ "ckdd", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_CHECK_DATA_DEPS, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -241,11 +213,21 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_check_data_deps (); } - unsigned int execute () { return check_data_deps (); } + virtual bool gate (function *) { return flag_check_data_deps != 0; } + virtual unsigned int execute (function *); }; // class pass_check_data_deps +unsigned int +pass_check_data_deps::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + tree_check_data_deps (); + return 0; +} + } // anon namespace gimple_opt_pass * @@ -256,12 +238,6 @@ make_pass_check_data_deps (gcc::context *ctxt) /* Propagation of constants using scev. */ -static bool -gate_scev_const_prop (void) -{ - return flag_tree_scev_cprop; -} - namespace { const pass_data pass_data_scev_cprop = @@ -269,7 +245,6 @@ const pass_data pass_data_scev_cprop = GIMPLE_PASS, /* type */ "sccp", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_SCEV_CONST, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -288,8 +263,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_scev_const_prop (); } - unsigned int execute () { return scev_const_prop (); } + virtual bool gate (function *) { return flag_tree_scev_cprop; } + virtual unsigned int execute (function *) { return scev_const_prop (); } }; // class pass_scev_cprop @@ -303,17 +278,6 @@ make_pass_scev_cprop (gcc::context *ctxt) /* Record bounds on numbers of iterations of loops. */ -static unsigned int -tree_ssa_loop_bounds (void) -{ - if (number_of_loops (cfun) <= 1) - return 0; - - estimate_numbers_of_iterations (); - scev_reset (); - return 0; -} - namespace { const pass_data pass_data_record_bounds = @@ -321,7 +285,6 @@ const pass_data pass_data_record_bounds = GIMPLE_PASS, /* type */ "*record_bounds", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_TREE_LOOP_BOUNDS, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -339,10 +302,21 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return tree_ssa_loop_bounds (); } + virtual unsigned int execute (function *); }; // class pass_record_bounds +unsigned int +pass_record_bounds::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + estimate_numbers_of_iterations (); + scev_reset (); + return 0; +} + } // anon namespace gimple_opt_pass * @@ -353,22 +327,6 @@ make_pass_record_bounds (gcc::context *ctxt) /* Induction variable optimizations. */ -static unsigned int -tree_ssa_loop_ivopts (void) -{ - if (number_of_loops (cfun) <= 1) - return 0; - - tree_ssa_iv_optimize (); - return 0; -} - -static bool -gate_tree_ssa_loop_ivopts (void) -{ - return flag_ivopts != 0; -} - namespace { const pass_data pass_data_iv_optimize = @@ -376,7 +334,6 @@ const pass_data pass_data_iv_optimize = GIMPLE_PASS, /* type */ "ivopts", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_LOOP_IVOPTS, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -394,11 +351,21 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_ssa_loop_ivopts (); } - unsigned int execute () { return tree_ssa_loop_ivopts (); } + virtual bool gate (function *) { return flag_ivopts != 0; } + virtual unsigned int execute (function *); }; // class pass_iv_optimize +unsigned int +pass_iv_optimize::execute (function *fun) +{ + if (number_of_loops (fun) <= 1) + return 0; + + tree_ssa_iv_optimize (); + return 0; +} + } // anon namespace gimple_opt_pass * @@ -425,7 +392,6 @@ const pass_data pass_data_tree_loop_done = GIMPLE_PASS, /* type */ "loopdone", /* name */ OPTGROUP_LOOP, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -443,7 +409,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return tree_ssa_loop_done (); } + virtual unsigned int execute (function *) { return tree_ssa_loop_done (); } }; // class pass_tree_loop_done diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index 1210f62295d..ea404688b4a 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -504,43 +504,67 @@ execute_cse_reciprocals_1 (gimple_stmt_iterator *def_gsi, tree def) occ_head = NULL; } -static bool -gate_cse_reciprocals (void) -{ - return optimize && flag_reciprocal_math; -} - /* Go through all the floating-point SSA_NAMEs, and call execute_cse_reciprocals_1 on each of them. */ -static unsigned int -execute_cse_reciprocals (void) +namespace { + +const pass_data pass_data_cse_reciprocals = +{ + GIMPLE_PASS, /* type */ + "recip", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + PROP_ssa, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_update_ssa | TODO_verify_ssa + | TODO_verify_stmts ), /* todo_flags_finish */ +}; + +class pass_cse_reciprocals : public gimple_opt_pass +{ +public: + pass_cse_reciprocals (gcc::context *ctxt) + : gimple_opt_pass (pass_data_cse_reciprocals, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return optimize && flag_reciprocal_math; } + virtual unsigned int execute (function *); + +}; // class pass_cse_reciprocals + +unsigned int +pass_cse_reciprocals::execute (function *fun) { basic_block bb; tree arg; occ_pool = create_alloc_pool ("dominators for recip", sizeof (struct occurrence), - n_basic_blocks_for_fn (cfun) / 3 + 1); + n_basic_blocks_for_fn (fun) / 3 + 1); memset (&reciprocal_stats, 0, sizeof (reciprocal_stats)); calculate_dominance_info (CDI_DOMINATORS); calculate_dominance_info (CDI_POST_DOMINATORS); #ifdef ENABLE_CHECKING - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) gcc_assert (!bb->aux); #endif - for (arg = DECL_ARGUMENTS (cfun->decl); arg; arg = DECL_CHAIN (arg)) + for (arg = DECL_ARGUMENTS (fun->decl); arg; arg = DECL_CHAIN (arg)) if (FLOAT_TYPE_P (TREE_TYPE (arg)) && is_gimple_reg (arg)) { - tree name = ssa_default_def (cfun, arg); + tree name = ssa_default_def (fun, arg); if (name) execute_cse_reciprocals_1 (NULL, name); } - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator gsi; gimple phi; @@ -642,9 +666,9 @@ execute_cse_reciprocals (void) } } - statistics_counter_event (cfun, "reciprocal divs inserted", + statistics_counter_event (fun, "reciprocal divs inserted", reciprocal_stats.rdivs_inserted); - statistics_counter_event (cfun, "reciprocal functions inserted", + statistics_counter_event (fun, "reciprocal functions inserted", reciprocal_stats.rfuncs_inserted); free_dominance_info (CDI_DOMINATORS); @@ -653,37 +677,6 @@ execute_cse_reciprocals (void) return 0; } -namespace { - -const pass_data pass_data_cse_reciprocals = -{ - GIMPLE_PASS, /* type */ - "recip", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - PROP_ssa, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_update_ssa | TODO_verify_ssa - | TODO_verify_stmts ), /* todo_flags_finish */ -}; - -class pass_cse_reciprocals : public gimple_opt_pass -{ -public: - pass_cse_reciprocals (gcc::context *ctxt) - : gimple_opt_pass (pass_data_cse_reciprocals, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_cse_reciprocals (); } - unsigned int execute () { return execute_cse_reciprocals (); } - -}; // class pass_cse_reciprocals - } // anon namespace gimple_opt_pass * @@ -1410,8 +1403,44 @@ gimple_expand_builtin_cabs (gimple_stmt_iterator *gsi, location_t loc, tree arg) on the SSA_NAME argument of each of them. Also expand powi(x,n) into an optimal number of multiplies, when n is a constant. */ -static unsigned int -execute_cse_sincos (void) +namespace { + +const pass_data pass_data_cse_sincos = +{ + GIMPLE_PASS, /* type */ + "sincos", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + PROP_ssa, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_update_ssa | TODO_verify_ssa + | TODO_verify_stmts ), /* todo_flags_finish */ +}; + +class pass_cse_sincos : public gimple_opt_pass +{ +public: + pass_cse_sincos (gcc::context *ctxt) + : gimple_opt_pass (pass_data_cse_sincos, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) + { + /* We no longer require either sincos or cexp, since powi expansion + piggybacks on this pass. */ + return optimize; + } + + virtual unsigned int execute (function *); + +}; // class pass_cse_sincos + +unsigned int +pass_cse_sincos::execute (function *fun) { basic_block bb; bool cfg_changed = false; @@ -1419,7 +1448,7 @@ execute_cse_sincos (void) calculate_dominance_info (CDI_DOMINATORS); memset (&sincos_stats, 0, sizeof (sincos_stats)); - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator gsi; bool cleanup_eh = false; @@ -1556,52 +1585,13 @@ execute_cse_sincos (void) cfg_changed |= gimple_purge_dead_eh_edges (bb); } - statistics_counter_event (cfun, "sincos statements inserted", + statistics_counter_event (fun, "sincos statements inserted", sincos_stats.inserted); free_dominance_info (CDI_DOMINATORS); return cfg_changed ? TODO_cleanup_cfg : 0; } -static bool -gate_cse_sincos (void) -{ - /* We no longer require either sincos or cexp, since powi expansion - piggybacks on this pass. */ - return optimize; -} - -namespace { - -const pass_data pass_data_cse_sincos = -{ - GIMPLE_PASS, /* type */ - "sincos", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - PROP_ssa, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_update_ssa | TODO_verify_ssa - | TODO_verify_stmts ), /* todo_flags_finish */ -}; - -class pass_cse_sincos : public gimple_opt_pass -{ -public: - pass_cse_sincos (gcc::context *ctxt) - : gimple_opt_pass (pass_data_cse_sincos, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_cse_sincos (); } - unsigned int execute () { return execute_cse_sincos (); } - -}; // class pass_cse_sincos - } // anon namespace gimple_opt_pass * @@ -1903,8 +1893,41 @@ find_bswap (gimple stmt) /* Find manual byte swap implementations and turn them into a bswap builtin invokation. */ -static unsigned int -execute_optimize_bswap (void) +namespace { + +const pass_data pass_data_optimize_bswap = +{ + GIMPLE_PASS, /* type */ + "bswap", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + PROP_ssa, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_optimize_bswap : public gimple_opt_pass +{ +public: + pass_optimize_bswap (gcc::context *ctxt) + : gimple_opt_pass (pass_data_optimize_bswap, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) + { + return flag_expensive_optimizations && optimize; + } + + virtual unsigned int execute (function *); + +}; // class pass_optimize_bswap + +unsigned int +pass_optimize_bswap::execute (function *fun) { basic_block bb; bool bswap16_p, bswap32_p, bswap64_p; @@ -1950,7 +1973,7 @@ execute_optimize_bswap (void) memset (&bswap_stats, 0, sizeof (bswap_stats)); - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator gsi; @@ -2056,53 +2079,17 @@ execute_optimize_bswap (void) } } - statistics_counter_event (cfun, "16-bit bswap implementations found", + statistics_counter_event (fun, "16-bit bswap implementations found", bswap_stats.found_16bit); - statistics_counter_event (cfun, "32-bit bswap implementations found", + statistics_counter_event (fun, "32-bit bswap implementations found", bswap_stats.found_32bit); - statistics_counter_event (cfun, "64-bit bswap implementations found", + statistics_counter_event (fun, "64-bit bswap implementations found", bswap_stats.found_64bit); return (changed ? TODO_update_ssa | TODO_verify_ssa | TODO_verify_stmts : 0); } -static bool -gate_optimize_bswap (void) -{ - return flag_expensive_optimizations && optimize; -} - -namespace { - -const pass_data pass_data_optimize_bswap = -{ - GIMPLE_PASS, /* type */ - "bswap", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - PROP_ssa, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_optimize_bswap : public gimple_opt_pass -{ -public: - pass_optimize_bswap (gcc::context *ctxt) - : gimple_opt_pass (pass_data_optimize_bswap, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_optimize_bswap (); } - unsigned int execute () { return execute_optimize_bswap (); } - -}; // class pass_optimize_bswap - } // anon namespace gimple_opt_pass * @@ -2788,15 +2775,49 @@ convert_mult_to_fma (gimple mul_stmt, tree op1, tree op2) smaller types, and replace the MULT_EXPR with a WIDEN_MULT_EXPR where appropriate. */ -static unsigned int -execute_optimize_widening_mul (void) +namespace { + +const pass_data pass_data_optimize_widening_mul = +{ + GIMPLE_PASS, /* type */ + "widening_mul", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + PROP_ssa, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_verify_ssa | TODO_verify_stmts + | TODO_update_ssa ), /* todo_flags_finish */ +}; + +class pass_optimize_widening_mul : public gimple_opt_pass +{ +public: + pass_optimize_widening_mul (gcc::context *ctxt) + : gimple_opt_pass (pass_data_optimize_widening_mul, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) + { + return flag_expensive_optimizations && optimize; + } + + virtual unsigned int execute (function *); + +}; // class pass_optimize_widening_mul + +unsigned int +pass_optimize_widening_mul::execute (function *fun) { basic_block bb; bool cfg_changed = false; memset (&widen_mul_stats, 0, sizeof (widen_mul_stats)); - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator gsi; @@ -2867,53 +2888,16 @@ execute_optimize_widening_mul (void) } } - statistics_counter_event (cfun, "widening multiplications inserted", + statistics_counter_event (fun, "widening multiplications inserted", widen_mul_stats.widen_mults_inserted); - statistics_counter_event (cfun, "widening maccs inserted", + statistics_counter_event (fun, "widening maccs inserted", widen_mul_stats.maccs_inserted); - statistics_counter_event (cfun, "fused multiply-adds inserted", + statistics_counter_event (fun, "fused multiply-adds inserted", widen_mul_stats.fmas_inserted); return cfg_changed ? TODO_cleanup_cfg : 0; } -static bool -gate_optimize_widening_mul (void) -{ - return flag_expensive_optimizations && optimize; -} - -namespace { - -const pass_data pass_data_optimize_widening_mul = -{ - GIMPLE_PASS, /* type */ - "widening_mul", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - PROP_ssa, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_verify_ssa | TODO_verify_stmts - | TODO_update_ssa ), /* todo_flags_finish */ -}; - -class pass_optimize_widening_mul : public gimple_opt_pass -{ -public: - pass_optimize_widening_mul (gcc::context *ctxt) - : gimple_opt_pass (pass_data_optimize_widening_mul, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_optimize_widening_mul (); } - unsigned int execute () { return execute_optimize_widening_mul (); } - -}; // class pass_optimize_widening_mul - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index 338e2c1059a..3cb6ab95179 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -59,7 +59,6 @@ along with GCC; see the file COPYING3. If not see #define HAVE_conditional_move (0) #endif -static unsigned int tree_ssa_phiopt (void); static unsigned int tree_ssa_phiopt_worker (bool, bool); static bool conditional_replacement (basic_block, basic_block, edge, edge, gimple, tree, tree); @@ -80,162 +79,6 @@ static void hoist_adjacent_loads (basic_block, basic_block, basic_block, basic_block); static bool gate_hoist_loads (void); -/* This pass tries to replaces an if-then-else block with an - assignment. We have four kinds of transformations. Some of these - transformations are also performed by the ifcvt RTL optimizer. - - Conditional Replacement - ----------------------- - - This transformation, implemented in conditional_replacement, - replaces - - bb0: - if (cond) goto bb2; else goto bb1; - bb1: - bb2: - x = PHI <0 (bb1), 1 (bb0), ...>; - - with - - bb0: - x' = cond; - goto bb2; - bb2: - x = PHI <x' (bb0), ...>; - - We remove bb1 as it becomes unreachable. This occurs often due to - gimplification of conditionals. - - Value Replacement - ----------------- - - This transformation, implemented in value_replacement, replaces - - bb0: - if (a != b) goto bb2; else goto bb1; - bb1: - bb2: - x = PHI <a (bb1), b (bb0), ...>; - - with - - bb0: - bb2: - x = PHI <b (bb0), ...>; - - This opportunity can sometimes occur as a result of other - optimizations. - - - Another case caught by value replacement looks like this: - - bb0: - t1 = a == CONST; - t2 = b > c; - t3 = t1 & t2; - if (t3 != 0) goto bb1; else goto bb2; - bb1: - bb2: - x = PHI (CONST, a) - - Gets replaced with: - bb0: - bb2: - t1 = a == CONST; - t2 = b > c; - t3 = t1 & t2; - x = a; - - ABS Replacement - --------------- - - This transformation, implemented in abs_replacement, replaces - - bb0: - if (a >= 0) goto bb2; else goto bb1; - bb1: - x = -a; - bb2: - x = PHI <x (bb1), a (bb0), ...>; - - with - - bb0: - x' = ABS_EXPR< a >; - bb2: - x = PHI <x' (bb0), ...>; - - MIN/MAX Replacement - ------------------- - - This transformation, minmax_replacement replaces - - bb0: - if (a <= b) goto bb2; else goto bb1; - bb1: - bb2: - x = PHI <b (bb1), a (bb0), ...>; - - with - - bb0: - x' = MIN_EXPR (a, b) - bb2: - x = PHI <x' (bb0), ...>; - - A similar transformation is done for MAX_EXPR. - - - This pass also performs a fifth transformation of a slightly different - flavor. - - Adjacent Load Hoisting - ---------------------- - - This transformation replaces - - bb0: - if (...) goto bb2; else goto bb1; - bb1: - x1 = (<expr>).field1; - goto bb3; - bb2: - x2 = (<expr>).field2; - bb3: - # x = PHI <x1, x2>; - - with - - bb0: - x1 = (<expr>).field1; - x2 = (<expr>).field2; - if (...) goto bb2; else goto bb1; - bb1: - goto bb3; - bb2: - bb3: - # x = PHI <x1, x2>; - - The purpose of this transformation is to enable generation of conditional - move instructions such as Intel CMOVE or PowerPC ISEL. Because one of - the loads is speculative, the transformation is restricted to very - specific cases to avoid introducing a page fault. We are looking for - the common idiom: - - if (...) - x = y->left; - else - x = y->right; - - where left and right are typically adjacent pointers in a tree structure. */ - -static unsigned int -tree_ssa_phiopt (void) -{ - return tree_ssa_phiopt_worker (false, gate_hoist_loads ()); -} - /* This pass tries to transform conditional stores into unconditional ones, enabling further simplifications with the simpler then and else blocks. In particular it replaces this: @@ -2200,13 +2043,155 @@ gate_hoist_loads (void) && HAVE_conditional_move); } -/* Always do these optimizations if we have SSA - trees to work on. */ -static bool -gate_phiopt (void) -{ - return 1; -} +/* This pass tries to replaces an if-then-else block with an + assignment. We have four kinds of transformations. Some of these + transformations are also performed by the ifcvt RTL optimizer. + + Conditional Replacement + ----------------------- + + This transformation, implemented in conditional_replacement, + replaces + + bb0: + if (cond) goto bb2; else goto bb1; + bb1: + bb2: + x = PHI <0 (bb1), 1 (bb0), ...>; + + with + + bb0: + x' = cond; + goto bb2; + bb2: + x = PHI <x' (bb0), ...>; + + We remove bb1 as it becomes unreachable. This occurs often due to + gimplification of conditionals. + + Value Replacement + ----------------- + + This transformation, implemented in value_replacement, replaces + + bb0: + if (a != b) goto bb2; else goto bb1; + bb1: + bb2: + x = PHI <a (bb1), b (bb0), ...>; + + with + + bb0: + bb2: + x = PHI <b (bb0), ...>; + + This opportunity can sometimes occur as a result of other + optimizations. + + + Another case caught by value replacement looks like this: + + bb0: + t1 = a == CONST; + t2 = b > c; + t3 = t1 & t2; + if (t3 != 0) goto bb1; else goto bb2; + bb1: + bb2: + x = PHI (CONST, a) + + Gets replaced with: + bb0: + bb2: + t1 = a == CONST; + t2 = b > c; + t3 = t1 & t2; + x = a; + + ABS Replacement + --------------- + + This transformation, implemented in abs_replacement, replaces + + bb0: + if (a >= 0) goto bb2; else goto bb1; + bb1: + x = -a; + bb2: + x = PHI <x (bb1), a (bb0), ...>; + + with + + bb0: + x' = ABS_EXPR< a >; + bb2: + x = PHI <x' (bb0), ...>; + + MIN/MAX Replacement + ------------------- + + This transformation, minmax_replacement replaces + + bb0: + if (a <= b) goto bb2; else goto bb1; + bb1: + bb2: + x = PHI <b (bb1), a (bb0), ...>; + + with + + bb0: + x' = MIN_EXPR (a, b) + bb2: + x = PHI <x' (bb0), ...>; + + A similar transformation is done for MAX_EXPR. + + + This pass also performs a fifth transformation of a slightly different + flavor. + + Adjacent Load Hoisting + ---------------------- + + This transformation replaces + + bb0: + if (...) goto bb2; else goto bb1; + bb1: + x1 = (<expr>).field1; + goto bb3; + bb2: + x2 = (<expr>).field2; + bb3: + # x = PHI <x1, x2>; + + with + + bb0: + x1 = (<expr>).field1; + x2 = (<expr>).field2; + if (...) goto bb2; else goto bb1; + bb1: + goto bb3; + bb2: + bb3: + # x = PHI <x1, x2>; + + The purpose of this transformation is to enable generation of conditional + move instructions such as Intel CMOVE or PowerPC ISEL. Because one of + the loads is speculative, the transformation is restricted to very + specific cases to avoid introducing a page fault. We are looking for + the common idiom: + + if (...) + x = y->left; + else + x = y->right; + + where left and right are typically adjacent pointers in a tree structure. */ namespace { @@ -2215,7 +2200,6 @@ const pass_data pass_data_phiopt = GIMPLE_PASS, /* type */ "phiopt", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_PHIOPT, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -2235,8 +2219,10 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_phiopt (m_ctxt); } - bool gate () { return gate_phiopt (); } - unsigned int execute () { return tree_ssa_phiopt (); } + virtual unsigned int execute (function *) + { + return tree_ssa_phiopt_worker (false, gate_hoist_loads ()); + } }; // class pass_phiopt @@ -2248,12 +2234,6 @@ make_pass_phiopt (gcc::context *ctxt) return new pass_phiopt (ctxt); } -static bool -gate_cselim (void) -{ - return flag_tree_cselim; -} - namespace { const pass_data pass_data_cselim = @@ -2261,7 +2241,6 @@ const pass_data pass_data_cselim = GIMPLE_PASS, /* type */ "cselim", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_PHIOPT, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -2280,8 +2259,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_cselim (); } - unsigned int execute () { return tree_ssa_cs_elim (); } + virtual bool gate (function *) { return flag_tree_cselim; } + virtual unsigned int execute (function *) { return tree_ssa_cs_elim (); } }; // class pass_cselim diff --git a/gcc/tree-ssa-phiprop.c b/gcc/tree-ssa-phiprop.c index 4d66c12a606..0154b47af74 100644 --- a/gcc/tree-ssa-phiprop.c +++ b/gcc/tree-ssa-phiprop.c @@ -374,8 +374,37 @@ next:; /* Main entry for phiprop pass. */ -static unsigned int -tree_ssa_phiprop (void) +namespace { + +const pass_data pass_data_phiprop = +{ + GIMPLE_PASS, /* type */ + "phiprop", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_PHIPROP, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_update_ssa | TODO_verify_ssa ), /* todo_flags_finish */ +}; + +class pass_phiprop : public gimple_opt_pass +{ +public: + pass_phiprop (gcc::context *ctxt) + : gimple_opt_pass (pass_data_phiprop, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return flag_tree_phiprop; } + virtual unsigned int execute (function *); + +}; // class pass_phiprop + +unsigned int +pass_phiprop::execute (function *fun) { vec<basic_block> bbs; struct phiprop_d *phivn; @@ -393,7 +422,7 @@ tree_ssa_phiprop (void) /* Walk the dominator tree in preorder. */ bbs = get_all_dominated_blocks (CDI_DOMINATORS, - single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun))); + single_succ (ENTRY_BLOCK_PTR_FOR_FN (fun))); FOR_EACH_VEC_ELT (bbs, i, bb) for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) did_something |= propagate_with_phi (bb, gsi_stmt (gsi), phivn, n); @@ -409,42 +438,6 @@ tree_ssa_phiprop (void) return 0; } -static bool -gate_phiprop (void) -{ - return flag_tree_phiprop; -} - -namespace { - -const pass_data pass_data_phiprop = -{ - GIMPLE_PASS, /* type */ - "phiprop", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_PHIPROP, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_update_ssa | TODO_verify_ssa ), /* todo_flags_finish */ -}; - -class pass_phiprop : public gimple_opt_pass -{ -public: - pass_phiprop (gcc::context *ctxt) - : gimple_opt_pass (pass_data_phiprop, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_phiprop (); } - unsigned int execute () { return tree_ssa_phiprop (); } - -}; // class pass_phiprop - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 3668dbcf2fd..7fe7f1612e1 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -4690,15 +4690,44 @@ fini_pre () free_dominance_info (CDI_POST_DOMINATORS); } -/* Gate and execute functions for PRE. */ +namespace { -static unsigned int -do_pre (void) +const pass_data pass_data_pre = +{ + GIMPLE_PASS, /* type */ + "pre", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_PRE, /* tv_id */ + /* PROP_no_crit_edges is ensured by placing pass_split_crit_edges before + pass_pre. */ + ( PROP_no_crit_edges | PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + PROP_no_crit_edges, /* properties_destroyed */ + TODO_rebuild_alias, /* todo_flags_start */ + TODO_verify_ssa, /* todo_flags_finish */ +}; + +class pass_pre : public gimple_opt_pass +{ +public: + pass_pre (gcc::context *ctxt) + : gimple_opt_pass (pass_data_pre, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return flag_tree_pre != 0; } + virtual unsigned int execute (function *); + +}; // class pass_pre + +unsigned int +pass_pre::execute (function *fun) { unsigned int todo = 0; do_partial_partial = - flag_tree_partial_pre && optimize_function_for_speed_p (cfun); + flag_tree_partial_pre && optimize_function_for_speed_p (fun); /* This has to happen before SCCVN runs because loop_optimizer_init may create new phis, etc. */ @@ -4721,7 +4750,7 @@ do_pre (void) fixed, don't run it when he have an incredibly large number of bb's. If we aren't going to run insert, there is no point in computing ANTIC, either, even though it's plenty fast. */ - if (n_basic_blocks_for_fn (cfun) < 4000) + if (n_basic_blocks_for_fn (fun) < 4000) { compute_antic (); insert (); @@ -4736,10 +4765,10 @@ do_pre (void) /* Remove all the redundant expressions. */ todo |= eliminate (); - statistics_counter_event (cfun, "Insertions", pre_stats.insertions); - statistics_counter_event (cfun, "PA inserted", pre_stats.pa_insert); - statistics_counter_event (cfun, "New PHIs", pre_stats.phis); - statistics_counter_event (cfun, "Eliminated", pre_stats.eliminations); + statistics_counter_event (fun, "Insertions", pre_stats.insertions); + statistics_counter_event (fun, "PA inserted", pre_stats.pa_insert); + statistics_counter_event (fun, "New PHIs", pre_stats.phis); + statistics_counter_event (fun, "Eliminated", pre_stats.eliminations); clear_expression_ids (); remove_dead_inserted_code (); @@ -4771,57 +4800,46 @@ do_pre (void) return todo; } -static bool -gate_pre (void) +} // anon namespace + +gimple_opt_pass * +make_pass_pre (gcc::context *ctxt) { - return flag_tree_pre != 0; + return new pass_pre (ctxt); } namespace { -const pass_data pass_data_pre = +const pass_data pass_data_fre = { GIMPLE_PASS, /* type */ - "pre", /* name */ + "fre", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ - TV_TREE_PRE, /* tv_id */ - /* PROP_no_crit_edges is ensured by placing pass_split_crit_edges before - pass_pre. */ - ( PROP_no_crit_edges | PROP_cfg | PROP_ssa ), /* properties_required */ + TV_TREE_FRE, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ 0, /* properties_provided */ - PROP_no_crit_edges, /* properties_destroyed */ - TODO_rebuild_alias, /* todo_flags_start */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ TODO_verify_ssa, /* todo_flags_finish */ }; -class pass_pre : public gimple_opt_pass +class pass_fre : public gimple_opt_pass { public: - pass_pre (gcc::context *ctxt) - : gimple_opt_pass (pass_data_pre, ctxt) + pass_fre (gcc::context *ctxt) + : gimple_opt_pass (pass_data_fre, ctxt) {} /* opt_pass methods: */ - bool gate () { return gate_pre (); } - unsigned int execute () { return do_pre (); } - -}; // class pass_pre - -} // anon namespace - -gimple_opt_pass * -make_pass_pre (gcc::context *ctxt) -{ - return new pass_pre (ctxt); -} - + opt_pass * clone () { return new pass_fre (m_ctxt); } + virtual bool gate (function *) { return flag_tree_fre != 0; } + virtual unsigned int execute (function *); -/* Gate and execute functions for FRE. */ +}; // class pass_fre -static unsigned int -execute_fre (void) +unsigned int +pass_fre::execute (function *fun) { unsigned int todo = 0; @@ -4837,49 +4855,12 @@ execute_fre (void) free_scc_vn (); - statistics_counter_event (cfun, "Insertions", pre_stats.insertions); - statistics_counter_event (cfun, "Eliminated", pre_stats.eliminations); + statistics_counter_event (fun, "Insertions", pre_stats.insertions); + statistics_counter_event (fun, "Eliminated", pre_stats.eliminations); return todo; } -static bool -gate_fre (void) -{ - return flag_tree_fre != 0; -} - -namespace { - -const pass_data pass_data_fre = -{ - GIMPLE_PASS, /* type */ - "fre", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_FRE, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_verify_ssa, /* todo_flags_finish */ -}; - -class pass_fre : public gimple_opt_pass -{ -public: - pass_fre (gcc::context *ctxt) - : gimple_opt_pass (pass_data_fre, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_fre (m_ctxt); } - bool gate () { return gate_fre (); } - unsigned int execute () { return execute_fre (); } - -}; // class pass_fre - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c index 47fd15455b2..59e46dc6420 100644 --- a/gcc/tree-ssa-propagate.c +++ b/gcc/tree-ssa-propagate.c @@ -572,9 +572,13 @@ valid_gimple_rhs_p (tree expr) break; case tcc_comparison: - if (!INTEGRAL_TYPE_P (TREE_TYPE (expr)) - || (TREE_CODE (TREE_TYPE (expr)) != BOOLEAN_TYPE - && TYPE_PRECISION (TREE_TYPE (expr)) != 1)) + /* GENERIC allows comparisons with non-boolean types, reject + those for GIMPLE. Let vector-typed comparisons pass - rules + for GENERIC and GIMPLE are the same here. */ + if (!(INTEGRAL_TYPE_P (TREE_TYPE (expr)) + && (TREE_CODE (TREE_TYPE (expr)) == BOOLEAN_TYPE + || TYPE_PRECISION (TREE_TYPE (expr)) == 1)) + && ! VECTOR_TYPE_P (TREE_TYPE (expr))) return false; /* Fallthru. */ diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c index 4b2b80167c7..e1504ca9cd0 100644 --- a/gcc/tree-ssa-reassoc.c +++ b/gcc/tree-ssa-reassoc.c @@ -4693,12 +4693,6 @@ execute_reassoc (void) return 0; } -static bool -gate_tree_ssa_reassoc (void) -{ - return flag_tree_reassoc != 0; -} - namespace { const pass_data pass_data_reassoc = @@ -4706,7 +4700,6 @@ const pass_data pass_data_reassoc = GIMPLE_PASS, /* type */ "reassoc", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_REASSOC, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -4727,8 +4720,8 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_reassoc (m_ctxt); } - bool gate () { return gate_tree_ssa_reassoc (); } - unsigned int execute () { return execute_reassoc (); } + virtual bool gate (function *) { return flag_tree_reassoc != 0; } + virtual unsigned int execute (function *) { return execute_reassoc (); } }; // class pass_reassoc diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c index 6d02975c4dd..7992ced11dc 100644 --- a/gcc/tree-ssa-sink.c +++ b/gcc/tree-ssa-sink.c @@ -563,37 +563,6 @@ sink_code_in_bb (basic_block bb) Note that this reduces the number of computations of a = b + c to 1 when we take the else edge, instead of 2. */ -static void -execute_sink_code (void) -{ - loop_optimizer_init (LOOPS_NORMAL); - split_critical_edges (); - connect_infinite_loops_to_exit (); - memset (&sink_stats, 0, sizeof (sink_stats)); - calculate_dominance_info (CDI_DOMINATORS); - calculate_dominance_info (CDI_POST_DOMINATORS); - sink_code_in_bb (EXIT_BLOCK_PTR_FOR_FN (cfun)); - statistics_counter_event (cfun, "Sunk statements", sink_stats.sunk); - free_dominance_info (CDI_POST_DOMINATORS); - remove_fake_exit_edges (); - loop_optimizer_finalize (); -} - -/* Gate and execute functions for PRE. */ - -static unsigned int -do_sink (void) -{ - execute_sink_code (); - return 0; -} - -static bool -gate_sink (void) -{ - return flag_tree_sink != 0; -} - namespace { const pass_data pass_data_sink_code = @@ -601,11 +570,10 @@ const pass_data pass_data_sink_code = GIMPLE_PASS, /* type */ "sink", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_SINK, /* tv_id */ /* PROP_no_crit_edges is ensured by running split_critical_edges in - execute_sink_code. */ + pass_data_sink_code::execute (). */ ( PROP_cfg | PROP_ssa ), /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -622,11 +590,29 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_sink (); } - unsigned int execute () { return do_sink (); } + virtual bool gate (function *) { return flag_tree_sink != 0; } + virtual unsigned int execute (function *); }; // class pass_sink_code +unsigned int +pass_sink_code::execute (function *fun) +{ + loop_optimizer_init (LOOPS_NORMAL); + split_critical_edges (); + connect_infinite_loops_to_exit (); + memset (&sink_stats, 0, sizeof (sink_stats)); + calculate_dominance_info (CDI_DOMINATORS); + calculate_dominance_info (CDI_POST_DOMINATORS); + sink_code_in_bb (EXIT_BLOCK_PTR_FOR_FN (fun)); + statistics_counter_event (fun, "Sunk statements", sink_stats.sunk); + free_dominance_info (CDI_POST_DOMINATORS); + remove_fake_exit_edges (); + loop_optimizer_finalize (); + + return 0; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c index f55b7ee6dc8..1cc36d81e36 100644 --- a/gcc/tree-ssa-strlen.c +++ b/gcc/tree-ssa-strlen.c @@ -2061,40 +2061,6 @@ strlen_dom_walker::after_dom_children (basic_block bb) /* Main entry point. */ -static unsigned int -tree_ssa_strlen (void) -{ - ssa_ver_to_stridx.safe_grow_cleared (num_ssa_names); - max_stridx = 1; - strinfo_pool = create_alloc_pool ("strinfo_struct pool", - sizeof (struct strinfo_struct), 64); - - calculate_dominance_info (CDI_DOMINATORS); - - /* String length optimization is implemented as a walk of the dominator - tree and a forward walk of statements within each block. */ - strlen_dom_walker (CDI_DOMINATORS).walk (cfun->cfg->x_entry_block_ptr); - - ssa_ver_to_stridx.release (); - free_alloc_pool (strinfo_pool); - if (decl_to_stridxlist_htab.is_created ()) - { - obstack_free (&stridx_obstack, NULL); - decl_to_stridxlist_htab.dispose (); - } - laststmt.stmt = NULL; - laststmt.len = NULL_TREE; - laststmt.stridx = 0; - - return 0; -} - -static bool -gate_strlen (void) -{ - return flag_optimize_strlen != 0; -} - namespace { const pass_data pass_data_strlen = @@ -2102,7 +2068,6 @@ const pass_data pass_data_strlen = GIMPLE_PASS, /* type */ "strlen", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_STRLEN, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -2120,11 +2085,39 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_strlen (); } - unsigned int execute () { return tree_ssa_strlen (); } + virtual bool gate (function *) { return flag_optimize_strlen != 0; } + virtual unsigned int execute (function *); }; // class pass_strlen +unsigned int +pass_strlen::execute (function *fun) +{ + ssa_ver_to_stridx.safe_grow_cleared (num_ssa_names); + max_stridx = 1; + strinfo_pool = create_alloc_pool ("strinfo_struct pool", + sizeof (struct strinfo_struct), 64); + + calculate_dominance_info (CDI_DOMINATORS); + + /* String length optimization is implemented as a walk of the dominator + tree and a forward walk of statements within each block. */ + strlen_dom_walker (CDI_DOMINATORS).walk (fun->cfg->x_entry_block_ptr); + + ssa_ver_to_stridx.release (); + free_alloc_pool (strinfo_pool); + if (decl_to_stridxlist_htab.is_created ()) + { + obstack_free (&stridx_obstack, NULL); + decl_to_stridxlist_htab.dispose (); + } + laststmt.stmt = NULL; + laststmt.len = NULL_TREE; + laststmt.stridx = 0; + + return 0; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 59793567994..e040c4fc58d 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -6988,12 +6988,6 @@ compute_may_aliases (void) return 0; } -static bool -gate_tree_pta (void) -{ - return flag_tree_pta; -} - /* A dummy pass to cause points-to information to be computed via TODO_rebuild_alias. */ @@ -7004,7 +6998,6 @@ const pass_data pass_data_build_alias = GIMPLE_PASS, /* type */ "alias", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -7022,7 +7015,7 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_pta (); } + virtual bool gate (function *) { return flag_tree_pta; } }; // class pass_build_alias @@ -7044,7 +7037,6 @@ const pass_data pass_data_build_ealias = GIMPLE_PASS, /* type */ "ealias", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ false, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -7062,7 +7054,7 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_pta (); } + virtual bool gate (function *) { return flag_tree_pta; } }; // class pass_build_ealias @@ -7075,16 +7067,6 @@ make_pass_build_ealias (gcc::context *ctxt) } -/* Return true if we should execute IPA PTA. */ -static bool -gate_ipa_pta (void) -{ - return (optimize - && flag_ipa_pta - /* Don't bother doing anything if the program has errors. */ - && !seen_error ()); -} - /* IPA PTA solutions for ESCAPED. */ struct pt_solution ipa_escaped_pt = { true, false, false, false, false, false, false, false, NULL }; @@ -7436,7 +7418,6 @@ const pass_data pass_data_ipa_pta = SIMPLE_IPA_PASS, /* type */ "pta", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_PTA, /* tv_id */ 0, /* properties_required */ @@ -7454,8 +7435,15 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_ipa_pta (); } - unsigned int execute () { return ipa_pta_execute (); } + virtual bool gate (function *) + { + return (optimize + && flag_ipa_pta + /* Don't bother doing anything if the program has errors. */ + && !seen_error ()); + } + + virtual unsigned int execute (function *) { return ipa_pta_execute (); } }; // class pass_ipa_pta diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c index a43dd1a8441..52c568a749a 100644 --- a/gcc/tree-ssa-uncprop.c +++ b/gcc/tree-ssa-uncprop.c @@ -383,47 +383,6 @@ private: auto_vec<tree, 2> m_equiv_stack; }; -/* Main driver for un-cprop. */ - -static unsigned int -tree_ssa_uncprop (void) -{ - basic_block bb; - - associate_equivalences_with_edges (); - - /* Create our global data structures. */ - val_ssa_equiv.create (1024); - - /* We're going to do a dominator walk, so ensure that we have - dominance information. */ - calculate_dominance_info (CDI_DOMINATORS); - - /* Recursively walk the dominator tree undoing unprofitable - constant/copy propagations. */ - uncprop_dom_walker (CDI_DOMINATORS).walk (cfun->cfg->x_entry_block_ptr); - - /* we just need to empty elements out of the hash table, and cleanup the - AUX field on the edges. */ - val_ssa_equiv.dispose (); - FOR_EACH_BB_FN (bb, cfun) - { - edge e; - edge_iterator ei; - - FOR_EACH_EDGE (e, ei, bb->succs) - { - if (e->aux) - { - free (e->aux); - e->aux = NULL; - } - } - } - return 0; -} - - /* We have finished processing the dominator children of BB, perform any finalization actions in preparation for leaving this node in the dominator tree. */ @@ -581,12 +540,6 @@ uncprop_dom_walker::before_dom_children (basic_block bb) uncprop_into_successor_phis (bb); } -static bool -gate_uncprop (void) -{ - return flag_tree_dom != 0; -} - namespace { const pass_data pass_data_uncprop = @@ -594,7 +547,6 @@ const pass_data pass_data_uncprop = GIMPLE_PASS, /* type */ "uncprop", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_SSA_UNCPROP, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -613,11 +565,49 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_uncprop (m_ctxt); } - bool gate () { return gate_uncprop (); } - unsigned int execute () { return tree_ssa_uncprop (); } + virtual bool gate (function *) { return flag_tree_dom != 0; } + virtual unsigned int execute (function *); }; // class pass_uncprop +unsigned int +pass_uncprop::execute (function *fun) +{ + basic_block bb; + + associate_equivalences_with_edges (); + + /* Create our global data structures. */ + val_ssa_equiv.create (1024); + + /* We're going to do a dominator walk, so ensure that we have + dominance information. */ + calculate_dominance_info (CDI_DOMINATORS); + + /* Recursively walk the dominator tree undoing unprofitable + constant/copy propagations. */ + uncprop_dom_walker (CDI_DOMINATORS).walk (fun->cfg->x_entry_block_ptr); + + /* we just need to empty elements out of the hash table, and cleanup the + AUX field on the edges. */ + val_ssa_equiv.dispose (); + FOR_EACH_BB_FN (bb, fun) + { + edge e; + edge_iterator ei; + + FOR_EACH_EDGE (e, ei, bb->succs) + { + if (e->aux) + { + free (e->aux); + e->aux = NULL; + } + } + } + return 0; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c index d7e8adb5221..96e9e609f83 100644 --- a/gcc/tree-ssa-uninit.c +++ b/gcc/tree-ssa-uninit.c @@ -2280,11 +2280,44 @@ warn_uninitialized_phi (gimple phi, vec<gimple> *worklist, } +static bool +gate_warn_uninitialized (void) +{ + return warn_uninitialized || warn_maybe_uninitialized; +} -/* Entry point to the late uninitialized warning pass. */ +namespace { -static unsigned int -execute_late_warn_uninitialized (void) +const pass_data pass_data_late_warn_uninitialized = +{ + GIMPLE_PASS, /* type */ + "uninit", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + PROP_ssa, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_late_warn_uninitialized : public gimple_opt_pass +{ +public: + pass_late_warn_uninitialized (gcc::context *ctxt) + : gimple_opt_pass (pass_data_late_warn_uninitialized, ctxt) + {} + + /* opt_pass methods: */ + opt_pass * clone () { return new pass_late_warn_uninitialized (m_ctxt); } + virtual bool gate (function *) { return gate_warn_uninitialized (); } + virtual unsigned int execute (function *); + +}; // class pass_late_warn_uninitialized + +unsigned int +pass_late_warn_uninitialized::execute (function *fun) { basic_block bb; gimple_stmt_iterator gsi; @@ -2304,34 +2337,34 @@ execute_late_warn_uninitialized (void) added_to_worklist = pointer_set_create (); /* Initialize worklist */ - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) { - gimple phi = gsi_stmt (gsi); - size_t n, i; - - n = gimple_phi_num_args (phi); - - /* Don't look at virtual operands. */ - if (virtual_operand_p (gimple_phi_result (phi))) - continue; - - for (i = 0; i < n; ++i) - { - tree op = gimple_phi_arg_def (phi, i); - if (TREE_CODE (op) == SSA_NAME - && uninit_undefined_value_p (op)) - { - worklist.safe_push (phi); + gimple phi = gsi_stmt (gsi); + size_t n, i; + + n = gimple_phi_num_args (phi); + + /* Don't look at virtual operands. */ + if (virtual_operand_p (gimple_phi_result (phi))) + continue; + + for (i = 0; i < n; ++i) + { + tree op = gimple_phi_arg_def (phi, i); + if (TREE_CODE (op) == SSA_NAME + && uninit_undefined_value_p (op)) + { + worklist.safe_push (phi); pointer_set_insert (added_to_worklist, phi); - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fprintf (dump_file, "[WORKLIST]: add to initial list: "); - print_gimple_stmt (dump_file, phi, 0, 0); - } - break; - } - } + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "[WORKLIST]: add to initial list: "); + print_gimple_stmt (dump_file, phi, 0, 0); + } + break; + } + } } while (worklist.length () != 0) @@ -2350,43 +2383,6 @@ execute_late_warn_uninitialized (void) return 0; } -static bool -gate_warn_uninitialized (void) -{ - return warn_uninitialized || warn_maybe_uninitialized; -} - -namespace { - -const pass_data pass_data_late_warn_uninitialized = -{ - GIMPLE_PASS, /* type */ - "uninit", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - PROP_ssa, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_late_warn_uninitialized : public gimple_opt_pass -{ -public: - pass_late_warn_uninitialized (gcc::context *ctxt) - : gimple_opt_pass (pass_data_late_warn_uninitialized, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_late_warn_uninitialized (m_ctxt); } - bool gate () { return gate_warn_uninitialized (); } - unsigned int execute () { return execute_late_warn_uninitialized (); } - -}; // class pass_late_warn_uninitialized - } // anon namespace gimple_opt_pass * @@ -2423,7 +2419,6 @@ const pass_data pass_data_early_warn_uninitialized = GIMPLE_PASS, /* type */ "*early_warn_uninitialized", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_UNINIT, /* tv_id */ PROP_ssa, /* properties_required */ @@ -2441,8 +2436,11 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_warn_uninitialized (); } - unsigned int execute () { return execute_early_warn_uninitialized (); } + virtual bool gate (function *) { return gate_warn_uninitialized (); } + virtual unsigned int execute (function *) + { + return execute_early_warn_uninitialized (); + } }; // class pass_early_warn_uninitialized diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 1e5e1a54614..e794dc1bfc3 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1139,15 +1139,6 @@ execute_init_datastructures (void) return 0; } -/* Gate for IPCP optimization. */ - -static bool -gate_init_datastructures (void) -{ - /* Do nothing for funcions that was produced already in SSA form. */ - return !(cfun->curr_properties & PROP_ssa); -} - namespace { const pass_data pass_data_init_datastructures = @@ -1155,7 +1146,6 @@ const pass_data pass_data_init_datastructures = GIMPLE_PASS, /* type */ "*init_datastructures", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -1173,8 +1163,16 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_init_datastructures (); } - unsigned int execute () { return execute_init_datastructures (); } + virtual bool gate (function *fun) + { + /* Do nothing for funcions that was produced already in SSA form. */ + return !(fun->curr_properties & PROP_ssa); + } + + virtual unsigned int execute (function *) + { + return execute_init_datastructures (); + } }; // class pass_init_datastructures @@ -1686,7 +1684,6 @@ const pass_data pass_data_update_address_taken = GIMPLE_PASS, /* type */ "addressables", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ false, /* has_execute */ TV_ADDRESS_TAKEN, /* tv_id */ PROP_ssa, /* properties_required */ diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c index f0450561e27..fa7eaf3b476 100644 --- a/gcc/tree-ssanames.c +++ b/gcc/tree-ssanames.c @@ -562,39 +562,6 @@ replace_ssa_name_symbol (tree ssa_name, tree sym) /* Return SSA names that are unused to GGC memory and compact the SSA version namespace. This is used to keep footprint of compiler during interprocedural optimization. */ -static unsigned int -release_dead_ssa_names (void) -{ - unsigned i, j; - int n = vec_safe_length (FREE_SSANAMES (cfun)); - - /* Now release the freelist. */ - vec_free (FREE_SSANAMES (cfun)); - - /* And compact the SSA number space. We make sure to not change the - relative order of SSA versions. */ - for (i = 1, j = 1; i < cfun->gimple_df->ssa_names->length (); ++i) - { - tree name = ssa_name (i); - if (name) - { - if (i != j) - { - SSA_NAME_VERSION (name) = j; - (*cfun->gimple_df->ssa_names)[j] = name; - } - j++; - } - } - cfun->gimple_df->ssa_names->truncate (j); - - statistics_counter_event (cfun, "SSA names released", n); - statistics_counter_event (cfun, "SSA name holes removed", i - j); - if (dump_file) - fprintf (dump_file, "Released %i names, %.2f%%, removed %i holes\n", - n, n * 100.0 / num_ssa_names, i - j); - return 0; -} namespace { @@ -603,7 +570,6 @@ const pass_data pass_data_release_ssa_names = GIMPLE_PASS, /* type */ "release_ssa", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_TREE_SSA_OTHER, /* tv_id */ PROP_ssa, /* properties_required */ @@ -621,10 +587,44 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return release_dead_ssa_names (); } + virtual unsigned int execute (function *); }; // class pass_release_ssa_names +unsigned int +pass_release_ssa_names::execute (function *fun) +{ + unsigned i, j; + int n = vec_safe_length (FREE_SSANAMES (fun)); + + /* Now release the freelist. */ + vec_free (FREE_SSANAMES (fun)); + + /* And compact the SSA number space. We make sure to not change the + relative order of SSA versions. */ + for (i = 1, j = 1; i < fun->gimple_df->ssa_names->length (); ++i) + { + tree name = ssa_name (i); + if (name) + { + if (i != j) + { + SSA_NAME_VERSION (name) = j; + (*fun->gimple_df->ssa_names)[j] = name; + } + j++; + } + } + fun->gimple_df->ssa_names->truncate (j); + + statistics_counter_event (fun, "SSA names released", n); + statistics_counter_event (fun, "SSA name holes removed", i - j); + if (dump_file) + fprintf (dump_file, "Released %i names, %.2f%%, removed %i holes\n", + n, n * 100.0 / num_ssa_names, i - j); + return 0; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index feb6eced014..1cdf0edd82b 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -664,21 +664,42 @@ check_all_va_list_escapes (struct stdarg_info *si) } -/* Return true if this optimization pass should be done. - It makes only sense for stdarg functions. */ +namespace { -static bool -gate_optimize_stdarg (void) +const pass_data pass_data_stdarg = { - /* This optimization is only for stdarg functions. */ - return cfun->stdarg != 0; -} + GIMPLE_PASS, /* type */ + "stdarg", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_NONE, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; +class pass_stdarg : public gimple_opt_pass +{ +public: + pass_stdarg (gcc::context *ctxt) + : gimple_opt_pass (pass_data_stdarg, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *fun) + { + /* This optimization is only for stdarg functions. */ + return fun->stdarg != 0; + } -/* Entry point to the stdarg optimization pass. */ + virtual unsigned int execute (function *); -static unsigned int -execute_optimize_stdarg (void) +}; // class pass_stdarg + +unsigned int +pass_stdarg::execute (function *fun) { basic_block bb; bool va_list_escapes = false; @@ -688,8 +709,8 @@ execute_optimize_stdarg (void) const char *funcname = NULL; tree cfun_va_list; - cfun->va_list_gpr_size = 0; - cfun->va_list_fpr_size = 0; + fun->va_list_gpr_size = 0; + fun->va_list_fpr_size = 0; memset (&si, 0, sizeof (si)); si.va_list_vars = BITMAP_ALLOC (NULL); si.va_list_escape_vars = BITMAP_ALLOC (NULL); @@ -697,13 +718,13 @@ execute_optimize_stdarg (void) if (dump_file) funcname = lang_hooks.decl_printable_name (current_function_decl, 2); - cfun_va_list = targetm.fn_abi_va_list (cfun->decl); + cfun_va_list = targetm.fn_abi_va_list (fun->decl); va_list_simple_ptr = POINTER_TYPE_P (cfun_va_list) && (TREE_TYPE (cfun_va_list) == void_type_node || TREE_TYPE (cfun_va_list) == char_type_node); gcc_assert (is_gimple_reg_type (cfun_va_list) == va_list_simple_ptr); - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator i; @@ -752,7 +773,7 @@ execute_optimize_stdarg (void) ap = TREE_OPERAND (ap, 0); } if (TYPE_MAIN_VARIANT (TREE_TYPE (ap)) - != TYPE_MAIN_VARIANT (targetm.fn_abi_va_list (cfun->decl)) + != TYPE_MAIN_VARIANT (targetm.fn_abi_va_list (fun->decl)) || TREE_CODE (ap) != VAR_DECL) { va_list_escapes = true; @@ -807,13 +828,13 @@ execute_optimize_stdarg (void) /* For void * or char * va_list there is just one counter (va_list itself). Use VA_LIST_GPR_SIZE for it. */ if (va_list_simple_ptr) - cfun->va_list_fpr_size = VA_LIST_MAX_FPR_SIZE; + fun->va_list_fpr_size = VA_LIST_MAX_FPR_SIZE; calculate_dominance_info (CDI_DOMINATORS); memset (&wi, 0, sizeof (wi)); wi.info = si.va_list_vars; - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { gimple_stmt_iterator i; @@ -974,8 +995,8 @@ execute_optimize_stdarg (void) finish: if (va_list_escapes) { - cfun->va_list_gpr_size = VA_LIST_MAX_GPR_SIZE; - cfun->va_list_fpr_size = VA_LIST_MAX_FPR_SIZE; + fun->va_list_gpr_size = VA_LIST_MAX_GPR_SIZE; + fun->va_list_fpr_size = VA_LIST_MAX_FPR_SIZE; } BITMAP_FREE (si.va_list_vars); BITMAP_FREE (si.va_list_escape_vars); @@ -984,12 +1005,12 @@ finish: { fprintf (dump_file, "%s: va_list escapes %d, needs to save ", funcname, (int) va_list_escapes); - if (cfun->va_list_gpr_size >= VA_LIST_MAX_GPR_SIZE) + if (fun->va_list_gpr_size >= VA_LIST_MAX_GPR_SIZE) fputs ("all", dump_file); else fprintf (dump_file, "%d", cfun->va_list_gpr_size); fputs (" GPR units and ", dump_file); - if (cfun->va_list_fpr_size >= VA_LIST_MAX_FPR_SIZE) + if (fun->va_list_fpr_size >= VA_LIST_MAX_FPR_SIZE) fputs ("all", dump_file); else fprintf (dump_file, "%d", cfun->va_list_fpr_size); @@ -998,37 +1019,6 @@ finish: return 0; } - -namespace { - -const pass_data pass_data_stdarg = -{ - GIMPLE_PASS, /* type */ - "stdarg", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_stdarg : public gimple_opt_pass -{ -public: - pass_stdarg (gcc::context *ctxt) - : gimple_opt_pass (pass_data_stdarg, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_optimize_stdarg (); } - unsigned int execute () { return execute_optimize_stdarg (); } - -}; // class pass_stdarg - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c index aadf9c1b1dd..a6ced40441f 100644 --- a/gcc/tree-switch-conversion.c +++ b/gcc/tree-switch-conversion.c @@ -1420,12 +1420,43 @@ process_switch (gimple swtch) /* The main function of the pass scans statements for switches and invokes process_switch on them. */ -static unsigned int -do_switchconv (void) +namespace { + +const pass_data pass_data_convert_switch = +{ + GIMPLE_PASS, /* type */ + "switchconv", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_SWITCH_CONVERSION, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_update_ssa | TODO_verify_ssa + | TODO_verify_stmts + | TODO_verify_flow ), /* todo_flags_finish */ +}; + +class pass_convert_switch : public gimple_opt_pass +{ +public: + pass_convert_switch (gcc::context *ctxt) + : gimple_opt_pass (pass_data_convert_switch, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return flag_tree_switch_conversion != 0; } + virtual unsigned int execute (function *); + +}; // class pass_convert_switch + +unsigned int +pass_convert_switch::execute (function *fun) { basic_block bb; - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { const char *failure_reason; gimple stmt = last_stmt (bb); @@ -1471,46 +1502,6 @@ do_switchconv (void) return 0; } -/* The pass gate. */ - -static bool -switchconv_gate (void) -{ - return flag_tree_switch_conversion != 0; -} - -namespace { - -const pass_data pass_data_convert_switch = -{ - GIMPLE_PASS, /* type */ - "switchconv", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_SWITCH_CONVERSION, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_update_ssa | TODO_verify_ssa - | TODO_verify_stmts - | TODO_verify_flow ), /* todo_flags_finish */ -}; - -class pass_convert_switch : public gimple_opt_pass -{ -public: - pass_convert_switch (gcc::context *ctxt) - : gimple_opt_pass (pass_data_convert_switch, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return switchconv_gate (); } - unsigned int execute () { return do_switchconv (); } - -}; // class pass_convert_switch - } // anon namespace gimple_opt_pass * diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index 3488c2fc2c2..11a29659bc5 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -1065,12 +1065,6 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls) return 0; } -static unsigned int -execute_tail_recursion (void) -{ - return tree_optimize_tail_calls_1 (false); -} - static bool gate_tail_calls (void) { @@ -1090,7 +1084,6 @@ const pass_data pass_data_tail_recursion = GIMPLE_PASS, /* type */ "tailr", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -1109,8 +1102,11 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_tail_recursion (m_ctxt); } - bool gate () { return gate_tail_calls (); } - unsigned int execute () { return execute_tail_recursion (); } + virtual bool gate (function *) { return gate_tail_calls (); } + virtual unsigned int execute (function *) + { + return tree_optimize_tail_calls_1 (false); + } }; // class pass_tail_recursion @@ -1129,7 +1125,6 @@ const pass_data pass_data_tail_calls = GIMPLE_PASS, /* type */ "tailc", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -1147,8 +1142,8 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tail_calls (); } - unsigned int execute () { return execute_tail_calls (); } + virtual bool gate (function *) { return gate_tail_calls (); } + virtual unsigned int execute (function *) { return execute_tail_calls (); } }; // class pass_tail_calls diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index 30c132ebe17..9ac111772f4 100644 --- a/gcc/tree-vect-generic.c +++ b/gcc/tree-vect-generic.c @@ -1526,12 +1526,6 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi) /* Use this to lower vector operations introduced by the vectorizer, if it may need the bit-twiddling tricks implemented in this file. */ -static bool -gate_expand_vector_operations_ssa (void) -{ - return !(cfun->curr_properties & PROP_gimple_lvec); -} - static unsigned int expand_vector_operations (void) { @@ -1564,7 +1558,6 @@ const pass_data pass_data_lower_vector = GIMPLE_PASS, /* type */ "veclower", /* name */ OPTGROUP_VEC, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -1585,8 +1578,15 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_expand_vector_operations_ssa (); } - unsigned int execute () { return expand_vector_operations (); } + virtual bool gate (function *fun) + { + return !(fun->curr_properties & PROP_gimple_lvec); + } + + virtual unsigned int execute (function *) + { + return expand_vector_operations (); + } }; // class pass_lower_vector @@ -1605,7 +1605,6 @@ const pass_data pass_data_lower_vector_ssa = GIMPLE_PASS, /* type */ "veclower2", /* name */ OPTGROUP_VEC, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ @@ -1627,7 +1626,10 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_lower_vector_ssa (m_ctxt); } - unsigned int execute () { return expand_vector_operations (); } + virtual unsigned int execute (function *) + { + return expand_vector_operations (); + } }; // class pass_lower_vector_ssa diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index dcc1cd6c5b5..75116177fed 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -529,7 +529,8 @@ vect_handle_widen_op_by_const (gimple stmt, enum tree_code code, Try to find the following pattern: - type a_t, b_t; + type1 a_t; + type2 b_t; TYPE a_T, b_T, prod_T; S1 a_t = ; @@ -538,11 +539,12 @@ vect_handle_widen_op_by_const (gimple stmt, enum tree_code code, S4 b_T = (TYPE) b_t; S5 prod_T = a_T * b_T; - where type 'TYPE' is at least double the size of type 'type'. + where type 'TYPE' is at least double the size of type 'type1' and 'type2'. Also detect unsigned cases: - unsigned type a_t, b_t; + unsigned type1 a_t; + unsigned type2 b_t; unsigned TYPE u_prod_T; TYPE a_T, b_T, prod_T; @@ -596,6 +598,8 @@ vect_handle_widen_op_by_const (gimple stmt, enum tree_code code, * Return value: A new stmt that will be used to replace the sequence of stmts that constitute the pattern. In this case it will be: WIDEN_MULT <a_t, b_t> + If the result of WIDEN_MULT needs to be converted to a larger type, the + returned stmt will be this type conversion stmt. */ static gimple @@ -606,8 +610,8 @@ vect_recog_widen_mult_pattern (vec<gimple> *stmts, gimple def_stmt0, def_stmt1; tree oprnd0, oprnd1; tree type, half_type0, half_type1; - gimple pattern_stmt; - tree vectype, vectype_out = NULL_TREE; + gimple new_stmt = NULL, pattern_stmt = NULL; + tree vectype, vecitype; tree var; enum tree_code dummy_code; int dummy_int; @@ -661,6 +665,33 @@ vect_recog_widen_mult_pattern (vec<gimple> *stmts, return NULL; } + /* If the two arguments have different sizes, convert the one with + the smaller type into the larger type. */ + if (TYPE_PRECISION (half_type0) != TYPE_PRECISION (half_type1)) + { + tree* oprnd = NULL; + gimple def_stmt = NULL; + + if (TYPE_PRECISION (half_type0) < TYPE_PRECISION (half_type1)) + { + def_stmt = def_stmt0; + half_type0 = half_type1; + oprnd = &oprnd0; + } + else + { + def_stmt = def_stmt1; + half_type1 = half_type0; + oprnd = &oprnd1; + } + + tree old_oprnd = gimple_assign_rhs1 (def_stmt); + tree new_oprnd = make_ssa_name (half_type0, NULL); + new_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd, + old_oprnd, NULL_TREE); + *oprnd = new_oprnd; + } + /* Handle unsigned case. Look for S6 u_prod_T = (unsigned TYPE) prod_T; Use unsigned TYPE as the type for WIDEN_MULT_EXPR. */ @@ -692,6 +723,15 @@ vect_recog_widen_mult_pattern (vec<gimple> *stmts, if (!types_compatible_p (half_type0, half_type1)) return NULL; + /* If TYPE is more than twice larger than HALF_TYPE, we use WIDEN_MULT + to get an intermediate result of type ITYPE. In this case we need + to build a statement to convert this intermediate result to type TYPE. */ + tree itype = type; + if (TYPE_PRECISION (type) > TYPE_PRECISION (half_type0) * 2) + itype = build_nonstandard_integer_type + (GET_MODE_BITSIZE (TYPE_MODE (half_type0)) * 2, + TYPE_UNSIGNED (type)); + /* Pattern detected. */ if (dump_enabled_p ()) dump_printf_loc (MSG_NOTE, vect_location, @@ -699,23 +739,56 @@ vect_recog_widen_mult_pattern (vec<gimple> *stmts, /* Check target support */ vectype = get_vectype_for_scalar_type (half_type0); - vectype_out = get_vectype_for_scalar_type (type); + vecitype = get_vectype_for_scalar_type (itype); if (!vectype - || !vectype_out + || !vecitype || !supportable_widening_operation (WIDEN_MULT_EXPR, last_stmt, - vectype_out, vectype, + vecitype, vectype, &dummy_code, &dummy_code, &dummy_int, &dummy_vec)) return NULL; *type_in = vectype; - *type_out = vectype_out; + *type_out = get_vectype_for_scalar_type (type); /* Pattern supported. Create a stmt to be used to replace the pattern: */ - var = vect_recog_temp_ssa_var (type, NULL); + var = vect_recog_temp_ssa_var (itype, NULL); pattern_stmt = gimple_build_assign_with_ops (WIDEN_MULT_EXPR, var, oprnd0, oprnd1); + stmt_vec_info stmt_vinfo = vinfo_for_stmt (last_stmt); + loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo); + bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_vinfo); + STMT_VINFO_PATTERN_DEF_SEQ (stmt_vinfo) = NULL; + + /* If the original two operands have different sizes, we may need to convert + the smaller one into the larget type. If this is the case, at this point + the new stmt is already built. */ + if (new_stmt) + { + append_pattern_def_seq (stmt_vinfo, new_stmt); + stmt_vec_info new_stmt_info + = new_stmt_vec_info (new_stmt, loop_vinfo, bb_vinfo); + set_vinfo_for_stmt (new_stmt, new_stmt_info); + STMT_VINFO_VECTYPE (new_stmt_info) = vectype; + } + + /* If ITYPE is not TYPE, we need to build a type convertion stmt to convert + the result of the widen-mult operation into type TYPE. */ + if (itype != type) + { + append_pattern_def_seq (stmt_vinfo, pattern_stmt); + stmt_vec_info pattern_stmt_info + = new_stmt_vec_info (pattern_stmt, loop_vinfo, bb_vinfo); + set_vinfo_for_stmt (pattern_stmt, pattern_stmt_info); + STMT_VINFO_VECTYPE (pattern_stmt_info) = vecitype; + pattern_stmt + = gimple_build_assign_with_ops (NOP_EXPR, + vect_recog_temp_ssa_var (type, NULL), + gimple_assign_lhs (pattern_stmt), + NULL_TREE); + } + if (dump_enabled_p ()) dump_gimple_stmt_loc (MSG_NOTE, vect_location, TDF_SLIM, pattern_stmt, 0); diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index 765e38f689a..d7de964fa37 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -586,39 +586,6 @@ vectorize_loops (void) /* Entry point to basic block SLP phase. */ -static unsigned int -execute_vect_slp (void) -{ - basic_block bb; - - init_stmt_vec_info_vec (); - - FOR_EACH_BB_FN (bb, cfun) - { - vect_location = find_bb_location (bb); - - if (vect_slp_analyze_bb (bb)) - { - if (!dbg_cnt (vect_slp)) - break; - - vect_slp_transform_bb (bb); - if (dump_enabled_p ()) - dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location, - "basic block vectorized\n"); - } - } - - free_stmt_vec_info_vec (); - return 0; -} - -static bool -gate_vect_slp (void) -{ - return flag_tree_slp_vectorize != 0; -} - namespace { const pass_data pass_data_slp_vectorize = @@ -626,7 +593,6 @@ const pass_data pass_data_slp_vectorize = GIMPLE_PASS, /* type */ "slp", /* name */ OPTGROUP_LOOP | OPTGROUP_VEC, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_SLP_VECTORIZATION, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -645,11 +611,38 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_vect_slp (); } - unsigned int execute () { return execute_vect_slp (); } + virtual bool gate (function *) { return flag_tree_slp_vectorize != 0; } + virtual unsigned int execute (function *); }; // class pass_slp_vectorize +unsigned int +pass_slp_vectorize::execute (function *fun) +{ + basic_block bb; + + init_stmt_vec_info_vec (); + + FOR_EACH_BB_FN (bb, fun) + { + vect_location = find_bb_location (bb); + + if (vect_slp_analyze_bb (bb)) + { + if (!dbg_cnt (vect_slp)) + break; + + vect_slp_transform_bb (bb); + if (dump_enabled_p ()) + dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location, + "basic block vectorized\n"); + } + } + + free_stmt_vec_info_vec (); + return 0; +} + } // anon namespace gimple_opt_pass * @@ -703,13 +696,6 @@ increase_alignment (void) } -static bool -gate_increase_alignment (void) -{ - return flag_section_anchors && flag_tree_loop_vectorize; -} - - namespace { const pass_data pass_data_ipa_increase_alignment = @@ -717,7 +703,6 @@ const pass_data pass_data_ipa_increase_alignment = SIMPLE_IPA_PASS, /* type */ "increase_alignment", /* name */ OPTGROUP_LOOP | OPTGROUP_VEC, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_IPA_OPT, /* tv_id */ 0, /* properties_required */ @@ -735,8 +720,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_increase_alignment (); } - unsigned int execute () { return increase_alignment (); } + virtual bool gate (function *) + { + return flag_section_anchors && flag_tree_loop_vectorize; + } + + virtual unsigned int execute (function *) { return increase_alignment (); } }; // class pass_ipa_increase_alignment diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index e6a0754f95b..d3df036696d 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -9834,12 +9834,6 @@ execute_vrp (void) return 0; } -static bool -gate_vrp (void) -{ - return flag_tree_vrp != 0; -} - namespace { const pass_data pass_data_vrp = @@ -9847,7 +9841,6 @@ const pass_data pass_data_vrp = GIMPLE_PASS, /* type */ "vrp", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_TREE_VRP, /* tv_id */ PROP_ssa, /* properties_required */ @@ -9868,8 +9861,8 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_vrp (m_ctxt); } - bool gate () { return gate_vrp (); } - unsigned int execute () { return execute_vrp (); } + virtual bool gate (function *) { return flag_tree_vrp != 0; } + virtual unsigned int execute (function *) { return execute_vrp (); } }; // class pass_vrp diff --git a/gcc/tree.c b/gcc/tree.c index 1c440b2217c..3d48d924b12 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -5641,7 +5641,6 @@ const pass_data pass_data_ipa_free_lang_data = SIMPLE_IPA_PASS, /* type */ "*free_lang_data", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - false, /* has_gate */ true, /* has_execute */ TV_IPA_FREE_LANG_DATA, /* tv_id */ 0, /* properties_required */ @@ -5659,7 +5658,7 @@ public: {} /* opt_pass methods: */ - unsigned int execute () { return free_lang_data (); } + virtual unsigned int execute (function *) { return free_lang_data (); } }; // class pass_ipa_free_lang_data diff --git a/gcc/tsan.c b/gcc/tsan.c index 2e32cd2b32f..d9f5718ee7e 100644 --- a/gcc/tsan.c +++ b/gcc/tsan.c @@ -715,14 +715,6 @@ tsan_pass (void) return 0; } -/* The pass's gate. */ - -static bool -tsan_gate (void) -{ - return (flag_sanitize & SANITIZE_THREAD) != 0; -} - /* Inserts __tsan_init () into the list of CTORs. */ void @@ -747,7 +739,6 @@ const pass_data pass_data_tsan = GIMPLE_PASS, /* type */ "tsan", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -766,8 +757,12 @@ public: /* opt_pass methods: */ opt_pass * clone () { return new pass_tsan (m_ctxt); } - bool gate () { return tsan_gate (); } - unsigned int execute () { return tsan_pass (); } + virtual bool gate (function *) +{ + return (flag_sanitize & SANITIZE_THREAD) != 0; +} + + virtual unsigned int execute (function *) { return tsan_pass (); } }; // class pass_tsan @@ -779,12 +774,6 @@ make_pass_tsan (gcc::context *ctxt) return new pass_tsan (ctxt); } -static bool -tsan_gate_O0 (void) -{ - return (flag_sanitize & SANITIZE_THREAD) != 0 && !optimize; -} - namespace { const pass_data pass_data_tsan_O0 = @@ -792,7 +781,6 @@ const pass_data pass_data_tsan_O0 = GIMPLE_PASS, /* type */ "tsan0", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_NONE, /* tv_id */ ( PROP_ssa | PROP_cfg ), /* properties_required */ @@ -810,8 +798,12 @@ public: {} /* opt_pass methods: */ - bool gate () { return tsan_gate_O0 (); } - unsigned int execute () { return tsan_pass (); } + virtual bool gate (function *) + { + return (flag_sanitize & SANITIZE_THREAD) != 0 && !optimize; + } + + virtual unsigned int execute (function *) { return tsan_pass (); } }; // class pass_tsan_O0 diff --git a/gcc/ubsan.c b/gcc/ubsan.c index ac40c85f56b..cf25aa3edf6 100644 --- a/gcc/ubsan.c +++ b/gcc/ubsan.c @@ -859,17 +859,49 @@ instrument_bool_enum_load (gimple_stmt_iterator *gsi) gsi_insert_before (&gsi2, g, GSI_SAME_STMT); } -/* Gate and execute functions for ubsan pass. */ +namespace { + +const pass_data pass_data_ubsan = +{ + GIMPLE_PASS, /* type */ + "ubsan", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_TREE_UBSAN, /* tv_id */ + ( PROP_cfg | PROP_ssa ), /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_update_ssa, /* todo_flags_finish */ +}; -static unsigned int -ubsan_pass (void) +class pass_ubsan : public gimple_opt_pass +{ +public: + pass_ubsan (gcc::context *ctxt) + : gimple_opt_pass (pass_data_ubsan, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) + { + return flag_sanitize & (SANITIZE_NULL | SANITIZE_SI_OVERFLOW + | SANITIZE_BOOL | SANITIZE_ENUM); + } + + virtual unsigned int execute (function *); + +}; // class pass_ubsan + +unsigned int +pass_ubsan::execute (function *fun) { basic_block bb; gimple_stmt_iterator gsi; initialize_sanitizer_builtins (); - FOR_EACH_BB_FN (bb, cfun) + FOR_EACH_BB_FN (bb, fun) { for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi);) { @@ -902,43 +934,6 @@ ubsan_pass (void) return 0; } -static bool -gate_ubsan (void) -{ - return flag_sanitize & (SANITIZE_NULL | SANITIZE_SI_OVERFLOW - | SANITIZE_BOOL | SANITIZE_ENUM); -} - -namespace { - -const pass_data pass_data_ubsan = -{ - GIMPLE_PASS, /* type */ - "ubsan", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_TREE_UBSAN, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_update_ssa, /* todo_flags_finish */ -}; - -class pass_ubsan : public gimple_opt_pass -{ -public: - pass_ubsan (gcc::context *ctxt) - : gimple_opt_pass (pass_data_ubsan, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_ubsan (); } - unsigned int execute () { return ubsan_pass (); } - -}; // class pass_ubsan - } // anon namespace gimple_opt_pass * diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 0d65f8e99f8..7309846eb88 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -10361,14 +10361,6 @@ variable_tracking_main (void) return ret; } -static bool -gate_handle_var_tracking (void) -{ - return (flag_var_tracking && !targetm.delay_vartrack); -} - - - namespace { const pass_data pass_data_variable_tracking = @@ -10376,7 +10368,6 @@ const pass_data pass_data_variable_tracking = RTL_PASS, /* type */ "vartrack", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_VAR_TRACKING, /* tv_id */ 0, /* properties_required */ @@ -10394,8 +10385,15 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_handle_var_tracking (); } - unsigned int execute () { return variable_tracking_main (); } + virtual bool gate (function *) + { + return (flag_var_tracking && !targetm.delay_vartrack); + } + + virtual unsigned int execute (function *) + { + return variable_tracking_main (); + } }; // class pass_variable_tracking diff --git a/gcc/vtable-verify.c b/gcc/vtable-verify.c index 4e4c21a9f4f..b99ff6cf896 100644 --- a/gcc/vtable-verify.c +++ b/gcc/vtable-verify.c @@ -723,31 +723,6 @@ verify_bb_vtables (basic_block bb) } } -/* Main function, called from pass->excute(). Loop through all the - basic blocks in the current function, passing them to - verify_bb_vtables, which searches for virtual calls, and inserts - calls to __VLTVerifyVtablePointer. */ - -unsigned int -vtable_verify_main (void) -{ - unsigned int ret = 1; - basic_block bb; - - FOR_ALL_BB_FN (bb, cfun) - verify_bb_vtables (bb); - - return ret; -} - -/* Gate function for the pass. */ - -static bool -gate_tree_vtable_verify (void) -{ - return (flag_vtable_verify); -} - /* Definition of this optimization pass. */ namespace { @@ -757,7 +732,6 @@ const pass_data pass_data_vtable_verify = GIMPLE_PASS, /* type */ "vtable-verify", /* name */ OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ true, /* has_execute */ TV_VTABLE_VERIFICATION, /* tv_id */ ( PROP_cfg | PROP_ssa ), /* properties_required */ @@ -775,11 +749,27 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_tree_vtable_verify (); } - unsigned int execute () { return vtable_verify_main (); } + virtual bool gate (function *) { return (flag_vtable_verify); } + virtual unsigned int execute (function *); }; // class pass_vtable_verify +/* Loop through all the basic blocks in the current function, passing them to + verify_bb_vtables, which searches for virtual calls, and inserts + calls to __VLTVerifyVtablePointer. */ + +unsigned int +pass_vtable_verify::execute (function *fun) +{ + unsigned int ret = 1; + basic_block bb; + + FOR_ALL_BB_FN (bb, fun) + verify_bb_vtables (bb); + + return ret; +} + } // anon namespace gimple_opt_pass * diff --git a/gcc/web.c b/gcc/web.c index d67151c7139..46a6ff7448d 100644 --- a/gcc/web.c +++ b/gcc/web.c @@ -325,16 +325,37 @@ replace_ref (df_ref ref, rtx reg) } -static bool -gate_handle_web (void) +namespace { + +const pass_data pass_data_web = { - return (optimize > 0 && flag_web); -} + RTL_PASS, /* type */ + "web", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + true, /* has_execute */ + TV_WEB, /* tv_id */ + 0, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + ( TODO_df_finish | TODO_verify_rtl_sharing ), /* todo_flags_finish */ +}; -/* Main entry point. */ +class pass_web : public rtl_opt_pass +{ +public: + pass_web (gcc::context *ctxt) + : rtl_opt_pass (pass_data_web, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *) { return (optimize > 0 && flag_web); } + virtual unsigned int execute (function *); -static unsigned int -web_main (void) +}; // class pass_web + +unsigned int +pass_web::execute (function *fun) { struct web_entry *def_entry; struct web_entry *use_entry; @@ -351,7 +372,7 @@ web_main (void) df_set_flags (DF_DEFER_INSN_RESCAN); /* Assign ids to the uses. */ - FOR_ALL_BB_FN (bb, cfun) + FOR_ALL_BB_FN (bb, fun) FOR_BB_INSNS (bb, insn) { unsigned int uid = INSN_UID (insn); @@ -379,7 +400,7 @@ web_main (void) use_entry = XCNEWVEC (struct web_entry, uses_num); /* Produce the web. */ - FOR_ALL_BB_FN (bb, cfun) + FOR_ALL_BB_FN (bb, fun) FOR_BB_INSNS (bb, insn) { unsigned int uid = INSN_UID (insn); @@ -404,7 +425,7 @@ web_main (void) /* Update the instruction stream, allocating new registers for split pseudos in progress. */ - FOR_ALL_BB_FN (bb, cfun) + FOR_ALL_BB_FN (bb, fun) FOR_BB_INSNS (bb, insn) { unsigned int uid = INSN_UID (insn); @@ -449,36 +470,6 @@ web_main (void) return 0; } -namespace { - -const pass_data pass_data_web = -{ - RTL_PASS, /* type */ - "web", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_WEB, /* tv_id */ - 0, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_df_finish | TODO_verify_rtl_sharing ), /* todo_flags_finish */ -}; - -class pass_web : public rtl_opt_pass -{ -public: - pass_web (gcc::context *ctxt) - : rtl_opt_pass (pass_data_web, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_handle_web (); } - unsigned int execute () { return web_main (); } - -}; // class pass_web - } // anon namespace rtl_opt_pass * diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 3a63434157b..ce417632b19 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,7 @@ +2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * lex.c: Remove Solaris 9 reference. + 2014-02-24 Walter Lee <walt@tilera.com> * configure.ac: Change "tilepro" triplet to "tilepro*". diff --git a/libcpp/lex.c b/libcpp/lex.c index a2168e4129c..b7836225332 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -263,11 +263,9 @@ search_line_acc_char (const uchar *s, const uchar *end ATTRIBUTE_UNUSED) } } -/* Disable on Solaris 2/x86 until the following problems can be properly +/* Disable on Solaris 2/x86 until the following problem can be properly autoconfed: - The Solaris 9 assembler cannot assemble SSE4.2 insns. - Before Solaris 9 Update 6, SSE insns cannot be executed. The Solaris 10+ assembler tags objects with the instruction set extensions used, so SSE4.2 executables cannot run on machines that don't support that extension. */ diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index edac501b01c..d128b08a8ad 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,14 @@ +2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config/i386/crtfastmath.c (set_fast_math): Remove SSE execution + check. + * config/i386/sol2-unwind.h (x86_fallback_frame_state): Remove + Solaris 9 single-threaded support. + * config/sparc/sol2-unwind.h (sparc64_is_sighandler): Remove + Solaris 9 single-threaded support. Add call_user_handler code + sequences. + (sparc_is_sighandler): Likewise. + 2014-03-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> * config.host: Append t-floattodi to tmake_file depending on diff --git a/libgcc/config/i386/crtfastmath.c b/libgcc/config/i386/crtfastmath.c index ad359d418fd..24a08843286 100644 --- a/libgcc/config/i386/crtfastmath.c +++ b/libgcc/config/i386/crtfastmath.c @@ -70,28 +70,6 @@ set_fast_math (void) { unsigned int mxcsr; -#if defined __sun__ && defined __svr4__ - /* Solaris 2 before Solaris 9 4/04 cannot execute SSE instructions even - if the CPU supports them. Programs receive SIGILL instead, so check - for that at runtime. */ - struct sigaction act, oact; - - act.sa_handler = sigill_hdlr; - sigemptyset (&act.sa_mask); - /* Need to set SA_SIGINFO so a ucontext_t * is passed to the handler. */ - act.sa_flags = SA_SIGINFO; - sigaction (SIGILL, &act, &oact); - - /* We need a single SSE instruction here so the handler can safely skip - over it. */ - __asm__ volatile ("movaps %xmm0,%xmm0"); - - sigaction (SIGILL, &oact, NULL); - - if (sigill_caught) - return; -#endif /* __sun__ && __svr4__ */ - if (edx & bit_FXSAVE) { /* Check if DAZ is available. */ diff --git a/libgcc/config/i386/sol2-unwind.h b/libgcc/config/i386/sol2-unwind.h index e5de56370d8..1a1770cc822 100644 --- a/libgcc/config/i386/sol2-unwind.h +++ b/libgcc/config/i386/sol2-unwind.h @@ -144,26 +144,8 @@ x86_fallback_frame_state (struct _Unwind_Context *context, mcontext_t *mctx; long new_cfa; - if (/* Solaris 9 - single-threaded - ---------------------------- - <sigacthandler+16>: mov 0x244(%ebx),%ecx - <sigacthandler+22>: mov 0x8(%ebp),%eax - <sigacthandler+25>: mov (%ecx,%eax,4),%ecx - <sigacthandler+28>: pushl 0x10(%ebp) - <sigacthandler+31>: pushl 0xc(%ebp) - <sigacthandler+34>: push %eax - <sigacthandler+35>: call *%ecx - <sigacthandler+37>: add $0xc,%esp <--- PC - <sigacthandler+40>: pushl 0x10(%ebp) */ - (*(unsigned long *)(pc - 21) == 0x2448b8b - && *(unsigned long *)(pc - 17) == 0x458b0000 - && *(unsigned long *)(pc - 13) == 0x810c8b08 - && *(unsigned long *)(pc - 9) == 0xff1075ff - && *(unsigned long *)(pc - 5) == 0xff500c75 - && *(unsigned long *)(pc - 1) == 0xcc483d1) - - || /* Solaris 9 - multi-threaded, Solaris 10 - --------------------------------------- + if (/* Solaris 10 + ----------- <__sighndlr+0>: push %ebp <__sighndlr+1>: mov %esp,%ebp <__sighndlr+3>: pushl 0x10(%ebp) diff --git a/libgcc/config/sparc/sol2-unwind.h b/libgcc/config/sparc/sol2-unwind.h index 37807f9a994..f0ececa3c96 100644 --- a/libgcc/config/sparc/sol2-unwind.h +++ b/libgcc/config/sparc/sol2-unwind.h @@ -36,44 +36,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see static int sparc64_is_sighandler (unsigned int *pc, void *cfa, int *nframes) { - if (/* Solaris 9 - single-threaded - ---------------------------- - The pattern changes slightly in different versions of the - operating system, so we skip the comparison against pc[-6] for - Solaris 9. - - <sigacthandler+24>: sra %i0, 0, %l1 - - Solaris 9 5/02: - <sigacthandler+28>: ldx [ %o2 + 0xf68 ], %g5 - Solaris 9 9/05: - <sigacthandler+28>: ldx [ %o2 + 0xe50 ], %g5 - - <sigacthandler+32>: sllx %l1, 3, %g4 - <sigacthandler+36>: mov %l1, %o0 - <sigacthandler+40>: ldx [ %g4 + %g5 ], %l0 - <sigacthandler+44>: call %l0 - <sigacthandler+48>: mov %i2, %o2 - <sigacthandler+52>: cmp %l1, 8 <--- PC */ - ( pc[-7] == 0xa33e2000 - /* skip pc[-6] */ - && pc[-5] == 0x892c7003 - && pc[-4] == 0x90100011 - && pc[-3] == 0xe0590005 - && pc[-2] == 0x9fc40000 - && pc[-1] == 0x9410001a - && pc[ 0] == 0x80a46008)) - { - /* We need to move up one frame: - - <signal handler> <-- context->cfa - sigacthandler - <kernel> - */ - *nframes = 1; - return 1; - } - if (/* Solaris 8+ - multi-threaded ---------------------------- <__sighndlr>: save %sp, -176, %sp @@ -101,19 +63,35 @@ sparc64_is_sighandler (unsigned int *pc, void *cfa, int *nframes) = *(unsigned int *)(*(unsigned long *)(cfa + 15*8) - 4); if (cuh_pattern == 0x92100019) - /* This matches the call_user_handler pattern for Solaris 11. - This is the same setup as for Solaris 9, see below. */ + /* This matches the call_user_handler pattern in Solaris 11 + libc.so.1: + + <call_user_handler+864>: mov %i1, %o1 + <call_user_handler+868>: call __sighndlr + + This is the same setup as for Solaris 10, see below. */ *nframes = 3; else if (cuh_pattern == 0xd25fa7ef) { - /* This matches the call_user_handler pattern for Solaris 10. + /* This matches the call_user_handler pattern in Solaris 10 + libc.so.1: + + <call_user_handler+988>: ldx [ %fp + 0x7ef ], %o1 + <call_user_handler+992>: call __sighndlr + There are 2 cases so we look for the return address of the caller's caller frame in order to do more pattern matching. */ unsigned long sah_address = *(unsigned long *)(cfa + 176 + 15*8); if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) - /* This is the same setup as for Solaris 9, see below. */ + /* We need to move up three frames: + + <signal handler> <-- context->cfa + __sighndlr + call_user_handler + sigacthandler + <kernel> */ *nframes = 3; else /* The sigacthandler frame isn't present in the chain. @@ -121,22 +99,19 @@ sparc64_is_sighandler (unsigned int *pc, void *cfa, int *nframes) <signal handler> <-- context->cfa __sighndlr - call_user_handler frame - <kernel> - */ + call_user_handler + <kernel> */ *nframes = 2; } - else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x94100013) - /* This matches the call_user_handler pattern for Solaris 9. - We need to move up three frames: + else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x9410001b) + /* This matches the call_user_handler pattern in Solaris 9 + libthread.so.1: - <signal handler> <-- context->cfa - __sighndlr - call_user_handler - sigacthandler - <kernel> - */ + <call_user_handler+600>: mov %i2, %o2 + <call_user_handler+604>: call __sighndlr + + This is the same setup as for Solaris 10, see above. */ *nframes = 3; return 1; @@ -178,42 +153,6 @@ sparc64_frob_update_context (struct _Unwind_Context *context, static int sparc_is_sighandler (unsigned int *pc, void *cfa, int *nframes) { - if (/* Solaris 9 - single-threaded - ---------------------------- - The pattern changes slightly in different versions of the operating - system, so we skip the comparison against pc[-6]. - - <sigacthandler+16>: add %o1, %o7, %o3 - <sigacthandler+20>: mov %i1, %o1 - - <sigacthandler+24>: ld [ %o3 + <offset> ], %o2 - - <sigacthandler+28>: sll %i0, 2, %o0 - <sigacthandler+32>: ld [ %o0 + %o2 ], %l0 - <sigacthandler+36>: mov %i0, %o0 - <sigacthandler+40>: call %l0 - <sigacthandler+44>: mov %i2, %o2 - <sigacthandler+48>: cmp %i0, 8 <--- PC */ - pc[-8] == 0x9602400f - && pc[-7] == 0x92100019 - /* skip pc[-6] */ - && pc[-5] == 0x912e2002 - && pc[-4] == 0xe002000a - && pc[-3] == 0x90100018 - && pc[-2] == 0x9fc40000 - && pc[-1] == 0x9410001a - && pc[ 0] == 0x80a62008) - { - /* We need to move up one frame: - - <signal handler> <-- context->cfa - sigacthandler - <kernel> - */ - *nframes = 1; - return 1; - } - if(/* Solaris 8+ - multi-threaded ---------------------------- <__sighndlr>: save %sp, -96, %sp @@ -241,19 +180,35 @@ sparc_is_sighandler (unsigned int *pc, void *cfa, int *nframes) = *(unsigned int *)(*(unsigned int *)(cfa + 15*4) - 4); if (cuh_pattern == 0x92100019) - /* This matches the call_user_handler pattern for Solaris 11. - This is the same setup as for Solaris 9, see below. */ + /* This matches the call_user_handler pattern in Solaris 11 + libc.so.1: + + <call_user_handler+876>: mov %i1, %o1 + <call_user_handler+880>: call __sighndlr + + This is the same setup as for Solaris 10, see below. */ *nframes = 3; else if (cuh_pattern == 0xd407a04c) { - /* This matches the call_user_handler pattern for Solaris 10. + /* This matches the call_user_handler pattern in Solaris 10 + libc.so.1: + + <call_user_handler+948>: ld [ %fp + 0x4c ], %o2 + <call_user_handler+952>: call __sighndlr + There are 2 cases so we look for the return address of the caller's caller frame in order to do more pattern matching. */ unsigned int sah_address = *(unsigned int *)(cfa + 96 + 15*4); if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) - /* This is the same setup as for Solaris 9, see below. */ + /* We need to move up three frames: + + <signal handler> <-- context->cfa + __sighndlr + call_user_handler + sigacthandler + <kernel> */ *nframes = 3; else /* The sigacthandler frame isn't present in the chain. @@ -261,22 +216,19 @@ sparc_is_sighandler (unsigned int *pc, void *cfa, int *nframes) <signal handler> <-- context->cfa __sighndlr - call_user_handler frame - <kernel> - */ + call_user_handler + <kernel> */ *nframes = 2; } else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x9410001b) - /* This matches the call_user_handler pattern for Solaris 9. - We need to move up three frames: + /* This matches the call_user_handler pattern in Solaris 9 + libthread.so.1: - <signal handler> <-- context->cfa - __sighndlr - call_user_handler - sigacthandler - <kernel> - */ + <call_user_handler+560>: mov %i2, %o2 + <call_user_handler+564>: call __sighndlr + + This is the same setup as for Solaris 10, see above. */ *nframes = 3; return 1; diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 7bfdfc439a0..33e054b9bfb 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config/fpu-387.h [__sun__ && __svr4__]: Remove SSE execution + check. + 2014-04-11 Jerry DeLisle <jvdelisle@gcc.gnu> PR libfortran/60810 diff --git a/libgfortran/config/fpu-387.h b/libgfortran/config/fpu-387.h index 8ba3f4aab40..7b562930731 100644 --- a/libgfortran/config/fpu-387.h +++ b/libgfortran/config/fpu-387.h @@ -27,26 +27,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #include "cpuid.h" #endif -#if defined(__sun__) && defined(__svr4__) -#include <signal.h> -#include <ucontext.h> - -static volatile sig_atomic_t sigill_caught; - -static void -sigill_hdlr (int sig __attribute((unused)), - siginfo_t *sip __attribute__((unused)), - ucontext_t *ucp) -{ - sigill_caught = 1; - /* Set PC to the instruction after the faulting one to skip over it, - otherwise we enter an infinite loop. 3 is the size of the movaps - instruction. */ - ucp->uc_mcontext.gregs[EIP] += 3; - setcontext (ucp); -} -#endif - static int has_sse (void) { @@ -56,32 +36,6 @@ has_sse (void) if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) return 0; -#if defined(__sun__) && defined(__svr4__) - /* Solaris 2 before Solaris 9 4/04 cannot execute SSE instructions even - if the CPU supports them. Programs receive SIGILL instead, so check - for that at runtime. */ - - if (edx & bit_SSE) - { - struct sigaction act, oact; - - act.sa_handler = sigill_hdlr; - sigemptyset (&act.sa_mask); - /* Need to set SA_SIGINFO so a ucontext_t * is passed to the handler. */ - act.sa_flags = SA_SIGINFO; - sigaction (SIGILL, &act, &oact); - - /* We need a single SSE instruction here so the handler can safely skip - over it. */ - __asm__ __volatile__ ("movaps\t%xmm0,%xmm0"); - - sigaction (SIGILL, &oact, NULL); - - if (sigill_caught) - return 0; - } -#endif /* __sun__ && __svr4__ */ - return edx & bit_SSE; #else return 1; diff --git a/libgo/go/syscall/libcall_posix.go b/libgo/go/syscall/libcall_posix.go index 8f5b0207583..b9c2d7f9b00 100644 --- a/libgo/go/syscall/libcall_posix.go +++ b/libgo/go/syscall/libcall_posix.go @@ -138,7 +138,7 @@ func (w WaitStatus) TrapCause() int //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //select(nfd _C_int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) _C_int -const nfdbits = int(unsafe.Sizeof(fds_bits_type) * 8) +const nfdbits = int(unsafe.Sizeof(fds_bits_type(0)) * 8) type FdSet struct { Bits [(FD_SETSIZE + nfdbits - 1) / nfdbits]fds_bits_type diff --git a/libgo/go/syscall/mksyscall.awk b/libgo/go/syscall/mksyscall.awk index daf6554a6cd..8d009222a18 100644 --- a/libgo/go/syscall/mksyscall.awk +++ b/libgo/go/syscall/mksyscall.awk @@ -96,8 +96,11 @@ BEGIN { cfnresult = line printf("// Automatically generated wrapper for %s/%s\n", gofnname, cfnname) - printf("//extern %s\n", cfnname) - printf("func c_%s(%s) %s\n", cfnname, cfnparams, cfnresult) + if (!(cfnname in cfns)) { + cfns[cfnname] = 1 + printf("//extern %s\n", cfnname) + printf("func c_%s(%s) %s\n", cfnname, cfnparams, cfnresult) + } printf("func %s(%s) %s%s%s%s{\n", gofnname, gofnparams, gofnresults == "" ? "" : "(", gofnresults, gofnresults == "" ? "" : ")", gofnresults == "" ? "" : " ") diff --git a/libgo/go/syscall/syscall_unix.go b/libgo/go/syscall/syscall_unix.go index 966090a076a..5559c7c69b7 100644 --- a/libgo/go/syscall/syscall_unix.go +++ b/libgo/go/syscall/syscall_unix.go @@ -153,7 +153,7 @@ func (m *mmapper) Munmap(data []byte) (err error) { if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { return errno } - m.active[p] = nil, false + delete(m.active, p) return nil } diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 89e9bf953de..d9a208b577d 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,15 @@ +2014-04-17 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56781 + * maint-tool: Also emit rule for noasan/ subdirectory. + * configure.ac (NOASANFLAG): Set and substitute. + * Makefile.in: Regenerated. + (NOASANFLAG): Set. + (all, $(TARGETLIB), mostlyclean): Handle noasan subdir like pic + subdir. + (stamp-noasandir): New goal. + * configure: Regenerated. + 2014-04-01 Richard Biener <rguenther@suse.de> * simple-object.c (simple_object_internal_write): Handle diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in index 75ff82d984a..44e340f721c 100644 --- a/libiberty/Makefile.in +++ b/libiberty/Makefile.in @@ -2,8 +2,8 @@ # Originally written by K. Richard Pixley <rich@cygnus.com>. # # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -# Free Software Foundation +# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, +# 2012, 2014 Free Software Foundation # # This file is part of the libiberty library. # Libiberty is free software; you can redistribute it and/or @@ -62,6 +62,7 @@ MAKEINFO = @MAKEINFO@ PERL = @PERL@ PICFLAG = @PICFLAG@ +NOASANFLAG = @NOASANFLAG@ MAKEOVERRIDES = @@ -101,7 +102,7 @@ FLAGS_TO_PASS = \ SUBDIRS = testsuite # FIXME: add @BUILD_INFO@ once we're sure it works for everyone. -all: stamp-picdir $(TARGETLIB) required-list all-subdir +all: stamp-picdir stamp-noasandir $(TARGETLIB) required-list all-subdir @: $(MAKE) ; $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all .PHONY: check installcheck @@ -241,7 +242,7 @@ INSTALLED_HEADERS = \ $(INCDIR)/timeval-utils.h $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS) - -rm -f $(TARGETLIB) pic/$(TARGETLIB) + -rm -f $(TARGETLIB) pic/$(TARGETLIB) noasan/$(TARGETLIB) $(AR) $(AR_FLAGS) $(TARGETLIB) \ $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS) $(RANLIB) $(TARGETLIB) @@ -251,6 +252,13 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS) $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \ $(RANLIB) $(TARGETLIB); \ cd ..; \ + else true; fi; \ + if [ x"$(NOASANFLAG)" != x ]; then \ + cd noasan; \ + $(AR) $(AR_FLAGS) $(TARGETLIB) \ + $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \ + $(RANLIB) $(TARGETLIB); \ + cd ..; \ else true; fi $(TESTLIB): $(REQUIRED_OFILES) $(CONFIGURED_OFILES) @@ -389,6 +397,12 @@ stamp-picdir: else true; fi touch stamp-picdir +stamp-noasandir: + if [ x"$(NOASANFLAG)" != x ] && [ ! -d noasan ]; then \ + mkdir noasan; \ + else true; fi + touch stamp-noasandir + .PHONY: all etags tags ls clean stage1 stage2 etags tags: TAGS etags-subdir @@ -426,9 +440,9 @@ maint-deps : # Cleaning has to be done carefully to ensure that we don't clean our SUBDIRS # multiple times, hence our explicit recursion with an empty SUBDIRS. mostlyclean: mostlyclean-subdir - -rm -rf *.$(objext) pic core errs \#* *.E a.out + -rm -rf *.$(objext) pic noasan core errs \#* *.E a.out -rm -f errors dummy config.h stamp-* - -rm -f $(CONFIG_H) stamp-picdir + -rm -f $(CONFIG_H) stamp-picdir stamp-noasandir -rm -f libiberty.aux libiberty.cp libiberty.cps libiberty.fn libiberty.ky -rm -f libiberty.log libiberty.tmp libiberty.tps libiberty.pg -rm -f libiberty.pgs libiberty.toc libiberty.tp libiberty.tpl libiberty.vr @@ -485,8 +499,8 @@ maintainer-clean-subdir: config.h cd $$dir && $(MAKE) $(FLAGS_TO_PASS) $$target; \ done -$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS): stamp-picdir -$(CONFIGURED_OFILES): stamp-picdir +$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS): stamp-picdir stamp-noasandir +$(CONFIGURED_OFILES): stamp-picdir stamp-noasandir # Don't export variables to the environment, in order to not confuse # configure. @@ -500,6 +514,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/_doprnt.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/_doprnt.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/_doprnt.c $(OUTPUT_OPTION) ./alloca.$(objext): $(srcdir)/alloca.c config.h $(INCDIR)/ansidecl.h \ @@ -507,6 +524,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/alloca.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/alloca.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/alloca.c $(OUTPUT_OPTION) ./argv.$(objext): $(srcdir)/argv.c config.h $(INCDIR)/ansidecl.h \ @@ -514,6 +534,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/argv.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/argv.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/argv.c $(OUTPUT_OPTION) ./asprintf.$(objext): $(srcdir)/asprintf.c config.h $(INCDIR)/ansidecl.h \ @@ -521,12 +544,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/asprintf.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/asprintf.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/asprintf.c $(OUTPUT_OPTION) ./atexit.$(objext): $(srcdir)/atexit.c config.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/atexit.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/atexit.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/atexit.c $(OUTPUT_OPTION) ./basename.$(objext): $(srcdir)/basename.c config.h $(INCDIR)/ansidecl.h \ @@ -534,36 +563,54 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/basename.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/basename.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/basename.c $(OUTPUT_OPTION) ./bcmp.$(objext): $(srcdir)/bcmp.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/bcmp.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/bcmp.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/bcmp.c $(OUTPUT_OPTION) ./bcopy.$(objext): $(srcdir)/bcopy.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/bcopy.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/bcopy.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/bcopy.c $(OUTPUT_OPTION) ./bsearch.$(objext): $(srcdir)/bsearch.c config.h $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/bsearch.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/bsearch.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/bsearch.c $(OUTPUT_OPTION) ./bzero.$(objext): $(srcdir)/bzero.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/bzero.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/bzero.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/bzero.c $(OUTPUT_OPTION) ./calloc.$(objext): $(srcdir)/calloc.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/calloc.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/calloc.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/calloc.c $(OUTPUT_OPTION) ./choose-temp.$(objext): $(srcdir)/choose-temp.c config.h $(INCDIR)/ansidecl.h \ @@ -571,12 +618,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/choose-temp.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/choose-temp.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/choose-temp.c $(OUTPUT_OPTION) ./clock.$(objext): $(srcdir)/clock.c config.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/clock.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/clock.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/clock.c $(OUTPUT_OPTION) ./concat.$(objext): $(srcdir)/concat.c config.h $(INCDIR)/ansidecl.h \ @@ -584,12 +637,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/concat.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/concat.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/concat.c $(OUTPUT_OPTION) ./copysign.$(objext): $(srcdir)/copysign.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/copysign.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/copysign.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/copysign.c $(OUTPUT_OPTION) ./cp-demangle.$(objext): $(srcdir)/cp-demangle.c config.h $(INCDIR)/ansidecl.h \ @@ -598,6 +657,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/cp-demangle.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/cp-demangle.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/cp-demangle.c $(OUTPUT_OPTION) ./cp-demint.$(objext): $(srcdir)/cp-demint.c config.h $(INCDIR)/ansidecl.h \ @@ -606,6 +668,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/cp-demint.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/cp-demint.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/cp-demint.c $(OUTPUT_OPTION) ./cplus-dem.$(objext): $(srcdir)/cplus-dem.c config.h $(INCDIR)/ansidecl.h \ @@ -614,6 +679,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/cplus-dem.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/cplus-dem.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/cplus-dem.c $(OUTPUT_OPTION) ./crc32.$(objext): $(srcdir)/crc32.c config.h $(INCDIR)/ansidecl.h \ @@ -621,6 +689,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/crc32.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/crc32.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/crc32.c $(OUTPUT_OPTION) ./dwarfnames.$(objext): $(srcdir)/dwarfnames.c $(INCDIR)/dwarf2.def \ @@ -628,6 +699,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/dwarfnames.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/dwarfnames.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/dwarfnames.c $(OUTPUT_OPTION) ./dyn-string.$(objext): $(srcdir)/dyn-string.c config.h $(INCDIR)/ansidecl.h \ @@ -635,6 +709,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/dyn-string.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/dyn-string.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/dyn-string.c $(OUTPUT_OPTION) ./fdmatch.$(objext): $(srcdir)/fdmatch.c config.h $(INCDIR)/ansidecl.h \ @@ -642,12 +719,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/fdmatch.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/fdmatch.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/fdmatch.c $(OUTPUT_OPTION) ./ffs.$(objext): $(srcdir)/ffs.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/ffs.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/ffs.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/ffs.c $(OUTPUT_OPTION) ./fibheap.$(objext): $(srcdir)/fibheap.c config.h $(INCDIR)/ansidecl.h \ @@ -655,6 +738,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/fibheap.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/fibheap.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/fibheap.c $(OUTPUT_OPTION) ./filename_cmp.$(objext): $(srcdir)/filename_cmp.c config.h $(INCDIR)/ansidecl.h \ @@ -663,6 +749,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/filename_cmp.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/filename_cmp.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/filename_cmp.c $(OUTPUT_OPTION) ./floatformat.$(objext): $(srcdir)/floatformat.c config.h $(INCDIR)/ansidecl.h \ @@ -670,6 +759,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/floatformat.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/floatformat.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/floatformat.c $(OUTPUT_OPTION) ./fnmatch.$(objext): $(srcdir)/fnmatch.c config.h $(INCDIR)/fnmatch.h \ @@ -677,6 +769,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/fnmatch.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/fnmatch.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/fnmatch.c $(OUTPUT_OPTION) ./fopen_unlocked.$(objext): $(srcdir)/fopen_unlocked.c config.h \ @@ -684,12 +779,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/fopen_unlocked.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/fopen_unlocked.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/fopen_unlocked.c $(OUTPUT_OPTION) ./getcwd.$(objext): $(srcdir)/getcwd.c config.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/getcwd.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/getcwd.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/getcwd.c $(OUTPUT_OPTION) ./getopt.$(objext): $(srcdir)/getopt.c config.h $(INCDIR)/ansidecl.h \ @@ -697,18 +798,27 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/getopt.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/getopt.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/getopt.c $(OUTPUT_OPTION) ./getopt1.$(objext): $(srcdir)/getopt1.c config.h $(INCDIR)/getopt.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/getopt1.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/getopt1.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/getopt1.c $(OUTPUT_OPTION) ./getpagesize.$(objext): $(srcdir)/getpagesize.c config.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/getpagesize.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/getpagesize.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/getpagesize.c $(OUTPUT_OPTION) ./getpwd.$(objext): $(srcdir)/getpwd.c config.h $(INCDIR)/ansidecl.h \ @@ -716,6 +826,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/getpwd.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/getpwd.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/getpwd.c $(OUTPUT_OPTION) ./getruntime.$(objext): $(srcdir)/getruntime.c config.h $(INCDIR)/ansidecl.h \ @@ -723,6 +836,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/getruntime.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/getruntime.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/getruntime.c $(OUTPUT_OPTION) ./gettimeofday.$(objext): $(srcdir)/gettimeofday.c config.h $(INCDIR)/ansidecl.h \ @@ -730,6 +846,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/gettimeofday.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/gettimeofday.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/gettimeofday.c $(OUTPUT_OPTION) ./hashtab.$(objext): $(srcdir)/hashtab.c config.h $(INCDIR)/ansidecl.h \ @@ -737,6 +856,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/hashtab.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/hashtab.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/hashtab.c $(OUTPUT_OPTION) ./hex.$(objext): $(srcdir)/hex.c config.h $(INCDIR)/ansidecl.h \ @@ -744,18 +866,27 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/hex.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/hex.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/hex.c $(OUTPUT_OPTION) ./index.$(objext): $(srcdir)/index.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/index.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/index.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/index.c $(OUTPUT_OPTION) ./insque.$(objext): $(srcdir)/insque.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/insque.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/insque.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/insque.c $(OUTPUT_OPTION) ./lbasename.$(objext): $(srcdir)/lbasename.c config.h $(INCDIR)/ansidecl.h \ @@ -764,6 +895,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/lbasename.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/lbasename.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/lbasename.c $(OUTPUT_OPTION) ./lrealpath.$(objext): $(srcdir)/lrealpath.c config.h $(INCDIR)/ansidecl.h \ @@ -771,6 +905,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/lrealpath.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/lrealpath.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/lrealpath.c $(OUTPUT_OPTION) ./make-relative-prefix.$(objext): $(srcdir)/make-relative-prefix.c config.h \ @@ -778,6 +915,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/make-relative-prefix.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/make-relative-prefix.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/make-relative-prefix.c $(OUTPUT_OPTION) ./make-temp-file.$(objext): $(srcdir)/make-temp-file.c config.h \ @@ -785,66 +925,99 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/make-temp-file.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/make-temp-file.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/make-temp-file.c $(OUTPUT_OPTION) ./md5.$(objext): $(srcdir)/md5.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/md5.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/md5.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/md5.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/md5.c $(OUTPUT_OPTION) ./memchr.$(objext): $(srcdir)/memchr.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/memchr.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/memchr.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/memchr.c $(OUTPUT_OPTION) ./memcmp.$(objext): $(srcdir)/memcmp.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/memcmp.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/memcmp.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/memcmp.c $(OUTPUT_OPTION) ./memcpy.$(objext): $(srcdir)/memcpy.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/memcpy.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/memcpy.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/memcpy.c $(OUTPUT_OPTION) ./memmem.$(objext): $(srcdir)/memmem.c config.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/memmem.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/memmem.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/memmem.c $(OUTPUT_OPTION) ./memmove.$(objext): $(srcdir)/memmove.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/memmove.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/memmove.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/memmove.c $(OUTPUT_OPTION) ./mempcpy.$(objext): $(srcdir)/mempcpy.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/mempcpy.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/mempcpy.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/mempcpy.c $(OUTPUT_OPTION) ./memset.$(objext): $(srcdir)/memset.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/memset.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/memset.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/memset.c $(OUTPUT_OPTION) ./mkstemps.$(objext): $(srcdir)/mkstemps.c config.h $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/mkstemps.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/mkstemps.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/mkstemps.c $(OUTPUT_OPTION) ./msdos.$(objext): $(srcdir)/msdos.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/msdos.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/msdos.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/msdos.c $(OUTPUT_OPTION) ./objalloc.$(objext): $(srcdir)/objalloc.c config.h $(INCDIR)/ansidecl.h \ @@ -852,12 +1025,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/objalloc.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/objalloc.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/objalloc.c $(OUTPUT_OPTION) ./obstack.$(objext): $(srcdir)/obstack.c config.h $(INCDIR)/obstack.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/obstack.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/obstack.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/obstack.c $(OUTPUT_OPTION) ./partition.$(objext): $(srcdir)/partition.c config.h $(INCDIR)/ansidecl.h \ @@ -865,6 +1044,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/partition.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/partition.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/partition.c $(OUTPUT_OPTION) ./pex-common.$(objext): $(srcdir)/pex-common.c config.h $(INCDIR)/ansidecl.h \ @@ -872,6 +1054,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-common.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/pex-common.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/pex-common.c $(OUTPUT_OPTION) ./pex-djgpp.$(objext): $(srcdir)/pex-djgpp.c config.h $(INCDIR)/ansidecl.h \ @@ -879,6 +1064,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-djgpp.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/pex-djgpp.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/pex-djgpp.c $(OUTPUT_OPTION) ./pex-msdos.$(objext): $(srcdir)/pex-msdos.c config.h $(INCDIR)/ansidecl.h \ @@ -887,6 +1075,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-msdos.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/pex-msdos.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/pex-msdos.c $(OUTPUT_OPTION) ./pex-one.$(objext): $(srcdir)/pex-one.c config.h $(INCDIR)/ansidecl.h \ @@ -894,6 +1085,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-one.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/pex-one.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/pex-one.c $(OUTPUT_OPTION) ./pex-unix.$(objext): $(srcdir)/pex-unix.c config.h $(INCDIR)/ansidecl.h \ @@ -901,6 +1095,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-unix.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/pex-unix.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/pex-unix.c $(OUTPUT_OPTION) ./pex-win32.$(objext): $(srcdir)/pex-win32.c config.h $(INCDIR)/ansidecl.h \ @@ -908,6 +1105,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-win32.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/pex-win32.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/pex-win32.c $(OUTPUT_OPTION) ./pexecute.$(objext): $(srcdir)/pexecute.c config.h $(INCDIR)/ansidecl.h \ @@ -915,6 +1115,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/pexecute.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/pexecute.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/pexecute.c $(OUTPUT_OPTION) ./physmem.$(objext): $(srcdir)/physmem.c config.h $(INCDIR)/ansidecl.h \ @@ -922,18 +1125,27 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/physmem.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/physmem.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/physmem.c $(OUTPUT_OPTION) ./putenv.$(objext): $(srcdir)/putenv.c config.h $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/putenv.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/putenv.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/putenv.c $(OUTPUT_OPTION) ./random.$(objext): $(srcdir)/random.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/random.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/random.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/random.c $(OUTPUT_OPTION) ./regex.$(objext): $(srcdir)/regex.c config.h $(INCDIR)/ansidecl.h \ @@ -941,18 +1153,27 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/regex.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/regex.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/regex.c $(OUTPUT_OPTION) ./rename.$(objext): $(srcdir)/rename.c config.h $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/rename.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/rename.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/rename.c $(OUTPUT_OPTION) ./rindex.$(objext): $(srcdir)/rindex.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/rindex.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/rindex.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/rindex.c $(OUTPUT_OPTION) ./safe-ctype.$(objext): $(srcdir)/safe-ctype.c $(INCDIR)/ansidecl.h \ @@ -960,30 +1181,45 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/safe-ctype.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/safe-ctype.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/safe-ctype.c $(OUTPUT_OPTION) ./setenv.$(objext): $(srcdir)/setenv.c config.h $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/setenv.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/setenv.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/setenv.c $(OUTPUT_OPTION) ./setproctitle.$(objext): $(srcdir)/setproctitle.c config.h $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/setproctitle.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/setproctitle.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/setproctitle.c $(OUTPUT_OPTION) ./sha1.$(objext): $(srcdir)/sha1.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/sha1.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/sha1.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/sha1.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/sha1.c $(OUTPUT_OPTION) ./sigsetmask.$(objext): $(srcdir)/sigsetmask.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/sigsetmask.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/sigsetmask.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/sigsetmask.c $(OUTPUT_OPTION) ./simple-object-coff.$(objext): $(srcdir)/simple-object-coff.c config.h \ @@ -992,6 +1228,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/simple-object-coff.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/simple-object-coff.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/simple-object-coff.c $(OUTPUT_OPTION) ./simple-object-elf.$(objext): $(srcdir)/simple-object-elf.c config.h \ @@ -1000,6 +1239,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/simple-object-elf.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/simple-object-elf.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/simple-object-elf.c $(OUTPUT_OPTION) ./simple-object-mach-o.$(objext): $(srcdir)/simple-object-mach-o.c config.h \ @@ -1008,6 +1250,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/simple-object-mach-o.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/simple-object-mach-o.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/simple-object-mach-o.c $(OUTPUT_OPTION) ./simple-object-xcoff.$(objext): $(srcdir)/simple-object-xcoff.c config.h \ @@ -1016,6 +1261,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/simple-object-xcoff.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/simple-object-xcoff.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/simple-object-xcoff.c $(OUTPUT_OPTION) ./simple-object.$(objext): $(srcdir)/simple-object.c config.h \ @@ -1024,12 +1272,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/simple-object.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/simple-object.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/simple-object.c $(OUTPUT_OPTION) ./snprintf.$(objext): $(srcdir)/snprintf.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/snprintf.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/snprintf.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/snprintf.c $(OUTPUT_OPTION) ./sort.$(objext): $(srcdir)/sort.c config.h $(INCDIR)/ansidecl.h \ @@ -1037,6 +1291,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/sort.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/sort.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/sort.c $(OUTPUT_OPTION) ./spaces.$(objext): $(srcdir)/spaces.c config.h $(INCDIR)/ansidecl.h \ @@ -1044,6 +1301,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/spaces.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/spaces.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/spaces.c $(OUTPUT_OPTION) ./splay-tree.$(objext): $(srcdir)/splay-tree.c config.h $(INCDIR)/ansidecl.h \ @@ -1051,42 +1311,63 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/splay-tree.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/splay-tree.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/splay-tree.c $(OUTPUT_OPTION) ./stack-limit.$(objext): $(srcdir)/stack-limit.c config.h $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/stack-limit.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/stack-limit.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/stack-limit.c $(OUTPUT_OPTION) ./stpcpy.$(objext): $(srcdir)/stpcpy.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/stpcpy.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/stpcpy.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/stpcpy.c $(OUTPUT_OPTION) ./stpncpy.$(objext): $(srcdir)/stpncpy.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/stpncpy.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/stpncpy.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/stpncpy.c $(OUTPUT_OPTION) ./strcasecmp.$(objext): $(srcdir)/strcasecmp.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strcasecmp.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strcasecmp.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strcasecmp.c $(OUTPUT_OPTION) ./strchr.$(objext): $(srcdir)/strchr.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strchr.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strchr.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strchr.c $(OUTPUT_OPTION) ./strdup.$(objext): $(srcdir)/strdup.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strdup.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strdup.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strdup.c $(OUTPUT_OPTION) ./strerror.$(objext): $(srcdir)/strerror.c config.h $(INCDIR)/ansidecl.h \ @@ -1094,36 +1375,54 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strerror.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strerror.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strerror.c $(OUTPUT_OPTION) ./strncasecmp.$(objext): $(srcdir)/strncasecmp.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strncasecmp.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strncasecmp.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strncasecmp.c $(OUTPUT_OPTION) ./strncmp.$(objext): $(srcdir)/strncmp.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strncmp.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strncmp.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strncmp.c $(OUTPUT_OPTION) ./strndup.$(objext): $(srcdir)/strndup.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strndup.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strndup.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strndup.c $(OUTPUT_OPTION) ./strnlen.$(objext): $(srcdir)/strnlen.c config.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strnlen.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strnlen.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strnlen.c $(OUTPUT_OPTION) ./strrchr.$(objext): $(srcdir)/strrchr.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strrchr.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strrchr.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strrchr.c $(OUTPUT_OPTION) ./strsignal.$(objext): $(srcdir)/strsignal.c config.h $(INCDIR)/ansidecl.h \ @@ -1131,12 +1430,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strsignal.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strsignal.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strsignal.c $(OUTPUT_OPTION) ./strstr.$(objext): $(srcdir)/strstr.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strstr.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strstr.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strstr.c $(OUTPUT_OPTION) ./strtod.$(objext): $(srcdir)/strtod.c $(INCDIR)/ansidecl.h \ @@ -1144,12 +1449,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strtod.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strtod.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strtod.c $(OUTPUT_OPTION) ./strtol.$(objext): $(srcdir)/strtol.c config.h $(INCDIR)/safe-ctype.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strtol.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strtol.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strtol.c $(OUTPUT_OPTION) ./strtoul.$(objext): $(srcdir)/strtoul.c config.h $(INCDIR)/ansidecl.h \ @@ -1157,6 +1468,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strtoul.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strtoul.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strtoul.c $(OUTPUT_OPTION) ./strverscmp.$(objext): $(srcdir)/strverscmp.c $(INCDIR)/ansidecl.h \ @@ -1164,6 +1478,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/strverscmp.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/strverscmp.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/strverscmp.c $(OUTPUT_OPTION) ./timeval-utils.$(objext): $(srcdir)/timeval-utils.c config.h \ @@ -1171,12 +1488,18 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/timeval-utils.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/timeval-utils.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/timeval-utils.c $(OUTPUT_OPTION) ./tmpnam.$(objext): $(srcdir)/tmpnam.c if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/tmpnam.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/tmpnam.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/tmpnam.c $(OUTPUT_OPTION) ./unlink-if-ordinary.$(objext): $(srcdir)/unlink-if-ordinary.c config.h \ @@ -1184,6 +1507,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/unlink-if-ordinary.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/unlink-if-ordinary.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/unlink-if-ordinary.c $(OUTPUT_OPTION) ./vasprintf.$(objext): $(srcdir)/vasprintf.c config.h $(INCDIR)/ansidecl.h \ @@ -1191,24 +1517,36 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/vasprintf.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/vasprintf.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/vasprintf.c $(OUTPUT_OPTION) ./vfork.$(objext): $(srcdir)/vfork.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/vfork.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/vfork.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/vfork.c $(OUTPUT_OPTION) ./vfprintf.$(objext): $(srcdir)/vfprintf.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/vfprintf.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/vfprintf.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/vfprintf.c $(OUTPUT_OPTION) ./vprintf.$(objext): $(srcdir)/vprintf.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/vprintf.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/vprintf.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/vprintf.c $(OUTPUT_OPTION) ./vsnprintf.$(objext): $(srcdir)/vsnprintf.c config.h $(INCDIR)/ansidecl.h \ @@ -1216,18 +1554,27 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/vsnprintf.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/vsnprintf.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/vsnprintf.c $(OUTPUT_OPTION) ./vsprintf.$(objext): $(srcdir)/vsprintf.c $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/vsprintf.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/vsprintf.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/vsprintf.c $(OUTPUT_OPTION) ./waitpid.$(objext): $(srcdir)/waitpid.c config.h $(INCDIR)/ansidecl.h if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/waitpid.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/waitpid.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/waitpid.c $(OUTPUT_OPTION) ./xatexit.$(objext): $(srcdir)/xatexit.c config.h $(INCDIR)/ansidecl.h \ @@ -1235,6 +1582,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/xatexit.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/xatexit.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/xatexit.c $(OUTPUT_OPTION) ./xexit.$(objext): $(srcdir)/xexit.c config.h $(INCDIR)/ansidecl.h \ @@ -1242,6 +1592,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/xexit.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/xexit.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/xexit.c $(OUTPUT_OPTION) ./xmalloc.$(objext): $(srcdir)/xmalloc.c config.h $(INCDIR)/ansidecl.h \ @@ -1249,6 +1602,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/xmalloc.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/xmalloc.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/xmalloc.c $(OUTPUT_OPTION) ./xmemdup.$(objext): $(srcdir)/xmemdup.c config.h $(INCDIR)/ansidecl.h \ @@ -1256,6 +1612,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/xmemdup.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/xmemdup.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/xmemdup.c $(OUTPUT_OPTION) ./xstrdup.$(objext): $(srcdir)/xstrdup.c config.h $(INCDIR)/ansidecl.h \ @@ -1263,6 +1622,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/xstrdup.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/xstrdup.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/xstrdup.c $(OUTPUT_OPTION) ./xstrerror.$(objext): $(srcdir)/xstrerror.c config.h $(INCDIR)/ansidecl.h \ @@ -1270,6 +1632,9 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/xstrerror.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/xstrerror.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/xstrerror.c $(OUTPUT_OPTION) ./xstrndup.$(objext): $(srcdir)/xstrndup.c config.h $(INCDIR)/ansidecl.h \ @@ -1277,5 +1642,8 @@ $(CONFIGURED_OFILES): stamp-picdir if [ x"$(PICFLAG)" != x ]; then \ $(COMPILE.c) $(PICFLAG) $(srcdir)/xstrndup.c -o pic/$@; \ else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/xstrndup.c -o noasan/$@; \ + else true; fi $(COMPILE.c) $(srcdir)/xstrndup.c $(OUTPUT_OPTION) diff --git a/libiberty/configure b/libiberty/configure index 7bde9b38f19..96feaedbeba 100755 --- a/libiberty/configure +++ b/libiberty/configure @@ -594,6 +594,7 @@ pexecute target_header_dir CHECK LIBOBJS +NOASANFLAG PICFLAG INSTALL_DATA INSTALL_SCRIPT @@ -4971,6 +4972,12 @@ if [ "${shared}" != "yes" ]; then fi +NOASANFLAG= +case " ${CFLAGS} " in + *\ -fsanitize=address\ *) NOASANFLAG=-fno-sanitize=address ;; +esac + + echo "# Warning: this fragment is automatically generated" > temp-frag if [ -n "${frag}" ] && [ -f "${frag}" ]; then diff --git a/libiberty/configure.ac b/libiberty/configure.ac index d6180bcddd9..3380819ab3a 100644 --- a/libiberty/configure.ac +++ b/libiberty/configure.ac @@ -236,6 +236,12 @@ if [[ "${shared}" != "yes" ]]; then fi AC_SUBST(PICFLAG) +NOASANFLAG= +case " ${CFLAGS} " in + *\ -fsanitize=address\ *) NOASANFLAG=-fno-sanitize=address ;; +esac +AC_SUBST(NOASANFLAG) + echo "# Warning: this fragment is automatically generated" > temp-frag if [[ -n "${frag}" ]] && [[ -f "${frag}" ]]; then diff --git a/libiberty/maint-tool b/libiberty/maint-tool index d50f8959a38..1c94cdc79cd 100644 --- a/libiberty/maint-tool +++ b/libiberty/maint-tool @@ -1,7 +1,7 @@ #!/usr/bin/perl # -*- perl -*- -# Copyright (C) 2001, 2007, 2010 +# Copyright (C) 2001, 2007, 2010, 2014 # Free Software Foundation # # This file is part of the libiberty library. @@ -215,6 +215,9 @@ sub deps { $crule = "\tif [ x\"\$(PICFLAG)\" != x ]; then \\\n"; $crule .= "\t \$(COMPILE.c) \$(PICFLAG) \$< -o pic/\$@; \\\n"; $crule .= "\telse true; fi\n"; + $crule .= "\tif [ x\"\$(NOASANFLAG)\" != x ]; then \\\n"; + $crule .= "\t \$(COMPILE.c) \$(PICFLAG) \$(NOASANFLAG) \$< -o noasan/\$@; \\\n"; + $crule .= "\telse true; fi\n"; $crule .= "\t\$(COMPILE.c) \$< \$(OUTPUT_OPTION)\n"; $crule .= "\n"; diff --git a/libjava/ChangeLog b/libjava/ChangeLog index fec6d8de642..661bb7a30c1 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * configure.ac (THREADLIBS, THREADSPEC): Remove *-*-solaris2.9 + handling. + * configure: Regenerate. + 2014-03-12 Uros Bizjak <ubizjak@gmail.com> * include/dwarf2-signal.h: Update copyright year. diff --git a/libjava/configure b/libjava/configure index 6fb813f4bd6..afbc9967c56 100755 --- a/libjava/configure +++ b/libjava/configure @@ -20772,11 +20772,6 @@ case "$THREADS" in THREADLIBS='-lpthread -lrt' THREADSPEC='-lpthread -lrt' ;; - *-*-solaris2.9) - # Need libthread for TLS support. - THREADLIBS='-lpthread -lthread' - THREADSPEC='-lpthread -lthread' - ;; *-*-darwin*) # Don't set THREADLIBS or THREADSPEC as Darwin already # provides pthread via libSystem. diff --git a/libjava/configure.ac b/libjava/configure.ac index d2f69a9dd43..01c436d852d 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -1088,11 +1088,6 @@ case "$THREADS" in THREADLIBS='-lpthread -lrt' THREADSPEC='-lpthread -lrt' ;; - *-*-solaris2.9) - # Need libthread for TLS support. - THREADLIBS='-lpthread -lthread' - THREADSPEC='-lpthread -lthread' - ;; *-*-darwin*) # Don't set THREADLIBS or THREADSPEC as Darwin already # provides pthread via libSystem. diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4d0e3901a45..ca277836a11 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,28 @@ +2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * configure.host: Remove solaris2.9 handling. + Change os_include_dir to os/solaris/solaris2.10. + * acinclude.m4 (ac_has_gthreads): Remove solaris2.9* handling. + * crossconfig.m4: Remove *-solaris2.9 handling, simplify. + * configure: Regenerate. + * config/abi/post/solaris2.9: Remove. + * config/os/solaris/solaris2.9: Rename to ... + * config/os/solaris/solaris2.10: ... this. + * config/os/solaris/solaris2.10/os_defines.h (CLOCK_MONOTONIC): + Remove. + + * doc/xml/manual/configure.xml (--enable-libstdcxx-threads): + Remove Solaris 9 reference. + * doc/html/manual/configure.html: Regenerate. + + * testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc: + Remove *-*-solaris2.9 xfail. + * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc: + Likewise. + + * testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.9 + xfail. + 2014-04-16 Jonathan Wakely <jwakely@redhat.com> * include/std/functional (__is_location_invariant): Use __or_ helper. diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index b3ce3dbe3d9..437221f3ab1 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -3523,25 +3523,7 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [ #ifndef __GTHREADS_CXX0X #error #endif - ], [case $target_os in - # gthreads support breaks symbol versioning on Solaris 9 (PR - # libstdc++/52189). - solaris2.9*) - if test x$enable_symvers = xno; then - ac_has_gthreads=yes - elif test x$enable_libstdcxx_threads = xyes; then - AC_MSG_WARN([You have requested C++11 threads support, but]) - AC_MSG_WARN([this breaks symbol versioning.]) - ac_has_gthreads=yes - else - ac_has_gthreads=no - fi - ;; - *) - ac_has_gthreads=yes - ;; - esac], - [ac_has_gthreads=no]) + ], [ac_has_gthreads=yes], [ac_has_gthreads=no]) else ac_has_gthreads=no fi diff --git a/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt deleted file mode 100644 index a1dfa30bb48..00000000000 --- a/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt +++ /dev/null @@ -1,3636 +0,0 @@ -FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17 -FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17 -FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17 -FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base7_M_swapERS0_@@GLIBCXX_3.4.17 -FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10 -FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4 -FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP6__FILE@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP6__FILE@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEl@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEl@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP6__FILE@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP6__FILE@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3 -FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6 -FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4 -FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3 -FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10 -FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4 -FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4 -FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4 -FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5 -FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4 -FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4 -FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4 -FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4 -FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4 -FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4 -FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4 -FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4 -FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4 -FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5 -FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4 -FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4 -FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4 -FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4 -FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4 -FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4 -FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4 -FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4 -FUNC:_ZNKSs2atEj@@GLIBCXX_3.4 -FUNC:_ZNKSs3endEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4 -FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4 -FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4 -FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4 -FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4 -FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4 -FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4 -FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4 -FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4 -FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4 -FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4 -FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4 -FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4 -FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4 -FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4 -FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4 -FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4 -FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4 -FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4 -FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4 -FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4 -FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4 -FUNC:_ZNKSsixEj@@GLIBCXX_3.4 -FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9 -FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11 -FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9 -FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11 -FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11 -FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11 -FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3 -FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3 -FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 -FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 -FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 -FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10 -FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11 -FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10 -FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11 -FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11 -FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_scan_isEjPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE11do_scan_notEjPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEj@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pj@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE5do_isEjw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4 -FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4 -FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4 -FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEj@@GLIBCXX_3.4.18 -FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj@@GLIBCXX_3.4.18 -FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9 -FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4 -FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4 -FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4 -FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4 -FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEjj@@GLIBCXX_3.4.16 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE8pop_backEv@@GLIBCXX_3.4.17 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4 -FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSdC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSdC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSdD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSdD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSdD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi3getEPci@@GLIBCXX_3.4 -FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4 -FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4 -FUNC:_ZNSi3getERc@@GLIBCXX_3.4 -FUNC:_ZNSi3getEv@@GLIBCXX_3.4 -FUNC:_ZNSi4peekEv@@GLIBCXX_3.4 -FUNC:_ZNSi4readEPci@@GLIBCXX_3.4 -FUNC:_ZNSi4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4 -FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4 -FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4 -FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5 -FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4 -FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5 -FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4 -FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4 -FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4 -FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4 -FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4 -FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4 -FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSiC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSiC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSiD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSiD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSiD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4 -FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4 -FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4 -FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSirsERPv@@GLIBCXX_3.4 -FUNC:_ZNSirsERb@@GLIBCXX_3.4 -FUNC:_ZNSirsERd@@GLIBCXX_3.4 -FUNC:_ZNSirsERe@@GLIBCXX_3.4 -FUNC:_ZNSirsERf@@GLIBCXX_3.4 -FUNC:_ZNSirsERi@@GLIBCXX_3.4 -FUNC:_ZNSirsERj@@GLIBCXX_3.4 -FUNC:_ZNSirsERl@@GLIBCXX_3.4 -FUNC:_ZNSirsERm@@GLIBCXX_3.4 -FUNC:_ZNSirsERs@@GLIBCXX_3.4 -FUNC:_ZNSirsERt@@GLIBCXX_3.4 -FUNC:_ZNSirsERx@@GLIBCXX_3.4 -FUNC:_ZNSirsERy@@GLIBCXX_3.4 -FUNC:_ZNSo3putEc@@GLIBCXX_3.4 -FUNC:_ZNSo5flushEv@@GLIBCXX_3.4 -FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4 -FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4 -FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4 -FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4 -FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4 -FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4 -FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSoC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSoC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSoD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSoD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSoD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4 -FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4 -FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4 -FUNC:_ZNSolsEPKv@@GLIBCXX_3.4 -FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSolsEb@@GLIBCXX_3.4 -FUNC:_ZNSolsEd@@GLIBCXX_3.4 -FUNC:_ZNSolsEe@@GLIBCXX_3.4 -FUNC:_ZNSolsEf@@GLIBCXX_3.4 -FUNC:_ZNSolsEi@@GLIBCXX_3.4 -FUNC:_ZNSolsEj@@GLIBCXX_3.4 -FUNC:_ZNSolsEl@@GLIBCXX_3.4 -FUNC:_ZNSolsEm@@GLIBCXX_3.4 -FUNC:_ZNSolsEs@@GLIBCXX_3.4 -FUNC:_ZNSolsEt@@GLIBCXX_3.4 -FUNC:_ZNSolsEx@@GLIBCXX_3.4 -FUNC:_ZNSolsEy@@GLIBCXX_3.4 -FUNC:_ZNSs10_S_compareEjj@@GLIBCXX_3.4.16 -FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4 -FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4 -FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4 -FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4 -FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4 -FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4 -FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14 -FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4 -FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4 -FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14 -FUNC:_ZNSs2atEj@@GLIBCXX_3.4 -FUNC:_ZNSs3endEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5 -FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15 -FUNC:_ZNSs4rendEv@@GLIBCXX_3.4 -FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4 -FUNC:_ZNSs5beginEv@@GLIBCXX_3.4 -FUNC:_ZNSs5clearEv@@GLIBCXX_3.4 -FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4 -FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4 -FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4 -FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15 -FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4 -FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4 -FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4 -FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4 -FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4 -FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14 -FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4 -FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4 -FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4 -FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4 -FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4 -FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4 -FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4 -FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4 -FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5 -FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4 -FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4 -FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4 -FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4 -FUNC:_ZNSs8pop_backEv@@GLIBCXX_3.4.17 -FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5 -FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4 -FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4 -FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14 -FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4 -FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15 -FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4 -FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSsD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14 -FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4 -FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4 -FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSsaSEc@@GLIBCXX_3.4 -FUNC:_ZNSsixEj@@GLIBCXX_3.4 -FUNC:_ZNSspLEPKc@@GLIBCXX_3.4 -FUNC:_ZNSspLERKSs@@GLIBCXX_3.4 -FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSspLEc@@GLIBCXX_3.4 -FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4 -FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC1EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC2EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC1EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC2EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC1EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC2EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC1EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC2EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEPi@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC1EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC2EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEPi@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC1EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC2EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 -FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1 -FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE8sys_openEP6__FILESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14 -FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14 -FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14 -FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11 -FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11 -FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11 -FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEil@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4 -FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18 -FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18 -FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18 -FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 -FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 -FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14 -FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14 -FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 -FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 -FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 -FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5 -FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5 -FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5 -FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 -FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 -FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 -FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcEC1EPKjbj@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcEC1EPiPKjbj@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcEC2EPKjbj@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcEC2EPiPKjbj@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwEC1EPij@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwEC2EPij@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14 -FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14 -FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19 -FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19 -FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 -FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 -FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 -FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7 -FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6 -FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facet17_S_clone_c_localeERPi@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facet18_S_create_c_localeERPiPKcS1_@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERPi@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4 -FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EPij@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EPij@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EPij@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EPij@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcEC1EPij@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcEC2EPij@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwEC1EPij@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwEC2EPij@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15 -FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15 -FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15 -FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15 -FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15 -FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6 -FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6 -FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcEC1EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcEC2EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwEC1EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwEC2EPiPKcj@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEPi@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC1EPij@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC2EPij@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEPi@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC1EPij@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC2EPij@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4 -FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 -FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4 -FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 -FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5 -FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 -FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 -FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4 -FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4 -FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4 -FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 -FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 -FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5 -FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 -FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 -FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 -FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 -FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 -FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 -FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4 -FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11 -FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6 -FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6 -FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4 -FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10 -FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3 -FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3 -FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4 -FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4 -FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4 -FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4 -FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4 -FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4 -FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4 -FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15 -FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4 -FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 -FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14 -FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4 -FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 -FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 -FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 -FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 -FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 -FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 -FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 -FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 -FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 -FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 -FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4 -FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9terminatev@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4 -FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4 -FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4 -FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4 -FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4 -FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4 -FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4 -FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4 -FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4 -FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZdaPv@@GLIBCXX_3.4 -FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4 -FUNC:_ZdlPv@@GLIBCXX_3.4 -FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4 -FUNC:_Znaj@@GLIBCXX_3.4 -FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4 -FUNC:_Znwj@@GLIBCXX_3.4 -FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4 -FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11 -FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11 -FUNC:__cxa_allocate_dependent_exception@@CXXABI_1.3.6 -FUNC:__cxa_allocate_exception@@CXXABI_1.3 -FUNC:__cxa_bad_cast@@CXXABI_1.3 -FUNC:__cxa_bad_typeid@@CXXABI_1.3 -FUNC:__cxa_begin_catch@@CXXABI_1.3 -FUNC:__cxa_call_unexpected@@CXXABI_1.3 -FUNC:__cxa_current_exception_type@@CXXABI_1.3 -FUNC:__cxa_deleted_virtual@@CXXABI_1.3.6 -FUNC:__cxa_demangle@@CXXABI_1.3 -FUNC:__cxa_end_catch@@CXXABI_1.3 -FUNC:__cxa_free_dependent_exception@@CXXABI_1.3.6 -FUNC:__cxa_free_exception@@CXXABI_1.3 -FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1 -FUNC:__cxa_get_globals@@CXXABI_1.3 -FUNC:__cxa_get_globals_fast@@CXXABI_1.3 -FUNC:__cxa_guard_abort@@CXXABI_1.3 -FUNC:__cxa_guard_acquire@@CXXABI_1.3 -FUNC:__cxa_guard_release@@CXXABI_1.3 -FUNC:__cxa_pure_virtual@@CXXABI_1.3 -FUNC:__cxa_rethrow@@CXXABI_1.3 -FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 -FUNC:__cxa_throw@@CXXABI_1.3 -FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 -FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 -FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 -FUNC:__cxa_vec_cctor@@CXXABI_1.3 -FUNC:__cxa_vec_cleanup@@CXXABI_1.3 -FUNC:__cxa_vec_ctor@@CXXABI_1.3 -FUNC:__cxa_vec_delete2@@CXXABI_1.3 -FUNC:__cxa_vec_delete3@@CXXABI_1.3 -FUNC:__cxa_vec_delete@@CXXABI_1.3 -FUNC:__cxa_vec_dtor@@CXXABI_1.3 -FUNC:__cxa_vec_new2@@CXXABI_1.3 -FUNC:__cxa_vec_new3@@CXXABI_1.3 -FUNC:__cxa_vec_new@@CXXABI_1.3 -FUNC:__dynamic_cast@@CXXABI_1.3 -FUNC:__gxx_personality_v0@@CXXABI_1.3 -FUNC:acosf@@GLIBCXX_3.4.3 -FUNC:acosl@@GLIBCXX_3.4.3 -FUNC:asinf@@GLIBCXX_3.4.3 -FUNC:asinl@@GLIBCXX_3.4.3 -FUNC:atan2f@@GLIBCXX_3.4 -FUNC:atan2l@@GLIBCXX_3.4 -FUNC:atanf@@GLIBCXX_3.4.3 -FUNC:atanl@@GLIBCXX_3.4.3 -FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11 -FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11 -FUNC:ceilf@@GLIBCXX_3.4.3 -FUNC:ceill@@GLIBCXX_3.4.3 -FUNC:cosf@@GLIBCXX_3.4 -FUNC:coshf@@GLIBCXX_3.4 -FUNC:coshl@@GLIBCXX_3.4 -FUNC:cosl@@GLIBCXX_3.4 -FUNC:expf@@GLIBCXX_3.4 -FUNC:expl@@GLIBCXX_3.4 -FUNC:floorf@@GLIBCXX_3.4.3 -FUNC:floorl@@GLIBCXX_3.4.3 -FUNC:fmodf@@GLIBCXX_3.4.3 -FUNC:fmodl@@GLIBCXX_3.4.3 -FUNC:frexpf@@GLIBCXX_3.4.3 -FUNC:frexpl@@GLIBCXX_3.4.3 -FUNC:hypotf@@GLIBCXX_3.4 -FUNC:hypotl@@GLIBCXX_3.4 -FUNC:ldexpf@@GLIBCXX_3.4.3 -FUNC:ldexpl@@GLIBCXX_3.4.3 -FUNC:log10f@@GLIBCXX_3.4 -FUNC:log10l@@GLIBCXX_3.4 -FUNC:logf@@GLIBCXX_3.4 -FUNC:logl@@GLIBCXX_3.4 -FUNC:modfl@@GLIBCXX_3.4.3 -FUNC:powf@@GLIBCXX_3.4 -FUNC:powl@@GLIBCXX_3.4 -FUNC:sinf@@GLIBCXX_3.4 -FUNC:sinhf@@GLIBCXX_3.4 -FUNC:sinhl@@GLIBCXX_3.4 -FUNC:sinl@@GLIBCXX_3.4 -FUNC:sqrtf@@GLIBCXX_3.4 -FUNC:sqrtl@@GLIBCXX_3.4 -FUNC:tanf@@GLIBCXX_3.4 -FUNC:tanhf@@GLIBCXX_3.4 -FUNC:tanhl@@GLIBCXX_3.4 -FUNC:tanl@@GLIBCXX_3.4 -OBJECT:0:CXXABI_1.3 -OBJECT:0:CXXABI_1.3.1 -OBJECT:0:CXXABI_1.3.2 -OBJECT:0:CXXABI_1.3.3 -OBJECT:0:CXXABI_1.3.4 -OBJECT:0:CXXABI_1.3.5 -OBJECT:0:CXXABI_1.3.6 -OBJECT:0:CXXABI_1.3.7 -OBJECT:0:CXXABI_1.3.8 -OBJECT:0:CXXABI_TM_1 -OBJECT:0:GLIBCXX_3.4 -OBJECT:0:GLIBCXX_3.4.1 -OBJECT:0:GLIBCXX_3.4.10 -OBJECT:0:GLIBCXX_3.4.11 -OBJECT:0:GLIBCXX_3.4.12 -OBJECT:0:GLIBCXX_3.4.13 -OBJECT:0:GLIBCXX_3.4.14 -OBJECT:0:GLIBCXX_3.4.15 -OBJECT:0:GLIBCXX_3.4.16 -OBJECT:0:GLIBCXX_3.4.17 -OBJECT:0:GLIBCXX_3.4.18 -OBJECT:0:GLIBCXX_3.4.19 -OBJECT:0:GLIBCXX_3.4.2 -OBJECT:0:GLIBCXX_3.4.20 -OBJECT:0:GLIBCXX_3.4.3 -OBJECT:0:GLIBCXX_3.4.4 -OBJECT:0:GLIBCXX_3.4.5 -OBJECT:0:GLIBCXX_3.4.6 -OBJECT:0:GLIBCXX_3.4.7 -OBJECT:0:GLIBCXX_3.4.8 -OBJECT:0:GLIBCXX_3.4.9 -OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10 -OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10 -OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3 -OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4 -OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4 -OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4 -OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4 -OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4 -OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15 -OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15 -OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4 -OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14 -OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4 -OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4 -OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4 -OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11 -OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4 -OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4 -OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4 -OBJECT:12:_ZTISt16bad_array_length@@CXXABI_1.3.8 -OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4 -OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 -OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 -OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4 -OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4 -OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4 -OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4 -OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4 -OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4 -OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4 -OBJECT:140:_ZSt4clog@@GLIBCXX_3.4 -OBJECT:140:_ZSt4cout@@GLIBCXX_3.4 -OBJECT:144:_ZSt3cin@@GLIBCXX_3.4 -OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4 -OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4 -OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4 -OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4 -OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4 -OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4 -OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4 -OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4 -OBJECT:16:_ZTIPDd@@CXXABI_1.3.4 -OBJECT:16:_ZTIPDe@@CXXABI_1.3.4 -OBJECT:16:_ZTIPDf@@CXXABI_1.3.4 -OBJECT:16:_ZTIPDi@@CXXABI_1.3.3 -OBJECT:16:_ZTIPDn@@CXXABI_1.3.5 -OBJECT:16:_ZTIPDs@@CXXABI_1.3.3 -OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4 -OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4 -OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4 -OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3 -OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5 -OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3 -OBJECT:16:_ZTIPKa@@CXXABI_1.3 -OBJECT:16:_ZTIPKb@@CXXABI_1.3 -OBJECT:16:_ZTIPKc@@CXXABI_1.3 -OBJECT:16:_ZTIPKd@@CXXABI_1.3 -OBJECT:16:_ZTIPKe@@CXXABI_1.3 -OBJECT:16:_ZTIPKf@@CXXABI_1.3 -OBJECT:16:_ZTIPKh@@CXXABI_1.3 -OBJECT:16:_ZTIPKi@@CXXABI_1.3 -OBJECT:16:_ZTIPKj@@CXXABI_1.3 -OBJECT:16:_ZTIPKl@@CXXABI_1.3 -OBJECT:16:_ZTIPKm@@CXXABI_1.3 -OBJECT:16:_ZTIPKs@@CXXABI_1.3 -OBJECT:16:_ZTIPKt@@CXXABI_1.3 -OBJECT:16:_ZTIPKv@@CXXABI_1.3 -OBJECT:16:_ZTIPKw@@CXXABI_1.3 -OBJECT:16:_ZTIPKx@@CXXABI_1.3 -OBJECT:16:_ZTIPKy@@CXXABI_1.3 -OBJECT:16:_ZTIPa@@CXXABI_1.3 -OBJECT:16:_ZTIPb@@CXXABI_1.3 -OBJECT:16:_ZTIPc@@CXXABI_1.3 -OBJECT:16:_ZTIPd@@CXXABI_1.3 -OBJECT:16:_ZTIPe@@CXXABI_1.3 -OBJECT:16:_ZTIPf@@CXXABI_1.3 -OBJECT:16:_ZTIPh@@CXXABI_1.3 -OBJECT:16:_ZTIPi@@CXXABI_1.3 -OBJECT:16:_ZTIPj@@CXXABI_1.3 -OBJECT:16:_ZTIPl@@CXXABI_1.3 -OBJECT:16:_ZTIPm@@CXXABI_1.3 -OBJECT:16:_ZTIPs@@CXXABI_1.3 -OBJECT:16:_ZTIPt@@CXXABI_1.3 -OBJECT:16:_ZTIPv@@CXXABI_1.3 -OBJECT:16:_ZTIPw@@CXXABI_1.3 -OBJECT:16:_ZTIPx@@CXXABI_1.3 -OBJECT:16:_ZTIPy@@CXXABI_1.3 -OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4 -OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4 -OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4 -OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4 -OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5 -OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4 -OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14 -OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11 -OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4 -OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4 -OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4 -OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4 -OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4 -OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4 -OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11 -OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4 -OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt6chrono3_V212steady_clock9is_steadyE@@GLIBCXX_3.4.19 -OBJECT:1:_ZNSt6chrono3_V212system_clock9is_steadyE@@GLIBCXX_3.4.19 -OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4 -OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4 -OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4 -OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4 -OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15 -OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15 -OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14 -OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11 -OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt16bad_array_length@@CXXABI_1.3.8 -OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 -OBJECT:20:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 -OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4 -OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4 -OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 -OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 -OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4 -OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4 -OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4 -OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4 -OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4 -OBJECT:24:_ZTISi@@GLIBCXX_3.4 -OBJECT:24:_ZTISo@@GLIBCXX_3.4 -OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 -OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:28:_ZTTSd@@GLIBCXX_3.4 -OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4 -OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4 -OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4 -OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4 -OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4 -OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4 -OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4 -OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4 -OBJECT:2:_ZTSa@@CXXABI_1.3 -OBJECT:2:_ZTSb@@CXXABI_1.3 -OBJECT:2:_ZTSc@@CXXABI_1.3 -OBJECT:2:_ZTSd@@CXXABI_1.3 -OBJECT:2:_ZTSe@@CXXABI_1.3 -OBJECT:2:_ZTSf@@CXXABI_1.3 -OBJECT:2:_ZTSh@@CXXABI_1.3 -OBJECT:2:_ZTSi@@CXXABI_1.3 -OBJECT:2:_ZTSj@@CXXABI_1.3 -OBJECT:2:_ZTSl@@CXXABI_1.3 -OBJECT:2:_ZTSm@@CXXABI_1.3 -OBJECT:2:_ZTSs@@CXXABI_1.3 -OBJECT:2:_ZTSt@@CXXABI_1.3 -OBJECT:2:_ZTSv@@CXXABI_1.3 -OBJECT:2:_ZTSw@@CXXABI_1.3 -OBJECT:2:_ZTSx@@CXXABI_1.3 -OBJECT:2:_ZTSy@@CXXABI_1.3 -OBJECT:32:_ZTISd@@GLIBCXX_3.4 -OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3 -OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3 -OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3 -OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3 -OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4 -OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3 -OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3 -OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3 -OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3 -OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3 -OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3 -OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3 -OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3 -OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11 -OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4 -OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4 -OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4 -OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4 -OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3 -OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3 -OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3 -OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:3:_ZTSPa@@CXXABI_1.3 -OBJECT:3:_ZTSPb@@CXXABI_1.3 -OBJECT:3:_ZTSPc@@CXXABI_1.3 -OBJECT:3:_ZTSPd@@CXXABI_1.3 -OBJECT:3:_ZTSPe@@CXXABI_1.3 -OBJECT:3:_ZTSPf@@CXXABI_1.3 -OBJECT:3:_ZTSPh@@CXXABI_1.3 -OBJECT:3:_ZTSPi@@CXXABI_1.3 -OBJECT:3:_ZTSPj@@CXXABI_1.3 -OBJECT:3:_ZTSPl@@CXXABI_1.3 -OBJECT:3:_ZTSPm@@CXXABI_1.3 -OBJECT:3:_ZTSPs@@CXXABI_1.3 -OBJECT:3:_ZTSPt@@CXXABI_1.3 -OBJECT:3:_ZTSPv@@CXXABI_1.3 -OBJECT:3:_ZTSPw@@CXXABI_1.3 -OBJECT:3:_ZTSPx@@CXXABI_1.3 -OBJECT:3:_ZTSPy@@CXXABI_1.3 -OBJECT:3:_ZTSSd@@GLIBCXX_3.4 -OBJECT:3:_ZTSSi@@GLIBCXX_3.4 -OBJECT:3:_ZTSSo@@GLIBCXX_3.4 -OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3 -OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4 -OBJECT:40:_ZTVSi@@GLIBCXX_3.4 -OBJECT:40:_ZTVSo@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3 -OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3 -OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3 -OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3 -OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4 -OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4 -OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4 -OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4 -OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4 -OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4 -OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5printE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:4:_ZTSPKa@@CXXABI_1.3 -OBJECT:4:_ZTSPKb@@CXXABI_1.3 -OBJECT:4:_ZTSPKc@@CXXABI_1.3 -OBJECT:4:_ZTSPKd@@CXXABI_1.3 -OBJECT:4:_ZTSPKe@@CXXABI_1.3 -OBJECT:4:_ZTSPKf@@CXXABI_1.3 -OBJECT:4:_ZTSPKh@@CXXABI_1.3 -OBJECT:4:_ZTSPKi@@CXXABI_1.3 -OBJECT:4:_ZTSPKj@@CXXABI_1.3 -OBJECT:4:_ZTSPKl@@CXXABI_1.3 -OBJECT:4:_ZTSPKm@@CXXABI_1.3 -OBJECT:4:_ZTSPKs@@CXXABI_1.3 -OBJECT:4:_ZTSPKt@@CXXABI_1.3 -OBJECT:4:_ZTSPKv@@CXXABI_1.3 -OBJECT:4:_ZTSPKw@@CXXABI_1.3 -OBJECT:4:_ZTSPKx@@CXXABI_1.3 -OBJECT:4:_ZTSPKy@@CXXABI_1.3 -OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4 -OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4 -OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4 -OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4 -OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 -OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4 -OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4 -OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4 -OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4 -OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4 -OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTVSd@@GLIBCXX_3.4 -OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4 -OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4 -OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4 -OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZTIDd@@CXXABI_1.3.4 -OBJECT:8:_ZTIDe@@CXXABI_1.3.4 -OBJECT:8:_ZTIDf@@CXXABI_1.3.4 -OBJECT:8:_ZTIDi@@CXXABI_1.3.3 -OBJECT:8:_ZTIDn@@CXXABI_1.3.5 -OBJECT:8:_ZTIDs@@CXXABI_1.3.3 -OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2 -OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2 -OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4 -OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4 -OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4 -OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4 -OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4 -OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11 -OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5 -OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4 -OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4 -OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4 -OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4 -OBJECT:8:_ZTIa@@CXXABI_1.3 -OBJECT:8:_ZTIb@@CXXABI_1.3 -OBJECT:8:_ZTIc@@CXXABI_1.3 -OBJECT:8:_ZTId@@CXXABI_1.3 -OBJECT:8:_ZTIe@@CXXABI_1.3 -OBJECT:8:_ZTIf@@CXXABI_1.3 -OBJECT:8:_ZTIh@@CXXABI_1.3 -OBJECT:8:_ZTIi@@CXXABI_1.3 -OBJECT:8:_ZTIj@@CXXABI_1.3 -OBJECT:8:_ZTIl@@CXXABI_1.3 -OBJECT:8:_ZTIm@@CXXABI_1.3 -OBJECT:8:_ZTIs@@CXXABI_1.3 -OBJECT:8:_ZTIt@@CXXABI_1.3 -OBJECT:8:_ZTIv@@CXXABI_1.3 -OBJECT:8:_ZTIw@@CXXABI_1.3 -OBJECT:8:_ZTIx@@CXXABI_1.3 -OBJECT:8:_ZTIy@@CXXABI_1.3 -OBJECT:8:_ZTTSi@@GLIBCXX_3.4 -OBJECT:8:_ZTTSo@@GLIBCXX_3.4 -OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 diff --git a/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt deleted file mode 100644 index 24a218125cd..00000000000 --- a/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt +++ /dev/null @@ -1,3688 +0,0 @@ -FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3 -FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4 -FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17 -FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17 -FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17 -FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base7_M_swapERS0_@@GLIBCXX_3.4.17 -FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10 -FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx12__atomic_addEPVli@@GLIBCXX_3.4 -FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVli@@GLIBCXX_3.4 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP6__FILE@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP6__FILE@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP6__FILE@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP6__FILE@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10 -FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3 -FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6 -FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4 -FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4 -FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3 -FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3 -FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10 -FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4 -FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4 -FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4 -FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4 -FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4 -FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5 -FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4 -FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4 -FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4 -FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4 -FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4 -FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4 -FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4 -FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4 -FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4 -FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5 -FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4 -FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4 -FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4 -FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4 -FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4 -FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4 -FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4 -FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4 -FUNC:_ZNKSs2atEm@@GLIBCXX_3.4 -FUNC:_ZNKSs3endEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4 -FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4 -FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4 -FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4 -FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4 -FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4 -FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4 -FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4 -FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4 -FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4 -FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4 -FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4 -FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4 -FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4 -FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4 -FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4 -FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4 -FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4 -FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4 -FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4 -FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4 -FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4 -FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4 -FUNC:_ZNKSsixEm@@GLIBCXX_3.4 -FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9 -FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11 -FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15 -FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14 -FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9 -FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4 -FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5 -FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11 -FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11 -FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11 -FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3 -FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3 -FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 -FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 -FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 -FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 -FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10 -FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10 -FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11 -FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10 -FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11 -FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11 -FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_scan_isEjPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE11do_scan_notEjPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEj@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pj@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE5do_isEjw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4 -FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4 -FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4 -FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4 -FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4 -FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4 -FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@@GLIBCXX_3.4.18 -FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@@GLIBCXX_3.4.18 -FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9 -FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4 -FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4 -FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4 -FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4 -FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4 -FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4 -FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4 -FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@@GLIBCXX_3.4.16 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE8pop_backEv@@GLIBCXX_3.4.17 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11 -FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4 -FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSdC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSdC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSdD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSdD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSdD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9 -FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4 -FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4 -FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4 -FUNC:_ZNSi3getERc@@GLIBCXX_3.4 -FUNC:_ZNSi3getEv@@GLIBCXX_3.4 -FUNC:_ZNSi4peekEv@@GLIBCXX_3.4 -FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4 -FUNC:_ZNSi4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4 -FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4 -FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4 -FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5 -FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4 -FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5 -FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4 -FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4 -FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4 -FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4 -FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4 -FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4 -FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSiC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSiC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSiD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSiD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSiD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4 -FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4 -FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4 -FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSirsERPv@@GLIBCXX_3.4 -FUNC:_ZNSirsERb@@GLIBCXX_3.4 -FUNC:_ZNSirsERd@@GLIBCXX_3.4 -FUNC:_ZNSirsERe@@GLIBCXX_3.4 -FUNC:_ZNSirsERf@@GLIBCXX_3.4 -FUNC:_ZNSirsERi@@GLIBCXX_3.4 -FUNC:_ZNSirsERj@@GLIBCXX_3.4 -FUNC:_ZNSirsERl@@GLIBCXX_3.4 -FUNC:_ZNSirsERm@@GLIBCXX_3.4 -FUNC:_ZNSirsERs@@GLIBCXX_3.4 -FUNC:_ZNSirsERt@@GLIBCXX_3.4 -FUNC:_ZNSirsERx@@GLIBCXX_3.4 -FUNC:_ZNSirsERy@@GLIBCXX_3.4 -FUNC:_ZNSo3putEc@@GLIBCXX_3.4 -FUNC:_ZNSo5flushEv@@GLIBCXX_3.4 -FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4 -FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4 -FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4 -FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4 -FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4 -FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4 -FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9 -FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSoC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSoC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSoD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSoD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSoD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4 -FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4 -FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4 -FUNC:_ZNSolsEPKv@@GLIBCXX_3.4 -FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -FUNC:_ZNSolsEb@@GLIBCXX_3.4 -FUNC:_ZNSolsEd@@GLIBCXX_3.4 -FUNC:_ZNSolsEe@@GLIBCXX_3.4 -FUNC:_ZNSolsEf@@GLIBCXX_3.4 -FUNC:_ZNSolsEi@@GLIBCXX_3.4 -FUNC:_ZNSolsEj@@GLIBCXX_3.4 -FUNC:_ZNSolsEl@@GLIBCXX_3.4 -FUNC:_ZNSolsEm@@GLIBCXX_3.4 -FUNC:_ZNSolsEs@@GLIBCXX_3.4 -FUNC:_ZNSolsEt@@GLIBCXX_3.4 -FUNC:_ZNSolsEx@@GLIBCXX_3.4 -FUNC:_ZNSolsEy@@GLIBCXX_3.4 -FUNC:_ZNSs10_S_compareEmm@@GLIBCXX_3.4.16 -FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4 -FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 -FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4 -FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4 -FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4 -FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4 -FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4 -FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14 -FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4 -FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4 -FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14 -FUNC:_ZNSs2atEm@@GLIBCXX_3.4 -FUNC:_ZNSs3endEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5 -FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4 -FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15 -FUNC:_ZNSs4rendEv@@GLIBCXX_3.4 -FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4 -FUNC:_ZNSs5beginEv@@GLIBCXX_3.4 -FUNC:_ZNSs5clearEv@@GLIBCXX_3.4 -FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4 -FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4 -FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4 -FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15 -FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4 -FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4 -FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4 -FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4 -FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4 -FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14 -FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4 -FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4 -FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4 -FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4 -FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4 -FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4 -FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4 -FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4 -FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4 -FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5 -FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4 -FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4 -FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4 -FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4 -FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4 -FUNC:_ZNSs8pop_backEv@@GLIBCXX_3.4.17 -FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5 -FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4 -FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4 -FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14 -FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4 -FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15 -FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4 -FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4 -FUNC:_ZNSsD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSsD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14 -FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4 -FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4 -FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSsaSEc@@GLIBCXX_3.4 -FUNC:_ZNSsixEm@@GLIBCXX_3.4 -FUNC:_ZNSspLEPKc@@GLIBCXX_3.4 -FUNC:_ZNSspLERKSs@@GLIBCXX_3.4 -FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11 -FUNC:_ZNSspLEc@@GLIBCXX_3.4 -FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4 -FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC1EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC2EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC1EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC2EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC1EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC2EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC1EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC2EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEPi@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC1EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC2EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEPi@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC1EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC2EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 -FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1 -FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE8sys_openEP6__FILESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14 -FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14 -FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14 -FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11 -FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11 -FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11 -FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEli@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4 -FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4 -FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18 -FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18 -FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18 -FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 -FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 -FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14 -FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14 -FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4 -FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3 -FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEl@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEl@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEl@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEl@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_l@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_l@@GLIBCXX_3.4.16 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEi@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 -FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 -FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 -FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5 -FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5 -FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5 -FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15 -FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 -FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 -FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 -FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcEC1EPKjbm@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcEC1EPiPKjbm@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcEC2EPKjbm@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcEC2EPiPKjbm@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwEC1EPim@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwEC2EPim@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14 -FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14 -FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 -FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19 -FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19 -FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4 -FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4 -FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 -FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7 -FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6 -FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facet17_S_clone_c_localeERPi@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facet18_S_create_c_localeERPiPKcS1_@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERPi@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4 -FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4 -FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EPim@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EPim@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EPim@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EPim@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcEC1EPim@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcEC2EPim@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwEC1EPim@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwEC2EPim@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15 -FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15 -FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15 -FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15 -FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15 -FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6 -FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6 -FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcEC1EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcEC2EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwEC1EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwEC2EPiPKcm@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEPi@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC1EPim@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC2EPim@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEPi@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC1EPim@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC2EPim@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4 -FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14 -FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10 -FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 -FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 -FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4 -FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4 -FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 -FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5 -FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 -FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 -FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4 -FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4 -FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4 -FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 -FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 -FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5 -FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 -FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 -FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 -FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 -FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9 -FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9 -FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4 -FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11 -FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8 -FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8 -FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4 -FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10 -FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3 -FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3 -FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4 -FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4 -FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4 -FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4 -FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4 -FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4 -FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4 -FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15 -FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4 -FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 -FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14 -FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4 -FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 -FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 -FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 -FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 -FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 -FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 -FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 -FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 -FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 -FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 -FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 -FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4 -FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4 -FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9terminatev@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4 -FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4 -FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4 -FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4 -FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4 -FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4 -FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4 -FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4 -FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4 -FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4 -FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4 -FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4 -FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4 -FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4 -FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4 -FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4 -FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4 -FUNC:_ZdaPv@@GLIBCXX_3.4 -FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4 -FUNC:_ZdlPv@@GLIBCXX_3.4 -FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4 -FUNC:_Znam@@GLIBCXX_3.4 -FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4 -FUNC:_Znwm@@GLIBCXX_3.4 -FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4 -FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11 -FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11 -FUNC:__cxa_allocate_dependent_exception@@CXXABI_1.3.6 -FUNC:__cxa_allocate_exception@@CXXABI_1.3 -FUNC:__cxa_bad_cast@@CXXABI_1.3 -FUNC:__cxa_bad_typeid@@CXXABI_1.3 -FUNC:__cxa_begin_catch@@CXXABI_1.3 -FUNC:__cxa_call_unexpected@@CXXABI_1.3 -FUNC:__cxa_current_exception_type@@CXXABI_1.3 -FUNC:__cxa_deleted_virtual@@CXXABI_1.3.6 -FUNC:__cxa_demangle@@CXXABI_1.3 -FUNC:__cxa_end_catch@@CXXABI_1.3 -FUNC:__cxa_free_dependent_exception@@CXXABI_1.3.6 -FUNC:__cxa_free_exception@@CXXABI_1.3 -FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1 -FUNC:__cxa_get_globals@@CXXABI_1.3 -FUNC:__cxa_get_globals_fast@@CXXABI_1.3 -FUNC:__cxa_guard_abort@@CXXABI_1.3 -FUNC:__cxa_guard_acquire@@CXXABI_1.3 -FUNC:__cxa_guard_release@@CXXABI_1.3 -FUNC:__cxa_pure_virtual@@CXXABI_1.3 -FUNC:__cxa_rethrow@@CXXABI_1.3 -FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 -FUNC:__cxa_throw@@CXXABI_1.3 -FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 -FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 -FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 -FUNC:__cxa_vec_cctor@@CXXABI_1.3 -FUNC:__cxa_vec_cleanup@@CXXABI_1.3 -FUNC:__cxa_vec_ctor@@CXXABI_1.3 -FUNC:__cxa_vec_delete2@@CXXABI_1.3 -FUNC:__cxa_vec_delete3@@CXXABI_1.3 -FUNC:__cxa_vec_delete@@CXXABI_1.3 -FUNC:__cxa_vec_dtor@@CXXABI_1.3 -FUNC:__cxa_vec_new2@@CXXABI_1.3 -FUNC:__cxa_vec_new3@@CXXABI_1.3 -FUNC:__cxa_vec_new@@CXXABI_1.3 -FUNC:__dynamic_cast@@CXXABI_1.3 -FUNC:__gxx_personality_v0@@CXXABI_1.3 -FUNC:acosf@@GLIBCXX_3.4.3 -FUNC:acosl@@GLIBCXX_3.4.3 -FUNC:asinf@@GLIBCXX_3.4.3 -FUNC:asinl@@GLIBCXX_3.4.3 -FUNC:atan2f@@GLIBCXX_3.4 -FUNC:atan2l@@GLIBCXX_3.4 -FUNC:atanf@@GLIBCXX_3.4.3 -FUNC:atanl@@GLIBCXX_3.4.3 -FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11 -FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11 -FUNC:ceilf@@GLIBCXX_3.4.3 -FUNC:ceill@@GLIBCXX_3.4.3 -FUNC:cosf@@GLIBCXX_3.4 -FUNC:coshf@@GLIBCXX_3.4 -FUNC:coshl@@GLIBCXX_3.4 -FUNC:cosl@@GLIBCXX_3.4 -FUNC:expf@@GLIBCXX_3.4 -FUNC:expl@@GLIBCXX_3.4 -FUNC:floorf@@GLIBCXX_3.4.3 -FUNC:floorl@@GLIBCXX_3.4.3 -FUNC:fmodf@@GLIBCXX_3.4.3 -FUNC:fmodl@@GLIBCXX_3.4.3 -FUNC:frexpf@@GLIBCXX_3.4.3 -FUNC:frexpl@@GLIBCXX_3.4.3 -FUNC:hypotf@@GLIBCXX_3.4 -FUNC:hypotl@@GLIBCXX_3.4 -FUNC:ldexpf@@GLIBCXX_3.4.3 -FUNC:ldexpl@@GLIBCXX_3.4.3 -FUNC:log10f@@GLIBCXX_3.4 -FUNC:log10l@@GLIBCXX_3.4 -FUNC:logf@@GLIBCXX_3.4 -FUNC:logl@@GLIBCXX_3.4 -FUNC:modfl@@GLIBCXX_3.4.3 -FUNC:powf@@GLIBCXX_3.4 -FUNC:powl@@GLIBCXX_3.4 -FUNC:sinf@@GLIBCXX_3.4 -FUNC:sinhf@@GLIBCXX_3.4 -FUNC:sinhl@@GLIBCXX_3.4 -FUNC:sinl@@GLIBCXX_3.4 -FUNC:sqrtf@@GLIBCXX_3.4 -FUNC:sqrtl@@GLIBCXX_3.4 -FUNC:tanf@@GLIBCXX_3.4 -FUNC:tanhf@@GLIBCXX_3.4 -FUNC:tanhl@@GLIBCXX_3.4 -FUNC:tanl@@GLIBCXX_3.4 -OBJECT:0:CXXABI_1.3 -OBJECT:0:CXXABI_1.3.1 -OBJECT:0:CXXABI_1.3.2 -OBJECT:0:CXXABI_1.3.3 -OBJECT:0:CXXABI_1.3.4 -OBJECT:0:CXXABI_1.3.5 -OBJECT:0:CXXABI_1.3.6 -OBJECT:0:CXXABI_1.3.7 -OBJECT:0:CXXABI_1.3.8 -OBJECT:0:CXXABI_TM_1 -OBJECT:0:GLIBCXX_3.4 -OBJECT:0:GLIBCXX_3.4.1 -OBJECT:0:GLIBCXX_3.4.10 -OBJECT:0:GLIBCXX_3.4.11 -OBJECT:0:GLIBCXX_3.4.12 -OBJECT:0:GLIBCXX_3.4.13 -OBJECT:0:GLIBCXX_3.4.14 -OBJECT:0:GLIBCXX_3.4.15 -OBJECT:0:GLIBCXX_3.4.16 -OBJECT:0:GLIBCXX_3.4.17 -OBJECT:0:GLIBCXX_3.4.18 -OBJECT:0:GLIBCXX_3.4.19 -OBJECT:0:GLIBCXX_3.4.2 -OBJECT:0:GLIBCXX_3.4.20 -OBJECT:0:GLIBCXX_3.4.3 -OBJECT:0:GLIBCXX_3.4.4 -OBJECT:0:GLIBCXX_3.4.5 -OBJECT:0:GLIBCXX_3.4.6 -OBJECT:0:GLIBCXX_3.4.7 -OBJECT:0:GLIBCXX_3.4.8 -OBJECT:0:GLIBCXX_3.4.9 -OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4 -OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4 -OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4 -OBJECT:104:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4 -OBJECT:104:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 -OBJECT:104:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4 -OBJECT:104:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4 -OBJECT:104:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4 -OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4 -OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4 -OBJECT:120:_ZTVSd@@GLIBCXX_3.4 -OBJECT:120:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:120:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:120:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:120:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:120:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:120:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4 -OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4 -OBJECT:128:_ZTVSt5ctypeIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4 -OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4 -OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4 -OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4 -OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4 -OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4 -OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4 -OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4 -OBJECT:16:_ZTIDd@@CXXABI_1.3.4 -OBJECT:16:_ZTIDe@@CXXABI_1.3.4 -OBJECT:16:_ZTIDf@@CXXABI_1.3.4 -OBJECT:16:_ZTIDi@@CXXABI_1.3.3 -OBJECT:16:_ZTIDn@@CXXABI_1.3.5 -OBJECT:16:_ZTIDs@@CXXABI_1.3.3 -OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2 -OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2 -OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4 -OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4 -OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4 -OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4 -OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4 -OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11 -OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:16:_ZTISt16nested_exception@@CXXABI_1.3.5 -OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4 -OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4 -OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4 -OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4 -OBJECT:16:_ZTIa@@CXXABI_1.3 -OBJECT:16:_ZTIb@@CXXABI_1.3 -OBJECT:16:_ZTIc@@CXXABI_1.3 -OBJECT:16:_ZTId@@CXXABI_1.3 -OBJECT:16:_ZTIe@@CXXABI_1.3 -OBJECT:16:_ZTIf@@CXXABI_1.3 -OBJECT:16:_ZTIh@@CXXABI_1.3 -OBJECT:16:_ZTIi@@CXXABI_1.3 -OBJECT:16:_ZTIj@@CXXABI_1.3 -OBJECT:16:_ZTIl@@CXXABI_1.3 -OBJECT:16:_ZTIm@@CXXABI_1.3 -OBJECT:16:_ZTIn@@CXXABI_1.3.5 -OBJECT:16:_ZTIo@@CXXABI_1.3.5 -OBJECT:16:_ZTIs@@CXXABI_1.3 -OBJECT:16:_ZTIt@@CXXABI_1.3 -OBJECT:16:_ZTIv@@CXXABI_1.3 -OBJECT:16:_ZTIw@@CXXABI_1.3 -OBJECT:16:_ZTIx@@CXXABI_1.3 -OBJECT:16:_ZTIy@@CXXABI_1.3 -OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4 -OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4 -OBJECT:16:_ZTTSi@@GLIBCXX_3.4 -OBJECT:16:_ZTTSo@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14 -OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4 -OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11 -OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4 -OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4 -OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4 -OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4 -OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4 -OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4 -OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11 -OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4 -OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15 -OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsInE10is_boundedE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE10is_integerE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE12has_infinityE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE13has_quiet_NaNE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE14is_specializedE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE15has_denorm_lossE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE15tinyness_beforeE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE17has_signaling_NaNE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE5trapsE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE8is_exactE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE9is_iec559E@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE9is_moduloE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsInE9is_signedE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE10is_boundedE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE10is_integerE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE12has_infinityE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE13has_quiet_NaNE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE14is_specializedE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE15has_denorm_lossE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE15tinyness_beforeE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE17has_signaling_NaNE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE5trapsE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE8is_exactE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE9is_iec559E@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE9is_moduloE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIoE9is_signedE@@GLIBCXX_3.4.17 -OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4 -OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11 -OBJECT:1:_ZNSt6chrono3_V212steady_clock9is_steadyE@@GLIBCXX_3.4.19 -OBJECT:1:_ZNSt6chrono3_V212system_clock9is_steadyE@@GLIBCXX_3.4.19 -OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4 -OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4 -OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4 -OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4 -OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 -OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 -OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4 -OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4 -OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4 -OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4 -OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4 -OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4 -OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10 -OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10 -OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3 -OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4 -OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4 -OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4 -OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4 -OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4 -OBJECT:24:_ZTISt11regex_error@@GLIBCXX_3.4.15 -OBJECT:24:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15 -OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4 -OBJECT:24:_ZTISt12future_error@@GLIBCXX_3.4.14 -OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4 -OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4 -OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4 -OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11 -OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4 -OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4 -OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4 -OBJECT:24:_ZTISt16bad_array_length@@CXXABI_1.3.8 -OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4 -OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 -OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 -OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4 -OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4 -OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4 -OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 -OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4 -OBJECT:272:_ZSt4clog@@GLIBCXX_3.4 -OBJECT:272:_ZSt4cout@@GLIBCXX_3.4 -OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4 -OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4 -OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4 -OBJECT:280:_ZSt3cin@@GLIBCXX_3.4 -OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4 -OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4 -OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4 -OBJECT:2:_ZTSa@@CXXABI_1.3 -OBJECT:2:_ZTSb@@CXXABI_1.3 -OBJECT:2:_ZTSc@@CXXABI_1.3 -OBJECT:2:_ZTSd@@CXXABI_1.3 -OBJECT:2:_ZTSe@@CXXABI_1.3 -OBJECT:2:_ZTSf@@CXXABI_1.3 -OBJECT:2:_ZTSh@@CXXABI_1.3 -OBJECT:2:_ZTSi@@CXXABI_1.3 -OBJECT:2:_ZTSj@@CXXABI_1.3 -OBJECT:2:_ZTSl@@CXXABI_1.3 -OBJECT:2:_ZTSm@@CXXABI_1.3 -OBJECT:2:_ZTSs@@CXXABI_1.3 -OBJECT:2:_ZTSt@@CXXABI_1.3 -OBJECT:2:_ZTSv@@CXXABI_1.3 -OBJECT:2:_ZTSw@@CXXABI_1.3 -OBJECT:2:_ZTSx@@CXXABI_1.3 -OBJECT:2:_ZTSy@@CXXABI_1.3 -OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4 -OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4 -OBJECT:32:_ZTIPDd@@CXXABI_1.3.4 -OBJECT:32:_ZTIPDe@@CXXABI_1.3.4 -OBJECT:32:_ZTIPDf@@CXXABI_1.3.4 -OBJECT:32:_ZTIPDi@@CXXABI_1.3.3 -OBJECT:32:_ZTIPDn@@CXXABI_1.3.5 -OBJECT:32:_ZTIPDs@@CXXABI_1.3.3 -OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4 -OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4 -OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4 -OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3 -OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5 -OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3 -OBJECT:32:_ZTIPKa@@CXXABI_1.3 -OBJECT:32:_ZTIPKb@@CXXABI_1.3 -OBJECT:32:_ZTIPKc@@CXXABI_1.3 -OBJECT:32:_ZTIPKd@@CXXABI_1.3 -OBJECT:32:_ZTIPKe@@CXXABI_1.3 -OBJECT:32:_ZTIPKf@@CXXABI_1.3 -OBJECT:32:_ZTIPKh@@CXXABI_1.3 -OBJECT:32:_ZTIPKi@@CXXABI_1.3 -OBJECT:32:_ZTIPKj@@CXXABI_1.3 -OBJECT:32:_ZTIPKl@@CXXABI_1.3 -OBJECT:32:_ZTIPKm@@CXXABI_1.3 -OBJECT:32:_ZTIPKn@@CXXABI_1.3.5 -OBJECT:32:_ZTIPKo@@CXXABI_1.3.5 -OBJECT:32:_ZTIPKs@@CXXABI_1.3 -OBJECT:32:_ZTIPKt@@CXXABI_1.3 -OBJECT:32:_ZTIPKv@@CXXABI_1.3 -OBJECT:32:_ZTIPKw@@CXXABI_1.3 -OBJECT:32:_ZTIPKx@@CXXABI_1.3 -OBJECT:32:_ZTIPKy@@CXXABI_1.3 -OBJECT:32:_ZTIPa@@CXXABI_1.3 -OBJECT:32:_ZTIPb@@CXXABI_1.3 -OBJECT:32:_ZTIPc@@CXXABI_1.3 -OBJECT:32:_ZTIPd@@CXXABI_1.3 -OBJECT:32:_ZTIPe@@CXXABI_1.3 -OBJECT:32:_ZTIPf@@CXXABI_1.3 -OBJECT:32:_ZTIPh@@CXXABI_1.3 -OBJECT:32:_ZTIPi@@CXXABI_1.3 -OBJECT:32:_ZTIPj@@CXXABI_1.3 -OBJECT:32:_ZTIPl@@CXXABI_1.3 -OBJECT:32:_ZTIPm@@CXXABI_1.3 -OBJECT:32:_ZTIPn@@CXXABI_1.3.5 -OBJECT:32:_ZTIPo@@CXXABI_1.3.5 -OBJECT:32:_ZTIPs@@CXXABI_1.3 -OBJECT:32:_ZTIPt@@CXXABI_1.3 -OBJECT:32:_ZTIPv@@CXXABI_1.3 -OBJECT:32:_ZTIPw@@CXXABI_1.3 -OBJECT:32:_ZTIPx@@CXXABI_1.3 -OBJECT:32:_ZTIPy@@CXXABI_1.3 -OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4 -OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4 -OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:32:_ZTVNSt6locale5facetE@@GLIBCXX_3.4 -OBJECT:32:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4 -OBJECT:32:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4 -OBJECT:32:_ZTVSt16nested_exception@@CXXABI_1.3.5 -OBJECT:32:_ZTVSt8ios_base@@GLIBCXX_3.4 -OBJECT:32:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:32:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3 -OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3 -OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3 -OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3 -OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3 -OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3 -OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3 -OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3 -OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:3:_ZTSPa@@CXXABI_1.3 -OBJECT:3:_ZTSPb@@CXXABI_1.3 -OBJECT:3:_ZTSPc@@CXXABI_1.3 -OBJECT:3:_ZTSPd@@CXXABI_1.3 -OBJECT:3:_ZTSPe@@CXXABI_1.3 -OBJECT:3:_ZTSPf@@CXXABI_1.3 -OBJECT:3:_ZTSPh@@CXXABI_1.3 -OBJECT:3:_ZTSPi@@CXXABI_1.3 -OBJECT:3:_ZTSPj@@CXXABI_1.3 -OBJECT:3:_ZTSPl@@CXXABI_1.3 -OBJECT:3:_ZTSPm@@CXXABI_1.3 -OBJECT:3:_ZTSPs@@CXXABI_1.3 -OBJECT:3:_ZTSPt@@CXXABI_1.3 -OBJECT:3:_ZTSPv@@CXXABI_1.3 -OBJECT:3:_ZTSPw@@CXXABI_1.3 -OBJECT:3:_ZTSPx@@CXXABI_1.3 -OBJECT:3:_ZTSPy@@CXXABI_1.3 -OBJECT:3:_ZTSSd@@GLIBCXX_3.4 -OBJECT:3:_ZTSSi@@GLIBCXX_3.4 -OBJECT:3:_ZTSSo@@GLIBCXX_3.4 -OBJECT:40:_ZTISi@@GLIBCXX_3.4 -OBJECT:40:_ZTISo@@GLIBCXX_3.4 -OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3 -OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt11regex_error@@GLIBCXX_3.4.15 -OBJECT:40:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15 -OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt12future_error@@GLIBCXX_3.4.14 -OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11 -OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt16bad_array_length@@CXXABI_1.3.8 -OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 -OBJECT:40:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 -OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt9bad_alloc@@GLIBCXX_3.4 -OBJECT:40:_ZTVSt9exception@@GLIBCXX_3.4 -OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3 -OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:48:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:48:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:48:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:48:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5printE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11 -OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsInE10has_denormE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsInE11round_styleE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsInE12max_digits10E@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsInE12max_exponentE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsInE12min_exponentE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsInE14max_exponent10E@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsInE14min_exponent10E@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsInE5radixE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsInE6digitsE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsInE8digits10E@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE10has_denormE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE11round_styleE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE12max_digits10E@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE12max_exponentE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE12min_exponentE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE14max_exponent10E@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE14min_exponent10E@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE5radixE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE6digitsE@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIoE8digits10E@@GLIBCXX_3.4.17 -OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14 -OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4 -OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4 -OBJECT:4:_ZTSPKa@@CXXABI_1.3 -OBJECT:4:_ZTSPKb@@CXXABI_1.3 -OBJECT:4:_ZTSPKc@@CXXABI_1.3 -OBJECT:4:_ZTSPKd@@CXXABI_1.3 -OBJECT:4:_ZTSPKe@@CXXABI_1.3 -OBJECT:4:_ZTSPKf@@CXXABI_1.3 -OBJECT:4:_ZTSPKh@@CXXABI_1.3 -OBJECT:4:_ZTSPKi@@CXXABI_1.3 -OBJECT:4:_ZTSPKj@@CXXABI_1.3 -OBJECT:4:_ZTSPKl@@CXXABI_1.3 -OBJECT:4:_ZTSPKm@@CXXABI_1.3 -OBJECT:4:_ZTSPKs@@CXXABI_1.3 -OBJECT:4:_ZTSPKt@@CXXABI_1.3 -OBJECT:4:_ZTSPKv@@CXXABI_1.3 -OBJECT:4:_ZTSPKw@@CXXABI_1.3 -OBJECT:4:_ZTSPKx@@CXXABI_1.3 -OBJECT:4:_ZTSPKy@@CXXABI_1.3 -OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:56:_ZTISd@@GLIBCXX_3.4 -OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:56:_ZTTSd@@GLIBCXX_3.4 -OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4 -OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4 -OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4 -OBJECT:56:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4 -OBJECT:56:_ZTVSt7collateIcE@@GLIBCXX_3.4 -OBJECT:56:_ZTVSt7collateIwE@@GLIBCXX_3.4 -OBJECT:56:_ZTVSt8messagesIcE@@GLIBCXX_3.4 -OBJECT:56:_ZTVSt8messagesIwE@@GLIBCXX_3.4 -OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:64:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3 -OBJECT:64:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3 -OBJECT:64:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3 -OBJECT:64:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3 -OBJECT:64:_ZTVSt9type_info@@GLIBCXX_3.4 -OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3 -OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3 -OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3 -OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11 -OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4 -OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4 -OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4 -OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4 -OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4 -OBJECT:80:_ZTVSi@@GLIBCXX_3.4 -OBJECT:80:_ZTVSo@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt10istrstream@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt10ostrstream@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 -OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3 -OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3 -OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3 -OBJECT:88:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:88:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:88:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:88:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4 -OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4 -OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4 -OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 -OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 -OBJECT:96:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4 -OBJECT:96:_ZTVSt5ctypeIcE@@GLIBCXX_3.4 -OBJECT:96:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 -OBJECT:96:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h b/libstdc++-v3/config/os/solaris/solaris2.10/ctype_base.h index c584feea48d..c584feea48d 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h +++ b/libstdc++-v3/config/os/solaris/solaris2.10/ctype_base.h diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc b/libstdc++-v3/config/os/solaris/solaris2.10/ctype_configure_char.cc index 510796bc6c6..510796bc6c6 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc +++ b/libstdc++-v3/config/os/solaris/solaris2.10/ctype_configure_char.cc diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h b/libstdc++-v3/config/os/solaris/solaris2.10/ctype_inline.h index cde022f9896..cde022f9896 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h +++ b/libstdc++-v3/config/os/solaris/solaris2.10/ctype_inline.h diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.10/os_defines.h index f5500f58db6..2e3c96a3d59 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h +++ b/libstdc++-v3/config/os/solaris/solaris2.10/os_defines.h @@ -1,4 +1,4 @@ -// Specific definitions for Solaris 9+ -*- C++ -*- +// Specific definitions for Solaris 10+ -*- C++ -*- // Copyright (C) 2000-2014 Free Software Foundation, Inc. // @@ -35,10 +35,5 @@ #define __CORRECT_ISO_CPP_WCHAR_H_PROTO #endif -/* Solaris 9 uses the non-standard CLOCK_HIGHRES instead. */ -#ifndef CLOCK_MONOTONIC -#define CLOCK_MONOTONIC CLOCK_HIGHRES -#endif - #endif diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 16e09f097ac..9b842c70937 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -71038,8 +71038,6 @@ done ;; *-solaris*) - case "$target" in - *-solaris2.9 | *-solaris2.10) # If we're not using GNU ld, then there's no point in even trying these # tests. Check for that first. We should have already tested for gld @@ -71179,27 +71177,21 @@ $as_echo "$ac_ld_relro" >&6; } - $as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h + $as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h - $as_echo "#define HAVE_FINITE 1" >>confdefs.h + $as_echo "#define HAVE_FINITE 1" >>confdefs.h - $as_echo "#define HAVE_FPCLASS 1" >>confdefs.h + $as_echo "#define HAVE_FPCLASS 1" >>confdefs.h - # All of the dependencies for wide character support are here, so - # turn it on. - $as_echo "#define _GLIBCXX_USE_WCHAR_T 1" >>confdefs.h + # All of the dependencies for wide character support are here, so + # turn it on. + $as_echo "#define _GLIBCXX_USE_WCHAR_T 1" >>confdefs.h - ;; - esac - case "$target" in - *-*-solaris2.10) - # These two C99 functions are present only in Solaris >= 10 - $as_echo "#define HAVE_STRTOF 1" >>confdefs.h + # These two C99 functions are present only in Solaris >= 10 + $as_echo "#define HAVE_STRTOF 1" >>confdefs.h - $as_echo "#define HAVE_STRTOLD 1" >>confdefs.h + $as_echo "#define HAVE_STRTOLD 1" >>confdefs.h - ;; - esac $as_echo "#define HAVE_ISNAN 1" >>confdefs.h $as_echo "#define HAVE_ISNANF 1" >>confdefs.h @@ -78671,26 +78663,7 @@ main () } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : - case $target_os in - # gthreads support breaks symbol versioning on Solaris 9 (PR - # libstdc++/52189). - solaris2.9*) - if test x$enable_symvers = xno; then - ac_has_gthreads=yes - elif test x$enable_libstdcxx_threads = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have requested C++11 threads support, but" >&5 -$as_echo "$as_me: WARNING: You have requested C++11 threads support, but" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: this breaks symbol versioning." >&5 -$as_echo "$as_me: WARNING: this breaks symbol versioning." >&2;} - ac_has_gthreads=yes - else - ac_has_gthreads=no - fi - ;; - *) - ac_has_gthreads=yes - ;; - esac + ac_has_gthreads=yes else ac_has_gthreads=no fi diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host index c1684543ca9..dc6c977bcc4 100644 --- a/libstdc++-v3/configure.host +++ b/libstdc++-v3/configure.host @@ -301,11 +301,11 @@ case "${host_os}" in solaris2) # This too-vague configuration does not provide enough information # to select a ctype include, and thus os_include_dir is a crap shoot. - echo "Please specify the full version of Solaris, ie. solaris2.9 " 1>&2 + echo "Please specify the full version of Solaris, ie. solaris2.10 " 1>&2 exit 1 ;; - solaris2.9 | solaris2.1[0-9]) - os_include_dir="os/solaris/solaris2.9" + solaris2.1[0-9]) + os_include_dir="os/solaris/solaris2.10" ;; tpf) os_include_dir="os/tpf" @@ -356,10 +356,6 @@ case "${host}" in powerpc*-*-darwin*) port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/ppc-extra.ver" ;; - *-*-solaris2.9) - abi_baseline_pair=solaris2.9 - abi_baseline_subdir_switch=--print-multi-os-directory - ;; *-*-solaris2.1[0-9]) abi_baseline_pair=solaris2.10 abi_baseline_subdir_switch=--print-multi-os-directory diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4 index 15d876eab8c..10247f940b5 100644 --- a/libstdc++-v3/crossconfig.m4 +++ b/libstdc++-v3/crossconfig.m4 @@ -205,24 +205,16 @@ case "${host}" in GLIBCXX_CHECK_STDLIB_SUPPORT ;; *-solaris*) - case "$target" in - *-solaris2.9 | *-solaris2.10) - GLIBCXX_CHECK_LINKER_FEATURES - AC_DEFINE(HAVE_MBSTATE_T) - AC_DEFINE(HAVE_FINITE) - AC_DEFINE(HAVE_FPCLASS) - # All of the dependencies for wide character support are here, so - # turn it on. - AC_DEFINE(_GLIBCXX_USE_WCHAR_T) - ;; - esac - case "$target" in - *-*-solaris2.10) - # These two C99 functions are present only in Solaris >= 10 - AC_DEFINE(HAVE_STRTOF) - AC_DEFINE(HAVE_STRTOLD) - ;; - esac + GLIBCXX_CHECK_LINKER_FEATURES + AC_DEFINE(HAVE_MBSTATE_T) + AC_DEFINE(HAVE_FINITE) + AC_DEFINE(HAVE_FPCLASS) + # All of the dependencies for wide character support are here, so + # turn it on. + AC_DEFINE(_GLIBCXX_USE_WCHAR_T) + # These two C99 functions are present only in Solaris >= 10 + AC_DEFINE(HAVE_STRTOF) + AC_DEFINE(HAVE_STRTOLD) AC_DEFINE(HAVE_ISNAN) AC_DEFINE(HAVE_ISNANF) AC_DEFINE(HAVE_MODFF) diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml index 3246d85193e..1c099722549 100644 --- a/libstdc++-v3/doc/xml/manual/configure.xml +++ b/libstdc++-v3/doc/xml/manual/configure.xml @@ -162,8 +162,7 @@ <varlistentry><term><code>--enable-libstdcxx-threads</code></term> <listitem><para>Enable C++11 threads support. If not explicitly specified, - the configure process enables it if possible. It defaults to 'off' - on Solaris 9, where it would break symbol versioning. This + the configure process enables it if possible. This option can change the library ABI. </para> </listitem></varlistentry> diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc index f3bd1e095aa..76ebbb49a7d 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc @@ -19,10 +19,7 @@ // 27.6.1.2.2 arithmetic extractors -// XXX This test fails on Solaris 9 because of a bug in libc -// XXX sscanf for very long input. See: -// XXX http://gcc.gnu.org/ml/gcc/2002-12/msg01422.html -// { dg-do run { xfail { { *-*-solaris2.9 } || lax_strtofp } } } +// { dg-do run { xfail { lax_strtofp } } } #include <istream> #include <sstream> diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc index 2261bc6924f..e117e4957ae 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc @@ -17,10 +17,7 @@ // 27.6.1.2.2 arithmetic extractors -// XXX This test fails on Solaris 9 because of a bug in libc -// XXX sscanf for very long input. See: -// XXX http://gcc.gnu.org/ml/gcc/2002-12/msg01422.html -// { dg-do run { xfail { { *-*-solaris2.9 } || lax_strtofp } } } +// { dg-do run { xfail { lax_strtofp } } } #include <istream> #include <sstream> diff --git a/libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc b/libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc index 47cdc4144f8..403fb6d1769 100644 --- a/libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc +++ b/libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc @@ -1,7 +1,7 @@ // Before Solaris 11, iconv -f ISO-8859-1 -t ISO-8859-1 fails with // Not supported ISO-8859-1 to ISO-8859-1 // -// { dg-do run { xfail *-*-solaris2.9 *-*-solaris2.10 } } +// { dg-do run { xfail *-*-solaris2.10 } } // { dg-require-iconv "ISO-8859-1" } // Copyright (C) 2004-2014 Free Software Foundation, Inc. diff --git a/libtool-ldflags b/libtool-ldflags index e32e37bf10d..5de9e2978d4 100755 --- a/libtool-ldflags +++ b/libtool-ldflags @@ -2,7 +2,7 @@ # Script to translate LDFLAGS into a form suitable for use with libtool. -# Copyright (C) 2005 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -36,14 +36,15 @@ prev_arg= for arg do case $arg in - -f*|--*) + -f*|--*|-static-lib*|-shared-lib*|-B*) # Libtool does not ascribe any special meaning options # that begin with -f or with a double-dash. So, it will # think these options are linker options, and prefix them # with "-Wl,". Then, the compiler driver will ignore the # options. So, we prefix these options with -Xcompiler to # make clear to libtool that they are in fact compiler - # options. + # options. Similarly for e.g. -static-libstdc++, or + # -B/some/path. case $prev_arg in -Xpreprocessor|-Xcompiler|-Xlinker) # This option is already prefixed; don't prefix it again. diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog index de0db1db442..75a1f8f6076 100644 --- a/lto-plugin/ChangeLog +++ b/lto-plugin/ChangeLog @@ -1,3 +1,16 @@ +2014-04-17 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56781 + * Makefile.am (CFLAGS, LDFLAGS): Filter out -fsanitize=address. + (liblto_plugin_la_LIBADD, liblto_plugin_la_LDFLAGS, + liblto_plugin_la_DEPENDENCIES): Prefer ../libiberty/noasan/libiberty.a + over ../libiberty/pic/libiberty.a if the former exists. + * Makefile.in: Regenerated. + + PR sanitizer/56781 + * Makefile.am (LTLDFLAGS, liblto_plugin_la_LINK): New variables. + * Makefile.in: Regenerated. + 2014-04-02 Richard Biener <rguenther@suse.de> * lto-plugin.c (onload): Fail to load if -fno-use-linker-plugin diff --git a/lto-plugin/Makefile.am b/lto-plugin/Makefile.am index e3391bcc547..bbb92f98033 100644 --- a/lto-plugin/Makefile.am +++ b/lto-plugin/Makefile.am @@ -11,6 +11,8 @@ AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) AM_CFLAGS = @ac_lto_plugin_warn_cflags@ AM_LDFLAGS = @ac_lto_plugin_ldflags@ AM_LIBTOOLFLAGS = --tag=disable-static +override CFLAGS := $(filter-out -fsanitize=address,$(CFLAGS)) +override LDFLAGS := $(filter-out -fsanitize=address,$(LDFLAGS)) libexecsub_LTLIBRARIES = liblto_plugin.la gcc_build_dir = ../$(host_subdir)/gcc @@ -18,16 +20,23 @@ in_gcc_libs = $(foreach lib, $(libexecsub_LTLIBRARIES), $(gcc_build_dir)/$(lib)) # Can be removed when libiberty becomes a normal convenience library Wc=-Wc, +LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) liblto_plugin_la_SOURCES = lto-plugin.c liblto_plugin_la_LIBADD = \ - $(if $(wildcard ../libiberty/pic/libiberty.a),$(Wc)../libiberty/pic/libiberty.a,) + $(if $(wildcard ../libiberty/noasan/libiberty.a),$(Wc)../libiberty/noasan/libiberty.a, \ + $(if $(wildcard ../libiberty/pic/libiberty.a),$(Wc)../libiberty/pic/libiberty.a,)) # Note that we intentionally override the bindir supplied by ACX_LT_HOST_FLAGS liblto_plugin_la_LDFLAGS = $(AM_LDFLAGS) \ $(lt_host_flags) -module -bindir $(libexecsubdir) \ - $(if $(wildcard ../libiberty/pic/libiberty.a),,-Wc,../libiberty/libiberty.a) + $(if $(wildcard ../libiberty/noasan/libiberty.a),, \ + $(if $(wildcard ../libiberty/pic/libiberty.a),,-Wc,../libiberty/libiberty.a)) liblto_plugin_la_DEPENDENCIES = $(if $(wildcard \ - ../libiberty/pic/libiberty.a),../libiberty/pic/libiberty.a,) + ../libiberty/noasan/libiberty.a),../libiberty/noasan/libiberty.a, \ + $(if $(wildcard ../libiberty/pic/libiberty.a),../libiberty/pic/libiberty.a,)) +liblto_plugin_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(liblto_plugin_la_LDFLAGS) $(LTLDFLAGS) -o $@ all-local: $(in_gcc_libs) diff --git a/lto-plugin/Makefile.in b/lto-plugin/Makefile.in index a70de62f566..6e2fcc62a73 100644 --- a/lto-plugin/Makefile.in +++ b/lto-plugin/Makefile.in @@ -84,9 +84,6 @@ am__installdirs = "$(DESTDIR)$(libexecsubdir)" LTLIBRARIES = $(libexecsub_LTLIBRARIES) am_liblto_plugin_la_OBJECTS = lto-plugin.lo liblto_plugin_la_OBJECTS = $(am_liblto_plugin_la_OBJECTS) -liblto_plugin_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(liblto_plugin_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = am__depfiles_maybe = @@ -239,17 +236,25 @@ in_gcc_libs = $(foreach lib, $(libexecsub_LTLIBRARIES), $(gcc_build_dir)/$(lib)) # Can be removed when libiberty becomes a normal convenience library Wc = -Wc, +LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) liblto_plugin_la_SOURCES = lto-plugin.c liblto_plugin_la_LIBADD = \ - $(if $(wildcard ../libiberty/pic/libiberty.a),$(Wc)../libiberty/pic/libiberty.a,) + $(if $(wildcard ../libiberty/noasan/libiberty.a),$(Wc)../libiberty/noasan/libiberty.a, \ + $(if $(wildcard ../libiberty/pic/libiberty.a),$(Wc)../libiberty/pic/libiberty.a,)) # Note that we intentionally override the bindir supplied by ACX_LT_HOST_FLAGS liblto_plugin_la_LDFLAGS = $(AM_LDFLAGS) \ $(lt_host_flags) -module -bindir $(libexecsubdir) \ - $(if $(wildcard ../libiberty/pic/libiberty.a),,-Wc,../libiberty/libiberty.a) + $(if $(wildcard ../libiberty/noasan/libiberty.a),, \ + $(if $(wildcard ../libiberty/pic/libiberty.a),,-Wc,../libiberty/libiberty.a)) liblto_plugin_la_DEPENDENCIES = $(if $(wildcard \ - ../libiberty/pic/libiberty.a),../libiberty/pic/libiberty.a,) + ../libiberty/noasan/libiberty.a),../libiberty/noasan/libiberty.a, \ + $(if $(wildcard ../libiberty/pic/libiberty.a),../libiberty/pic/libiberty.a,)) + +liblto_plugin_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(liblto_plugin_la_LDFLAGS) $(LTLDFLAGS) -o $@ all: config.h $(MAKE) $(AM_MAKEFLAGS) all-am @@ -537,6 +542,8 @@ uninstall-am: uninstall-libexecsubLTLIBRARIES pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-libexecsubLTLIBRARIES +override CFLAGS := $(filter-out -fsanitize=address,$(CFLAGS)) +override LDFLAGS := $(filter-out -fsanitize=address,$(LDFLAGS)) all-local: $(in_gcc_libs) |