"Hu, Jiangping" <hujiangp...@cn.fujitsu.com> writes:
> Hi, 
>
> I find there are many "ATTRIBUTE_UNUSED" macros in the function parameter 
> lists,
> but some of the parameters are used in the function bodies in fact.  E.g.
>
>   @@gcc/final.c
>   void
>   output_operand (rtx x, int code ATTRIBUTE_UNUSED)
>   {
>     if (x && GET_CODE (x) == SUBREG)
>       x = alter_subreg (&x, true);
>
>     /* X must not be a pseudo reg.  */
>     if (!targetm.no_register_allocation)
>       gcc_assert (!x || !REG_P (x) || REGNO (x) < FIRST_PSEUDO_REGISTER);
>
>     targetm.asm_out.print_operand (asm_out_file, x, code);
>
>     if (x == NULL_RTX)
>       return;
>
>     mark_symbol_refs_as_used (x);
>   }
>
> I know there are no compile issues for the code above, and if we read the 
> body,
> it will not cause too much trouble to readers.

Agreed.

> So I don't know if can I make a patch to remove that? If it is approved, 
> can I just firstly change the files I encountered, because I think many files 
> may have this situation, it's hard to address all of them in 1 patch.

Yeah, small numbers of changes per patch are better.  There's certainly
no requirement to do everything at once, incremental improvements are
better.

Uses of ATTRIBUTE_UNUSED in code like the above come from cases where
a target hook (here asm_out.print_operand) was previously a target macro.
When it was a target macro, there was no requirement for the macro to use
every parameter, and so the ATTRIBUTE_UNUSEDs were added to suppress
warnings for the targets that didn't use particular parameters.

Since converting macros to hooks is a mostly mechanical (and boring)
process, it's natural to miss cases in which an ATTRIBUTE_UNUSED
is no longer required.

FWIW, there will probably still be uses of ATTRIBUTE_UNUSED for values that
are used in macro arguments, and those ATTRIBUTE_UNUSEDs are still needed.

Thanks,
Richard

Reply via email to