aaron.ballman added inline comments.

================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:34-35
 
+  virtual ~DeclScope() override { this->emitDestruction(); }
+
   void addExtended(const Scope::Local &Local) override {
----------------
The destructor for `LocalScope` already calls `emitDestruction()` which is a 
virtual function, so is this necessary?


================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:1370-1372
+        BD && BD->getDecomposedDecl()->getType()->isReferenceType()) {
+      VarT = PT_Ptr;
+    }
----------------



================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:1386-1389
+        if (Init && Init->isLValue() && *VarT != PT_Ptr) {
+          if (!this->emitLoadPop(*VarT, VD))
+            return false;
+        }
----------------



================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:1417-1418
+      assert(!BD->getHoldingVar()); // FIXME
+      if (!this->allocateVariable(BD, BD->getBinding()))
+        return false;
+    }
----------------
<uncertain>Is this correct? IIRC, the decomposition declaration is its own 
object, but the bindings themselves are references back to the decomposition 
declaration object directly and so they're not distinct objects themselves 
(they're more like aliases).</uncertain>


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

https://reviews.llvm.org/D138802

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

Reply via email to