Skip to content

Commit cce372e

Browse files
richardlauMoLow
authored andcommitted
deps: V8: cherry-pick c5ab3e4f0c5a
Original commit message: libstdc++: fix incomplete type in v8::internal::is_subtype<T, U> Using std::convertible with incomplete types is UB. However, till GCC 12 it was accepted and std::convertible returned false. This fails now for e.g. v8::internal::WasmArray. Use std::disjunction and std::conjunction instead which are short- circuiting, because std::is_base_of<T, T> is already true. Bug: chromium:957519 Change-Id: Ia26643dbdf0fb00d5586c71ae6b18e8d0f3cf96e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4394663 Commit-Queue: Stephan Hartmann <stha09@googlemail.com> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#86904} Refs: v8/v8@c5ab3e4 PR-URL: #47736 Fixes: #47623 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
1 parent 3dddc01 commit cce372e

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

deps/v8/src/codegen/tnode.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,9 @@ using BuiltinPtr = Smi;
266266
template <class T, class U>
267267
struct is_subtype {
268268
static const bool value =
269-
std::is_base_of<U, T>::value || (std::is_same<U, MaybeObject>::value &&
270-
std::is_convertible<T, Object>::value);
269+
std::disjunction<std::is_base_of<U, T>,
270+
std::conjunction<std::is_same<U, MaybeObject>,
271+
std::is_convertible<T, Object>>>::value;
271272
};
272273
template <class T1, class T2, class U>
273274
struct is_subtype<UnionT<T1, T2>, U> {

0 commit comments

Comments
 (0)