Mail Archives: djgpp-workers/2001/06/08/17:35:55
According to Eli Zaretskii:
>
> Per past discussions, here are the compiler options I suggest to add
> to gcc.opt and gcc-l.opt:
>
> -Wundef
> -Wcast-align
> -Wconversion
> -Wsign-compare
>
> I didn't yet try to build the library with these; perhaps someone
> could try that.
I did. We get a lot of warnings. Here's some diffs reflecting changes
necessary (hand-pasted in):
Index: src/libc/ansi/locale/mbstowcs.c
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/ansi/locale/mbstowcs.c,v
retrieving revision 1.1
diff -p -u -r1.1 mbstowcs.c
--- src/libc/ansi/locale/mbstowcs.c 1994/11/29 09:18:20 1.1
+++ src/libc/ansi/locale/mbstowcs.c 2001/06/08 21:19:36
@@ -4,8 +4,8 @@
size_t
mbstowcs(wchar_t *wcs, const char *s, size_t n)
{
- int i;
- for (i=0; s[i] && (i<n-1); i++)
+ size_t i;
+ for (i=0; s[i] && (i+1<n); i++)
wcs[i] = s[i];
wcs[i] = 0;
return i;
Index: src/libc/ansi/locale/wcstombs.c
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/ansi/locale/wcstombs.c,v
retrieving revision 1.1
diff -p -u -r1.1 wcstombs.c
--- src/libc/ansi/locale/wcstombs.c 1994/11/29 09:18:12 1.1
+++ src/libc/ansi/locale/wcstombs.c 2001/06/08 21:19:36
@@ -4,8 +4,8 @@
size_t
wcstombs(char *s, const wchar_t *wcs, size_t n)
{
- int i;
- for (i=0; wcs[i] && (i<n-1); i++)
+ size_t i;
+ for (i=0; wcs[i] && (i+1<n); i++)
s[i] = wcs[i];
s[i] = 0;
return i;
Index: src/libc/ansi/stdio/doprnt.c
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/ansi/stdio/doprnt.c,v
retrieving revision 1.8
diff -p -u -r1.8 doprnt.c
--- src/libc/ansi/stdio/doprnt.c 1999/07/04 14:18:04 1.8
+++ src/libc/ansi/stdio/doprnt.c 2001/06/08 21:19:42
@@ -327,7 +327,7 @@ _doprnt(const char *fmt0, va_list argp,
*/
char *p /*, *memchr() */;
- if ((p = memchr(t, 0, prec)))
+ if ((p = memchr(t, 0, (size_t)prec)))
{
size = p - t;
if (size > prec)
Index: src/libc/ansi/stdio/doscan.c
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/ansi/stdio/doscan.c,v
retrieving revision 1.9
diff -p -u -r1.9 doscan.c
--- src/libc/ansi/stdio/doscan.c 1999/08/03 08:49:23 1.9
+++ src/libc/ansi/stdio/doscan.c 2001/06/08 21:19:45
@@ -366,7 +366,8 @@ _instr(char *ptr, int type, int len, FIL
static const char *
_getccl(const unsigned char *s)
{
- register int c, t;
+ register int t;
+ size_t c;
t = 0;
if (*s == '^') {
> Finally, do we still need -fno-strength-reduce? I'd think we could
> remove that now. If we are not sure, perhaps someone could ask on the
> GCC mailing list.
I'm trying with that one removed.
Some warnings I don't understand and can't get to go away (I only
tried to remove the todigit ones and gave up):
make -C ansi/stdio
gcc ... -c doprnt.c
cc1.exe: warnings being treated as errors
doprnt.c: In function `_doprnt':
doprnt.c:167: warning: passing arg 1 of `todigit' with different width due to prototype
doprnt.c:184: warning: passing arg 1 of `todigit' with different width due to prototype
doprnt.c:277: warning: passing arg 5 of `cvtl' with different width due to prototype
doprnt.c: In function `cvtl':
doprnt.c:597: warning: passing arg 5 of `roundl' with different width due to prototype
doprnt.c:621: warning: passing arg 5 of `roundl' with different width due to prototype
doprnt.c:683: warning: passing arg 5 of `roundl' with different width due to prototype
doprnt.c:696: warning: passing arg 3 of `exponentl' with different width due to prototype
doprnt.c:763: warning: passing arg 5 of `roundl' with different width due to prototype
doprnt.c: In function `roundl':
doprnt.c:800: warning: passing arg 1 of `todigit' with different width
due to prototype
make.exe[3]: *** [doprnt.o] Error 1
make.exe[2]: *** [all_subs] Error 2
make.exe[1]: *** [all] Error 2
make.exe: *** [subs] Error 2
Finally an observation. Look at doscan.c above. We have variables
declared as register. As I understand this this make optimisation by
the compiler difficult. Shouldn't we change to not use "register"?
Right,
MartinS
- Raw text -