<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Polly-ACC: Loop without a header."
   href="https://bugs.llvm.org/show_bug.cgi?id=33208">33208</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Polly-ACC: Loop without a header.
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>Polly
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Optimizer
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>polly-dev@googlegroups.com
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>llvm@meinersbur.de
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>During code generation, Polly-ACC removes all blocks from some loops
(GPUNodeBuilder::clearLoops). That is, the loops don't even have a header
anymore, which is assumed by ScalarEvolution. ScalarEvolution calls
Loop::getHeader() on such a loops, returning an uninitialized/undefined
pointer.

This happens on 4 different Polly-ACC regression tests, one shown below. Polly
r304151.

Found using msvc's debug STL.




  ********************
  FAIL: Polly :: GPGPU/shared-memory-two-dimensional.ll (111 of 929)
  ******************** TEST 'Polly :: GPGPU/shared-memory-two-dimensional.ll'
FAILED ********************
  Script:
  --
  opt  -polly-process-unprofitable  -polly-remarks-minimal 
-polly-use-llvm-names  -polly-codegen-ppcg -polly-acc-dump-code 
-polly-acc-use-shared  -disable-output < C:\Users\Meinersbur\src\llvm\tool
  s\polly\test\GPGPU\shared-memory-two-dimensional.ll |  FileCheck
-check-prefix=CODE
C:\Users\Meinersbur\src\llvm\tools\polly\test\GPGPU\shared-memory-two-dimensional.ll
  opt  -polly-process-unprofitable  -polly-remarks-minimal 
-polly-use-llvm-names  -polly-codegen-ppcg  -polly-acc-use-shared 
-disable-output -polly-acc-dump-kernel-ir < C:\Users\Meinersbur\src\llvm
  \tools\polly\test\GPGPU\shared-memory-two-dimensional.ll |  FileCheck
-check-prefix=KERNEL
C:\Users\Meinersbur\src\llvm\tools\polly\test\GPGPU\shared-memory-two-dimensional.ll
  --
  Exit Code: 2147483651

  Command Output (stdout):
  --
  $ "opt" "-polly-process-unprofitable" "-polly-remarks-minimal"
"-polly-use-llvm-names" "-polly-codegen-ppcg" "-polly-acc-dump-code"
"-polly-acc-use-shared" "-disable-output"
  # command stderr:
  #0 0x50892f06 (C:\WINDOWS\SYSTEM32\MSVCP140D.dll+0x32f06)

  #1 0x00b92612 std::_Vector_const_iterator<class std::_Vector_val<struct
std::_Simple_types<class llvm::BasicBlock *> > >::operator*(void)const 
c:\program files (x86)\microsoft visual studio 14.0\vc\include\vector:73:0
  #2 0x00b931d0 std::vector<class llvm::BasicBlock *,class std::allocator<class
llvm::BasicBlock *> >::front(void)const  c:\program files (x86)\microsoft
visual studio 14.0\vc\include\vector:1262:0
  #3 0x00b93489 llvm::LoopBase<class llvm::BasicBlock,class
llvm::Loop>::getHeader(void)const 
c:\users\meinersbur\src\llvm\include\llvm\analysis\loopinfo.h:102:0
  #4 0x0119e1d5 PushLoopPHIs
c:\users\meinersbur\src\llvm\lib\analysis\scalarevolution.cpp:5777:0
  #5 0x01194bd0 llvm::ScalarEvolution::forgetLoop(class llvm::Loop const *)
c:\users\meinersbur\src\llvm\lib\analysis\scalarevolution.cpp:5893:0
  #6 0x01194d70 llvm::ScalarEvolution::forgetLoop(class llvm::Loop const *)
c:\users\meinersbur\src\llvm\lib\analysis\scalarevolution.cpp:5916:0
  #7 0x029a0232 GPUNodeBuilder::clearLoops(class llvm::Function *)
c:\users\meinersbur\src\llvm\tools\polly\lib\codegen\ppcgcodegeneration.cpp:1175:0
  #8 0x0299dc57 GPUNodeBuilder::createKernel(struct isl_ast_node *)
c:\users\meinersbur\src\llvm\tools\polly\lib\codegen\ppcgcodegeneration.cpp:1407:0
  #9 0x0299b19b GPUNodeBuilder::createUser(struct isl_ast_node *)
c:\users\meinersbur\src\llvm\tools\polly\lib\codegen\ppcgcodegeneration.cpp:980:0
  #10 0x02a47192 IslNodeBuilder::create(struct isl_ast_node *)
c:\users\meinersbur\src\llvm\tools\polly\lib\codegen\islnodebuilder.cpp:939:0
  #11 0x02a4ba79 IslNodeBuilder::createBlock(struct isl_ast_node *)
c:\users\meinersbur\src\llvm\tools\polly\lib\codegen\islnodebuilder.cpp:919:0
  #12 0x02a471ae IslNodeBuilder::create(struct isl_ast_node *)
c:\users\meinersbur\src\llvm\tools\polly\lib\codegen\islnodebuilder.cpp:942:0
  #13 0x029bce9b `anonymous namespace'::PPCGCodeGeneration::generateCode
c:\users\meinersbur\src\llvm\tools\polly\lib\codegen\ppcgcodegeneration.cpp:2660:0
  #14 0x029c0c48 `anonymous namespace'::PPCGCodeGeneration::runOnScop
c:\users\meinersbur\src\llvm\tools\polly\lib\codegen\ppcgcodegeneration.cpp:2691:0
  #15 0x029e8079 polly::ScopPass::runOnRegion(class llvm::Region *,class
llvm::RGPassManager &)
c:\users\meinersbur\src\llvm\tools\polly\lib\analysis\scoppass.cpp:26:0
  #16 0x0105643c llvm::RGPassManager::runOnFunction(class llvm::Function &)
c:\users\meinersbur\src\llvm\lib\analysis\regionpass.cpp:97:0
  #17 0x01a27d35 llvm::FPPassManager::runOnFunction(class llvm::Function &)
c:\users\meinersbur\src\llvm\lib\ir\legacypassmanager.cpp:1519:0
  #18 0x01a27eda llvm::FPPassManager::runOnModule(class llvm::Module &)
c:\users\meinersbur\src\llvm\lib\ir\legacypassmanager.cpp:1540:0
  #19 0x01a28f1e `anonymous namespace'::MPPassManager::runOnModule
c:\users\meinersbur\src\llvm\lib\ir\legacypassmanager.cpp:1596:0
  #20 0x01a295fa llvm::legacy::PassManagerImpl::run(class llvm::Module &)
c:\users\meinersbur\src\llvm\lib\ir\legacypassmanager.cpp:1699:0
  #21 0x01a23c3d llvm::legacy::PassManager::run(class llvm::Module &)
c:\users\meinersbur\src\llvm\lib\ir\legacypassmanager.cpp:1731:0
  #22 0x00ba5bd8 main c:\users\meinersbur\src\llvm\tools\opt\opt.cpp:749:0
  #23 0x031bf4de invoke_main
f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:64:0
  #24 0x031bf360 _scrt_common_main_seh
f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253:0
  #25 0x031bf1fd _scrt_common_main
f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:296:0
  #26 0x031bf4f8 mainCRTStartup
f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp:17:0
  #27 0x767d8744 (C:\WINDOWS\System32\KERNEL32.DLL+0x18744)
  #28 0x7707587d (C:\WINDOWS\SYSTEM32\ntdll.dll+0x6587d)
  #29 0x7707584d (C:\WINDOWS\SYSTEM32\ntdll.dll+0x6584d)</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>