On Fri, Aug 30, 2019 at 01:32:57PM -0500, Segher Boessenkool wrote:
> On Mon, Aug 26, 2019 at 05:07:25PM -0400, Michael Meissner wrote:
> > +/* By default enable support for pc-relative and numeric prefixed
> > addressing on
> > + the 'future' system, unless it is overriden at build time. */
> > +#ifndef TARGET_PREFIXED_ADDR_DEFAULT
> > +#define TARGET_PREFIXED_ADDR_DEFAULT 1
> > +#endif
> > +
> > +#if !defined (TARGET_PCREL_DEFAULT) && TARGET_PREFIXED_ADDR_DEFAULT
> > +#define TARGET_PCREL_DEFAULT 1
> > +#endif
>
> Spelling ("overridden").
>
> How can it be overridden at build time?
>
> How can it be defined already, when linux64.h is included? Don't put in
> guards against things that cannot happen.
You can define TARGET_PREFIXED_ADDR_DEFAULT or TARGET_PCREL_DEFAULT in your
CFLAGS or via the make command line (which is how I tested it).
>
> > + if (TARGET_FUTURE)
> > + {
> > + bool explicit_prefixed = ((rs6000_isa_flags_explicit
> > + & OPTION_MASK_PREFIXED_ADDR) != 0);
> > + bool explicit_pcrel = ((rs6000_isa_flags_explicit
> > + & OPTION_MASK_PCREL) != 0);
> > +
> > + /* Prefixed addressing requires 64-bit registers. */
>
> Does it? Don't disable things just because you do not want to think
> about if and how to support them. Be much more exact in the comment here
> if you do have a reason to disable it here.
>
> > + if (!TARGET_POWERPC64)
> > + {
> > + if (TARGET_PCREL && explicit_pcrel)
> > + error ("%qs requires %qs", "-mpcrel", "-m64");
>
> TARGET_POWERPC64 is -mpowerpc64. -m64 is TARGET_64BIT.
>
> > + /* Enable defaults if desired. */
> > + else
> > + {
> > + if (!explicit_prefixed
> > + && (TARGET_PREFIXED_ADDR_DEFAULT
> > + || TARGET_PCREL
> > + || TARGET_PCREL_DEFAULT))
> > + rs6000_isa_flags |= OPTION_MASK_PREFIXED_ADDR;
> > +
> > + if (!explicit_pcrel && TARGET_PCREL_DEFAULT
> > + && TARGET_CMODEL == CMODEL_MEDIUM)
> > + rs6000_isa_flags |= OPTION_MASK_PCREL;
> > + }
>
> Should these be the other way around?
I'm not sure I follow the question. You want to enable pc-relative support if
prefixed addressing support is enabled, and the OS says that it supports
pc-relative addressing.
If you previously disabled prefixed addressing, you can't enable pc-relative by
default.
--
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: [email protected], phone: +1 (978) 899-4797