Warning problems with egcs-1.1 and STL

Dirk Zoller Dirk.Zoller@rhein-main.netsurf.de
Wed Sep 16 01:43:00 GMT 1998


Dear Sirs and Madams,

I consider it a nuisance when include files warn. Unfortunately when
turning on some useful warning options, then the STL warns a lot.

Two suggestions:

 1)  Give us pragmas to turn on/off warnings selectively.
      The whole puristic discussion about
pragmas in the manual
      is pointless. Any sane person uses pragmas
like this:

        #if defined _MSC_VER
        # pragma warn(blabla)
        #elif defined __GNUG__
        # pragma warn(bla bla)
        #endif

      Bashing pragma for being essentially
undefined by any
      standard is wrong. They can be just
another way to specify what
      commandline options specify but selectively
from within the
      source file. Obviously they are just
as non-standard as the
      commanline options are and obviously
they are useful in some
      situations.

 2)  Print "error:" in lines which indicate errors. Not just
nothing as
      opposed to "warning:". You just can't
search for that nothing!!
      When searching a long log file for the
serious problems I like
      most what IBM's xlC does: It prints
(W) for warnings and (S) for
      errors and (F) for fatal errors (compiler
problems). Searching
      for these tokens in the log is most
easy.

Attached is the offending log from some harmless STL usage with
some most useful warnings turned on.

I'm using egcs-1.1b on Linux, with pcg patches applied.
Best regards

Dirk Zoller

-- 
Dirk Zoller 
Remove '_' from the e-mail adress.
 
cd /home/duz/pnl/stl/
rm -f *.s; make -k stl_virtual.s RELEASE=yes
gcc -funroll-loops -I/home/duz/pnl/include/ -fPIC -pipe -Wall -mpentium -Wall -W -Wcast-align -Wmissing-declarations -Woverloaded-virtual -Wwrite-strings -fno-exceptions -fno-rtti -fnew-abi -fvtable-thunks -fno-implicit-templates -fno-exceptions -O6 -fomit-frame-pointer -S stl_virtual.cc -o stl_virtual.s-
/usr/local/include/g++/stl_alloc.h: In function `static void ** simple_alloc<void *,virtual_cmp>::allocate<void *, virtual_cmp>(unsigned int)':
/usr/local/include/g++/stl_vector.h:334:   instantiated from `vector<void *,virtual_cmp>::insert_aux<void *, virtual_cmp>(void **, void *const &)'
stl_virtual.cc:33:   instantiated from here
/usr/local/include/g++/stl_alloc.h:221: no method `virtual_cmp::allocate'
/usr/local/include/g++/stl_alloc.h:221: warning: control reaches end of non-void function `simple_alloc<void *,virtual_cmp>::allocate<void *, virtual_cmp>(unsigned int)'
/usr/local/include/g++/stl_alloc.h: In function `static void simple_alloc<void *,virtual_cmp>::deallocate<void *, virtual_cmp>(void **, unsigned int)':
/usr/local/include/g++/stl_vector.h:69:   instantiated from `vector<void *,virtual_cmp>::deallocate<void *, virtual_cmp>()'
/usr/local/include/g++/stl_vector.h:351:   instantiated from `vector<void *,virtual_cmp>::insert_aux<void *, virtual_cmp>(void **, void *const &)'
stl_virtual.cc:33:   instantiated from here
/usr/local/include/g++/stl_alloc.h:225: no method `virtual_cmp::deallocate'
/usr/local/include/g++/stl_vector.h: In method `void vector<void *,virtual_cmp>::insert_aux<void *, virtual_cmp>(void **, void *const &)':
stl_virtual.cc:33:   instantiated from here
/usr/local/include/g++/stl_vector.h:334: warning: `void ** new_start' might be used uninitialized in this function
/usr/local/include/g++/stl_vector.h: In method `class vector<void *,virtual_cmp> & vector<void *,virtual_cmp>::operator =<void *, virtual_cmp>(const class vector<void *,virtual_cmp> &)':
stl_virtual.cc:33:   instantiated from here
/usr/local/include/g++/stl_vector.h:226: warning: `void ** result' might be used uninitialized in this function
/usr/local/include/g++/stl_vector.h: In method `void vector<void *,virtual_cmp>::insert<void *, virtual_cmp>(void **, unsigned int, void *const &)':
/usr/local/include/g++/stl_vector.h:183:   instantiated from `vector<void *,virtual_cmp>::insert<void *, virtual_cmp>(void **, long int, void *const &)'
/usr/local/include/g++/stl_vector.h:167:   instantiated from `vector<void *,virtual_cmp>::insert<void *, virtual_cmp>(void **)'
stl_virtual.cc:33:   instantiated from here
/usr/local/include/g++/stl_vector.h:382: warning: `void ** new_start' might be used uninitialized in this function
/usr/local/include/g++/stl_hashtable.h: In method `hashtable<void *,void *,virtual_hash,identity<void *>,equal_to<void *>,__default_alloc_template<false,0> >::hashtable<void *, void *, virtual_hash, identity<void *>, equal_to<void *>, alloc>(unsigned int, const struct virtual_hash &, const struct equal_to<void *> &)':
/usr/local/include/g++/stl_hash_set.h:74:   instantiated from `hash_set<void *,virtual_hash,equal_to<void *>,__default_alloc_template<false,0> >::hash_set<void *, virtual_hash, equal_to<void *>, alloc>()'
stl_virtual.cc:36:   instantiated from here
/usr/local/include/g++/stl_hashtable.h:220: warning: value computed is not used
/usr/local/include/g++/stl_algobase.h: In function `void swap<equal_to<void *>>(struct equal_to<void *> &, struct equal_to<void *> &)':
/usr/local/include/g++/stl_hashtable.h:252:   instantiated from `hashtable<void *,void *,virtual_hash,identity<void *>,equal_to<void *>,__default_alloc_template<false,0> >::swap<void *, void *, virtual_hash, identity<void *>, equal_to<void *>, alloc>(hashtable<void *,void *,virtual_hash,identity<void *>,equal_to<void *>,__default_alloc_template<false,0> > &)'
/usr/local/include/g++/stl_hash_set.h:124:   instantiated from `hash_set<void *,virtual_hash,equal_to<void *>,__default_alloc_template<false,0> >::swap<void *, virtual_hash, equal_to<void *>, alloc>(hash_set<void *,virtual_hash,equal_to<void *>,__default_alloc_template<false,0> > &)'
stl_virtual.cc:36:   instantiated from here
/usr/local/include/g++/stl_algobase.h:76: warning: statement with no effect
/usr/local/include/g++/stl_algobase.h:77: warning: statement with no effect
/usr/local/include/g++/stl_algobase.h: In function `void swap<identity<void *>>(struct identity<void *> &, struct identity<void *> &)':
/usr/local/include/g++/stl_hashtable.h:253:   instantiated from `hashtable<void *,void *,virtual_hash,identity<void *>,equal_to<void *>,__default_alloc_template<false,0> >::swap<void *, void *, virtual_hash, identity<void *>, equal_to<void *>, alloc>(hashtable<void *,void *,virtual_hash,identity<void *>,equal_to<void *>,__default_alloc_template<false,0> > &)'
/usr/local/include/g++/stl_hash_set.h:124:   instantiated from `hash_set<void *,virtual_hash,equal_to<void *>,__default_alloc_template<false,0> >::swap<void *, virtual_hash, equal_to<void *>, alloc>(hash_set<void *,virtual_hash,equal_to<void *>,__default_alloc_template<false,0> > &)'
stl_virtual.cc:36:   instantiated from here
/usr/local/include/g++/stl_algobase.h:76: warning: statement with no effect
/usr/local/include/g++/stl_algobase.h:77: warning: statement with no effect
/usr/local/include/g++/stl_hashtable.h: In method `hashtable<pair<void *const,void *>,void *,virtual_hash,select1st<pair<void *const,void *> >,equal_to<void *>,__default_alloc_template<false,0> >::hashtable<pair<void *const,void *>, void *, virtual_hash, select1st<pair<void *const,void *> >, equal_to<void *>, alloc>(unsigned int, const struct virtual_hash &, const struct equal_to<void *> &)':
/usr/local/include/g++/stl_hash_map.h:78:   instantiated from `hash_map<void *,void *,virtual_hash,equal_to<void *>,__default_alloc_template<false,0> >::hash_map<void *, void *, virtual_hash, equal_to<void *>, alloc>()'
stl_virtual.cc:39:   instantiated from here
/usr/local/include/g++/stl_hashtable.h:220: warning: value computed is not used
/usr/local/include/g++/stl_algobase.h: In function `void swap<select1st<pair<void *const,void *> >>(struct select1st<pair<void *const,void *> > &, struct select1st<pair<void *const,void *> > &)':
/usr/local/include/g++/stl_hashtable.h:253:   instantiated from `hashtable<pair<void *const,void *>,void *,virtual_hash,select1st<pair<void *const,void *> >,equal_to<void *>,__default_alloc_template<false,0> >::swap<pair<void *const,void *>, void *, virtual_hash, select1st<pair<void *const,void *> >, equal_to<void *>, alloc>(hashtable<pair<void *const,void *>,void *,virtual_hash,select1st<pair<void *const,void *> >,equal_to<void *>,__default_alloc_template<false,0> > &)'
/usr/local/include/g++/stl_hash_map.h:128:   instantiated from `hash_map<void *,void *,virtual_hash,equal_to<void *>,__default_alloc_template<false,0> >::swap<void *, void *, virtual_hash, equal_to<void *>, alloc>(hash_map<void *,void *,virtual_hash,equal_to<void *>,__default_alloc_template<false,0> > &)'
stl_virtual.cc:39:   instantiated from here
/usr/local/include/g++/stl_algobase.h:76: warning: statement with no effect
/usr/local/include/g++/stl_algobase.h:77: warning: statement with no effect
/usr/local/include/g++/stl_vector.h: In method `void vector<void *,virtual_cmp>::reserve<void *, virtual_cmp>(unsigned int)':
/usr/local/include/g++/stl_vector.h:226: warning: `void ** result' might be used uninitialized in this function
/usr/local/include/g++/stl_vector.h: In method `vector<void *,virtual_cmp>::vector<void *, virtual_cmp>(const class vector<void *,virtual_cmp> &)':
/usr/local/include/g++/stl_vector.h:226: warning: `void ** result' might be used uninitialized in this function
/usr/local/include/g++/stl_vector.h: In method `vector<void *,virtual_cmp>::vector<void *, virtual_cmp>(unsigned int)':
/usr/local/include/g++/stl_vector.h:214: warning: `void ** result' might be used uninitialized in this function
/usr/local/include/g++/stl_vector.h: In method `vector<void *,virtual_cmp>::vector<void *, virtual_cmp>(long int, void *const &)':
/usr/local/include/g++/stl_vector.h:214: warning: `void ** result' might be used uninitialized in this function
/usr/local/include/g++/stl_vector.h: In method `vector<void *,virtual_cmp>::vector<void *, virtual_cmp>(int, void *const &)':
/usr/local/include/g++/stl_vector.h:214: warning: `void ** result' might be used uninitialized in this function
/usr/local/include/g++/stl_vector.h: In method `vector<void *,virtual_cmp>::vector<void *, virtual_cmp>(unsigned int, void *const &)':
/usr/local/include/g++/stl_vector.h:214: warning: `void ** result' might be used uninitialized in this function
/usr/local/include/g++/stl_vector.h: In method `void vector<void *,virtual_cmp>::fill_initialize<void *, virtual_cmp>(unsigned int, void *const &)':
/usr/local/include/g++/stl_vector.h:214: warning: `void ** result' might be used uninitialized in this function
/usr/local/include/g++/stl_vector.h: In method `void ** vector<void *,virtual_cmp>::allocate_and_fill<void *, virtual_cmp>(unsigned int, void *const &)':
/usr/local/include/g++/stl_vector.h:214: warning: `void ** result' might be used uninitialized in this function
make: *** [stl_virtual.s] Error 1

Compilation exited abnormally with code 2 at Wed Sep 16 08:19:23


More information about the Gcc-bugs mailing list