-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Open
Labels
backend:X86crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]llvm:codegenplatform:linux
Description
LLVM version 18.1.8
When using llc interchangex.ll -o interchangex.s -enable-new-pm -debug-pass-manager 2>llcpass.log
, the command failed for IOT instruction (core dumped)
.
llcpass.log
Running pass: RequireAnalysisPass<ProfileSummaryAnalysis, Module> on [module]
Running analysis: ProfileSummaryAnalysis on [module]
Running pass: RequireAnalysisPass<CollectorMetadataAnalysis, Module> on [module]
Running analysis: CollectorMetadataAnalysis on [module]
Running pass: PreISelIntrinsicLoweringPass on [module]
Running analysis: InnerAnalysisManagerProxy<AnalysisManager<Function>, Module> on [module]
Running pass: VerifierPass on main (28 instructions)
Running analysis: VerifierAnalysis on main
Running pass: LoopSimplifyPass on main (28 instructions)
Running analysis: LoopAnalysis on main
Running analysis: DominatorTreeAnalysis on main
Running analysis: AssumptionAnalysis on main
Running analysis: TargetIRAnalysis on main
Running pass: LCSSAPass on main (28 instructions)
Running analysis: MemorySSAAnalysis on main
Running analysis: AAManager on main
Running analysis: TargetLibraryAnalysis on main
Running analysis: BasicAA on main
Running analysis: ScopedNoAliasAA on main
Running analysis: TypeBasedAA on main
Running analysis: OuterAnalysisManagerProxy<AnalysisManager<Module>, Function> on main
Running analysis: ScalarEvolutionAnalysis on main
Running analysis: InnerAnalysisManagerProxy<AnalysisManager<Loop, LoopStandardAnalysisResults&>, Function> on main
Running pass: LoopStrengthReducePass on for.body3
Running analysis: IVUsersAnalysis on for.body3
Invalidating analysis: IVUsersAnalysis on for.body3
Running pass: LoopStrengthReducePass on for.cond1.preheader
Running analysis: IVUsersAnalysis on for.cond1.preheader
Invalidating analysis: IVUsersAnalysis on for.cond1.preheader
Invalidating analysis: VerifierAnalysis on main
Running pass: MergeICmpsPass on main (30 instructions)
Running pass: ExpandMemCmpPass on main (30 instructions)
Running pass: GCLoweringPass on main (30 instructions)
Running analysis: GCFunctionAnalysis on main
llc: /home/dxic/llvmlearn/llvm-project/llvm/lib/CodeGen/GCMetadata.cpp:58: llvm::GCFunctionAnalysis::Result llvm::GCFunctionAnalysis::run(llvm::Function&, llvm::FunctionAnalysisManager&): Assertion `F.hasGC() && "Function doesn't have GC!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llc interchangex.ll -o interchangex.s -enable-new-pm -debug-pass-manager
#0 0x00006414a6e09cc2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/dxic/llvmlearn/llvm-project/llvm/lib/Support/Unix/Signals.inc:727:3
#1 0x00006414a6e0768f llvm::sys::RunSignalHandlers() /home/dxic/llvmlearn/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#2 0x00006414a6e07a26 SignalHandler(int) /home/dxic/llvmlearn/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
#3 0x00007aedd0645330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x00007aedd069eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007aedd069eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007aedd069eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007aedd064527e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007aedd06288ff abort ./stdlib/abort.c:81:7
#9 0x00007aedd062881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007aedd063b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x00006414a5cb5e7c llvm::GCFunctionAnalysis::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/dxic/llvmlearn/llvm-project/llvm/lib/CodeGen/GCMetadata.cpp:57:3
#12 0x00006414a65928ee llvm::detail::AnalysisPassModel<llvm::Function, llvm::GCFunctionAnalysis, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/dxic/llvmlearn/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:325:65
#13 0x00006414a636d96e std::__new_allocator<std::_List_node<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>>>::allocate(unsigned long, void const*) /usr/include/c++/13/bits/new_allocator.h:151:48
#14 0x00006414a636d96e std::allocator_traits<std::allocator<std::_List_node<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>>>>::allocate(std::allocator<std::_List_node<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>>>&, unsigned long) /usr/include/c++/13/bits/alloc_traits.h:482:28
#15 0x00006414a636d96e std::__cxx11::_List_base<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>, std::allocator<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>>>::_M_get_node() /usr/include/c++/13/bits/stl_list.h:518:44
#16 0x00006414a636d96e std::_List_node<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>>* std::__cxx11::list<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>, std::allocator<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>>>::_M_create_node<llvm::AnalysisKey*&, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>(llvm::AnalysisKey*&, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>&&) /usr/include/c++/13/bits/stl_list.h:710:32
#17 0x00006414a636d96e void std::__cxx11::list<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>, std::allocator<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>>>::_M_insert<llvm::AnalysisKey*&, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>(std::_List_iterator<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>>, llvm::AnalysisKey*&, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>&&) /usr/include/c++/13/bits/stl_list.h:2005:32
#18 0x00006414a636d96e std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>& std::__cxx11::list<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>, std::allocator<std::pair<llvm::AnalysisKey*, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>>>::emplace_back<llvm::AnalysisKey*&, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>>(llvm::AnalysisKey*&, std::unique_ptr<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>, std::default_delete<llvm::detail::AnalysisResultConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator>>>&&) /usr/include/c++/13/bits/stl_list.h:1321:19
#19 0x00006414a636d96e llvm::AnalysisManager<llvm::Function>::getResultImpl(llvm::AnalysisKey*, llvm::Function&) /home/dxic/llvmlearn/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:73:28
#20 0x00006414a5cb87e2 llvm::GCLoweringPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/dxic/llvmlearn/llvm-project/llvm/lib/CodeGen/GCRootLowering.cpp:86:28
#21 0x00006414a54e8325 llvm::detail::PassModel<llvm::Function, llvm::GCLoweringPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/dxic/llvmlearn/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:3
#22 0x00006414a43c439d llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/dxic/llvmlearn/llvm-project/llvm/include/llvm/IR/PassManager.h:547:0
#23 0x00006414a43c439d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/dxic/llvmlearn/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:89:0
#24 0x00006414a63717f1 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/dxic/llvmlearn/llvm-project/llvm/lib/IR/PassManager.cpp:128:41
#25 0x00006414a43a8c35 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/dxic/llvmlearn/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:0
#26 0x00006414a3e1d046 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/dxic/llvmlearn/llvm-project/llvm/include/llvm/IR/PassManager.h:547:20
#27 0x00006414a3e1d046 RunPasses(bool, llvm::ToolOutputFile*, llvm::Module*, llvm::LLVMContext&, llvm::SmallString<0u>&, llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>*, llvm::AnalysisManager<llvm::Module>*, llvm::MachineFunctionPassManager&, llvm::MachineFunctionAnalysisManager&) /home/dxic/llvmlearn/llvm-project/llvm/tools/llc/NewPMDriver.cpp:103:13
#28 0x00006414a3e1f59e llvm::Expected<llvm::TargetPassConfig::StartStopInfo>::assertIsChecked() const /home/dxic/llvmlearn/llvm-project/llvm/include/llvm/Support/Error.h:717:9
#29 0x00006414a3e1f59e llvm::Expected<llvm::TargetPassConfig::StartStopInfo>::~Expected() /home/dxic/llvmlearn/llvm-project/llvm/include/llvm/Support/Error.h:555:20
#30 0x00006414a3e1f59e llvm::compileModuleWithNewPM(llvm::StringRef, std::unique_ptr<llvm::Module, std::default_delete<llvm::Module>>, std::unique_ptr<llvm::MIRParser, std::default_delete<llvm::MIRParser>>, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>, llvm::LLVMContext&, llvm::TargetLibraryInfoImpl const&, bool, llvm::StringRef, llvm::CodeGenFileType) /home/dxic/llvmlearn/llvm-project/llvm/tools/llc/NewPMDriver.cpp:228:3
#31 0x00006414a3e168f5 std::unique_ptr<llvm::Module, std::default_delete<llvm::Module>>::~unique_ptr() /usr/include/c++/13/bits/unique_ptr.h:403:12
#32 0x00006414a3e168f5 compileModule(char**, llvm::LLVMContext&) /home/dxic/llvmlearn/llvm-project/llvm/tools/llc/llc.cpp:654:34
#33 0x00006414a3e18d67 main /home/dxic/llvmlearn/llvm-project/llvm/tools/llc/llc.cpp:412:35
#34 0x00007aedd062a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#35 0x00007aedd062a28b call_init ./csu/../csu/libc-start.c:128:20
#36 0x00007aedd062a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#37 0x00006414a3e096a5 _start (/home/dxic/llvmlearn/llvm-project/build/bin/llc+0x3ce96a5)
interchangex.ll
; ModuleID = 'interchange.ll'
source_filename = "interchange.c"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; Function Attrs: nofree norecurse nosync nounwind memory(none) uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 {
entry:
%a = alloca [333 x [222 x i32]], align 16
call void @llvm.lifetime.start.p0(i64 295704, ptr nonnull %a) #2
br label %for.cond1.preheader
for.cond1.preheader: ; preds = %entry, %for.inc10
%indvars.iv10 = phi i64 [ 0, %entry ], [ %indvars.iv.next11, %for.inc10 ]
br label %for.body3
for.body3: ; preds = %for.body3, %for.cond1.preheader
%indvars.iv = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next.2, %for.body3 ]
%arrayidx5 = getelementptr inbounds [333 x [222 x i32]], ptr %a, i64 0, i64 %indvars.iv, i64 %indvars.iv10
%0 = load i32, ptr %arrayidx5, align 4, !tbaa !5
%add = add nsw i32 %0, 970815
store i32 %add, ptr %arrayidx5, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%arrayidx5.1 = getelementptr inbounds [333 x [222 x i32]], ptr %a, i64 0, i64 %indvars.iv.next, i64 %indvars.iv10
%1 = load i32, ptr %arrayidx5.1, align 4, !tbaa !5
%add.1 = add nsw i32 %1, 970815
store i32 %add.1, ptr %arrayidx5.1, align 4, !tbaa !5
%indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
%arrayidx5.2 = getelementptr inbounds [333 x [222 x i32]], ptr %a, i64 0, i64 %indvars.iv.next.1, i64 %indvars.iv10
%2 = load i32, ptr %arrayidx5.2, align 4, !tbaa !5
%add.2 = add nsw i32 %2, 970815
store i32 %add.2, ptr %arrayidx5.2, align 4, !tbaa !5
%indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
%exitcond.not.2 = icmp eq i64 %indvars.iv.next.2, 333
br i1 %exitcond.not.2, label %for.inc10, label %for.body3, !llvm.loop !9
for.inc10: ; preds = %for.body3
%indvars.iv.next11 = add nuw nsw i64 %indvars.iv10, 1
%exitcond13.not = icmp eq i64 %indvars.iv.next11, 222
br i1 %exitcond13.not, label %for.end12, label %for.cond1.preheader, !llvm.loop !11
for.end12: ; preds = %for.inc10
call void @llvm.lifetime.end.p0(i64 295704, ptr nonnull %a) #2
ret i32 0
}
; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1
; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1
attributes #0 = { nofree norecurse nosync nounwind memory(none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind }
!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}
!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 18.1.8 (https://github.com/llvm/llvm-project.git 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
Metadata
Metadata
Assignees
Labels
backend:X86crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]llvm:codegenplatform:linux