[ET Trac] [Einstein Toolkit] #1276: Intel 2013.1.117 mis-compiles NewRad
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Sun May 5 23:16:39 CDT 2013
#1276: Intel 2013.1.117 mis-compiles NewRad
------------------------------------+---------------------------------------
Reporter: rhaas | Owner:
Type: defect | Status: review
Priority: critical | Milestone: ET_2013_05
Component: EinsteinToolkit thorn | Version: development version
Resolution: | Keywords: NewRad
------------------------------------+---------------------------------------
Comment (by knarf):
The first part of the patch is incorrect, but the second worked. This left
'restrict' for C intact, while it does remove it for C++. The file in
question here was C++, so I didn't catch this, and the (most/all?) tests
passed for me. For C++, and with this version of the compiler, autoconf
sets HAVE_CCTK_CXX_RESTRICT to 1 and CCTK_CXX_RESTRICT to __restrict__.
With the old patch, 'restrict' is then defined empty for problematic
versions of the intel compiler (instead of __restrict__).
However, you are right: this could be made even better. Attached is a new
version of the patch. This one first contains a conditional on the version
of the compiler for all CCODE. Then, for C and CXX separately, it skips
the autoconf-provided values if the compiler was found to be bad, and
instead HAVE_CCTK_CXX_RESTRICT remains undefined and CCTK_CXX_RESTRICT is
set empty, which later defines 'restrict' to empty too (similarly for C).
Because someone might actually want to overwrite this,
CCTK_INTEL_COMPILER_DONT_DISABLE_RESTRICT is checked, and if set, doesn't
disable restrict even for bad compilers.
Also, now all Intel compilers with build dates between 20121010 and
20130313 are flagged 'bad'.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1276#comment:25>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list