aboutsummaryrefslogtreecommitdiff
path: root/gcc/common/config/aarch64
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2015-08-04 10:14:00 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2015-08-04 10:14:00 +0000
commit5a2c833115cc88f420f577e36ba46be6295cc23a (patch)
tree9ed1e08b16d7aa19d73e52f157563335247fac4e /gcc/common/config/aarch64
parentd78006d9504c41f96a476457754563c2aa100b7a (diff)
downloadgcc-5a2c833115cc88f420f577e36ba46be6295cc23a.zip
gcc-5a2c833115cc88f420f577e36ba46be6295cc23a.tar.gz
gcc-5a2c833115cc88f420f577e36ba46be6295cc23a.tar.bz2
[AArch64][8/14] Implement TARGET_OPTION_VALID_ATTRIBUTE_P
* common/config/aarch64/aarch64-common.c (aarch64_handle_option): Remove static. Handle OPT_mgeneral_regs_only, OPT_mfix_cortex_a53_835769, OPT_mstrict_align, OPT_momit_leaf_frame_pointer. * config/aarch64/aarch64.c: Include opts.h and diagnostic.h (aarch64_attr_opt_type): New enum. (aarch64_attribute_info): New struct. (aarch64_handle_attr_arch): New function. (aarch64_handle_attr_cpu): Likewise. (aarch64_handle_attr_tune): Likewise. (aarch64_handle_attr_isa_flags): Likewise. (aarch64_attributes): New table. (aarch64_process_one_target_attr): New function. (num_occurences_in_str): Likewise. (aarch64_process_target_attr): Likewise. (aarch64_option_valid_attribute_p): Likewise. (TARGET_OPTION_VALID_ATTRIBUTE_P): Define. * config/aarch64/aarch64-protos.h: Include input.h (aarch64_handle_option): Declare prototype. From-SVN: r226560
Diffstat (limited to 'gcc/common/config/aarch64')
-rw-r--r--gcc/common/config/aarch64/aarch64-common.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/gcc/common/config/aarch64/aarch64-common.c b/gcc/common/config/aarch64/aarch64-common.c
index b3fd9dc..726c625 100644
--- a/gcc/common/config/aarch64/aarch64-common.c
+++ b/gcc/common/config/aarch64/aarch64-common.c
@@ -60,7 +60,7 @@ static const struct default_options aarch_option_optimization_table[] =
respective component of -mcpu. This logic is implemented
in config/aarch64/aarch64.c:aarch64_override_options. */
-static bool
+bool
aarch64_handle_option (struct gcc_options *opts,
struct gcc_options *opts_set ATTRIBUTE_UNUSED,
const struct cl_decoded_option *decoded,
@@ -68,6 +68,7 @@ aarch64_handle_option (struct gcc_options *opts,
{
size_t code = decoded->opt_index;
const char *arg = decoded->arg;
+ int val = decoded->value;
switch (code)
{
@@ -83,6 +84,22 @@ aarch64_handle_option (struct gcc_options *opts,
opts->x_aarch64_tune_string = arg;
return true;
+ case OPT_mgeneral_regs_only:
+ opts->x_target_flags |= MASK_GENERAL_REGS_ONLY;
+ return true;
+
+ case OPT_mfix_cortex_a53_835769:
+ opts->x_aarch64_fix_a53_err835769 = val;
+ return true;
+
+ case OPT_mstrict_align:
+ opts->x_target_flags |= MASK_STRICT_ALIGN;
+ return true;
+
+ case OPT_momit_leaf_frame_pointer:
+ opts->x_flag_omit_frame_pointer = val;
+ return true;
+
default:
return true;
}