aaron.ballman added inline comments.

================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:1127
         return false;
-      if (!this->emitInitGlobal(*T, *I, VD))
+    }
+  } else {
----------------
tbaeder wrote:
> aaron.ballman wrote:
> > tbaeder wrote:
> > > aaron.ballman wrote:
> > > > and if we have no `GlobalIndex`?
> > > > 
> > > > Should this instead be:
> > > > ```
> > > > if (auto GlobalIndex = P.getGlobal(VD); !GlobalIndex || 
> > > > !this->emitGetPtrGlobal(*GlobalIndex, VD))
> > > >   return false;
> > > > ```
> > > > 
> > > I mean, that shouldn't happen because the `visitVarDecl` call before 
> > > would've returned `false` in that case.
> > The use of an `if` makes it seem like it could fail. Perhaps we should drop 
> > the `if` and use an `assert`?
> What do you think about returning a `tuple(valid, offset)` from 
> `visitVarDecl`? Although that might make the call in `ByteCodeStmtGen.cpp` a 
> little awkward.
Hmmmm, I don't think I'd like to see a tuple, but seeing an `llvm::ErrorOr<>` 
or a `std::optional<>` might be reasonable. The downside is that the `visit*` 
functions then won't have a uniform return type (can't do `ErrorOr<void>` that 
I'm aware of)


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

https://reviews.llvm.org/D136815

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

Reply via email to