Skip to content

wrong code with "opt -loop-rotate -mem2reg -instcombine -loop-unroll -simplifycfg -gvn -loop-reroll" on x86_64-linux-gnu #32432

Closed as not planned
@zhendongsu

Description

@zhendongsu
Bugzilla Link 33085
Version trunk
OS All
CC @choikwa,@efriedma-quic,@zmodem

Extended Description

$ clang -v
clang version 5.0.0 (trunk 303312)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/clang-trunk/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
$ 
$ clang -O3 -mllvm -disable-llvm-optzns -S -emit-llvm -o small.bc small.c
$ opt -loop-rotate -mem2reg -instcombine -loop-unroll -simplifycfg -gvn -loop-reroll -o small-opt.bc small.bc
$ clang small-opt.bc
$ ./a.out
2
$  
$ clang -O0 small.c
$ ./a.out
1
$ 
int printf (const char *, ...);

int a[1][2], b;

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillaloopoptimobsoleteIssues with old (unsupported) versions of LLVM

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions