================ @@ -3464,6 +3464,34 @@ Query for this feature with ``__has_builtin(__builtin_trap)``. ``__builtin_arm_trap`` is lowered to the ``llvm.aarch64.break`` builtin, and then to ``brk #payload``. +``__builtin_allow_runtime_check`` ---------------- AaronBallman wrote:
> It needs to be compiler time lowered, so I think it should literals. In that case, I think we want *constant expression* not just literal, right? e.g., ``` constexpr const char *name = "name of check"; if (__builtin_allow_runtime_check(name)) { } ``` is still able to be lowered at compile time. The reason I ask is because I'm thinking about template metaprogramming cases where you might want to do something along the lines of: ``` template <typename Ty> struct S { void mem_fun() { if (__builtin_allow_runtime_check(Ty::check_name) && stuff) { } } }; ``` but maybe this is not a compelling use case? I don't insist on constant expression support, more just trying to verify that we support the expected usage patterns. https://github.com/llvm/llvm-project/pull/87568 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits