erichkeane added inline comments.

================
Comment at: clang/lib/AST/Stmt.cpp:1000-1003
+  if (Optional<Stmt *> Result =
+          const_cast<IfStmt *>(this)->getNondiscardedCase(Ctx))
+    return *Result;
+  return None;
----------------
rsmith wrote:
> Can this simply be
> ```
>   return const_cast<IfStmt *>(this)->getNondiscardedCase(Ctx));
> ```
> ? I would expect that if `T` implicitly converts to `U` then `Optional<T>` 
> implicitly converts to `Optional<U>`.
that does not seem to be the case unfortunately.  `llvm::Optional` doesn't have 
any such conversion functions.  Its only constructors and or `operator=` just 
take `Optional`.  It is missing most of the constructors here: 
https://en.cppreference.com/w/cpp/utility/optional/optional


================
Comment at: clang/lib/Sema/Sema.cpp:1545
 class DeferredDiagnosticsEmitter
     : public UsedDeclVisitor<DeferredDiagnosticsEmitter> {
 public:
----------------
rsmith wrote:
> I wonder if there are other `UsedDeclVisitor`s that would want this behavior, 
> largely because of [basic.def.odr]p10: "Every program shall contain exactly 
> one definition of every non-inline function or variable that is odr-used in 
> that program outside of a discarded statement (8.5.2)". It seems worth 
> checking, and maybe moving this functionality to an optional behavior in the 
> base class, but I don't want to hold up this patch on that.
I've actually implemented this 2x (another time in a different class, that 
inherits from a different visitor, I believe `CallGraph`) in our downstream.  
The issue in many cases is that we lack access to `ASTContext` in those.

HOWEVER, I note that `EvaluatedExprVisitorBase` actually has access to an 
`ASTContext`, so I can put that in there controlled by an inherited function 
(like we do with some of the other visitors).

If it ends up being low-touch enough, I'll move it as an opt-in behavior for 
this patch this morning. 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D102251

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to