[PATCH] D158502: [clang][Interp] Actually consider ConstantExpr result

Timm Bäder via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Aug 22 21:41:59 PDT 2023


tbaeder added inline comments.


================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:767-772
+  std::optional<PrimType> T = classify(E->getType());
+  if (T && E->hasAPValueResult() &&
+      this->visitAPValue(E->getAPValueResult(), *T, E))
+    return true;
+
   return this->delegate(E->getSubExpr());
----------------
cor3ntin wrote:
> so if `visitAPValue` fails, we continue. Couldn't that lead to duplicated diagnostics? Shouldn't we simply return whatever `visitAPValue` returns unconditionally?
I did it this way because we don't handle all types of APValues in `visitAPValue()` (think lvalues with an lvalue path), so in those cases we need to visit the expression instead. If there is an `APValue` we're visting, we're not emitting any diagnostics I think.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D158502



More information about the cfe-commits mailing list