[PATCH] D60381: FileCheck [1/12]: Move variable table in new object

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 12 01:02:07 PDT 2019


arsenm added inline comments.


================
Comment at: llvm/include/llvm/Support/FileCheck.h:138
+  /// variables at the start of any given CHECK line.
+  FileCheckPatternContext *Context;
+
----------------
thopre wrote:
> thopre wrote:
> > arsenm wrote:
> > > thopre wrote:
> > > > jhenderson wrote:
> > > > > Just to be clear, this is shared between all patterns?
> > > > Yes, updated the comment to make it clear.
> > > Why is this shared_ptr? For a context, there should be clear ownership. Each pattern doesn't need to have a potentially owning reference. It can live somewhere else
> > Hi Matt, thanks for the review!
> > 
> > The object is created in readCheckFile function and cease to be used in checkInput without a pointer being passed around explicitely. I used to delete the pointer taken from one of the pattern but James suggested to use a shared_ptr. It is overkill but allow the code to still work in case it is changed slightly. If the patterns hold a regular pointer I don't know in what shared_ptr to store the ownership and would need to revert to the initial approach.
> > 
> > Is there any other solution I've missed?
> How about creating a pointer to the context in the FileCheck class? I'm tempted to make it a regular pointer since it is clear it can be destroyed once checkInput is finished but let me know if I should be using a shared_ptr instead.
Yes, that's what I was thinking. Each instance needs access to the context, but it shouldn't potentially own it.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60381/new/

https://reviews.llvm.org/D60381





More information about the llvm-commits mailing list