On Wed, Jan 28, 2015 at 9:05 PM, Jakub Jelinek <ja...@redhat.com> wrote:
> Hi!
>
> This patch rewrites the target pragma and target attribute handling in the
> i386 backend, so that outside of functions global_options and target globals
> reflect the currently active #pragma GCC target (if none active, obviously
> the default options) and inside of functions (in between set_cfun to that
> function and set_cfun to another function or NULL) the target state of the
> function.
>
> Without this patch, that state often was wherever last set_cfun left it
> (consider e.g. function with target attribute inside of #pragma GCC target
> region), and furthermore #pragma GCC target without any function definition
> before #pragma GCC pop_options confused it altogether, plus there has been
> confusion between when should be the default options active and when should
> be the currently active #pragma GCC target activated.
>
> The last hunk in i386.c also attempts to save some compile time cycles, I
> think it is pointless to add currently active #pragma GCC target as
> attributes to all the target builtins that are activated in the call,
> we certainly don't do that e.g. for target attribute.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
>
> 2015-01-28  Jakub Jelinek  <ja...@redhat.com>
>
>         PR target/61925
>         * config/i386/i386.c (ix86_reset_to_default_globals): Removed.
>         (ix86_reset_previous_fndecl): Restore it here, unconditionally.
>         (ix86_set_current_function): Rewritten.
>         (ix86_add_new_builtins): Temporarily clear current_target_pragma
>         when creating builtin fndecls.
>
>         * gcc.target/i386/pr61925-1.c: New test.
>         * gcc.target/i386/pr61925-2.c: New test.
>         * gcc.target/i386/pr61925-3.c: New test.

LGTM as far as I can review this, so if there are no objections from
Honza, the patch is OK.

Thanks,
Uros.

Reply via email to