From: Roland Schulz Date: Sun, 13 Jul 2014 00:34:41 +0000 (-0400) Subject: Workaround for ICC 14 bug X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=b0e60e91add6d27dd0e56b1864f95369f66e7378;p=alexxy%2Fgromacs.git Workaround for ICC 14 bug ICC name-mangling is incorrect for static variable in static member in anonymous namespace. Fixes #1558 Change-Id: Ie861224bcc61df2f26025d1dd106bcab827308bb --- diff --git a/src/gromacs/analysisdata/tests/analysisdata.cpp b/src/gromacs/analysisdata/tests/analysisdata.cpp index a957085010..6a7a5bc483 100644 --- a/src/gromacs/analysisdata/tests/analysisdata.cpp +++ b/src/gromacs/analysisdata/tests/analysisdata.cpp @@ -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) diff --git a/src/gromacs/analysisdata/tests/arraydata.cpp b/src/gromacs/analysisdata/tests/arraydata.cpp index 37de2b508b..08db023952 100644 --- a/src/gromacs/analysisdata/tests/arraydata.cpp +++ b/src/gromacs/analysisdata/tests/arraydata.cpp @@ -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) diff --git a/src/gromacs/analysisdata/tests/average.cpp b/src/gromacs/analysisdata/tests/average.cpp index b3b80b9c24..f54d6badf8 100644 --- a/src/gromacs/analysisdata/tests/average.cpp +++ b/src/gromacs/analysisdata/tests/average.cpp @@ -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) diff --git a/src/gromacs/analysisdata/tests/datatest.h b/src/gromacs/analysisdata/tests/datatest.h index bcfa7ad72b..5b9c210a58 100644 --- a/src/gromacs/analysisdata/tests/datatest.h +++ b/src/gromacs/analysisdata/tests/datatest.h @@ -54,6 +54,11 @@ #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 { diff --git a/src/gromacs/analysisdata/tests/histogram.cpp b/src/gromacs/analysisdata/tests/histogram.cpp index f68a8b0213..b3a2634fb5 100644 --- a/src/gromacs/analysisdata/tests/histogram.cpp +++ b/src/gromacs/analysisdata/tests/histogram.cpp @@ -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) diff --git a/src/gromacs/analysisdata/tests/lifetime.cpp b/src/gromacs/analysisdata/tests/lifetime.cpp index 16a9e886a9..1ea1551fd5 100644 --- a/src/gromacs/analysisdata/tests/lifetime.cpp +++ b/src/gromacs/analysisdata/tests/lifetime.cpp @@ -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)