-
Notifications
You must be signed in to change notification settings - Fork 15.1k
Description
| Bugzilla Link | 44828 |
| Resolution | FIXED |
| Resolved on | Feb 10, 2020 05:22 |
| Version | trunk |
| OS | All |
| Blocks | #43900 |
| CC | @efriedma-quic,@zmodem,@kbeyls,@nickdesaulniers,@smithp35,@vhscampos |
Extended Description
When building an ARM Linux kernel, we see assembler warnings after 60e0120.
$ 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 ClangBuiltLinux/linux#838 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.