Skip to content

Commit 2decb22

Browse files
richardlaudanielleadams
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 <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/main@{#86904} Refs: v8/v8@c5ab3e4 PR-URL: #47736 Fixes: #47623 Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Jiawen Geng <[email protected]>
1 parent 42f164c commit 2decb22

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

deps/v8/src/codegen/tnode.h

Lines changed: 3 additions & 2 deletions
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)