<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </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 - Warning: index register overlaps transfer register after 60e0120c913dd"
   href="https://bugs.llvm.org/show_bug.cgi?id=44828">44828</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Warning: index register overlaps transfer register after 60e0120c913dd
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

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

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>Backend: ARM
          </td>
        </tr>

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

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

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org, peter.smith@linaro.org, Ties.Stuij@arm.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>When building an ARM Linux kernel, we see assembler warnings after
60e0120c913dd1d4bfe33769e1f000a076249a42.

$ make -j$(nproc) -s ARCH=arm CC=clang CROSS_COMPILE=arm-linux-gnueabi-
O=out.arm32 distclean defconfig kernel/sched/fair.o
/tmp/fair-f01157.s: Assembler messages:
/tmp/fair-f01157.s:1048: Warning: index register overlaps transfer register

I was able to creduce a problematic translation unit to

struct g {
  long h;
  struct g *i;
  struct g *j
};
struct k {
  struct k *b
};
struct l {
  long m;
  int n
};
struct o {
} __attribute__((__aligned__(1 << 6)));
struct a {
  struct a *b, *c
} aj(ak) {
  *(volatile long long *)ak;
}
struct p {
  struct l a;
  long q;
  struct g r;
  struct a s;
  int t;
  long long u;
  long v;
  long long b;
  long w;
  struct o aa
};
struct {
  long d;
  void *e;
  int f;
  int b;
  int c;
  struct k x;
  int y;
  int z;
  long ab;
  int ac;
  int a;
  int ad;
  int t;
  int ae;
  int af;
  int ag;
  int ah;
  struct p ai
} a;
al() { aj(&a.ai.aa); }

See <a href="https://github.com/ClangBuiltLinux/linux/issues/838">https://github.com/ClangBuiltLinux/linux/issues/838</a> for more details.

This is going to be a regression in clang-10, it would be nice to either revert
that commit or come up with a fix quickly, since this was reported on
Phabricator three weeks ago and there has been no movement.</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>