[Rcpp-commits] r2936 - in pkg/Rcpp: . inst inst/include src

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Sat Apr 2 20:42:02 CEST 2011


Author: edd
Date: 2011-04-02 20:42:00 +0200 (Sat, 02 Apr 2011)
New Revision: 2936

Modified:
   pkg/Rcpp/ChangeLog
   pkg/Rcpp/inst/NEWS
   pkg/Rcpp/inst/include/RcppCommon.h
   pkg/Rcpp/src/exceptions.cpp
Log:
fix g++ 4.6 issue by including exception_defines.h only if g++ is 4.5 or earlier
updated ChangeLog and NEWS
edited NEWS a little to match previous style (as opposed to ChangeLog mode)


Modified: pkg/Rcpp/ChangeLog
===================================================================
--- pkg/Rcpp/ChangeLog	2011-04-02 18:11:49 UTC (rev 2935)
+++ pkg/Rcpp/ChangeLog	2011-04-02 18:42:00 UTC (rev 2936)
@@ -1,5 +1,8 @@
 2011-04-02  Dirk Eddelbuettel  <edd at debian.org>
 
+	* inst/include/RcppCommon.h: Define new variable for g++ < 4.6.0
+	* src/exceptions.cpp: Include <exception_defines.h> up to g++-4.5 only
+
 	* inst/unitTests/testRcppModule/src/stdVector.cpp: Use #ifdef not #if
 
 	* inst/include/Rcpp/module/Module_generated_ctor_signature.h: Add a

Modified: pkg/Rcpp/inst/NEWS
===================================================================
--- pkg/Rcpp/inst/NEWS	2011-04-02 18:11:49 UTC (rev 2935)
+++ pkg/Rcpp/inst/NEWS	2011-04-02 18:42:00 UTC (rev 2936)
@@ -1,13 +1,16 @@
 0.9.3   2011-xx-yy
 
-    o   inst/doc/Makefile now respects $R_HOME environment variable
+    o   Exceptions code include exception_defines.h only when g++ is 4.5 or
+        younger as the file no longer exists with g++-4.6
+    
+    o   The inst/doc/Makefile now respects the $R_HOME environment variable
 
-    o   inst/include/Rcpp/grow.h: C++ conformance issue found by clang/llvm
-        addressed by re-ordering declarations as unqualified names must be
-        declared before they are used, even when used within templates
+    o   C++ conformance issue found by clang/llvm addressed by re-ordering
+        declarations in grow.h as unqualified names must be declared before
+        they are used, even when used within templates
 
-    o   inst/include/RcppCommon.h: The 'long long' typedef now depends on
-        C++0x being enabled as this was not a feature in C++98
+    o   The 'long long' typedef now depends on C++0x being enabled as this
+        was not a feature in C++98; this suppresses a new g++-4.5 warning
 
 0.9.2   2011-02-23
 

Modified: pkg/Rcpp/inst/include/RcppCommon.h
===================================================================
--- pkg/Rcpp/inst/include/RcppCommon.h	2011-04-02 18:11:49 UTC (rev 2935)
+++ pkg/Rcpp/inst/include/RcppCommon.h	2011-04-02 18:42:00 UTC (rev 2936)
@@ -86,6 +86,10 @@
     #if GCC_VERSION >= 40500
         #define IS_GCC_450_OR_LATER
     #endif
+    // g++ 4.6 no longer has exception_defines.h so need a flag for that
+    #if GCC_VERSION < 40600
+        #define IS_EARLIER_THAN_GCC_460
+    #endif
 #endif
 
 #ifdef __INTEL_COMPILER

Modified: pkg/Rcpp/src/exceptions.cpp
===================================================================
--- pkg/Rcpp/src/exceptions.cpp	2011-04-02 18:11:49 UTC (rev 2935)
+++ pkg/Rcpp/src/exceptions.cpp	2011-04-02 18:42:00 UTC (rev 2936)
@@ -66,7 +66,9 @@
    compilers */
 #ifdef RCPP_HAS_DEMANGLING
 #include <typeinfo>
+#ifdef IS_EARLIER_THAN_GCC_460
 #include <exception_defines.h>
+#endif
 #include <cxxabi.h>
 
 std::string demangle( const std::string& name ){



More information about the Rcpp-commits mailing list