This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix pr67963
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: Yulia Koval <vaalfreja at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, "H.J. Lu" <hjl dot tools at gmail dot com>
- Date: Thu, 15 Oct 2015 13:45:08 +0200
- Subject: Re: [PATCH] Fix pr67963
- Authentication-results: sourceware.org; auth=none
- References: <CAE0nxxhacnNEGpHmZn5tFLGWZ9AJ+iBFwVBAmUJ+8EHxvpGn+w at mail dot gmail dot com>
On Wed, Oct 14, 2015 at 5:08 PM, Yulia Koval <vaalfreja@gmail.com> wrote:
> Hi,
>
> This patch fixes the issue:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67963
>
> gcc/config/i386/i386.c (ix86_option_override_internal) Disable
> 80387 mask if lakemont target is set.
>
> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index 4c25c9e..db722aa 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -4943,6 +4943,12 @@ ix86_option_override_internal (bool main_args_p,
> break;
> }
>
> + if (!strcmp (opts->x_ix86_arch_string, "lakemont"))
> + {
> + opts->x_target_flags &= ~MASK_80387;
> + opts_set->x_target_flags |= MASK_80387;
> + }
> +
> if (TARGET_X32 && (opts->x_ix86_isa_flags & OPTION_MASK_ISA_MPX))
> error ("Intel MPX does not support x32");
>
> Ok for trunk?
The problem is in TARGET_SUBTARGET{32,64}_DEFAULT, that will override
set target flags, unless relevant bit of opts_set->x_target_flags is
set. However, we can't just set x_target_flag, because
__attribute__((target("arch=...."))) won't work. Unfortunately, my
proposed patch in the PR violates this last requirement.
This can probably be solved by adding local "x_target_flags_mask" and
use it after TARGET_SUBTARGET processing.
Uros.