wsmoses / Tapir-LLVM

Tapir extension to LLVM for optimizing Parallel Programs
Other
132 stars 24 forks source link

Cilk For Continue Broken #2

Closed wsmoses closed 8 years ago

wsmoses commented 8 years ago

A continue in a cilk for causes a recursive detach and compiler crash

The source code below causes the crash:

#include <stdio.h>
#include <cilk/cilk.h>

int main() {
  cilk_for(int i=0; i<10; i++) {
    if (i%2==0) break;
    printf("%d\n", i);
  }
}

The following command was run to cause the bug

wmoses@tardis:/mnt/files/git/Parallel-IR/Parallel-IR-Tests$ ~/git/Parallel-IR/build/bin/clang continue.c -ftapir -O3
clang-3.8: /home/wmoses/git/Parallel-IR/include/llvm/Transforms/CilkABI.h:1131: bool llvm::cilk::populateDetachedCFG(const llvm::DetachInst&, llvm::DominatorTree&, llvm::SmallPtrSet<llvm::BasicBlock*, 32u>&, llvm::SmallVector<llvm::BasicBlock*, 32u>&, bool, bool): Assertion `term != &detach && "Found recursive detach!"' failed.