jackoalan marked 4 inline comments as done.
jackoalan added a comment.

Thank you @teemperor, your comments and changes in D81471 
<https://reviews.llvm.org/D81471> are very informative. I didn't realise DWARF 
had similar issues with static const members.

Curiously, I am able to resolve direct variable expressions without your 
`ASTResultSynthesizer` changes. I'm guessing this is due to differences in the 
MS linking convention for the IR module.

If you're interested, here are lldb.expr logs comparing member evaluation with 
and without the synthesizer change:
without: https://gist.github.com/jackoalan/f70f223c5e9ec25d6c8e3a5e09940a71
with: https://gist.github.com/jackoalan/e33c878c545c5b270e6f3da44ef57320

Your changes are definitely preferred. The IR execution takes a much more 
roundabout approach originally, and the change noticeably speeds up evaluation.



================
Comment at: lldb/test/Shell/SymbolFile/PDB/Inputs/AstRestoreTest.cpp:27
+  static constexpr float ClassStaticConstexprFloat = 9.f;
+  static constexpr double ClassStaticConstexprDouble = 10.0;
 
----------------
teemperor wrote:
> You might want to also add some static const (not `constexpr`) integer and 
> enum members to this test.
> 
> Also I'm curious what happens if you put a `long double` as a member? From 
> what I can see the expected behavior is that PDB will not emit that as a 
> constant (as the current code asserts if it encounters `long double` 
> anywhere).
`long double` is aliased to `double` according to MS docs. The constant can be 
extracted in the same manner.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D82160



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

Reply via email to