From: Tor Didriksen Date: March 30 2011 2:46pm Subject: bzr commit into mysql-trunk branch (tor.didriksen:3349) List-Archive: http://lists.mysql.com/commits/134280 Message-Id: <20110330144658.5B81037EE@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1252987436146215631==" --===============1252987436146215631== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/didrik/repo/trunk-implicit-template/ based on revid:dmitry.lenev@stripped 3349 Tor Didriksen 2011-03-30 Bug 11929733 - 59607: REMOVE THE FNO-IMPLICIT-TEMPLATES COMPILATION FLAG modified: cmake/ssl.cmake config.h.cmake configure.cmake sql/binlog.cc sql/field.cc sql/filesort.cc sql/item.cc sql/item_buff.cc sql/keycaches.cc sql/mysqld.cc sql/opt_range.cc sql/rpl_slave.cc sql/sql_acl.cc sql/sql_class.cc sql/sql_insert.cc sql/sql_select.cc sql/sql_show.cc sql/sys_vars.h sql/table.cc unittest/gunit/CMakeLists.txt === modified file 'cmake/ssl.cmake' --- a/cmake/ssl.cmake 2010-07-19 14:17:07 +0000 +++ b/cmake/ssl.cmake 2011-03-30 14:46:51 +0000 @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Sun Microsystems, Inc +# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,13 +27,7 @@ MACRO (MYSQL_USE_BUNDLED_SSL) SET(SSL_INTERNAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL) SET(SSL_DEFINES "-DHAVE_YASSL -DYASSL_PURE_C -DYASSL_PREFIX -DHAVE_OPENSSL -DYASSL_THREAD_SAFE") CHANGE_SSL_SETTINGS("bundled") - #Remove -fno-implicit-templates - #(yassl sources cannot be compiled with it) SET(SAVE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - IF(CMAKE_CXX_FLAGS) - STRING(REPLACE "-fno-implicit-templates" "" CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS}) - ENDIF() ADD_SUBDIRECTORY(extra/yassl) ADD_SUBDIRECTORY(extra/yassl/taocrypt) SET(CMAKE_CXX_FLAGS ${SAVE_CXX_FLAGS}) === modified file 'config.h.cmake' --- a/config.h.cmake 2011-02-02 18:31:39 +0000 +++ b/config.h.cmake 2011-03-30 14:46:51 +0000 @@ -40,7 +40,6 @@ #cmakedefine HAVE_FNMATCH_H 1 #cmakedefine HAVE_FPU_CONTROL_H 1 #cmakedefine HAVE_GRP_H 1 -#cmakedefine HAVE_EXPLICIT_TEMPLATE_INSTANTIATION 1 #cmakedefine HAVE_IA64INTRIN_H 1 #cmakedefine HAVE_IEEEFP_H 1 #cmakedefine HAVE_INTTYPES_H 1 === modified file 'configure.cmake' --- a/configure.cmake 2011-02-02 18:31:39 +0000 +++ b/configure.cmake 2011-03-30 14:46:51 +0000 @@ -67,15 +67,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX) # MySQL "canonical" GCC flags. At least -fno-rtti flag affects # ABI and cannot be simply removed. SET(CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -fno-implicit-templates -fno-exceptions -fno-rtti") - IF(CMAKE_CXX_FLAGS) - STRING(REGEX MATCH "fno-implicit-templates" NO_IMPLICIT_TEMPLATES - ${CMAKE_CXX_FLAGS}) - IF (NO_IMPLICIT_TEMPLATES) - SET(HAVE_EXPLICIT_TEMPLATE_INSTANTIATION TRUE) - ENDIF() - ENDIF() - + "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti") IF (CMAKE_EXE_LINKER_FLAGS MATCHES " -static " OR CMAKE_EXE_LINKER_FLAGS MATCHES " -static$") SET(HAVE_DLOPEN FALSE CACHE "Disable dlopen due to -static flag" FORCE) === modified file 'sql/binlog.cc' --- a/sql/binlog.cc 2011-03-14 17:55:26 +0000 +++ b/sql/binlog.cc 2011-03-30 14:46:51 +0000 @@ -5379,24 +5379,6 @@ THD::binlog_prepare_pending_rows_event(T DBUG_RETURN(pending); /* This is the current pending event */ } -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -/* - Instantiate the versions we need, we have -fno-implicit-template as - compiling option. -*/ -template Rows_log_event* -THD::binlog_prepare_pending_rows_event(TABLE*, uint32, size_t, bool, - Write_rows_log_event*); - -template Rows_log_event* -THD::binlog_prepare_pending_rows_event(TABLE*, uint32, size_t, bool, - Delete_rows_log_event *); - -template Rows_log_event* -THD::binlog_prepare_pending_rows_event(TABLE*, uint32, size_t, bool, - Update_rows_log_event *); -#endif - /* Declare in unnamed namespace. */ CPP_UNNAMED_NS_START === modified file 'sql/field.cc' --- a/sql/field.cc 2011-03-22 11:44:40 +0000 +++ b/sql/field.cc 2011-03-30 14:46:51 +0000 @@ -41,14 +41,9 @@ #define MAX_EXPONENT 1024 /***************************************************************************** - Instansiate templates and static variables + Instantiate static variables *****************************************************************************/ -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class List; -template class List_iterator; -#endif - uchar Field_null::null[1]={1}; const char field_separator=','; === modified file 'sql/filesort.cc' --- a/sql/filesort.cc 2011-03-17 17:39:31 +0000 +++ b/sql/filesort.cc 2011-03-30 14:46:51 +0000 @@ -37,10 +37,6 @@ #include "sql_select.h" #include "debug_sync.h" -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class Bounded_queue; -#endif - /* functions defined in this file */ static void make_char_array(FILESORT_INFO *info, uint fields, uint length); === modified file 'sql/item.cc' --- a/sql/item.cc 2011-03-30 07:42:03 +0000 +++ b/sql/item.cc 2011-03-30 14:46:51 +0000 @@ -8501,14 +8501,3 @@ void view_error_processor(THD *thd, void ((TABLE_LIST *)data)->hide_view_error(thd); } -/***************************************************************************** -** Instantiate templates -*****************************************************************************/ - -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class List; -template class List_iterator; -template class List_iterator_fast; -template class List_iterator_fast; -template class List; -#endif === modified file 'sql/item_buff.cc' --- a/sql/item_buff.cc 2010-08-16 06:58:42 +0000 +++ b/sql/item_buff.cc 2011-03-30 14:46:51 +0000 @@ -175,13 +175,3 @@ bool Cached_item_decimal::cmp() } return FALSE; } - - -/***************************************************************************** -** Instansiate templates -*****************************************************************************/ - -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class List; -template class List_iterator; -#endif === modified file 'sql/keycaches.cc' --- a/sql/keycaches.cc 2010-07-08 21:42:23 +0000 +++ b/sql/keycaches.cc 2011-03-30 14:46:51 +0000 @@ -157,7 +157,3 @@ bool process_key_caches(process_key_cach return 0; } -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class I_List_iterator; -#endif - === modified file 'sql/mysqld.cc' --- a/sql/mysqld.cc 2011-03-29 08:01:07 +0000 +++ b/sql/mysqld.cc 2011-03-30 14:46:51 +0000 @@ -8130,20 +8130,6 @@ void refresh_status(THD *thd) This section should go away soon *****************************************************************************/ -/***************************************************************************** - Instantiate templates -*****************************************************************************/ - -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -/* Used templates */ -template class I_List; -template class I_List_iterator; -template class I_List; -template class I_List; -template class I_List; -template class I_List_iterator; -#endif - #ifdef HAVE_PSI_INTERFACE #ifdef HAVE_MMAP PSI_mutex_key key_PAGE_lock, key_LOCK_sync, key_LOCK_active, key_LOCK_pool; === modified file 'sql/opt_range.cc' --- a/sql/opt_range.cc 2011-03-22 11:44:40 +0000 +++ b/sql/opt_range.cc 2011-03-30 14:46:51 +0000 @@ -11944,12 +11944,3 @@ void QUICK_GROUP_MIN_MAX_SELECT::dbug_du #endif /* !DBUG_OFF */ - -/***************************************************************************** -** Instantiate templates -*****************************************************************************/ - -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class List; -template class List_iterator; -#endif === modified file 'sql/rpl_slave.cc' --- a/sql/rpl_slave.cc 2011-03-29 14:56:01 +0000 +++ b/sql/rpl_slave.cc 2011-03-30 14:46:51 +0000 @@ -5486,11 +5486,6 @@ bool rpl_master_erroneous_autoinc(THD *t return FALSE; } -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class I_List_iterator; -template class I_List_iterator; -#endif - /** a copy of active_mi->rli->slave_skip_counter, for showing in SHOW VARIABLES, INFORMATION_SCHEMA.GLOBAL_VARIABLES and @@sql_slave_skip_counter without === modified file 'sql/sql_acl.cc' --- a/sql/sql_acl.cc 2011-03-23 22:51:19 +0000 +++ b/sql/sql_acl.cc 2011-03-30 14:46:51 +0000 @@ -7191,17 +7191,6 @@ bool sp_grant_privileges(THD *thd, const } -/***************************************************************************** - Instantiate used templates -*****************************************************************************/ - -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class List_iterator; -template class List_iterator; -template class List; -template class List; -#endif - /** Validate if a user can proxy as another user === modified file 'sql/sql_class.cc' --- a/sql/sql_class.cc 2011-03-24 08:00:03 +0000 +++ b/sql/sql_class.cc 2011-03-30 14:46:51 +0000 @@ -67,23 +67,6 @@ char empty_c_string[1]= {0}; /* used const char * const THD::DEFAULT_WHERE= "field list"; - -/***************************************************************************** -** Instansiate templates -*****************************************************************************/ - -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -/* Used templates */ -template class List; -template class List_iterator; -template class List; -template class List_iterator; -template class List; -template class List_iterator; -template class List; -template class List_iterator; -#endif - /**************************************************************************** ** User variables ****************************************************************************/ === modified file 'sql/sql_insert.cc' --- a/sql/sql_insert.cc 2011-02-15 17:14:15 +0000 +++ b/sql/sql_insert.cc 2011-03-30 14:46:51 +0000 @@ -4138,17 +4138,3 @@ void select_create::abort_result_set() } DBUG_VOID_RETURN; } - - -/***************************************************************************** - Instansiate templates -*****************************************************************************/ - -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class List_iterator_fast; -#ifndef EMBEDDED_LIBRARY -template class I_List; -template class I_List_iterator; -template class I_List; -#endif /* EMBEDDED_LIBRARY */ -#endif /* HAVE_EXPLICIT_TEMPLATE_INSTANTIATION */ === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2011-03-29 07:20:17 +0000 +++ b/sql/sql_select.cc 2011-03-30 14:46:51 +0000 @@ -12009,13 +12009,6 @@ public: COND_CMP(Item *a,Item_func *b) :and_level(a),cmp_func(b) {} }; -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class I_List; -template class I_List_iterator; -template class List; -template class List_iterator; -#endif - /** Find the multiple equality predicate containing a field. === modified file 'sql/sql_show.cc' --- a/sql/sql_show.cc 2011-03-28 08:10:39 +0000 +++ b/sql/sql_show.cc 2011-03-30 14:46:51 +0000 @@ -1751,10 +1751,6 @@ public: CSET_STRING query_string; }; -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class I_List; -#endif - static const char *thread_state_info(THD *tmp) { #ifndef EMBEDDED_LIBRARY @@ -7522,11 +7518,6 @@ ST_SCHEMA_TABLE schema_tables[]= }; -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class List_iterator_fast; -template class List; -#endif - int initialize_schema_table(st_plugin_int *plugin) { ST_SCHEMA_TABLE *schema_table; === modified file 'sql/sys_vars.h' --- a/sql/sys_vars.h 2011-03-09 20:54:55 +0000 +++ b/sql/sys_vars.h 2011-03-30 14:46:51 +0000 @@ -1725,16 +1725,3 @@ public: virtual bool global_update(THD *thd, set_var *var); }; -/**************************************************************************** - Used templates -****************************************************************************/ - -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class List; -template class List_iterator_fast; -template class Sys_var_unsigned; -template class Sys_var_unsigned; -template class Sys_var_unsigned; -template class Sys_var_unsigned; -#endif - === modified file 'sql/table.cc' --- a/sql/table.cc 2011-03-28 08:10:39 +0000 +++ b/sql/table.cc 2011-03-30 14:46:51 +0000 @@ -5488,13 +5488,3 @@ bool is_simple_order(ORDER *order) } return TRUE; } - - -/***************************************************************************** -** Instansiate templates -*****************************************************************************/ - -#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION -template class List; -template class List_iterator; -#endif === modified file 'unittest/gunit/CMakeLists.txt' --- a/unittest/gunit/CMakeLists.txt 2011-02-17 14:39:47 +0000 +++ b/unittest/gunit/CMakeLists.txt 2011-03-30 14:46:51 +0000 @@ -25,10 +25,6 @@ ELSE() ENDIF() IF(CMAKE_COMPILER_IS_GNUCXX) - # Remove -fno-implicit-templates, gunit sources cannot be compiled with it. - STRING(REPLACE "-fno-implicit-templates" "" CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS}) - # MySQL is often compiled/linked with gcc rather than g++ # (to avoid dependencies on libstdc++.so) # This does not work for googletest binaries. --===============1252987436146215631== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/tor.didriksen@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: tor.didriksen@stripped\ # mbn0890g8zwzdeg2 # target_branch: file:///export/home/didrik/repo/trunk-implicit-\ # template/ # testament_sha1: e0d5c2400a4f8f9dda6e179f75ae8df704602b6b # timestamp: 2011-03-30 16:46:58 +0200 # base_revision_id: dmitry.lenev@stripped\ # 6dcte6tltmq1n0l6 # # Begin bundle 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 mUsqKSbUZ6zWYHcFJS84Ht8f/F3JFOFCQaPxEXQ= --===============1252987436146215631==--