summaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2014-10-28 13:26:24 -0700
committerMike Frysinger <vapier@gentoo.org>2016-01-07 17:22:30 -0500
commit7f49b7c0200e745c5f0d3e9245a6e4590bd57b1d (patch)
tree7809a20e25b84bae799a452fa7f1abe779851aa2 /stdlib
parent1f89b8d881b5dda6447b8be8ff40c1020b1f548e (diff)
longlong.h: Disable alpha umul_ppmm for old g++
Causes "unexpected AST of kind MULT_HIGHPART" error with bootstrap from gcc 4.8.
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/longlong.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/stdlib/longlong.h b/stdlib/longlong.h
index 650ef3173f..1bc3e659d0 100644
--- a/stdlib/longlong.h
+++ b/stdlib/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; \