[ET Trac] [Einstein Toolkit] #484: CCTK_CHECK_C_INLINE can define away the inline keyword
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Sun Aug 14 13:31:41 CDT 2011
#484: CCTK_CHECK_C_INLINE can define away the inline keyword
---------------------+------------------------------------------------------
Reporter: rhaas | Owner:
Type: defect | Status: new
Priority: minor | Milestone:
Component: Cactus | Version:
Resolution: | Keywords:
---------------------+------------------------------------------------------
Comment (by rhaas):
Thank you.
Hmm, "lets me compile" was not really very clear, yes. Sorry.
The previous version compiled with the PGI compiler. It #defined "inline"
to the empty string. So the only inlining happening was due to the
optimizer deciding that a given is a good function to inline. All the
inline hints were lost (since, as you correctly pointed out, inlining is
always the choice of the compiler, it does not have to do anything at all
when it sees an "inline" statement). I would have to run speed tests to
check if PGI's compiler is smart enough to inline all the functions we
want to be inlined even if all "inline" keywords were removed.
Using the previous version, gcc 4.6, and no further options I could not
compile (actually link) because of the strsep_3c errors (nor can i now I
think). I can and could compile/link using gcc 4.6 by either switching the
CCTK_C_INLINE check back to the old AC_INLINE check or by using
-fgnu89-inline. So right now I can compile and am reasonably happy (on
Kraken I will likely use AC_INLINE to keep the "inline" hints present
until/if-not I find a way to change PGI's inline semantics to gnu89).
Compilation seems to fail (or be possible to fail) since the gnu89 and c99
semantics for "inline" differ in how visible "inline" functions are. The
issue with gcc 4.6 was that its compiler specific string2.h file checks
for the inline flavor used by looking at __GNUC_STDC_INLINE__. If we
redefine inline then this check fails (since __GNUC_STDC_INLINE__ is true
but inline actually behaves like gnu89) which causes string2.h to make the
inline functions visible to the linker which in turn causes link time
errors.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/484#comment:8>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list