<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri, sans-serif" size="2">
<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/">
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 face="Consolas, monospace" size="2" color="#0000FF">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 face="Consolas, monospace" size="2" color="#0000FF">class<font color="#000000"><b> </b></font><font color="#030003">LinkHash</font></font></div>
<div> </div>
<div><font face="Consolas, monospace" size="2" color="#0000FF"> class<font color="#000000"><b> </b></font><font color="#030003">Bin</font></font></div>
<div><font face="Consolas, monospace" size="2"><b> </b>{</font></div>
<div><font face="Consolas, monospace" size="2"><b> </b><font color="#0000FF">public</font>:</font></div>
<div><font face="Consolas, monospace" size="2"><b>  </b><font color="#030003">Bin</font>();</font></div>
<div><font face="Consolas, monospace" size="2"><b>  </b>~<font color="#030003">Bin</font>();</font></div>
<div><font face="Consolas, monospace" size="2"><b>}</b></font></div>
<div><font face="Consolas, monospace" size="2"> </font></div>
<div>and later the definition</div>
<div> </div>
<div><font face="Consolas, monospace" size="2" color="#0000FF">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 face="Consolas, monospace" size="2" color="#030003">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" size="2">{</font></div>
<div><font face="Consolas, monospace" size="2"><b> </b><font color="#0000FF">delete</font><b> </b>[]<b> </b><font color="#030003">dir_</font>;</font></div>
<div><font face="Consolas, monospace" size="2"><b> </b><font color="#030003">dir_</font>=<b> </b>0;</font></div>
<div><font face="Consolas, monospace" size="2">}</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>
</body>
</html>