Re: C99 compliance for src/port/snprintf.c

From: Andres Freund <andres(at)anarazel(dot)de>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Dave Page <dpage(at)pgadmin(dot)org>
Cc: David Steele <david(at)pgmasters(dot)net>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: C99 compliance for src/port/snprintf.c
Date: 2018-08-16 14:22:20
Message-ID: 20180816142220.yowdd6626c6mea5o@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-www

Hi,

On 2018-08-16 04:18:59 -0700, Andres Freund wrote:
> Besides gaur, I'm also awaiting casteroides' results. The latter
> definitely does support C99, but I'm not sure autconf pushes hard
> enough. I think every other relevant animal has reported back.

Casteroides wasn't a problem, -D_STDC_C99= does the trick.

But enabling C99 support triggered a somewhat weird failure on
protosciurus (also solaris, but gcc)
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=protosciurus&dt=2018-08-16%2013%3A37%3A46

It detects C99 support successfully via -std=gnu99 but then fails
somewhere during build with:

gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -g -I/usr/local/include -m64 -I../../../../src/include -c -o gistutil.o gistutil.c
In file included from gistutil.c:24:
../../../../src/include/utils/float.h: In function `get_float4_infinity':
../../../../src/include/utils/float.h:71: error: `__builtin_infinity' undeclared (first use in this function)
../../../../src/include/utils/float.h:71: error: (Each undeclared identifier is reported only once
../../../../src/include/utils/float.h:71: error: for each function it appears in.)
../../../../src/include/utils/float.h: In function `get_float8_infinity':
../../../../src/include/utils/float.h:91: error: `__builtin_infinity' undeclared (first use in this function)
../../../../src/include/utils/float.h: In function `get_float4_nan':
../../../../src/include/utils/float.h:108: error: pointer value used where a floating point value was expected
../../../../src/include/utils/float.h: In function `get_float8_nan':
../../../../src/include/utils/float.h:121: error: pointer value used where a floating point value was expected
../../../../src/include/utils/float.h: In function `check_float4_val':
../../../../src/include/utils/float.h:136: warning: implicit declaration of function `__builtin_isinf'
../../../../src/include/utils/float.h: In function `float4_eq':
../../../../src/include/utils/float.h:283: warning: implicit declaration of function `__builtin_isnan'

While I'd personally have no problem kicking gcc 3.4 to the curb, I'm
still confused what causes this error mode. Kinda looks like
out-of-sync headers with gcc or something.

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Surafel Temesgen 2018-08-16 14:27:45 FETCH FIRST clause PERCENT option
Previous Message Andres Freund 2018-08-16 14:10:05 Re: remove ancient pre-dlopen dynloader code

Browse pgsql-www by date

  From Date Subject
Next Message Bruce Momjian 2018-08-16 14:35:01 Problem with OpenSCG downloads
Previous Message Andres Freund 2018-08-16 13:00:30 Re: C99 compliance for src/port/snprintf.c