[PATCH] D135569: [clang][Interp] Don't run functions immediately after compiling them

Timm Bäder via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 10 21:46:19 PDT 2022


tbaeder added a comment.

In D135569#3847493 <https://reviews.llvm.org/D135569#3847493>, @aaron.ballman wrote:

> This function is testing whether something is potentially a constant expression. Something might not be a valid constant expression for two reasons: 1) it uses some prohibited language construct, 2) it hit undefined behavior. You don't know if you hit undefined behavior until you run the function, so could that be why the function was being run? However, I don't know how you would run an arbitrary function that might accept arguments, so the `Run` call does look suspicious -- especially because it landed in the initial patch of the functionality (https://reviews.llvm.org/D64146) without comment.

Yes. A few weeks ago I thought it might make sense to actually set functions to invalid if `isPotentialConstantExpr()` returns `false`, but found out that it returns `false` all the time, e.g. if the function expects parameters.

I think the whole "lets compile all constexpr functions" approach will probably go away at some point anyway? When including stdlib headers, we're probably compiling a lot of code that will never run...


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D135569



More information about the cfe-commits mailing list