[Bug c/106529] New: existence of sincos is assumed
tk at giga dot or.at
gcc-bugzilla@gcc.gnu.org
Thu Aug 4 21:36:51 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106529
Bug ID: 106529
Summary: existence of sincos is assumed
Product: gcc
Version: 12.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: tk at giga dot or.at
Target Milestone: ---
Host: NetBSD/amd64
Target: NetBSD/amd64
Build: NetBSD/amd64
Created attachment 53411
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53411&action=edit
second example
NetBSD does not provide sincos (perhaps it should).
gcc 12.1.0 reports warnings that make no sense here.
Example program 1:
# cat >> sincos.c
int main() {
return sincos();
}
# gcc -o sincos sincos.c
sincos.c: In function ‘main’:
sincos.c:2:8: warning: implicit declaration of function ‘sincos’
[-Wimplicit-function-declaration]
2 | return sincos();
| ^~~~~~
sincos.c:1:1: note: include ‘<math.h>’ or provide a declaration of ‘sincos’
+++ |+#include <math.h>
1 | int main() {
sincos.c:2:8: warning: incompatible implicit declaration of built-in function
‘sincos’ [-Wbuiltin-declaration-mismatch]
2 | return sincos();
| ^~~~~~
sincos.c:2:8: note: include ‘<math.h>’ or provide a declaration of ‘sincos’
sincos.c:2:8: error: too few arguments to function ‘sincos’
I agree that in general it is helpful to include math.h for sincos(), but not
on NetBSD, where sincos() is not provided by libc.
Even more confusing, the warning comes even when math.h is already included -
example 2:
# cat > sincos.c
#include <math.h>
int main() {
return sincos();
}
# gcc -o sincos sincos.c
sincos.c: In function ‘main’:
sincos.c:3:8: warning: implicit declaration of function ‘sincos’
[-Wimplicit-function-declaration]
3 | return sincos();
| ^~~~~~
sincos.c:2:1: note: include ‘<math.h>’ or provide a declaration of ‘sincos’
1 | #include <math.h>
+++ |+#include <math.h>
2 | int main() {
sincos.c:3:8: warning: incompatible implicit declaration of built-in function
‘sincos’ [-Wbuiltin-declaration-mismatch]
3 | return sincos();
| ^~~~~~
sincos.c:3:8: note: include ‘<math.h>’ or provide a declaration of ‘sincos’
sincos.c:3:8: error: too few arguments to function ‘sincos’
Environment details:
# gcc -v
Using built-in specs.
COLLECT_GCC=/usr/pkg/gcc12/bin/gcc
COLLECT_LTO_WRAPPER=/usr/pkg/gcc12/libexec/gcc/x86_64--netbsd/12.1.0/lto-wrapper
Target: x86_64--netbsd
Configured with: ../gcc-12.1.0/configure --disable-libstdcxx-pch --enable-nls
--with-libiconv-prefix=/usr --enable-__cxa_atexit
--with-gxx-include-dir=/usr/pkg/gcc12/include/c++/ --disable-libssp
--enable-languages='c obj-c++ objc fortran c++' --enable-shared
--enable-long-long --with-local-prefix=/usr/pkg/gcc12 --enable-threads=posix
--with-boot-ldflags='-static-libstdc++ -static-libgcc -Wl,-R/usr/pkg/lib
-Wl,-zrelro -Wl,-znow ' --without-zstd --with-arch=nocona --with-tune=nocona
--with-fpmath=sse --with-system-zlib --with-gnu-ld --with-ld=/usr/bin/ld
--with-gnu-as --with-as=/usr/bin/as --prefix=/usr/pkg/gcc12
--build=x86_64--netbsd --host=x86_64--netbsd --infodir=/usr/pkg/gcc12/info
--mandir=/usr/pkg/gcc12/man
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 12.1.0 (GCC)
Running on NetBSD-9.99.99/amd64.
Savetemps:
/usr/pkg/gcc12/bin/gcc -v -save-temps sincos.c -o sincos
Using built-in specs.
COLLECT_GCC=/usr/pkg/gcc12/bin/gcc
COLLECT_LTO_WRAPPER=/usr/pkg/gcc12/libexec/gcc/x86_64--netbsd/12.1.0/lto-wrapper
Target: x86_64--netbsd
Configured with: ../gcc-12.1.0/configure --disable-libstdcxx-pch --enable-nls
--with-libiconv-prefix=/usr --enable-__cxa_atexit
--with-gxx-include-dir=/usr/pkg/gcc12/include/c++/ --disable-libssp
--enable-languages='c obj-c++ objc fortran c++' --enable-shared
--enable-long-long --with-local-prefix=/usr/pkg/gcc12 --enable-threads=posix
--with-boot-ldflags='-static-libstdc++ -static-libgcc -Wl,-R/usr/pkg/lib
-Wl,-zrelro -Wl,-znow ' --without-zstd --with-arch=nocona --with-tune=nocona
--with-fpmath=sse --with-system-zlib --with-gnu-ld --with-ld=/usr/bin/ld
--with-gnu-as --with-as=/usr/bin/as --prefix=/usr/pkg/gcc12
--build=x86_64--netbsd --host=x86_64--netbsd --infodir=/usr/pkg/gcc12/info
--mandir=/usr/pkg/gcc12/man
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 12.1.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'sincos' '-mtune=nocona'
'-march=nocona'
/usr/pkg/gcc12/libexec/gcc/x86_64--netbsd/12.1.0/cc1 -E -quiet -v sincos.c
-mtune=nocona -march=nocona -fpch-preprocess -o sincos.i
ignoring nonexistent directory
"/usr/pkg/gcc12/lib/gcc/x86_64--netbsd/12.1.0/../../../../x86_64--netbsd/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/pkg/gcc12/lib/gcc/x86_64--netbsd/12.1.0/include
/usr/pkg/gcc12/include
/usr/pkg/gcc12/lib/gcc/x86_64--netbsd/12.1.0/include-fixed
/usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'sincos' '-mtune=nocona'
'-march=nocona'
/usr/pkg/gcc12/libexec/gcc/x86_64--netbsd/12.1.0/cc1 -fpreprocessed sincos.i
-quiet -dumpbase sincos.c -dumpbase-ext .c -mtune=nocona -march=nocona -version
-o sincos.s
GNU C17 (GCC) version 12.1.0 (x86_64--netbsd)
compiled by GNU C version 12.1.0, GMP version 6.2.1, MPFR version
4.1.0, MPC version 1.1.0, isl version isl-0.16.1-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C17 (GCC) version 12.1.0 (x86_64--netbsd)
compiled by GNU C version 12.1.0, GMP version 6.2.1, MPFR version
4.1.0, MPC version 1.1.0, isl version isl-0.16.1-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: ab1d70000bedd16cbf4ffd28defbd834
sincos.c: In function ‘main’:
sincos.c:3:8: warning: implicit declaration of function ‘sincos’
[-Wimplicit-function-declaration]
3 | return sincos();
| ^~~~~~
sincos.c:2:1: note: include ‘<math.h>’ or provide a declaration of ‘sincos’
1 | #include <math.h>
+++ |+#include <math.h>
2 | int main() {
sincos.c:3:8: warning: incompatible implicit declaration of built-in function
‘sincos’ [-Wbuiltin-declaration-mismatch]
3 | return sincos();
| ^~~~~~
sincos.c:3:8: note: include ‘<math.h>’ or provide a declaration of ‘sincos’
sincos.c:3:8: error: too few arguments to function ‘sincos’
More information about the Gcc-bugs
mailing list