<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 - opt -passes='loop-interchange' crashes with "bad subscript classification UNREACHABLE executed at ../lib/Analysis/DependenceAnalysis.cpp:3833!""
   href="https://bugs.llvm.org/show_bug.cgi?id=52170">52170</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>opt -passes='loop-interchange' crashes with "bad subscript classification UNREACHABLE executed at ../lib/Analysis/DependenceAnalysis.cpp:3833!"
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

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

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>Global Analyses
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>mikael.holmen@ericsson.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=25363" name="attach_25363" title="bbi-61519.ll reproducer">attachment 25363</a> <a href="attachment.cgi?id=25363&action=edit" title="bbi-61519.ll reproducer">[details]</a></span>
bbi-61519.ll reproducer

llvm commit: 0fbd3aad75f95

Reproduce with:
 opt -passes='loop-interchange' -o /dev/null bbi-61519.ll

Result:
bad subscript classification
UNREACHABLE executed at ../lib/Analysis/DependenceAnalysis.cpp:3833!
PLEASE submit a bug report to <a href="https://bugs.llvm.org/">https://bugs.llvm.org/</a> and include the crash
backtrace.
Stack dump:
0.      Program arguments: ../../master-github/llvm/build-all/bin/opt
-passes=loop-interchange -o /dev/null bbi-61519.ll
 #0 0x0000000002b5b8c3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
(../../master-github/llvm/build-all/bin/opt+0x2b5b8c3)
 #1 0x0000000002b5953e llvm::sys::RunSignalHandlers()
(../../master-github/llvm/build-all/bin/opt+0x2b5953e)
 #2 0x0000000002b5bc46 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007efe70534630 __restore_rt sigaction.c:0:0
 #4 0x00007efe6dc67387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007efe6dc68a78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x0000000002ad8d5f (../../master-github/llvm/build-all/bin/opt+0x2ad8d5f)
 #7 0x0000000001a4e606 llvm::DependenceInfo::depends(llvm::Instruction*,
llvm::Instruction*, bool)
(../../master-github/llvm/build-all/bin/opt+0x1a4e606)
 #8 0x00000000028ec1db (anonymous
namespace)::LoopInterchange::processLoopList(llvm::ArrayRef<llvm::Loop*>)
LoopInterchange.cpp:0:0
 #9 0x00000000028eb21a llvm::LoopInterchangePass::run(llvm::LoopNest&,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&)
(../../master-github/llvm/build-all/bin/opt+0x28eb21a)
#10 0x0000000002e606dd llvm::detail::PassModel<llvm::LoopNest,
llvm::LoopInterchangePass, llvm::PreservedAnalyses,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::LoopNest&,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) crtstuff.c:0:0
#11 0x0000000003375b6c llvm::Optional<llvm::PreservedAnalyses>
llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop,
llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&,
llvm::LPMUpdater&>::runSinglePass<llvm::LoopNest,
std::unique_ptr<llvm::detail::PassConcept<llvm::LoopNest,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>,
std::default_delete<llvm::detail::PassConcept<llvm::LoopNest,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > > >(llvm::LoopNest&,
std::unique_ptr<llvm::detail::PassConcept<llvm::LoopNest,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>,
std::default_delete<llvm::detail::PassConcept<llvm::LoopNest,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > >&,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&,
llvm::PassInstrumentation&)
(../../master-github/llvm/build-all/bin/opt+0x3375b6c)
#12 0x0000000003374fb3 llvm::PassManager<llvm::Loop,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>,
llvm::LoopStandardAnalysisResults&,
llvm::LPMUpdater&>::runWithLoopNestPasses(llvm::Loop&,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&)
(../../master-github/llvm/build-all/bin/opt+0x3374fb3)
#13 0x0000000003374b91 llvm::PassManager<llvm::Loop,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&,
llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&,
llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&)
(../../master-github/llvm/build-all/bin/opt+0x3374b91)
#14 0x0000000002e3256d llvm::detail::PassModel<llvm::Loop,
llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop,
llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&,
llvm::LPMUpdater&>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop,
llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&,
llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop,
llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&,
llvm::LPMUpdater&) crtstuff.c:0:0
#15 0x0000000003376a6b llvm::FunctionToLoopPassAdaptor::run(llvm::Function&,
llvm::AnalysisManager<llvm::Function>&)
(../../master-github/llvm/build-all/bin/opt+0x3376a6b)
#16 0x0000000002e4dc8d llvm::detail::PassModel<llvm::Function,
llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses,
llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&,
llvm::AnalysisManager<llvm::Function>&) crtstuff.c:0:0
#17 0x0000000002308fd5 llvm::PassManager<llvm::Function,
llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&,
llvm::AnalysisManager<llvm::Function>&)
(../../master-github/llvm/build-all/bin/opt+0x2308fd5)
#18 0x0000000000ad615d llvm::detail::PassModel<llvm::Function,
llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >,
llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>
<span class="quote">>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) crtstuff.c:0:0</span >
#19 0x000000000230d356 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&,
llvm::AnalysisManager<llvm::Module>&)
(../../master-github/llvm/build-all/bin/opt+0x230d356)
#20 0x000000000078f47d llvm::detail::PassModel<llvm::Module,
llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses,
llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&,
llvm::AnalysisManager<llvm::Module>&) crtstuff.c:0:0
#21 0x0000000002308118 llvm::PassManager<llvm::Module,
llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&,
llvm::AnalysisManager<llvm::Module>&)
(../../master-github/llvm/build-all/bin/opt+0x2308118)
#22 0x00000000007872a2 llvm::runPassPipeline(llvm::StringRef, llvm::Module&,
llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*,
llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef,
llvm::ArrayRef<llvm::StringRef>, llvm::opt_tool::OutputKind,
llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool)
(../../master-github/llvm/build-all/bin/opt+0x7872a2)
#23 0x0000000000799e86 main
(../../master-github/llvm/build-all/bin/opt+0x799e86)
#24 0x00007efe6dc53555 __libc_start_main (/lib64/libc.so.6+0x22555)
#25 0x00000000007826fc _start
(../../master-github/llvm/build-all/bin/opt+0x7826fc)
Abort

Starts crashing with commit 7086025d65675:
    [Dependence Analysis] Enable delinearization of fixed sized arrays

    Patch by Artem Radzikhovskyy!

    Allow delinearization of fixed sized arrays if we can prove that the GEP
indices do not overflow the array dimensions. The checks applied are similar to
the ones that are used for delinearization of parametric size arrays. Make sure
that the GEP indices are non-negative and that they are smaller than the range
of that dimension.

    Changes Summary:

    - Updated the LIT tests with more exact values, as we are able to
delinearize and apply more exact tests
    - profitability.ll - now able to delinearize in all cases, no need to use
-da-disable-delinearization-checks flag and run the test twice
    - loop-interchange-optimization-remarks.ll - in one of the cases we are
able to delinearize without using -da-disable-delinearization-checks
    - SimpleSIVNoValidityCheckFixedSize.ll - removed unnecessary
"-da-disable-delinearization-checks" flag. Now can get the exact answer without
it.
    - SimpleSIVNoValidityCheckFixedSize.ll and
PreliminaryNoValidityCheckFixedSize.ll - made negative tests more explicit, in
order to demonstrate the need for "-da-disable-delinearization-checks" flag

    Differential Revision: <a href="https://reviews.llvm.org/D101486">https://reviews.llvm.org/D101486</a></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>