Workaround for ICC 14 bug
authorRoland Schulz <roland@utk.edu>
Sun, 13 Jul 2014 00:34:41 +0000 (20:34 -0400)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Fri, 25 Jul 2014 21:35:40 +0000 (23:35 +0200)
ICC name-mangling is incorrect for static variable in static
member in anonymous namespace.

Fixes #1558

Change-Id: Ie861224bcc61df2f26025d1dd106bcab827308bb

src/gromacs/analysisdata/tests/analysisdata.cpp
src/gromacs/analysisdata/tests/arraydata.cpp
src/gromacs/analysisdata/tests/average.cpp
src/gromacs/analysisdata/tests/datatest.h
src/gromacs/analysisdata/tests/histogram.cpp
src/gromacs/analysisdata/tests/lifetime.cpp

index a957085010fc0e8332188b484f92a9ecab2147d6..6a7a5bc48316238186b23a986f96bd227e74f42c 100644 (file)
@@ -150,8 +150,13 @@ class SimpleInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static SimpleInputData singleton;
             return singleton.data_;
+#else
+            static SimpleInputData singleton_analysisdata;
+            return singleton_analysisdata.data_;
+#endif
         }
 
         SimpleInputData() : data_(1, false)
@@ -172,8 +177,13 @@ class DataSetsInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static DataSetsInputData singleton;
             return singleton.data_;
+#else
+            static DataSetsInputData singleton_analysisdata;
+            return singleton_analysisdata.data_;
+#endif
         }
 
         DataSetsInputData() : data_(2, false)
@@ -202,8 +212,13 @@ class MultipointInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static MultipointInputData singleton;
             return singleton.data_;
+#else
+            static MultipointInputData singleton_analysisdata;
+            return singleton_analysisdata.data_;
+#endif
         }
 
         MultipointInputData() : data_(1, true)
@@ -234,8 +249,13 @@ class MultipointDataSetsInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static MultipointDataSetsInputData singleton;
             return singleton.data_;
+#else
+            static MultipointDataSetsInputData singleton_analysisdata;
+            return singleton_analysisdata.data_;
+#endif
         }
 
         MultipointDataSetsInputData() : data_(2, true)
index 37de2b508ba120d3831494a26e22c3f42f37f600..08db023952839fb8f43b094b8942f148df2cbb94 100644 (file)
@@ -69,8 +69,13 @@ class SimpleInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static SimpleInputData singleton;
             return singleton.data_;
+#else
+            static SimpleInputData singleton_arraydata;
+            return singleton_arraydata.data_;
+#endif
         }
 
         SimpleInputData() : data_(1, false)
index b3b80b9c24d6b318c2cde0018d1967c687917585..f54d6badf810b10238e61f789cf48e1008d0015f 100644 (file)
@@ -65,8 +65,13 @@ class SimpleInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static SimpleInputData singleton;
             return singleton.data_;
+#else
+            static SimpleInputData singleton_average;
+            return singleton_average.data_;
+#endif
         }
 
         SimpleInputData() : data_(1, false)
@@ -87,8 +92,13 @@ class MultipointInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static MultipointInputData singleton;
             return singleton.data_;
+#else
+            static MultipointInputData singleton_average;
+            return singleton_average.data_;
+#endif
         }
 
         MultipointInputData() : data_(1, true)
@@ -116,8 +126,13 @@ class MultiDataSetInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static MultiDataSetInputData singleton;
             return singleton.data_;
+#else
+            static MultiDataSetInputData singleton_average;
+            return singleton_average.data_;
+#endif
         }
 
         MultiDataSetInputData() : data_(2, true)
index bcfa7ad72bf20f6bc95987a18d5bf843d382072e..5b9c210a581826b575a7d3f270f3637dd020495e 100644 (file)
 
 #include "testutils/refdata.h"
 
+// currently the bug manifests itself only in AbstractAnalysisData testing
+#if (defined __ICL && __ICL >= 1400) || (defined __ICC & __ICC >= 1400)
+#define INTEL_STATIC_ANON_NAMESPACE_BUG //see #1558 for details
+#endif
+
 namespace gmx
 {
 
index f68a8b0213902d017e7bdfe2f30f92eb98243f09..b3a2634fb52c08fb2f65e9569d62e1416638e0bd 100644 (file)
@@ -157,8 +157,13 @@ class SimpleInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static SimpleInputData singleton;
             return singleton.data_;
+#else
+            static SimpleInputData singleton_histogram;
+            return singleton_histogram.data_;
+#endif
         }
 
         SimpleInputData() : data_(1, true)
@@ -238,8 +243,13 @@ class WeightedSimpleInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static WeightedSimpleInputData singleton;
             return singleton.data_;
+#else
+            static WeightedSimpleInputData singleton_histogram;
+            return singleton_histogram.data_;
+#endif
         }
 
         WeightedSimpleInputData() : data_(1, true)
@@ -270,8 +280,13 @@ class WeightedDataSetInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static WeightedDataSetInputData singleton;
             return singleton.data_;
+#else
+            static WeightedDataSetInputData singleton_histogram;
+            return singleton_histogram.data_;
+#endif
         }
 
         WeightedDataSetInputData() : data_(2, true)
@@ -437,8 +452,13 @@ class AverageInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static AverageInputData singleton;
             return singleton.data_;
+#else
+            static AverageInputData singleton_histogram;
+            return singleton_histogram.data_;
+#endif
         }
 
         AverageInputData() : data_(1, false)
index 16a9e886a971ca3108a84fbc8869db1ae30e8716..1ea1551fd51d297bd8d23ef0a2ed112198349283 100644 (file)
@@ -64,8 +64,13 @@ class SimpleInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static SimpleInputData singleton;
             return singleton.data_;
+#else
+            static SimpleInputData singleton_lifetime;
+            return singleton_lifetime.data_;
+#endif
         }
 
         SimpleInputData() : data_(1, false)
@@ -86,8 +91,13 @@ class MultiDataSetInputData
     public:
         static const AnalysisDataTestInput &get()
         {
+#ifndef INTEL_STATIC_ANON_NAMESPACE_BUG
             static MultiDataSetInputData singleton;
             return singleton.data_;
+#else
+            static MultiDataSetInputData singleton_lifetime;
+            return singleton_lifetime.data_;
+#endif
         }
 
         MultiDataSetInputData() : data_(2, false)