<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Exception ( zero dividing) during code generation on windows plataform - RuntimeDyld.cpp"
   href="https://llvm.org/bugs/show_bug.cgi?id=27704">27704</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Exception ( zero dividing) during code generation on windows plataform - RuntimeDyld.cpp
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>compiler-rt
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows 2000
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>compiler-rt
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>mbsteixeira@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>This problem occurs on the trunk sources.

During code generation there is a exception  in the file RuntimeDyld.cpp.
Present code :
Error RuntimeDyldImpl::emitCommonSymbols(const ObjectFile &Obj,
                                         CommonSymbolList &CommonSymbols) {
  if (CommonSymbols.empty())
    return Error::success();

  uint64_t CommonSize = 0;
  uint32_t CommonAlign = CommonSymbols.begin()->getAlignment();
  CommonSymbolList SymbolsToAllocate;

  DEBUG(dbgs() << "Processing common symbols...\n");

  for (const auto &Sym : CommonSymbols) {
    StringRef Name;
    if (auto NameOrErr = Sym.getName())
      Name = *NameOrErr;
    else
      return NameOrErr.takeError();

    // Skip common symbols already elsewhere.
    if (GlobalSymbolTable.count(Name) ||
        Resolver.findSymbolInLogicalDylib(Name)) {
      DEBUG(dbgs() << "\tSkipping already emitted common symbol '" << Name
                   << "'\n");
      continue;
    }

    uint32_t Align = Sym.getAlignment();  <== here return 0
    uint64_t Size = Sym.getCommonSize();

    CommonSize = alignTo(CommonSize, Align) + Size;  <== here there is a zero
divide exception

    SymbolsToAllocate.push_back(Sym);
  }

The old code was :
void RuntimeDyldImpl::emitCommonSymbols(const ObjectFile &Obj,
                                        CommonSymbolList &CommonSymbols) {
  if (CommonSymbols.empty())
    return;

  uint64_t CommonSize = 0;
  CommonSymbolList SymbolsToAllocate;

  DEBUG(dbgs() << "Processing common symbols...\n");

  for (const auto &Sym : CommonSymbols) {
    ErrorOr<StringRef> NameOrErr = Sym.getName();
    Check(NameOrErr.getError());
    StringRef Name = *NameOrErr;

    // Skip common symbols already elsewhere.
    if (GlobalSymbolTable.count(Name) ||
        Resolver.findSymbolInLogicalDylib(Name)) {
      DEBUG(dbgs() << "\tSkipping already emitted common symbol '" << Name
                   << "'\n");
      continue;
    }

    uint32_t Align = Sym.getAlignment();
    uint64_t Size = Sym.getCommonSize();

    CommonSize += Align + Size;
    SymbolsToAllocate.push_back(Sym);
  }</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>