Skip to content

Commit

Permalink
Better unknown inst handler (#1895)
Browse files Browse the repository at this point in the history
* Better unknown inst handler

* fixup
  • Loading branch information
wsmoses authored May 21, 2024
1 parent 6358888 commit 2f5b926
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions enzyme/Enzyme/AdjointGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -326,20 +326,29 @@ class AdjointGenerator : public llvm::InstVisitor<AdjointGenerator> {

std::string s;
llvm::raw_string_ostream ss(s);
ss << *gutils->oldFunc << "\n";
ss << *gutils->newFunc << "\n";
ss << "in Mode: " << to_string(Mode) << "\n";
ss << "cannot handle unknown instruction\n" << inst;
IRBuilder<> Builder2(&inst);
getForwardBuilder(Builder2);
if (CustomErrorHandler) {
IRBuilder<> Builder2(&inst);
getForwardBuilder(Builder2);
CustomErrorHandler(ss.str().c_str(), wrap(&inst), ErrorType::NoDerivative,
gutils, nullptr, wrap(&Builder2));
return;
} else {
EmitFailure("NoDerivative", inst.getDebugLoc(), &inst, ss.str());
return;
}
if (!gutils->isConstantValue(&inst)) {
if (Mode == DerivativeMode::ForwardMode ||
Mode == DerivativeMode::ForwardModeError ||
Mode == DerivativeMode::ForwardModeSplit)
setDiffe(&inst,
Constant::getNullValue(gutils->getShadowType(inst.getType())),
Builder2);
}
if (!inst.getType()->isVoidTy())
gutils->replaceAWithB(gutils->getNewFromOriginal(&inst),
UndefValue::get(inst.getType()));
eraseIfUnused(inst, /*erase*/ true, /*check*/ false);
return;
}

// Common function for falling back to the implementation
Expand Down

0 comments on commit 2f5b926

Please sign in to comment.