scott.linder added inline comments.

================
Comment at: clang/lib/CodeGen/CGDecl.cpp:1579
   if (EmitDebugInfo && HaveInsertPoint()) {
-    Address DebugAddr = address;
+    Address DebugAddr = AllocaAddr.isValid() ? AllocaAddr : address;
     bool UsePointerValue = NRVO && ReturnValuePointer.isValid();
----------------
aprantl wrote:
> This is unintuitive — can you add a comment explaining why it may not be 
> valid and why address should only be used then?
This is kind of a cop-out on my part, the only path where this occurs is for 
OpenMP, and I think I just need to understand better what is happening. This 
also occurs for NRVO, but that is explicitly called out just below this. I'll 
try to understand this more completely and see if I can represent the 
possibilities more direclty.

Somewhat related, it is a bit unsettling reading through this, as the invariant 
seems to be that `address.isValid()` by the time the call to 
`setAddrOfLocalVar` is called, which makes sense but isn't explicit anywhere in 
the multiple nested `if`s. I'll also add an assert of that.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D88978

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

Reply via email to