On 23/12/15 19:28, Andreas Tobler wrote:
> On 23.12.15 11:22, Richard Earnshaw (lists) wrote:
>> On 22/12/15 19:53, Andreas Tobler wrote:
>>> Hi all,
>>>
>>> the commit for PR68617 broke boostrap on armv6*-*-freebsd*.
>>>
>>> We still have unaligned_access = 0 on armv6 here on FreeBSD.
>>>
>>> The commit from the above PR overrides my SUBTARGET_OVERRIDE_OPTIONS I
>>> called in arm_option_override. And it sets the unaligned_access to 1.
>>>
>>> The attached patch fixes this, bootstrap ongoing but passed the breaking
>>> stage where genmddeps bus errored.
>>>
>>> Is this patch ok for trunk once bootstrap completes?
>>>
>>> TIA,
>>> Andreas
>>>
>>> 2015-12-22  Andreas Tobler  <andre...@gcc.gnu.org>
>>>
>>>      * config/arm/freebsd.h (SUBTARGET_OVERRIDE_OPTIONS): Adjust to
>>>      check unaligned_access on the gcc_options set.
>>>      * config/arm/arm.c (arm_option_override): Move
>>>      SUBTARGET_OVERRIDE_OPTIONS from here to
>>>      (arm_option_override_internal).
>>>
>>
>> Moving this hunk to a different place potentially affects VXWORKS (the
>> only other target that uses this hook).  I'd like to see confirmation
>> from the VxWorks maintainers (Nathan?) that this doesn't cause any
>> problems for them.  If it does, then I think you need to create a new
>> subtarget hook (SUBTARGET_OVERRIDE_INTERNAL_OPTIONS?) and change FreeBSD
>> to use that rather than the existing hook.
> 
> I noticed this morning that VxWorks might be affected. To be on the safe
> side I'd like to propose the attached version since it makes clear where
> the override belongs to and I don't think hijacking
> SUBTARGET_OVERRIDE_OPTIONS is a good idea here.
> I need the override in the arm_option_override_internal function after
> the default has been set.
> 
> What do you think?
> 
> Thanks,
> 
> Andreas
> 
> 2015-12-23  Andreas Tobler  <andre...@gcc.gnu.org>
> 
>     * config/arm/freebsd.h: Rename SUBTARGET_OVERRIDE_OPTIONS to
>     SUBTARGET_OVERRIDE_INTERNAL_OPTIONS. Adjust to check
>     unaligned_access on the gcc_options set.
>     * config/arm/arm.c (arm_option_override_internal): Use
>     SUBTARGET_OVERRIDE_INTERNAL_OPTIONS.
> 
> 

This is OK.

One question, though, is whether you should explicitly override a user
request for unaligned accesses without at least warning that this is
being done.

R.

> 
> 
> 
> 
> 
> x_opts_unaligned2.diff
> 
> 
> Index: freebsd.h
> ===================================================================
> --- freebsd.h (revision 231903)
> +++ freebsd.h (working copy)
> @@ -120,10 +120,10 @@
>  #define SUBTARGET_CPU_DEFAULT   TARGET_CPU_arm9
>  #endif
>  
> -#define SUBTARGET_OVERRIDE_OPTIONS           \
> +#define SUBTARGET_OVERRIDE_INTERNAL_OPTIONS  \
>  do {                                         \
> -    if (unaligned_access)                    \
> -     unaligned_access = 0;                   \
> +    if (opts->x_unaligned_access)            \
> +     opts->x_unaligned_access = 0;           \
>  } while (0)
>  
>  #undef MAX_SYNC_LIBFUNC_SIZE
> Index: arm.c
> ===================================================================
> --- arm.c     (revision 231903)
> +++ arm.c     (working copy)
> @@ -2954,6 +2954,10 @@
>    /* Thumb2 inline assembly code should always use unified syntax.
>       This will apply to ARM and Thumb1 eventually.  */
>    opts->x_inline_asm_unified = TARGET_THUMB2_P (opts->x_target_flags);
> +
> +#ifdef SUBTARGET_OVERRIDE_INTERNAL_OPTIONS
> +  SUBTARGET_OVERRIDE_INTERNAL_OPTIONS;
> +#endif
>  }
>  
>  /* Fix up any incompatible options that the user has specified.  */
> 

Reply via email to