Date: Tue, 22 Aug 2000 13:03:35 +1000 (EST) From: marka@nominum.com To: FreeBSD-gnats-submit@freebsd.org Subject: gnu/20767: gcc const produces invalid warning Message-ID: <200008220303.NAA57805@drugs.dv.isc.org>
next in thread | raw e-mail | index | archive | help
>Number: 20767 >Category: gnu >Synopsis: gcc const produces invalid warning >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Aug 21 20:10:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Mark Andrews >Release: FreeBSD 4.1-STABLE i386 >Organization: Nominum >Environment: FreeBSD drugs.dv.isc.org 4.1-STABLE FreeBSD 4.1-STABLE #0: Fri Aug 18 13:53:08 EST 2000 marka@drugs.dv.isc.org:/usr/obj/usr/src/sys/DRUGS i386 Using builtin specs. gcc version 2.95.2 19991024 (release) >Description: gcc incorrectly reports 'incompatible pointer type' when function is declared with 'const pointer to const pointer' arguement and is just passed pointer to pointer. Also generates error with 'const pointer to pointer' and 'pointer to const pointer', i.e. removing either of the consts still generates the warning. >How-To-Repeat: % cc xx.c xx.c: In function `main': xx.c:22: warning: passing arg 1 of `f' from incompatible pointer type #include <stdio.h> static const char *foo[] = { "test", NULL }; static int f(const char * const *args) { int i, j, k; k = 0; for (i = 0; args[i] != NULL; i++) for (j = 0; args[i][j] != '\0'; j++) k += args[i][j]; return (k); } int main(int argc, char **argv) { int i; i = f(foo); printf("%d\n", i); i = f(argv); /* This should not generate a warning! */ printf("%d\n", i); return (0); } >Fix: >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200008220303.NAA57805>