Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- https://gcc.gnu.org/ml/gcc-patches/2009-06/msg01249.html
- --- gcc/gcc/toplev.c (revision 148539)
- +++ gcc/gcc/toplev.c (revision 148540)
- @@ -532,11 +532,11 @@ read_integral_parameter (const char *p,
- return atoi (p);
- }
- -/* When compiling with a recent enough GCC, we use the GNU C "extern inline"
- - for floor_log2 and exact_log2; see toplev.h. That construct, however,
- - conflicts with the ISO C++ One Definition Rule. */
- +#if GCC_VERSION < 3004
- -#if GCC_VERSION < 3004 || !defined (__cplusplus)
- +/* The functions floor_log2 and exact_log2 are defined as inline
- + functions in toplev.h if GCC_VERSION >= 3004. The definitions here
- + are used for older versions of gcc. */
- /* Given X, an unsigned number, return the largest int Y such that 2**Y <= X.
- If X is 0, return -1. */
- @@ -549,9 +549,6 @@ floor_log2 (unsigned HOST_WIDE_INT x)
- if (x == 0)
- return -1;
- -#ifdef CLZ_HWI
- - t = HOST_BITS_PER_WIDE_INT - 1 - (int) CLZ_HWI (x);
- -#else
- if (HOST_BITS_PER_WIDE_INT > 64)
- if (x >= (unsigned HOST_WIDE_INT) 1 << (t + 64))
- t += 64;
- @@ -568,7 +565,6 @@ floor_log2 (unsigned HOST_WIDE_INT x)
- t += 2;
- if (x >= ((unsigned HOST_WIDE_INT) 1) << (t + 1))
- t += 1;
- -#endif
- return t;
- }
- @@ -581,14 +577,10 @@ exact_log2 (unsigned HOST_WIDE_INT x)
- {
- if (x != (x & -x))
- return -1;
- -#ifdef CTZ_HWI
- - return x ? CTZ_HWI (x) : -1;
- -#else
- return floor_log2 (x);
- -#endif
- }
- -#endif /* GCC_VERSION < 3004 || !defined (__cplusplus) */
- +#endif /* GCC_VERSION < 3004 */
- /* Handler for fatal signals, such as SIGSEGV. These are transformed
- into ICE messages, which is much more user friendly. In case the
- --- gcc/gcc/toplev.h (revision 148539)
- +++ gcc/gcc/toplev.h (revision 148540)
- @@ -169,14 +169,17 @@ extern void decode_d_option (const char
- extern bool fast_math_flags_set_p (void);
- extern bool fast_math_flags_struct_set_p (struct cl_optimization *);
- +/* Inline versions of the above for speed. */
- +#if GCC_VERSION < 3004
- +
- /* Return log2, or -1 if not exact. */
- extern int exact_log2 (unsigned HOST_WIDE_INT);
- /* Return floor of log2, with -1 for zero. */
- extern int floor_log2 (unsigned HOST_WIDE_INT);
- -/* Inline versions of the above for speed. */
- -#if GCC_VERSION >= 3004
- +#else /* GCC_VERSION >= 3004 */
- +
- # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
- # define CLZ_HWI __builtin_clzl
- # define CTZ_HWI __builtin_ctzl
- @@ -188,17 +191,18 @@ extern int floor_log2 (
- # define CTZ_HWI __builtin_ctz
- # endif
- -extern inline int
- +static inline int
- floor_log2 (unsigned HOST_WIDE_INT x)
- {
- return x ? HOST_BITS_PER_WIDE_INT - 1 - (int) CLZ_HWI (x) : -1;
- }
- -extern inline int
- +static inline int
- exact_log2 (unsigned HOST_WIDE_INT x)
- {
- return x == (x & -x) && x ? (int) CTZ_HWI (x) : -1;
- }
- +
- #endif /* GCC_VERSION >= 3004 */
- /* Functions used to get and set GCC's notion of in what directory
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement