This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] ARM FreeBSD fix bootstrap
- From: "Richard Earnshaw (lists)" <Richard dot Earnshaw at arm dot com>
- To: Andreas Tobler <andreast-list at fgznet dot ch>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: nathan at codesourcery dot com
- Date: Tue, 5 Jan 2016 10:32:46 +0000
- Subject: Re: [patch] ARM FreeBSD fix bootstrap
- Authentication-results: sourceware.org; auth=none
- References: <5679AA32 dot 5010305 at fgznet dot ch> <567A75F4 dot 2090805 at arm dot com> <567AF5DB dot 70504 at fgznet dot ch>
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 <andreast@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 <andreast@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. */
>