From: Chris S. <c.s...@co...> - 2006-10-18 04:07:13
|
Hi, I'm currently generating an external guile runtime (swig-runtime.h) and #including it into various files where I need to access the type system. The file contains things like: #define SWIG_IsPointer(object) SWIG_Guile_IsPointer(object) static SWIGINLINE int SWIG_Guile_IsPointer (SCM s) { .... Of course, when I #include "swig-runtime.h", I don't use every defined function, so gcc warns about the unused static functions. Are there any suggestions for how I can avoid these warnings? Thanks. -chris p.s. This is because I strongly prefer to compile with "-Wall -Werror", which I can't currently do with swig from CVS. |
From: William S F. <ws...@fu...> - 2006-10-18 18:23:18
|
Chris Shoemaker wrote: > Hi, > I'm currently generating an external guile runtime > (swig-runtime.h) and #including it into various files where I need to > access the type system. > > The file contains things like: > > #define SWIG_IsPointer(object) SWIG_Guile_IsPointer(object) > > static SWIGINLINE int > SWIG_Guile_IsPointer (SCM s) > { > .... > > > Of course, when I #include "swig-runtime.h", I don't use every defined > function, so gcc warns about the unused static functions. > > Are there any suggestions for how I can avoid these warnings? Thanks. > The python and possibly other language modules have warning suppression for this in the generated code. The same approach would have to be applied to Guile, but it would take someone keen enough to do it to provide a patch, but it shouldn't be difficult. William |
From: Chris S. <c.s...@co...> - 2006-10-19 03:55:34
|
On Wed, Oct 18, 2006 at 07:29:52PM +0100, William S Fulton wrote: > Chris Shoemaker wrote: > > Hi, > > I'm currently generating an external guile runtime > > (swig-runtime.h) and #including it into various files where I need to > > access the type system. > > > > The file contains things like: > > > > #define SWIG_IsPointer(object) SWIG_Guile_IsPointer(object) > > > > static SWIGINLINE int > > SWIG_Guile_IsPointer (SCM s) > > { > > .... > > > > > > Of course, when I #include "swig-runtime.h", I don't use every defined > > function, so gcc warns about the unused static functions. > > > > Are there any suggestions for how I can avoid these warnings? Thanks. > > > > The python and possibly other language modules have warning suppression > for this in the generated code. The same approach would have to be > applied to Guile, but it would take someone keen enough to do it to > provide a patch, but it shouldn't be difficult. I gather that the approach is to use SWIGINTERN. Patch here: http://sourceforge.net/tracker/index.php?func=detail&aid=1580193&group_id=1645&atid=301645 That patch, together with http://sourceforge.net/tracker/index.php?func=detail&aid=1579387&group_id=1645&atid=301645 provide a warning-free compile of all my generated wrappers. Please consider those patches for inclusion in 1.3.30. Thanks. -chris |
From: Chris S. <c.s...@co...> - 2006-10-27 18:09:38
|
On Wed, Oct 18, 2006 at 11:55:22PM -0400, Chris Shoemaker wrote: > On Wed, Oct 18, 2006 at 07:29:52PM +0100, William S Fulton wrote: > > The python and possibly other language modules have warning suppression > > for this in the generated code. The same approach would have to be > > applied to Guile, but it would take someone keen enough to do it to > > provide a patch, but it shouldn't be difficult. > > I gather that the approach is to use SWIGINTERN. Patch here: > http://sourceforge.net/tracker/index.php?func=detail&aid=1580193&group_id=1645&atid=301645 > > That patch, together with > http://sourceforge.net/tracker/index.php?func=detail&aid=1579387&group_id=1645&atid=301645 > provide a warning-free compile of all my generated wrappers. > > Please consider those patches for inclusion in 1.3.30. Thanks. Hi, Does anyone have any feedback on those patches? Thanks. -chris |
From: John L. <jl...@ma...> - 2006-10-27 20:31:13
|
On 10/27/06 13:09, Chris Shoemaker wrote: > On Wed, Oct 18, 2006 at 11:55:22PM -0400, Chris Shoemaker wrote: >> On Wed, Oct 18, 2006 at 07:29:52PM +0100, William S Fulton wrote: >>> The python and possibly other language modules have warning suppression >>> for this in the generated code. The same approach would have to be >>> applied to Guile, but it would take someone keen enough to do it to >>> provide a patch, but it shouldn't be difficult. >> I gather that the approach is to use SWIGINTERN. Patch here: >> http://sourceforge.net/tracker/index.php?func=detail&aid=1580193&group_id=1645&atid=301645 >> >> That patch, together with >> http://sourceforge.net/tracker/index.php?func=detail&aid=1579387&group_id=1645&atid=301645 >> provide a warning-free compile of all my generated wrappers. >> >> Please consider those patches for inclusion in 1.3.30. Thanks. > > Hi, > Does anyone have any feedback on those patches? Thanks. They mostly look ok, and I will commit them unless Matthias has any objections. diff -u -r1.7 guile.i --- Lib/guile/guile.i 7 Mar 2006 00:14:05 -0000 1.7 +++ Lib/guile/guile.i 18 Oct 2006 02:55:45 -0000 @@ -16,7 +16,7 @@ %pragma(guile) return_one_doc = "Returns $values." %define %values_as_list - %pragma(guile) beforereturn = "" + %pragma(guile) beforereturn = "gswig_list_p = 0;" %pragma(guile) return_multi_doc = "Returns a list of $num_values values: $values." %enddef %values_as_list /* the default style */ Why exactly is this needed? In guile.cxx, we already have the lines Wrapper_add_local (f,"gswig_result", "SCM gswig_result"); Wrapper_add_local (f,"gswig_list_p", "int gswig_list_p = 0"); which adds int gswig_list_p = 0 to the top of every function. It is obviously used... set to 0. John |
From: Chris S. <c.s...@co...> - 2006-10-27 21:00:37
|
On Fri, Oct 27, 2006 at 03:30:38PM -0500, John Lenz wrote: > On 10/27/06 13:09, Chris Shoemaker wrote: > > Hi, > > Does anyone have any feedback on those patches? Thanks. > > > They mostly look ok, and I will commit them unless Matthias has any > objections. > > diff -u -r1.7 guile.i > --- Lib/guile/guile.i 7 Mar 2006 00:14:05 -0000 1.7 > +++ Lib/guile/guile.i 18 Oct 2006 02:55:45 -0000 > @@ -16,7 +16,7 @@ > %pragma(guile) return_one_doc = "Returns $values." > > %define %values_as_list > - %pragma(guile) beforereturn = "" > + %pragma(guile) beforereturn = "gswig_list_p = 0;" > %pragma(guile) return_multi_doc = "Returns a list of $num_values > values: $values." > %enddef > %values_as_list /* the default style */ > > > > Why exactly is this needed? In guile.cxx, we already have the lines > > Wrapper_add_local (f,"gswig_result", "SCM gswig_result"); > Wrapper_add_local (f,"gswig_list_p", "int gswig_list_p = 0"); > > which adds int gswig_list_p = 0 to the top of every function. It is > obviously used... set to 0. > gcc distinguishes between variable initialization and variable use. If the function contains "int gswig_list_p = 0;" and no later reference to gswig_list_p, it will warn that the variable is unused. Perhaps a better solution is to optionally annotate the variable declaration with "__attribute__ ((__unused__))". Should I submit an alternate patch for that? -chris |
From: Chris S. <c.s...@co...> - 2006-10-30 02:42:30
Attachments:
silence.diff
|
On Fri, Oct 27, 2006 at 03:30:38PM -0500, John Lenz wrote: > On 10/27/06 13:09, Chris Shoemaker wrote: > > Hi, > > Does anyone have any feedback on those patches? Thanks. > > > They mostly look ok, and I will commit them unless Matthias has any > objections. Hi John, Thanks for the review. I've taken the liberty of attaching and combining both patches into one. (They're both, after all, about suppressing warnings.) And I've removed the code you quoted below and replaced it with: - Wrapper_add_local (f,"gswig_list_p", "int gswig_list_p = 0"); + Wrapper_add_local (f,"gswig_list_p", "SWIGUNUSED int gswig_list_p = 0"); as discussed. I hope that makes it easier to commit. I see that the rc cycle for 1.3.30 will start very soon, and if possible, I would very much like to include this patch in 1.3.30. Thanks. -chris > > diff -u -r1.7 guile.i > --- Lib/guile/guile.i 7 Mar 2006 00:14:05 -0000 1.7 > +++ Lib/guile/guile.i 18 Oct 2006 02:55:45 -0000 > @@ -16,7 +16,7 @@ > %pragma(guile) return_one_doc = "Returns $values." > > %define %values_as_list > - %pragma(guile) beforereturn = "" > + %pragma(guile) beforereturn = "gswig_list_p = 0;" > %pragma(guile) return_multi_doc = "Returns a list of $num_values > values: $values." > %enddef > %values_as_list /* the default style */ > > > > Why exactly is this needed? In guile.cxx, we already have the lines > > Wrapper_add_local (f,"gswig_result", "SCM gswig_result"); > Wrapper_add_local (f,"gswig_list_p", "int gswig_list_p = 0"); > > which adds int gswig_list_p = 0 to the top of every function. It is > obviously used... set to 0. > > > John > |
From: Olly B. <ol...@su...> - 2006-10-28 01:14:40
|
On 2006-10-27, Chris Shoemaker <c.s...@co...> wrote: > gcc distinguishes between variable initialization and variable use. > If the function contains "int gswig_list_p = 0;" and no later > reference to gswig_list_p, it will warn that the variable is unused. > > Perhaps a better solution is to optionally annotate the variable > declaration with "__attribute__ ((__unused__))". Should I submit an > alternate patch for that? That's rather GCC specific though. There are (at least) a couple of common idioms for suppressing such a warning which will suppress similar warnings from most other compilers too (they're also portable code so will compile with any compiler): (void)gswig_list_p; /* Suppress "unused variable" warnings. */ or: gswig_list_p = gswig_list_p; /* Suppress "unused variable" warnings. */ Cheers, Olly |
From: Chris S. <c.s...@co...> - 2006-10-28 03:29:13
|
On Sat, Oct 28, 2006 at 12:55:12AM +0000, Olly Betts wrote: > On 2006-10-27, Chris Shoemaker <c.s...@co...> wrote: > > gcc distinguishes between variable initialization and variable use. > > If the function contains "int gswig_list_p = 0;" and no later > > reference to gswig_list_p, it will warn that the variable is unused. > > > > Perhaps a better solution is to optionally annotate the variable > > declaration with "__attribute__ ((__unused__))". Should I submit an > > alternate patch for that? > > That's rather GCC specific though. Sorry, I should have been clearer. I didn't remember the name of the macro, but I should've said "SWIGUNUSED". It's defined in the appropriate conditionals. So, rather that what was in my original patch, something like the following is probably a better solution: - Printv(f->code, "gswig_list_p = 0;\n", NIL) + Printv(f->code, "SWIGUNUSED gswig_list_p = 0;\n", NIL); -chris |
From: Chris S. <c.s...@co...> - 2006-10-28 03:32:35
|
On Fri, Oct 27, 2006 at 11:28:51PM -0400, Chris Shoemaker wrote: > On Sat, Oct 28, 2006 at 12:55:12AM +0000, Olly Betts wrote: > > On 2006-10-27, Chris Shoemaker <c.s...@co...> wrote: > > > gcc distinguishes between variable initialization and variable use. > > > If the function contains "int gswig_list_p = 0;" and no later > > > reference to gswig_list_p, it will warn that the variable is unused. > > > > > > Perhaps a better solution is to optionally annotate the variable > > > declaration with "__attribute__ ((__unused__))". Should I submit an > > > alternate patch for that? > > > > That's rather GCC specific though. > > > Sorry, I should have been clearer. I didn't remember the name of the > macro, but I should've said "SWIGUNUSED". It's defined in the > appropriate conditionals. So, rather that what was in my original > patch, something like the following is probably a better solution: > > - Printv(f->code, "gswig_list_p = 0;\n", NIL) > + Printv(f->code, "SWIGUNUSED gswig_list_p = 0;\n", NIL); Gah! (It's late, folks.) I _meant_: - Wrapper_add_local (f,"gswig_list_p", "int gswig_list_p = 0"); + Wrapper_add_local (f,"gswig_list_p", "SWIGUNUSED int gswig_list_p = 0"); -chris |
From: Olly B. <ol...@su...> - 2006-10-28 03:44:06
|
On Fri, Oct 27, 2006 at 11:32:24PM -0400, Chris Shoemaker wrote: > - Wrapper_add_local (f,"gswig_list_p", "int gswig_list_p = 0"); > + Wrapper_add_local (f,"gswig_list_p", "SWIGUNUSED int gswig_list_p = 0"); Yeah, that seems reasonable to me at least. Cheers, Olly |