llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.06k stars 11.59k forks source link

[Polly] Crash after "Allow loops with multiple back edges" #25409

Closed tobiasgrosser closed 8 years ago

tobiasgrosser commented 8 years ago
Bugzilla Link 25035
Resolution FIXED
Resolved on Jan 18, 2016 17:02
Version unspecified
OS Linux
Attachments Test case to reproduce the bug
CC @jdoerfert

Extended Description

Hi,

Polly crashes after commit:

Author: Johannes Doerfert doerfert@cs.uni-saarland.de Date: Sun Sep 20 15:00:20 2015 +0000

Allow loops with multiple back edges

  In order to allow multiple back edges we:
    - compute the conditions under which each back edge is taken
    - build the union over all these conditions, thus the condition that
      any back edge is taken
    - apply the same logic to the union we applied to a single back edge

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@248120

with the following error:

/home/grosser/Projects/polly/git/tools/polly/lib/External/isl/isl_space.c:1620: index out of bounds 0 opt 0x00000000021bb3ae llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 46 1 opt 0x00000000021bc4e9 2 opt 0x00000000021baf23 llvm::sys::RunSignalHandlers() + 131 3 opt 0x00000000021bc744 4 libpthread.so.0 0x00007f78eb99dd10 5 libc.so.6 0x00007f78eabb0267 gsignal + 55 6 libc.so.6 0x00007f78eabb1eca abort + 362 7 LLVMPolly.so 0x00007f78ea83f465 8 LLVMPolly.so 0x00007f78ea6bbaae 9 LLVMPolly.so 0x00007f78ea63ccc1 10 LLVMPolly.so 0x00007f78ea63cda7 11 LLVMPolly.so 0x00007f78ea7483b3 polly::Scop::buildDomainsWithBranchConstraints(llvm::Region, llvm::LoopInfo&, polly::ScopDetection&, llvm::DominatorTree&) + 1603 12 LLVMPolly.so 0x00007f78ea747c45 polly::Scop::buildDomains(llvm::Region, llvm::LoopInfo&, polly::ScopDetection&, llvm::DominatorTree&) + 309 13 LLVMPolly.so 0x00007f78ea74b3d4 polly::Scop::init(llvm::LoopInfo&, polly::ScopDetection&, llvm::AAResults&) + 68 14 LLVMPolly.so 0x00007f78ea74f906 polly::ScopInfo::buildScop(llvm::Region&, llvm::DominatorTree&) + 230 15 LLVMPolly.so 0x00007f78ea74ff24 polly::ScopInfo::runOnRegion(llvm::Region*, llvm::RGPassManager&) + 308 16 opt 0x00000000015e646e llvm::RGPassManager::runOnFunction(llvm::Function&) + 1102 17 opt 0x0000000001c5dd9f llvm::FPPassManager::runOnFunction(llvm::Function&) + 399 18 opt 0x0000000001c5e0b5 llvm::FPPassManager::runOnModule(llvm::Module&) + 117 19 opt 0x0000000001c5e84a 20 opt 0x0000000001c5e376 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 342 21 opt 0x0000000001c5ed61 llvm::legacy::PassManager::run(llvm::Module&) + 33

When run with 'polly-opt /tmp/bug.ll -polly-scops' on bug.ll

tlattner commented 8 years ago

Move to Polly Product.

jdoerfert commented 8 years ago

This test actually triggered a couple of problems in the detection as well as modeling. They should be fixed with: r249272, r249273 and r249275