[llvm-bugs] [Bug 42283] New: gvn-hoist produces wrong code with "opt -sroa -loop-unswitch -loop-rotate -sccp -jump-threading -gvn-hoist"

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Jun 14 04:53:49 PDT 2019


https://bugs.llvm.org/show_bug.cgi?id=42283

            Bug ID: 42283
           Summary: gvn-hoist produces wrong code with "opt -sroa
                    -loop-unswitch -loop-rotate -sccp -jump-threading
                    -gvn-hoist"
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Scalar Optimizations
          Assignee: unassignedbugs at nondot.org
          Reporter: cszide at 163.com
                CC: llvm-bugs at lists.llvm.org

Created attachment 22103
  --> https://bugs.llvm.org/attachment.cgi?id=22103&action=edit
.bc file of the source code

$clang -v
clang version 9.0.0 (trunk 362492)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/jack-zhou/Documents/llvm/llvm_truck/llvm2/build/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.5.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.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64

$ clang small.c -o small1.out && ./small1.out
28

$ gcc small.c -o small2.out && ./small2.out
28

$clang -O3 -c -emit-llvm  -mllvm -disable-llvm-optzns small.c

$opt -sroa -loop-unswitch -loop-rotate -sccp -jump-threading -gvn-hoist
small.bc -o small-opt.bc

$clang small-opt.bc  -o small3.out && ./small3.out
0

------------------------------------------
#include<stdio.h>
unsigned a;
char b;
int c, d;
int main(int argc, char *argv[]) {
  int e, f = 0;
  if (argc == 0)
    f = 1;

  for (e = 0; e < 2; e++)
    for (; c; c++) {

      for (d; d; d++) {
        printf("%d%d\n", b, a ^ 5);
        if (f)
          ;
      }
    }

  for (e = 0; e < 1; e++) {
    a = a ^ a ^ 40;
    a;
    if (f)
      ;
    printf("%X\n", a);
  }
  return 0;
}

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190614/3f260c74/attachment.html>


More information about the llvm-bugs mailing list