<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 - ICE in backend: Instruction Combining seems stuck in an infinite loop after 100 iterations"
   href="https://bugs.llvm.org/show_bug.cgi?id=46680">46680</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>ICE in backend: Instruction Combining seems stuck in an infinite loop after 100 iterations
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </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>new bugs
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>Vsevolod.Livinskij@frtk.ru
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=23719" name="attach_23719" title="LLVM IR before Combine redundant instructions on function">attachment 23719</a> <a href="attachment.cgi?id=23719&action=edit" title="LLVM IR before Combine redundant instructions on function">[details]</a></span>
LLVM IR before Combine redundant instructions on function

Error:
<span class="quote">>$ clang++ -c -O3 func.cpp</span >
fatal error: error in backend: Instruction Combining seems stuck in an infinite
loop after 100 iterations.
PLEASE submit a bug report to <a href="https://bugs.llvm.org/">https://bugs.llvm.org/</a> and include the crash
backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: clang++ -c -O3 func.cpp 
1.      <eof> parser at end of file
2.      Per-module optimization passes
3.      Running pass 'CallGraph Pass Manager' on module 'func.cpp'.
4.      Running pass 'Combine redundant instructions' on function
'@_Z4testjxxhyPA23_A15_t'
 #0 0x0000561a024b48ce llvm::sys::PrintStackTrace(llvm::raw_ostream&)
(/clang-11+0x23a58ce)
 #1 0x0000561a024b26a4 llvm::sys::RunSignalHandlers() (/clang-11+0x23a36a4)
 #2 0x0000561a024b2921 llvm::sys::CleanupOnSignal(unsigned long)
(/clang-11+0x23a3921)
 #3 0x0000561a0241f7c3 llvm::CrashRecoveryContext::HandleExit(int)
(/clang-11+0x23107c3)
 #4 0x0000561a024aaeeb llvm::sys::Process::Exit(int) (/clang-11+0x239beeb)
 #5 0x0000561a00d43951 LLVMErrorHandler(void*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, bool)
(/clang-11+0xc34951)
 #6 0x0000561a02426f5c llvm::report_fatal_error(llvm::Twine const&, bool)
(/clang-11+0x2317f5c)
 #7 0x0000561a01f963c9 combineInstructionsOverFunction(llvm::Function&,
llvm::InstCombineWorklist&, llvm::AAResults*, llvm::AssumptionCache&,
llvm::TargetLibraryInfo&, llvm::DominatorTree&,
llvm::OptimizationRemarkEmitter&, llvm::BlockFrequencyInfo*,
llvm::ProfileSummaryInfo*, unsigned int, llvm::LoopInfo*) (/clang-11+0x1e873c9)
 #8 0x0000561a01f97dd0
llvm::InstructionCombiningPass::runOnFunction(llvm::Function&)
(/clang-11+0x1e88dd0)
 #9 0x0000561a01de8abc llvm::FPPassManager::runOnFunction(llvm::Function&)
(/clang-11+0x1cd9abc)
#10 0x0000561a05186f2f (anonymous
namespace)::CGPassManager::runOnModule(llvm::Module&) (/clang-11+0x5077f2f)
#11 0x0000561a01de9537 llvm::legacy::PassManagerImpl::run(llvm::Module&)
(/clang-11+0x1cda537)
#12 0x0000561a027618b9 clang::EmitBackendOutput(clang::DiagnosticsEngine&,
clang::HeaderSearchOptions const&, clang::CodeGenOptions const&,
clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout
const&, llvm::Module*, clang::BackendAction,
std::unique_ptr<llvm::raw_pwrite_stream,
std::default_delete<llvm::raw_pwrite_stream> >) (/clang-11+0x26528b9)
#13 0x0000561a0344e7b1
clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&)
(/clang-11+0x333f7b1)
#14 0x0000561a041b3449 clang::ParseAST(clang::Sema&, bool, bool)
(/clang-11+0x40a4449)
#15 0x0000561a0344d2b8 clang::CodeGenAction::ExecuteAction()
(/clang-11+0x333e2b8)
#16 0x0000561a02d8c739 clang::FrontendAction::Execute() (/clang-11+0x2c7d739)
#17 0x0000561a02d433b6
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(/clang-11+0x2c343b6)
#18 0x0000561a02e60630
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(/clang-11+0x2d51630)
#19 0x0000561a00d446b1 cc1_main(llvm::ArrayRef<char const*>, char const*,
void*) (/clang-11+0xc356b1)
#20 0x0000561a00d419e8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&)
(/clang-11+0xc329e8)
#21 0x0000561a02c04cc9 void llvm::function_ref<void
()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
<span class="quote">>, std::__cxx11::basic_string<char, std::char_traits<char>,</span >
std::allocator<char> >*, bool*) const::'lambda'()>(long) (/clang-11+0x2af5cc9)
#22 0x0000561a0241f68c
llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>)
(/clang-11+0x231068c)
#23 0x0000561a02c055e6
clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
<span class="quote">>, std::__cxx11::basic_string<char, std::char_traits<char>,</span >
std::allocator<char> >*, bool*) const (.part.0) (/clang-11+0x2af65e6)
#24 0x0000561a02bdcc8c
clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&,
clang::driver::Command const*&) const (/clang-11+0x2acdc8c)
#25 0x0000561a02bdd5c6
clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&,
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const
(/clang-11+0x2ace5c6)
#26 0x0000561a02be6809
clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&,
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&)
(/clang-11+0x2ad7809)
#27 0x0000561a00cc4209 main (/clang-11+0xbb5209)
#28 0x00007f49c08e11e3 __libc_start_main
/build/glibc-5mDdLG/glibc-2.30/csu/../csu/libc-start.c:342:3
#29 0x0000561a00d4153e _start (/clang-11+0xc3253e)
clang-11: error: clang frontend command failed with exit code 70 (use -v to see
invocation)
clang version 11.0.0 (<a href="https://github.com/llvm/llvm-project.git">https://github.com/llvm/llvm-project.git</a>
9ff310d5bfa56bb5f29645e2d2fee12115c3ddb7)
Target: x86_64-unknown-linux-gnu
Thread model: posix


Reproducer:
#include <algorithm>
extern char var_30, var_48;
extern int var_31;
extern int arr_63[][10][10][10];
extern bool arr_74[];
extern int arr_75[];

void test(unsigned a, long long e, long long b,
          unsigned char c, unsigned long long d, 
          unsigned short f[][23][15]) {
  for (short g = 0; g < c; g = 994)
    for (int h = 0; h < 2; h = 8)
      for (int i = 0; 0 < e;) {
#pragma clang loop unroll(enable)
        for (int j = 0; j < 18; j++)
          for (int k = 0; k < 19LL; k += 1LL) {
            var_30 = f[g][h][0];
            var_31 = b ? std::min((long long)0, e) : d;
          }
        for (int l = 0; l < 6; l += 2)
          arr_63[g][h][i][l] = std::max(d, std::min((unsigned long long)a, d));
        for (int m = 0; m < 8; m++)
          for (char o = 0; o < 022; o += 4)
            arr_74[m] = arr_75[m] = char(3 + m);
        for (char n = 0; n < 5; n += 5)
          var_48 = 0;
      }
}

Clang version:
11.0.0 (<a href="https://github.com/llvm/llvm-project.git">https://github.com/llvm/llvm-project.git</a>
9ff310d5bfa56bb5f29645e2d2fee12115c3ddb7)</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>