<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Looks like this is related to one of my
      commits. Will check tomorrow.<br>
      <br>
      <br>
      18.01.2017 19:05, Gaetano Checinski via cfe-dev пишет:<br>
    </div>
    <blockquote
cite="mid:CAN0NuG5dmvkT3T_FtXmSU5C-bAeaSTyu9HSjjGEKRXVSAoE4WQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><span style="font-size:12.8px">The following test fails on
            my machine:</span></div>
        <div><span style="font-size:12.8px"><br>
          </span></div>
        <div>
          <div>> // svn: E155007</div>
          <div>> // unittests/AST/ASTImporterTest.<wbr>cpp</div>
          <div>
            <div style="font-size:12.8px">> TEST(ImportExpr,
              ImportIOstream) {</div>
            <div style="font-size:12.8px">>
               MatchVerifier<Decl> Verifier;</div>
            <div style="font-size:12.8px">>  EXPECT_TRUE(testImport(</div>
            <div style="font-size:12.8px">>
               "#include<iostream> \n"</div>
            <div style="font-size:12.8px">>  "inline namespace D {\n"</div>
            <div style="font-size:12.8px">>  "
               template<class>\n"</div>
            <div style="font-size:12.8px">>  "  struct declToImport {<span
                style="font-size:12.8px">};\n"</span></div>
            <div style="font-size:12.8px">>  "}\n", Lang_CXX, "",
              Lang_CXX, Verifier, decl()));</div>
            <div style="font-size:12.8px">> }</div>
          </div>
          <div style="font-size:12.8px"><br>
          </div>
          <div style="font-size:12.8px">It seems that the astImporter is
            not completely deterministic.</div>
          <div style="font-size:12.8px">In anycase, I encounter one of
            two errors:</div>
          <div><span style="font-size:12.8px">1) If it calls `</span>TagDecl::setTypedefDeclForAnonDecl`<span
              style="font-size:12.8px"> it fails as `</span>assert(T->isLinkageValid());`
            is false</div>
          <div>2) If it parses a FriendDecl it gets stuck in an infinite
            loop :</div>
          <div><br>
          </div>
          <div>Decl *ASTNodeImporter::VisitFriendDecl(FriendDecl *D) {</div>
          <div>/*......*/</div>
          <div>
            <div> │3437      while (ImportedFriend) {</div>
            <div> │3438        if (D->getFriendDecl() &&
              ImportedFriend->getFriendDecl()) { </div>
            <div>                            // ^^^ evaluates to false</div>
            <div> │3439          if
              (Context.IsStructurallyEquivalent(D->getFriendDecl(), </div>
            <div> │3440                                              
              ImportedFriend->getFriendDecl()))</div>
            <div> │3441            return Importer.Imported(D,
              ImportedFriend);</div>
            <div> │3442</div>
            <div> │3443        } else if (D->getFriendType()
              && ImportedFriend->getFriendType()) {</div>
            <div> │3444          if (Importer.IsStructurallyEquivalent( </div>
            <div>                                    // ^^^ always false</div>
            <div> │3445              
               D->getFriendType()->getType(), </div>
            <div> │3446              
               ImportedFriend->getFriendType()->getType(), true)) </div>
            <div> │3447            return Importer.Imported(D,
              ImportedFriend); </div>
            <div> │3448        } </div>
            <div> │3449        ImportedFriend =
              ImportedFriend->getNextFriend(); </div>
            <div>                      //  ^^^ returns always the same
              frienddecl; </div>
            <div>                      //   why does a Frienddecl has
              itself as a friend ?</div>
            <div> │3450      }  </div>
            <div><br>
            </div>
            <div>Does anybody have an idea what's going on? </div>
          </div>
          <div><br>
          </div>
          <br>
          <br>
        </div>
        <img moz-do-not-send="true" class="mailtrack-img"
src="https://mailtrack.io/trace/mail/f602f5bb94661ea85bc50755d735c1086b00182c.png?u=931501"
          height="0" width="0"></div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">2017-01-09 13:49 GMT+00:00 Gaetano
          Checinski <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:gaetano.checinski@gmail.com" target="_blank">gaetano.checinski@gmail.com</a>></span>:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr">
              <div>Hi Guys,</div>
              <div>I've noticed that the ASTImporter fails to import
                some named decls from <iostream> due to an invalid
                linkagecache (in TagDecl::<wbr>setTypedefNameForAnonDecl()).</div>
              <div>Running with assertions disabled never terminates.</div>
              <div>However, while trying to build an minimal
                reproducible example, i stumbled on a different error
                regarding templated structs with frienddecls.</div>
              <div>I think they may be related because i found this
                commit: </div>
              <div><a moz-do-not-send="true"
href="https://mailtrack.io/trace/link/3bfa5f729eac3d7d441cda522b04d9aa06778eec?url=https%3A%2F%2Fpublic.cdl.uni-saarland.de%2Fnoise%2Fclang%2Fcommit%2Fad0e27b18b0cefab049121d4bfd7b12216e7de6e&signature=1e3968956e628307"
                  target="_blank">https://public.cdl.uni-<wbr>saarland.de/noise/clang/<wbr>commit/<wbr>ad0e27b18b0cefab049121d4bfd7b1<wbr>2216e7de6e</a></div>
              <div><br>
              </div>
              <div><br>
              </div>
              <div>The following test fails:</div>
              <div> </div>
              <div>> // svn: E155007</div>
              <div>> // unittests/AST/ASTImporterTest.<wbr>cpp</div>
              <div>
                <div>> TEST(ImportExpr, TemplatedStructFriend) {</div>
                <div>>  MatchVerifier<Decl> Verifier;</div>
                <div>>  EXPECT_TRUE(testImport(</div>
                <div>>  "void foo() {}; \n"</div>
                <div>>  "inline namespace D {\n"</div>
                <div>>  "  template<class>\n"</div>
                <div>>  "  struct declToImport {\n"</div>
                <div>>  "    friend bool f(const declToImport
                  &);\n"</div>
                <div>>  "  };\n"</div>
                <div>>  "  template class declToImport<int>;\n"</div>
                <div>>  "}\n", Lang_CXX, "", Lang_CXX, Verifier,
                  decl()));</div>
                <div>> }</div>
                <div><br>
                </div>
                <div>stacktrace: </div>
                > clang/llvm/tools/clang/lib/<wbr>AST/DeclFriend.cpp,
                line 43.
                <div>> 0  ASTTests                 0x0000000104f8e135
                  l </div>
                <div>> lvm::sys::PrintStackTrace(<wbr>llvm::raw_ostream&)
                  + 101</div>
                <div>> 1  ASTTests                 0x0000000104f8e779
                  PrintStackTraceSignalHandler(<wbr>void*) + 25</div>
                <div>> 2  ASTTests                 0x0000000104f8a6d9
                  llvm::sys::RunSignalHandlers() + 425</div>
                <div>> 3  ASTTests                 0x0000000104f8ec92
                  SignalHandler(int) + 354</div>
                <div>> 4  libsystem_platform.dylib 0x00007fff9e3eebba
                  _sigtramp + 26</div>
                <div><br>
                </div>
                <div>Thanks in advance,</div>
                <div>Gaetano Checinski</div>
                <div><br>
                </div>
                <div><br>
                </div>
              </div>
              <img moz-do-not-send="true"
                class="m_-792721907466976921mailtrack-img"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
                height="0" width="0"></div>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
cfe-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>