Skip to content

const: Assertion `found != origToNewForward.end()' failed. #2270

@ZuseZ4

Description

@ZuseZ4

/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/llvm/build/bin/opt reduced.ll --load-pass-plugin=/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/LLVMEnzyme-20.so -passes='enzyme' -S

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"

define void @lstm_predict(ptr %0) personality ptr null {
  br label %2

2:                                                ; preds = %6, %1
  %3 = tail call i8 @llvm.scmp.i8.i32(i32 0, i32 0)
  switch i8 %3, label %4 [
    i8 1, label %5
    i8 0, label %6
  ]

4:                                                ; preds = %2
  unreachable

5:                                                ; preds = %2
  br label %6

6:                                                ; preds = %5, %2
  %7 = phi i32 [ 0, %5 ], [ 0, %2 ]
  %8 = phi i1 [ false, %5 ], [ true, %2 ]
  %9 = call ptr @calloc(i64 0)
  tail call void @free(ptr %9)
  br label %2
}

define fastcc void @_ZN2ad23d_lstm_unsafe_objective17hfdae8b2443372ae4E() {
  tail call void (...) @__enzyme_autodiff_ZN2ad23d_lstm_unsafe_objective17hfdae8b2443372ae4E(ptr @lstm_predict, metadata !"enzyme_const", ptr null)
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i8 @llvm.scmp.i8.i32(i32, i32) #0

declare void @free(ptr nocapture)

declare ptr @calloc(i64)

declare void @__enzyme_autodiff_ZN2ad23d_lstm_unsafe_objective17hfdae8b2443372ae4E(...)

; uselistorder directives
uselistorder ptr null, { 0, 2, 3, 1 }

attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
opt: /home/manuel/prog/rust-middle/src/tools/enzyme/enzyme/Enzyme/GradientUtils.cpp:3588: auto GradientUtils::prepRematerializedLoopEntry(LoopContext &)::(anonymous class)::operator()(BasicBlock *) const: Assertion `found != origToNewForward.end()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: /home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/llvm/build/bin/opt reduced.ll --load-pass-plugin=/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/LLVMEnzyme-20.so -passes=enzyme -S
1.	Running pass "EnzymeNewPM" on module "reduced.ll"
 #0 0x000071d67824fd08 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/llvm/build/bin/../lib/libLLVM.so.20.1-rust-1.87.0-nightly+0xe4fd08)
 #1 0x000071d67824d8de llvm::sys::RunSignalHandlers() (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/llvm/build/bin/../lib/libLLVM.so.20.1-rust-1.87.0-nightly+0xe4d8de)
 #2 0x000071d6782503b8 SignalHandler(int) Signals.cpp:0:0
 #3 0x000071d676c45320 (/lib/x86_64-linux-gnu/libc.so.6+0x45320)
 #4 0x000071d676c9eb1c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x000071d676c9eb1c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x000071d676c9eb1c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x000071d676c4526e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x000071d676c288ff abort ./stdlib/abort.c:81:7
 #9 0x000071d676c2881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000071d676c3b507 (/lib/x86_64-linux-gnu/libc.so.6+0x3b507)
#11 0x000071d6768e73b1 (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/LLVMEnzyme-20.so+0x4e73b1)
#12 0x000071d6768e4d7b GradientUtils::prepRematerializedLoopEntry(LoopContext&) (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/LLVMEnzyme-20.so+0x4e4d7b)
#13 0x000071d6768e7c63 GradientUtils::getReverseOrLatchMerge(llvm::BasicBlock*, llvm::BasicBlock*) (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/LLVMEnzyme-20.so+0x4e7c63)
#14 0x000071d67680187a createInvertedTerminator(DiffeGradientUtils*, llvm::ArrayRef<DIFFE_TYPE>, llvm::BasicBlock*, llvm::AllocaInst*, llvm::AllocaInst*, unsigned int, DIFFE_TYPE) (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/LLVMEnzyme-20.so+0x40187a)
#15 0x000071d67680a3ec EnzymeLogic::CreatePrimalAndGradient(RequestContext, ReverseCacheKey const&&, TypeAnalysis&, AugmentedReturn const*, bool) (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/LLVMEnzyme-20.so+0x40a3ec)
#16 0x000071d6767ceed1 (anonymous namespace)::EnzymeBase::HandleAutoDiff(llvm::Instruction*, unsigned int, llvm::Value*, llvm::Type*, llvm::SmallVectorImpl<llvm::Value*>&, std::map<int, llvm::Type*, std::less<int>, std::allocator<std::pair<int const, llvm::Type*>>> const&, std::vector<DIFFE_TYPE, std::allocator<DIFFE_TYPE>> const&, llvm::Function*, DerivativeMode, (anonymous namespace)::EnzymeBase::Options&, bool, llvm::SmallVectorImpl<llvm::CallInst*>&) Enzyme.cpp:0:0
#17 0x000071d6767c6708 (anonymous namespace)::EnzymeBase::HandleAutoDiffArguments(llvm::CallInst*, DerivativeMode, bool, llvm::SmallVectorImpl<llvm::CallInst*>&) Enzyme.cpp:0:0
#18 0x000071d6767c1b74 (anonymous namespace)::EnzymeBase::lowerEnzymeCalls(llvm::Function&, std::set<llvm::Function*, std::less<llvm::Function*>, std::allocator<llvm::Function*>>&) Enzyme.cpp:0:0
#19 0x000071d6767bcae5 (anonymous namespace)::EnzymeBase::run(llvm::Module&) Enzyme.cpp:0:0
#20 0x000071d6767dfd24 llvm::detail::PassModel<llvm::Module, EnzymeNewPM, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/LLVMEnzyme-20.so+0x3dfd24)
#21 0x000071d67844cb07 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/llvm/build/bin/../lib/libLLVM.so.20.1-rust-1.87.0-nightly+0x104cb07)
#22 0x00005f8fd82a6283 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/llvm/build/bin/opt+0x26283)
#23 0x00005f8fd8299522 optMain (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/llvm/build/bin/opt+0x19522)
#24 0x000071d676c2a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#25 0x000071d676c2a28b call_init ./csu/../csu/libc-start.c:128:20
#26 0x000071d676c2a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#27 0x00005f8fd8293255 _start (/home/manuel/prog/rust-middle/build/x86_64-unknown-linux-gnu/llvm/build/bin/opt+0x13255)
[1]    537340 IOT instruction (core dumped)   reduced.ll  -passes='enzyme' -S

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions