[llvm-bugs] [Bug 46680] New: ICE in backend: Instruction Combining seems stuck in an infinite loop after 100 iterations

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Jul 10 18:26:28 PDT 2020


https://bugs.llvm.org/show_bug.cgi?id=46680

            Bug ID: 46680
           Summary: ICE in backend: Instruction Combining seems stuck in
                    an infinite loop after 100 iterations
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: Vsevolod.Livinskij at frtk.ru
                CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org

Created attachment 23719
  --> https://bugs.llvm.org/attachment.cgi?id=23719&action=edit
LLVM IR before Combine redundant instructions on function

Error:
>$ clang++ -c -O3 func.cpp
fatal error: error in backend: Instruction Combining seems stuck in an infinite
loop after 100 iterations.
PLEASE submit a bug report to https://bugs.llvm.org/ 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>
>, std::__cxx11::basic_string<char, std::char_traits<char>,
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>
>, std::__cxx11::basic_string<char, std::char_traits<char>,
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 (https://github.com/llvm/llvm-project.git
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 (https://github.com/llvm/llvm-project.git
9ff310d5bfa56bb5f29645e2d2fee12115c3ddb7)

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200711/b64bbedf/attachment.html>


More information about the llvm-bugs mailing list