Hi Pedro,
2015-08-15 0:24 GMT+02:00 Paolo Bonzini <[email protected]>:
> There are plenty of targets that do not require -fPIC because they always
> generate position independent code, but none of them feels the need to
> complain with the user about an unnecessary but perfectly valid option,
> on each and every .c->.o rule, and without a way to disable it.
>
> Adding insult to injury, the warning is also wrong in 3 cases out of four.
> For 32-bit, warning may make a small amount of sense because there is
> simply no such thing as PIC code (Windows just uses a "preferred base
> address" for DLLs); but then the text is wrong.
>
> For 64-bit, -fpic does not warn, but "all code is position independent"
> would apply just as well!
Agreed.
> As a summary, googling for the warning text finds exactly two categories
> of people: those that are annoyed by the message because they want to
> use -Werror (this includes me), and those that suggest replacing -fPIC
> with -fpic. Just zap it.
>
> Paolo
Patch is ok. Please apply.
Thanks,
Kai
> * config/i386/cygming.h (SUBTARGET_OVERRIDE_OPTIONS): Do
> not warn.
>
> diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
> index fda59fb..71506ec 100644
> --- a/gcc/config/i386/cygming.h
> +++ b/gcc/config/i386/cygming.h
> @@ -198,20 +198,7 @@ along with GCC; see the file COPYING3. If not see
> #undef SUBTARGET_OVERRIDE_OPTIONS
> #define SUBTARGET_OVERRIDE_OPTIONS \
> do { \
> - if (TARGET_64BIT && flag_pic != 1) \
> - { \
> - if (flag_pic > 1)
> \
> - warning (0, \
> - "-fPIC ignored for target (all code is position
> independent)"\
> - ); \
> - flag_pic = 1; \
> - } \
> - else if (!TARGET_64BIT && flag_pic) \
> - { \
> - warning (0, "-f%s ignored for target (all code is position
> independent)",\
> - (flag_pic > 1) ? "PIC" : "pic"); \
> - flag_pic = 0; \
> - } \
> + flag_pic = TARGET_64BIT ? 1 : 0; \
> } while (0)
>
> /* Define this macro if references to a symbol must be treated