Package: g++-4.2 Version: 4.2.2-5 Severity: wishlist
The warning generated at gcc/cp/call.c:4548 doesn't have a warning type associated with it, so there's no way to turn this warning into an error. This is a very serious warning, as indicated by the fact that it tells you the call will abort at runtime. If a user doesn't notice this warning, debugging the problem is very difficult. If one could add something like -Werror=pass-non-POD to the gcc options, then this would save quite a few headaches here :) Maybe something along the lines of... --- gcc-20071008.orig/gcc/c.opt 2007-09-01 16:49:07.000000000 -0400 +++ gcc-20071008/gcc/c.opt 2008-01-11 10:09:57.000000000 -0500 @@ -330,6 +330,10 @@ C ObjC C++ ObjC++ Var(warn_parentheses) Warn about possibly missing parentheses +Wpass-non-pod +C++ Var(warn_pass_non_pod) +Warn about passing non-POD types through '...' + Wpmf-conversions C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warn when converting the type of pointers to member functions diff -urN gcc-20071008.orig/gcc/cp/call.c gcc-20071008/gcc/cp/call.c --- gcc-20071008.orig/gcc/cp/call.c 2007-09-13 08:57:52.000000000 -0400 +++ gcc-20071008/gcc/cp/call.c 2008-01-11 10:09:53.000000000 -0500 @@ -4545,7 +4545,7 @@ there is no need to emit a warning, since the expression won't be evaluated. We keep the builtin_trap just as a safety check. */ if (!skip_evaluation) - warning (0, "cannot pass objects of non-POD type %q#T through %<...%>; " + warning (OPT_Wpass_non_pod, "cannot pass objects of non-POD type %q#T through %<...%>; " "call will abort at runtime", TREE_TYPE (arg)); arg = call_builtin_trap (); arg = build2 (COMPOUND_EXPR, integer_type_node, arg, -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 2.6.23-1-amd64 (SMP w/4 CPU cores) Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages g++-4.2 depends on: ii gcc-4.2 4.2.2-5 The GNU C compiler ii gcc-4.2-base 4.2.2-5 The GNU Compiler Collection (base ii libc6 2.7-5 GNU C Library: Shared libraries ii libstdc++6-4.2-dev 4.2.2-5 The GNU Standard C++ Library v3 (d g++-4.2 recommends no packages. -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]