Skip to content

wrong code with opt "-mem2reg -loop-rotate -simplifycfg -instcombine -newgvn" on x86_64-linux-gnu #35581

@zhendongsu

Description

@zhendongsu
Bugzilla Link 36233
Resolution FIXED
Resolved on Jul 22, 2019 12:17
Version trunk
OS All
CC @fhahn

Extended Description

Tested with trunk revision 324202.

$ clangpolly -v
clang version 7.0.0 (http://llvm.org/git/clang.git b9bdf3d4e882e565e4af6a67d419648ef572cd4f) (http://llvm.org/git/llvm.git 2358f76)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/su/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.4.7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.7.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@MX32
Selected multilib: .;@m64
$
$ clangpolly -O0 small.c; ./a.out
0
$
$ clangpolly -O3 -mllvm -disable-llvm-optzns -c -emit-llvm -o small.bc -w small.c
$ optpolly -mem2reg -loop-rotate -simplifycfg -instcombine -newgvn -o small-opt.bc small.bc
$ clangpolly small-opt.bc
$ ./a.out
1
$


int printf (const char *, ...);

int a = 1, *b = &a, *c = &a;

int main ()
{
int d, e;
for (e = 0; e < 2; e++)
{
d = *b;
*c = d && e;
}
printf ("%d\n", a);
return 0;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzilla

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions