On Mon, Dec 2, 2013 at 6:46 PM, Sriraman Tallam <tmsri...@google.com> wrote: > On Thu, Nov 28, 2013 at 9:36 PM, Bernd Edlinger > <bernd.edlin...@hotmail.de> wrote: >> Hi, >> >> On Wed, 27 Nov 2013 19:49:39, Uros Bizjak wrote: >>> >>> On Mon, Nov 25, 2013 at 10:08 PM, Sriraman Tallam <tmsri...@google.com> >>> wrote: >>> >>>> I have attached a patch to fix this bug : >>>> >>>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58944 >>>> >>>> A similar problem was also reported here: >>>> http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01050.html >>>> >>>> >>>> Recently, ix86_valid_target_attribute_tree in config/i386/i386.c was >>>> refactored to not depend on global_options structure and to be able to >>>> use any gcc_options structure. One clean way to fix this is by having >>>> target_option_default_node save all the default target options which >>>> can be restored to any gcc_options structure. The root cause of the >>>> above bugs was that ix86_arch_string and ix86_tune_string was not >>>> saved in target_option_deault_node in PR58944 and >>>> ix86_preferred_stack_boundary_arg was not saved in the latter case. >>>> >>>> This patch saves all the target options used in i386.opt which are >>>> either obtained from the command-line or set to some default. Is this >>>> patch alright? >>> >>> Things looks rather complicated, but I see no other solution that save >>> and restore the way you propose. >>> >>> Please wait 24h if somebody has a different idea, otherwise please go >>> ahead and commit the patch to mainline. >>> >> >> Maybe you should also look at the handling or preferred_stack_boundary_arg >> versus incoming_stack_boundary_arg in ix86_option_override_internal: >> >> Remember ix86_incoming_stack_boundary_arg is defined to >> global_options.x_ix86_incoming_stack_boundary_arg. >> >> like this? >> >> if (opts_set->x_ix86_incoming_stack_boundary_arg) >> { >> - if (ix86_incoming_stack_boundary_arg >> + if (opts->x_ix86_incoming_stack_boundary_arg >> < (TARGET_64BIT_P (opts->x_ix86_isa_flags) ? 4 : 2) >> - || ix86_incoming_stack_boundary_arg> 12) >> + || opts->x_ix86_incoming_stack_boundary_arg> 12) >> error ("-mincoming-stack-boundary=%d is not between %d and 12", >> - ix86_incoming_stack_boundary_arg, >> + opts->x_ix86_incoming_stack_boundary_arg, >> TARGET_64BIT_P (opts->x_ix86_isa_flags) ? 4 : 2); >> else >> { >> ix86_user_incoming_stack_boundary >> - = (1 << ix86_incoming_stack_boundary_arg) * BITS_PER_UNIT; >> + = (1 << opts->x_ix86_incoming_stack_boundary_arg) * >> BITS_PER_UNIT; >> ix86_incoming_stack_boundary >> = ix86_user_incoming_stack_boundary; >> } >> > > Thanks for catching this. I will make this change in the same patch. >
Your change caused: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59492 -- H.J.