<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body>
    Hi Justice, thanks for reporting your observations. I'm cc'ing Lang
    as I believe he is the best to answer this (or correct my notes).<br>
    <br>
    <blockquote type="cite">When I attempt to call a function like the
      tutorial documentation suggest, I get an error similar to the
      following:
      “JIT session error: Failed to materialize symbols: {
      (<main>, { __real@4024000000000000, __real@4010000000000000
      }) }”</blockquote>
    This seems to be an issue with floating point constants on Windows:
    the compiler groups them in a constant-pool section per object file
    and marks it as COMDAT, so that duplicates won't cause errors when
    the linker merges them. However, ORC/JITLink don't fully support
    COMDAT yet. Did you try using different constants or not having
    constants at all?<br>
    <br>
    A similar issue came up recently in the Discord channel and the
    magical solution was to switch to LLJIT:<br>
<a class="moz-txt-link-freetext" href="https://discord.com/channels/636084430946959380/687692371038830597/781079145030877205">https://discord.com/channels/636084430946959380/687692371038830597/781079145030877205</a><br>
    <br>
    <blockquote type="cite">
      <p class="MsoNormal">I also noticed that the test config marks
        tests for the examples as unsupported if the platform is
        windows:</p>
      <p class="MsoNormal"><a
href="https://github.com/llvm/llvm-project/blob/main/llvm/test/Examples/lit.local.cfg">https://github.com/llvm/llvm-project/blob/main/llvm/test/Examples/lit.local.cfg</a></p>
      <p class="MsoNormal"> </p>
      Is there a reason for this? Perhaps this issue of the broken
      Kaleidoscope example on Windows could have been caught earlier via
      the associated tests?
    </blockquote>
    That's right. Well, coverage for the examples has been improved in
    he past:<br>
    <a class="moz-txt-link-freetext" href="https://github.com/llvm/llvm-project/commit/ecfac6cd2ce0421">https://github.com/llvm/llvm-project/commit/ecfac6cd2ce0421</a><br>
    <br>
    But Windows support lacks behind -- I guess simply because proper
    COMDAT support is still not there:<br>
    <a class="moz-txt-link-freetext" href="https://github.com/llvm/llvm-project/commit/f4b86cb28e6793">https://github.com/llvm/llvm-project/commit/f4b86cb28e6793</a><br>
    <br>
    There is no JITLink backend for a native Windows target and I guess
    there are reasons why this is not implemented in RuntimeDyLd (the
    old ORC linker). So far, no one volunteered to work on it and it
    doesn't look like that happens anytime soon. Instead people (like
    me) work around this limitation and target ELF or MachO even on
    non-native platforms. This is fine as long as you have no native
    dependencies, but it's still a hack and it doesn't seem right to
    "teach" this in the tutorials.<br>
    <br>
    So, long story short: Not sure what would be the best way to improve
    the situation. Maybe add a note for Windows users in Kaleidoscope?<br>
    <br>
    Best,<br>
    Stefan<br>
    <br>
    <div class="moz-cite-prefix">On 07/01/2021 02:15, via llvm-dev
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:MWHPR1301MB2175536FAD87BAD17EA97BD89DAF0@MWHPR1301MB2175.namprd13.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style>@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:"Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
        {font-family:"\@Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}div.WordSection1
        {page:WordSection1;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">Hi all,<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">I was playing around with the <a
            href="https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html"
            moz-do-not-send="true">
            C++ Kaleidoscope tutorial</a> recently and noticed that once
          JIT support is added (Chapter 4) it doesn’t appear to work on
          Windows.
          <o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">When the application is built in Debug mode
          using Visual Studio I can’t even seem to execute simple
          statements such as 2+2. I see the error:<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">“Assertion failed: I !=
          MR.SymbolFlags.end() && "Resolving symbol outside this
          responsibility set", file
          C:\Dev\llvm-project\llvm\lib\ExecutionEngine\Orc\Core.cpp,
          line 2629”<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">However, when I build the application in
          Release mode I am able to execute simple arithmetic
          statements, but I can’t make any function calls. When I
          attempt to call a function like the tutorial documentation
          suggest, I get an error similar to the following:<o:p></o:p></p>
        <p class="MsoNormal">“JIT session error: Failed to materialize
          symbols: { (<main>, { __real@4024000000000000,
          __real@4010000000000000 }) }”<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">I’m by no means a JIT expert (hence why I
          was doing the tutorial), so I was hoping someone could take a
          look and help out or point me in the right direction.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">I also noticed that the test config marks
          tests for the examples as unsupported if the platform is
          windows:<o:p></o:p></p>
        <p class="MsoNormal"><a
href="https://github.com/llvm/llvm-project/blob/main/llvm/test/Examples/lit.local.cfg"
            moz-do-not-send="true">https://github.com/llvm/llvm-project/blob/main/llvm/test/Examples/lit.local.cfg</a><o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Is there a reason for this? Perhaps this
          issue of the broken Kaleidoscope example on Windows could have
          been caught earlier via the associated tests?
          <o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Thanks in advance for any help/information
          you can provide,<o:p></o:p></p>
        <p class="MsoNormal">-Justice<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
<a class="moz-txt-link-freetext" href="https://flowcrypt.com/pub/stefan.graenitz@gmail.com">https://flowcrypt.com/pub/stefan.graenitz@gmail.com</a></pre>
  </body>
</html>