From a6cc04e2e21212cd6dae6d868002549bfd0cba21 Mon Sep 17 00:00:00 2001 From: Stephan Hartmann Date: Mon, 3 Apr 2023 12:19:34 +0200 Subject: [PATCH 2/2] libstdc++: fix incomplete type in v8::internal::is_subtype 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 is already true. Bug: chromium:957519 Change-Id: Ia26643dbdf0fb00d5586c71ae6b18e8d0f3cf96e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4394663 Commit-Queue: Stephan Hartmann Reviewed-by: Clemens Backes Cr-Commit-Position: refs/heads/main@{#86904} --- deps/v8/src/codegen/tnode.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deps/v8/src/codegen/tnode.h b/deps/v8/src/codegen/tnode.h index 1f2a3dcfd9c5e3007d2de5bbe730eaac1aec3066..9360425c2edfc5e2369152a0f75aae21f3120645 100644 --- a/deps/v8/src/codegen/tnode.h +++ b/deps/v8/src/codegen/tnode.h @@ -266,8 +266,9 @@ using BuiltinPtr = Smi; template struct is_subtype { static const bool value = - std::is_base_of::value || (std::is_same::value && - std::is_convertible::value); + std::disjunction, + std::conjunction, + std::is_convertible>>::value; }; template struct is_subtype, U> { -- 2.40.0