Izaron added a comment.

A builtin is considered "constexpr" if it has `E` in its attributes in 
`Builtins.def`.

The list of constexpr builtins is consistent, the code in `ExprConstant.cpp` 
(where the actual constant evaluation of builtins is being done) guards it.
If builtin is not marked with `E`, it surely won't be evaluated, and vice versa 
- if builtin is marked but there is no code for evaluating it, there is a 
`llvm_unreachable`.

This macro will be needed because we are making constexpr `<cmath>` and 
`<cstdlib>`. We will conditionally make the functions constexpr until all 
supported compilers have full support.

We had a discussion where we found out that we need `__has_builtin_constexpr`: 
https://discourse.llvm.org/t/how-do-we-plan-to-make-constexpr-cmath-and-cstdlib/65930
 Please read it if you wonder why we need it =) Thank you for your attention!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D136036

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

Reply via email to