wide-int.cc has skipped longlong.h under clang since PR bootstrap/61146,
because clang rejected the casts on asm output operands in it.
longlong.h now builds with clang, so drop the check. A GCC built by
clang without bootstrapping, such as a cross compiler or a compiler
hosted on macOS, then uses umul_ppmm from longlong.h in wi::mul_internal
instead of the generic multiplication loop.

gcc/ChangeLog:

        PR bootstrap/61146
        * wide-int.cc: Include longlong.h with clang too.
---
 gcc/wide-int.cc | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/gcc/wide-int.cc b/gcc/wide-int.cc
index 668b2e4ea7d..4d1ca4b0b6f 100644
--- a/gcc/wide-int.cc
+++ b/gcc/wide-int.cc
@@ -36,8 +36,7 @@ along with GCC; see the file COPYING3.  If not see
 #endif
 
 #define W_TYPE_SIZE HOST_BITS_PER_WIDE_INT
-/* Do not include longlong.h when compiler is clang-based. See PR61146.  */
-#if GCC_VERSION >= 3000 && (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__)) 
&& !defined(__clang__)
+#if GCC_VERSION >= 3000 && (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__))
 typedef unsigned HOST_HALF_WIDE_INT UHWtype;
 typedef unsigned HOST_WIDE_INT UWtype;
 typedef unsigned int UQItype __attribute__ ((mode (QI)));

-- 
2.54.0

Reply via email to