Skip to content

loop-reroll makes function broken with "opt -sroa -loop-idiom -jump-threading -lcssa -loop-reroll" #41789

Closed as not planned
@coffezhou

Description

@coffezhou
Bugzilla Link 42444
Version trunk
OS Linux
Attachments .bc file of the source code

Extended Description

$clang -v
clang version 9.0.0 (trunk 363125)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/jack-zhou/Documents/llvm/llvm_truck/llvm2/build1/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 -O3 -c -emit-llvm -femit-all-decls -mllvm -disable-llvm-optzns small.c

$opt -sroa -loop-idiom -jump-threading -lcssa -loop-reroll small.bc -o small-opt.bc
PHI nodes must have at least one entry.  If the block is dead, the PHI should be removed!
  %i.sroa.3.3.lcssa18 = phi i32**** 
in function c
LLVM ERROR: Broken function found, compilation aborted!

without loop-reroll pass, opt works fine.

$opt -sroa -loop-idiom -jump-threading -lcssa small.bc -o small-opt.bc
long a;
int ***b;
void c() {
d:
  for (;;) {
    long e;
    for (; 0;)
      for (;;) {
        unsigned *f;
        unsigned **g = &f;
        unsigned ***h = &g;
        unsigned ****i[10][7] = {0, 0, &h};
        int ****j[] = {&b, &b};
        for (; a;)
          goto d;
      }
  }
}

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