[PATCH] D141215: [clang-repl] Introduce Value to capture expression results
Vassil Vassilev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Apr 8 01:39:32 PDT 2023
v.g.vassilev added inline comments.
================
Comment at: clang/include/clang/Interpreter/Interpreter.h:39
+class Parser;
+class CodeGenerator;
class CompilerInstance;
----------------
v.g.vassilev wrote:
> We probably do not need these forward declarations.
Looks like they came back.
================
Comment at: clang/include/clang/Interpreter/Interpreter.h:67
create(std::unique_ptr<CompilerInstance> CI);
+ ASTContext &getASTContext() const;
const CompilerInstance *getCompilerInstance() const;
----------------
We should not need this. `CompileDtorCall` can probably do `RD->getASTContext()` instead.
================
Comment at: clang/include/clang/Interpreter/Interpreter.h:104
+
+ Expr *SynthesizeExpr(clang::Expr *E);
+
----------------
Let's make this file static.
================
Comment at: clang/include/clang/Interpreter/Value.h:1
+//===--- Interpreter.h - Incremental Compiation and Execution---*- C++ -*-===//
+//
----------------
`Value.h` instead of `Interpreter.h`
================
Comment at: clang/include/clang/Interpreter/Value.h:17
+
+#include "llvm/Support/Compiler.h"
+#include <cassert>
----------------
We should probably remove this include as it seems unneeded.
================
Comment at: clang/lib/Interpreter/IncrementalASTConsumer.cpp:37
+
+void IncrementalASTConsumer::Transform(DeclGroupRef &DGR) {
+ for (Decl *D : DGR) {
----------------
Let's inline this function in its caller.
================
Comment at: clang/lib/Interpreter/IncrementalASTConsumer.cpp:43
+ // Flip the flag.
+ TSD->setValuePrinting(false);
+ }
----------------
Do we need to do this? I'd prefer to keep some history in `TSD`.
================
Comment at: clang/lib/Interpreter/IncrementalASTConsumer.h:25
+
+class IncrementalASTConsumer final : public ASTConsumer {
+ Interpreter &Interp;
----------------
Let's move this class in `IncrementalParser.cpp`. I don't think we need a new file here just yet.
================
Comment at: clang/lib/Interpreter/IncrementalASTConsumer.h:34
+ bool HandleTopLevelDecl(DeclGroupRef DGR) override final;
+ void HandleTranslationUnit(ASTContext &Ctx) override final;
+ static bool classof(const clang::ASTConsumer *) { return true; }
----------------
We should make all interfaces pass through as all of them are important events that codegen needs to know about.
================
Comment at: clang/lib/Interpreter/IncrementalParser.h:19
#include "clang/AST/GlobalDecl.h"
-
+#include "clang/Parse/Parser.h"
#include "llvm/ADT/ArrayRef.h"
----------------
We don't need this include if we remove `getParser` which we do not need.
================
Comment at: clang/lib/Interpreter/IncrementalParser.h:87
+private:
+ CodeGenerator *GetCodeGen() const;
};
----------------
That should not be needed with the new implementation in this patch.
================
Comment at: clang/lib/Interpreter/Interpreter.cpp:350
std::list<PartialTranslationUnit> &PTUs = IncrParser->getPTUs();
- if (N > PTUs.size())
+ if (N + InitPTUSize > PTUs.size())
return llvm::make_error<llvm::StringError>("Operation failed. "
----------------
I'd propose `IncrParser->getPTUs()` to return the list starting from `InitPTUSize`. That should solve the issue you see.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D141215/new/
https://reviews.llvm.org/D141215
More information about the cfe-commits
mailing list