On Fri, Sep 21, 2012 at 7:58 AM, Dodji Seketeli <do...@redhat.com> wrote:

> +    for (tree d = getdecls (); d; d = TREE_CHAIN (d))
> +      {
> +       /* There are cases where D itself is a TREE_LIST.  See in
> +          push_local_binding where the list of decls returned by
> +          getdecls is built.  */
> +       decl = TREE_CODE (d) == TREE_LIST ? TREE_VALUE (d) : d;
> +       if (TREE_CODE (decl) == VAR_DECL
> +           && (! TREE_USED (decl) || !DECL_READ_P (decl))
> +           && ! DECL_IN_SYSTEM_HEADER (decl)
> +           && DECL_NAME (decl) && ! DECL_ARTIFICIAL (decl)
> +           && TREE_TYPE (decl) != error_mark_node
> +           && (!CLASS_TYPE_P (TREE_TYPE (decl))
> +               || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))))
> +         {
> +           if (! TREE_USED (decl))
> +             warning (OPT_Wunused_variable, "unused variable %q+D", decl);
> +           else if (DECL_CONTEXT (decl) == current_function_decl
> +                    && TREE_CODE (TREE_TYPE (decl)) != REFERENCE_TYPE
> +                    && errorcount == unused_but_set_errorcount)
> +             {
> +               warning (OPT_Wunused_but_set_variable,
> +                        "variable %q+D set but not used", decl);
> +               unused_but_set_errorcount = errorcount;
> +             }
> +         }
> +      }
>

this is block of code that qualifies to be a function in its own.
the condition is quite impressive...

-- Gaby

Reply via email to