<br><br><div class="gmail_quote">Le 19 mars 2012 12:49, Richtarsky, Martin <span dir="ltr"><<a href="mailto:martin.richtarsky@sap.com">martin.richtarsky@sap.com</a>></span> a écrit :<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">







<div>
<font face="Calibri, sans-serif">
<div>Hello,</div>
<div> </div>
<div>I am currently trying to get a rather large C++ project to build on clang++. After some changes, it is looking quite good. However, on one file I encountered a segfault with LLVM/clang 3.0. Therefore, I checked out the latest version from SVN yesterday
and tested with a Debug+Asserts build. This is running in another problem on a different .cpp file which clang 3.0 can successfully compile.</div>
<div> </div>
<div> </div>
<div>In file included from /local/build/git3/sys/src/ptime/query/catalog/metadata_context.cc:1:</div>
<div>In file included from /local/build/git3/sys/src/ptime/query/catalog/metadata_context.h:6:</div>
<div>In file included from /local/build/git3/sys/src/ptime/query/catalog/ct_def.h:34:</div>
<div>In file included from /local/build/git3/sys/src/ptime/common/datatype/datatype.h:28:</div>
<div>In file included from /local/build/git3/sys/src/Expression/Dictionary/Dictionary.h:4:</div>
<div>In file included from /local/build/git3/sys/src/Expression/Dictionary/Description.h:35:</div>
<div>/local/build/git3/sys/src/ptime/common/util/link_hash.h:247:3: <font color="#FF0000">error</font>: constructor cannot be redeclared</div>
<div>                Bin();</div>
<div>                ^</div>
<div>/local/build/git3/sys/src/ptime/common/util/link_hash.h:312:46: note: in instantiation of member class 'ptime::LinkHash<ltt_adp::basic_string<char, ltt::char_traits<char>, ltt::true_type>, ptime::NameLock::POSIX_COND_AND_MUTEX *, 509, 8>::Bin' requested
here</div>
<div>                ptime_byte for_cacheline[P_CACHE_LINE_SIZE - BIN_SIZE];</div>
<div>                                                           ^</div>
<div>/local/build/git3/sys/src/ptime/common/util/link_hash.h:320:6: note: in instantiation of member class 'ptime::LinkHash<ltt_adp::basic_string<char, ltt::char_traits<char>, ltt::true_type>, ptime::NameLock::POSIX_COND_AND_MUTEX *, 509, 8>::Bin' requested
here</div>
<div>        Bin bins[FANOUT];</div>
<div>            ^</div>
<div>/local/build/git3/sys/src/ptime/common/util/namelock.h:47:52: note: in instantiation of template class 'ptime::LinkHash<ltt_adp::basic_string<char, ltt::char_traits<char>, ltt::true_type>, ptime::NameLock::POSIX_COND_AND_MUTEX *, 509, 8>' requested here</div>

<div>    LinkHash<_STL::string, POSIX_COND_AND_MUTEX *> nameLockMap;</div>
<div>                                                   ^</div>
<div>/local/build/git3/sys/src/ptime/common/util/link_hash.h:247:3: note: previous declaration is here</div>
<div>                Bin();</div>
<div>                ^</div>
<div> </div>
<div>…[some more redeclaration errors omitted]</div>
<div> </div>
<div>/local/build/git3/sys/src/ptime/common/util/link_hash.h:283:12: note: previous declaration is here</div>
<div>fatal error: too many errors emitted, stopping now [-ferror-limit=]</div>
<div><font color="#FF0000">clang: error: unable to execute command: Segmentation fault</font></div>
<div>clang: error: clang frontend command failed due to signal (use -v to see invocation)</div>
<div>clang: note: diagnostic msg: Please submit a bug report to <a href="http://llvm.org/bugs/" target="_blank">
http://llvm.org/bugs/</a> and include command line arguments and all diagnostic information.</div>
<div>clang: note: diagnostic msg: Preprocessed source(s) and associated run script(s) are located at:</div>
<div>clang: note: diagnostic msg: /local/build/git3/tmp/metadata_context-01e1fJ.ii</div>
<div>clang: note: diagnostic msg: /local/build/git3/tmp/metadata_context-01e1fJ.sh</div>
<div> </div>
<div> </div>
<div>The header file link_hash.h  has include guards. The preprocessed file contains for example</div>
<div> </div>
<div><font color="#0000FF" face="Consolas, monospace">template<font color="#000000"><b> </b></font><font color="#000000"><</font><font color="#000000">class A, class B, class C, class D</font><font color="#000000">></font></font></div>

<div><font color="#0000FF" face="Consolas, monospace">class<font color="#000000"><b> </b></font><font color="#030003">LinkHash</font></font></div>
<div> </div>
<div><font color="#0000FF" face="Consolas, monospace"> class<font color="#000000"><b> </b></font><font color="#030003">Bin</font></font></div>
<div><font face="Consolas, monospace"><b> </b>{</font></div>
<div><font face="Consolas, monospace"><b> </b><font color="#0000FF">public</font>:</font></div>
<div><font face="Consolas, monospace"><b>  </b><font color="#030003">Bin</font>();</font></div>
<div><font face="Consolas, monospace"><b>  </b>~<font color="#030003">Bin</font>();</font></div>
<div><font face="Consolas, monospace"><b>}</b></font></div>
<div><font face="Consolas, monospace"> </font></div>
<div>and later the definition</div>
<div> </div>
<div><font color="#0000FF" face="Consolas, monospace">template<font color="#000000"><b> </b></font><font color="#000000"><</font>class<font color="#000000"><b> </b></font><font color="#000000"><b>A</b></font><font color="#000000">,</font><font color="#000000"><b>
</b></font>class<font color="#000000"><b> </b></font><font color="#000000"><b>B</b></font><font color="#000000">,</font><font color="#000000"><b> </b></font>unsigned<font color="#000000"><b> </b></font><font color="#000000"><b>C</b></font><font color="#000000">,</font><font color="#000000"><b>
</b></font>unsigned<font color="#000000"><b> </b></font><font color="#000000"><b>D</b></font><font color="#000000">></font></font></div>
<div><font color="#030003" face="Consolas, monospace">LinkHash<font color="#000000"><</font><font color="#000000">A</font><font color="#000000">,</font><font color="#000000"><b> </b></font><font color="#000000"><b>B</b></font><font color="#000000">,</font><font color="#000000"><b>
</b></font><font color="#000000"><b>C</b></font><font color="#000000">,</font><font color="#000000"><b> </b></font><font color="#000000"><b>D</b></font><font color="#000000">>::</font>Bin<font color="#000000">::~</font>Bin<font color="#000000">()</font></font></div>

<div><font face="Consolas, monospace">{</font></div>
<div><font face="Consolas, monospace"><b> </b><font color="#0000FF">delete</font><b> </b>[]<b> </b><font color="#030003">dir_</font>;</font></div>
<div><font face="Consolas, monospace"><b> </b><font color="#030003">dir_</font>=<b> </b>0;</font></div>
<div><font face="Consolas, monospace">}</font></div>
<div> </div>
<div> </div>
<div>I tried to put the complete definition in the class definition, but the same error showed up.</div>
<div> </div>
<div>Any idea what changed in clang-trunk that could make this fail?</div>
<div> </div>
<div>Best regards,</div>
<div>Martin</div>
<div> </div>
</font>
</div>

<br></blockquote><div><br>Not at all, however if you could attach the smallest file possible that triggers this issue to that thread of discussion, it would make investigation that much easier for developers.<br><br>Since it seems like a bug, you will probably get redirected to submit a bug report, and then such a file will be needed anyway.<br>
<br>-- Matthieu<br></div></div>