summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/i386/i386.c')
-rw-r--r--gcc/config/i386/i386.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index d158969eef3..a7f6fa3aa49 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -58,6 +58,7 @@ along with GCC; see the file COPYING3. If not see
#include "sched-int.h"
#include "sbitmap.h"
#include "fibheap.h"
+#include "opts.h"
enum upper_128bits_state
{
@@ -2683,8 +2684,16 @@ ix86_using_red_zone (void)
/* Implement TARGET_HANDLE_OPTION. */
static bool
-ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
+ix86_handle_option (struct gcc_options *opts, struct gcc_options *opts_set,
+ const struct cl_decoded_option *decoded,
+ location_t loc ATTRIBUTE_UNUSED)
{
+ size_t code = decoded->opt_index;
+ int value = decoded->value;
+
+ gcc_assert (opts == &global_options);
+ gcc_assert (opts_set == &global_options_set);
+
switch (code)
{
case OPT_mmmx:
@@ -4670,7 +4679,13 @@ ix86_valid_target_attribute_inner_p (tree args, char *p_strings[])
}
else if (type == ix86_opt_isa)
- ix86_handle_option (opt, p, opt_set_p);
+ {
+ struct cl_decoded_option decoded;
+
+ generate_option (opt, NULL, opt_set_p, CL_TARGET, &decoded);
+ ix86_handle_option (&global_options, &global_options_set,
+ &decoded, input_location);
+ }
else if (type == ix86_opt_yes || type == ix86_opt_no)
{