From dc2edb520a534fd0c2af169d46b4d892208e8f42 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 14 Jul 2015 09:17:41 -0700 Subject: [PATCH] Sync longlong.h with GCC Sync with GCC 2014-10-28 Richard Henderson * longlong.h [__alpha] (umul_ppmm): Disable for c++. --- include/ChangeLog | 7 +++++++ include/longlong.h | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/include/ChangeLog b/include/ChangeLog index 8cacfa85655..9fc5469176f 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,10 @@ +2015-07-14 H.J. Lu + + Sync with GCC + 2014-10-28 Richard Henderson + + * longlong.h [__alpha] (umul_ppmm): Disable for c++. + 2015-07-14 H.J. Lu Sync with GCC diff --git a/include/longlong.h b/include/longlong.h index 4f2c4f5dfcc..a0b2ce1f7f2 100644 --- a/include/longlong.h +++ b/include/longlong.h @@ -139,6 +139,9 @@ extern const UQItype __clz_tab[256] attribute_hidden; #endif /* __aarch64__ */ #if defined (__alpha) && W_TYPE_SIZE == 64 +/* There is a bug in g++ before version 5 that + errors on __builtin_alpha_umulh. */ +#if !defined(__cplusplus) || __GNUC__ >= 5 #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ @@ -146,6 +149,7 @@ extern const UQItype __clz_tab[256] attribute_hidden; (pl) = __m0 * __m1; \ } while (0) #define UMUL_TIME 46 +#endif /* !c++ */ #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UDItype __r; \ -- 2.30.2