<br>On Thursday, May 7, 2015, Cownie, James H <<a href="mailto:james.h.cownie@intel.com">james.h.cownie@intel.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> Am I mistaken in that some .c files must actually be compiled as c++?<br>
Yes, I think you are mistaken, or, at least, it is not the intention that C files should be compiled as C++.<br>
I think the issue here is related to the forward definition of ident_t in kmp_lock.h<br>
<br>
// Forward declaration of ident and ident_t<br>
<br>
struct ident;<br>
typedef struct ident ident_t;<br>
<br>
and then the real definition in kmp.h.<br>
<br>
So, if you want to be exceptionally language-lawyerly you could argue that the typedef redefinition makes this into C++ code, but my view is that it's just buggy C code that happens to be legal in C++.</blockquote><div><br></div><div>No, typedef redefinition is still C code, but is only allowed as of C11, like the error message says.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The correct fix here is therefore to work out a better way of breaking the circular dependency that this is trying to resolve, not to compile all the C code as C++.<br>
<br>
-- Jim<br>
<br>
James Cownie <<a href="javascript:;" onclick="_e(event, 'cvml', 'james.h.cownie@intel.com')">james.h.cownie@intel.com</a>><br>
SSG/DPD/TCAR (Technical Computing, Analyzers and Runtimes)<br>
Tel: +44 117 9071438<br>
<br>
-----Original Message-----<br>
From: <a href="javascript:;" onclick="_e(event, 'cvml', 'openmp-dev-bounces@cs.uiuc.edu')">openmp-dev-bounces@cs.uiuc.edu</a> [mailto:<a href="javascript:;" onclick="_e(event, 'cvml', 'openmp-dev-bounces@cs.uiuc.edu')">openmp-dev-bounces@cs.uiuc.edu</a>] On Behalf Of C Bergström<br>
Sent: Thursday, May 7, 2015 7:35 AM<br>
Cc: <a href="javascript:;" onclick="_e(event, 'cvml', 'openmp-dev@dcs-maillist2.engr.illinois.edu')">openmp-dev@dcs-maillist2.engr.illinois.edu</a>; cfe-dev; LLVM Developers Mailing List<br>
Subject: [Openmp-dev] OpenMP - C source files which are really c++<br>
<br>
Am I mistaken in that some .c files must actually be compiled as c++?<br>
<br>
In file included from openmp-llvm/runtime/src/kmp_ftn_cdecl.c:16:<br>
openmp-llvm/runtime/src/kmp.h:210:3: warning: redefinition of typedef<br>
'ident_t' is a C11 feature [-Wtypedef-redefinition]<br>
} ident_t;<br>
  ^<br>
----------<br>
I previously sent a patch that fixes this and it was completely rejected.<br>
<br>
IMHO - This must be fixed<br>
1) C files should be renamed .cxx, .cpp or something correct<br>
or<br>
2) Make .c files be treated as c++ lang in cmake<br>
or<br>
3) Stop using c++(11) inside c files<br>
<br>
Please let me know if I'm mistaken. I've only looked at the warnings<br>
and now recent errors as a result.<br>
_______________________________________________<br>
Openmp-dev mailing list<br>
<a href="javascript:;" onclick="_e(event, 'cvml', 'Openmp-dev@dcs-maillist2.engr.illinois.edu')">Openmp-dev@dcs-maillist2.engr.illinois.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/openmp-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/openmp-dev</a><br>
---------------------------------------------------------------------<br>
Intel Corporation (UK) Limited<br>
Registered No. 1134945 (England)<br>
Registered Office: Pipers Way, Swindon SN3 1RJ<br>
VAT No: 860 2173 47<br>
<br>
This e-mail and any attachments may contain confidential material for<br>
the sole use of the intended recipient(s). Any review or distribution<br>
by others is strictly prohibited. If you are not the intended<br>
recipient, please contact the sender and delete all copies.<br>
<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="javascript:;" onclick="_e(event, 'cvml', 'LLVMdev@cs.uiuc.edu')">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote>