Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c - Mailing list pgsql-committers

From Tom Lane
Subject Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c
Date
Msg-id 15861.1550256615@sss.pgh.pa.us
Whole thread Raw
In response to Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Responses Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c  (Alvaro Herrera <alvherre@2ndquadrant.com>)
List pgsql-committers
Alvaro Herrera <alvherre@2ndquadrant.com> writes:
> Hmm, this should fix the build, but I'm rushing out to lunch -- maybe
> I'm missing something.

> diff --git a/src/port/pg_bitutils.c b/src/port/pg_bitutils.c
> index 97bfcebe4e1..e0198f3ab35 100644
> --- a/src/port/pg_bitutils.c
> +++ b/src/port/pg_bitutils.c
> @@ -90,9 +90,11 @@ pg_popcount_available(void)
>  static int
>  pg_popcount32_choose(uint32 word)
>  {
> +#if defined(HAVE__GET_CPUID) || defined(HAVE__CPUID)
>      if (pg_popcount_available())
>          pg_popcount32 = pg_popcount32_hw;
>      else
> +#endif
>          pg_popcount32 = pg_popcount32_builtin;

Meh.  I don't see why this entire function should exist if there
is nothing for it to do.  I'm inclined to think that somewhere
there needs to be a symbol NEED_POPCOUNT_CHOOSING that is only
enabled if we have all three of HAVE__BUILTIN_POPCOUNT, nonempty
CFLAGS_POPCOUNT, and HAVE__GET_CPUID || HAVE__CPUID.  Possibly
we should gate building of pg_bitutils_hwpopcnt.c that way too?
Not much point in building that file if we have no way to figure
out when to use it.

            regards, tom lane


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Refactor index cost estimation functions in view ofIndexClause
Next
From: Alvaro Herrera
Date:
Subject: pgsql: Revert attempts to use POPCNT etc instructions