While compiling GDC2 today I have seen hundreds of warnings, usually one of 5
types:
../../gcc/d/d-gcc-real.h: In member function const real_value& real_t::rv()
const:
../../gcc/d/d-gcc-real.h:54: warning: dereferencing type-punned pointer will
break strict-aliasing rules
In file included from ../../gcc/d/d-builtins.c:72:
../../gcc/d/d-bi-attrs-44.h: In function handle_packed_attribute:
../../gcc/d/d-bi-attrs-44.h:211: warning: unknown conversion type character E
in format
../../gcc/d/d-bi-attrs-44.h:211: warning: too many arguments for format
../../gcc/d/dmd2/builtin.c: In member function BUILTIN
FuncDeclaration::isBuiltin():
../../gcc/d/dmd2/builtin.c:44: warning: unused variable FeZe
../../gcc/d/dmd2/builtin.c:45: warning: unused variable FeZe2
../../gcc/d/dmd2/toobj.c: In member function virtual void
ClassDeclaration::toObjFile(int):
../../gcc/d/dmd2/toobj.c:691: warning: comparison between signed and unsigned
integer expressions
../../gcc/d/dmd2/toobj.c:693: warning: comparison between signed and unsigned
integer expressions
In file included from ../../gcc/d/dmd2/root.h:29,
from ../../gcc/d/dmd2/total.h:24,
from ../../gcc/d/d-cppmngl.cc:25:
../../gcc/d/dmd2/dchar.h:155: warning: unused parameter pstart
Comments:
- Unused variable warning: this is useful to avoid bugs;
- Type-punned pointer warning: so far I have never received an answer to my
questions about this possible problem in D.
- Printing functions wrong argument number warning: this is something D needs
to add, for writef, writefln, printf, sprintf, etc (even if it can't work in
all situations). Having those as run-time errors is silly in a language that
unlike dynamic languages forces you to compile the code. This is an example of
dynamic typing where I don't want it.
- Signed unsigned comparison warning: unless D invents some other very good
solution, this warning is a ugly but necessary patch over one hole of the C
language that D too has.
Bye,
bearophile