Skip to content

Commit 4c6b761

Browse files
PetroZarytskyivgvassilev
authored andcommitted
Don't override VisitUnaryOperator in RMFPV.
``RMFPV::VisitUnaryOperator`` was written when ``ReverseModeVisitor`` didn't support pointers. Now, ``RMFPV::VisitUnaryOperator`` essentially replicates ``RMV::VisitUnaryOperator``.
1 parent a011819 commit 4c6b761

3 files changed

Lines changed: 2 additions & 29 deletions

File tree

include/clad/Differentiator/ReverseModeForwPassVisitor.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ class ReverseModeForwPassVisitor : public ReverseModeVisitor {
3737
StmtDiff VisitCompoundStmt(const clang::CompoundStmt* CS) override;
3838
StmtDiff VisitDeclRefExpr(const clang::DeclRefExpr* DRE) override;
3939
StmtDiff VisitReturnStmt(const clang::ReturnStmt* RS) override;
40-
StmtDiff VisitUnaryOperator(const clang::UnaryOperator* UnOp) override;
4140
};
4241
} // namespace clad
4342

include/clad/Differentiator/ReverseModeVisitor.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "clad/Differentiator/VisitorBase.h"
1616

1717
#include "clang/AST/DeclCXX.h"
18+
#include "clang/AST/Expr.h"
1819
#include "clang/AST/ExprCXX.h"
1920
#include "clang/AST/RecursiveASTVisitor.h"
2021
#include "clang/AST/StmtVisitor.h"
@@ -383,7 +384,7 @@ namespace clad {
383384
StmtDiff VisitParenExpr(const clang::ParenExpr* PE);
384385
virtual StmtDiff VisitReturnStmt(const clang::ReturnStmt* RS);
385386
StmtDiff VisitStmt(const clang::Stmt* S);
386-
virtual StmtDiff VisitUnaryOperator(const clang::UnaryOperator* UnOp);
387+
StmtDiff VisitUnaryOperator(const clang::UnaryOperator* UnOp);
387388
StmtDiff
388389
VisitUnaryExprOrTypeTraitExpr(const clang::UnaryExprOrTypeTraitExpr* UE);
389390
StmtDiff VisitExprWithCleanups(const clang::ExprWithCleanups* EWC);

lib/Differentiator/ReverseModeForwPassVisitor.cpp

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -194,31 +194,4 @@ ReverseModeForwPassVisitor::VisitReturnStmt(const clang::ReturnStmt* RS) {
194194
Stmt* newRS = m_Sema.BuildReturnStmt(validLoc, returnInitList).get();
195195
return {newRS};
196196
}
197-
198-
StmtDiff
199-
ReverseModeForwPassVisitor::VisitUnaryOperator(const UnaryOperator* UnOp) {
200-
auto opCode = UnOp->getOpcode();
201-
StmtDiff diff{};
202-
// If it is a post-increment/decrement operator, its result is a reference
203-
// and we should return it.
204-
Expr* ResultRef = nullptr;
205-
if (opCode == UnaryOperatorKind::UO_Deref) {
206-
if (const auto* MD = dyn_cast<CXXMethodDecl>(m_DiffReq.Function)) {
207-
if (MD->isInstance()) {
208-
diff = Visit(UnOp->getSubExpr());
209-
Expr* cloneE = BuildOp(UnaryOperatorKind::UO_Deref, diff.getExpr());
210-
Expr* derivedE =
211-
BuildOp(UnaryOperatorKind::UO_Deref, diff.getExpr_dx());
212-
return {cloneE, derivedE};
213-
}
214-
}
215-
} else if (opCode == UO_Plus)
216-
diff = Visit(UnOp->getSubExpr(), dfdx());
217-
else if (opCode == UO_Minus) {
218-
auto d = BuildOp(UO_Minus, dfdx());
219-
diff = Visit(UnOp->getSubExpr(), d);
220-
}
221-
Expr* op = BuildOp(opCode, diff.getExpr());
222-
return StmtDiff(op, ResultRef);
223-
}
224197
} // namespace clad

0 commit comments

Comments
 (0)