[PATCH] D105020: [SLP]Improve graph reordering.
Mikhail Goncharov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 14 07:41:44 PDT 2021
goncharov reopened this revision.
goncharov added a comment.
This revision is now accepted and ready to land.
Hi @ABataev ,
I have found another regression on the latest version of this change:
> cat repro.cc
#include <cstdio>
struct a {
int b;
int c;
int o;
int d;
};
class e {
public:
e(int);
void f(a *);
int g;
int h;
int i;
};
void e::f(a *p) {
fprintf(stderr, "MiscompiledFunction\n");
fprintf(stderr, "%d, %d, %d, %d, %d, %d\n", p->b, p->c, p->o, p->d, h, g);
int j = (p->b + p->c) / 2, k = (p->o + p->d) / 2, l, m;
switch (i) {
case 0:
case 2:
l = h - 1 - j;
m = g - 1 - k;
}
p->b = l + p->b - j;
p->c = l + p->c - j;
p->o = m + p->o - k;
p->d = m + p->d - k;
}
int n = 0;
e::e(int q) : g(0), h(0), i(q) {}
int main() {
a *bb = new a{0, 9, 4, 0}, *p = bb;
e r(n);
r.f(p);
printf("%d %d %d %d\n", bb->b, bb->c, bb->o, bb->d);
}
> # at 5661317f864abf750cf893c6a4cc7a977be0995a
> clang -Wall -Werror -Wextra -O3 -fno-exceptions -stdlib=libc++ -lc++ -std=gnu++17 repro.cc && ./a.out
-9 0 -1 -5
> # at bc69dd62c04a70d29943c1c06c7effed150b70e1
> clang -Wall -Werror -Wextra -O3 -fno-exceptions -stdlib=libc++ -lc++ -std=gnu++17 repro.cc && ./a.out
-7 2 -3 -7
It's quite fragile as e.g. removing `fprintf(stderr, "MiscompiledFunction\n");` or running with -fsanitize=null "fixes" the output.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105020/new/
https://reviews.llvm.org/D105020
More information about the llvm-commits
mailing list