tbaeder added inline comments.

================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:215
+        return false;
+      return DiscardResult ? this->emitPopPtr(BO) : true;
     default:
----------------
erichkeane wrote:
> Can you explain what this is doing for me?
The `Store` operation pops the value to store from the stack, but leaves the 
pointer it stores the value to on the stack (it only `peek()`s the pointer). So 
after the `emitStore`, there's still the pointer we stored to on the stack, and 
we need to get rid of it if `DiscardResult` is true (that's the case for a 
simple `i = 5;` on a single line). Otherwise, we leave it no the stack for the 
caller to read from.


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

https://reviews.llvm.org/D132111

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

Reply via email to