1 diff --git gcc/common/config/avr/avr-common.c gcc/common/config/avr/avr-common.c
2 index 0ede117..b2b8359 100644
3 --- gcc/common/config/avr/avr-common.c
4 +++ gcc/common/config/avr/avr-common.c
5 @@ -32,10 +32,39 @@ static const struct default_options avr_option_optimization_table[] =
6 { OPT_LEVELS_NONE, 0, NULL, 0 }
10 +avr_handle_target_option (struct gcc_options *opts,
11 + struct gcc_options *opts_set, const struct cl_decoded_option *decoded,
14 + if (avr_list_supported_parts)
16 + const struct mcu_type_s *list_part;
18 + fprintf (stdout, "List of parts supported by avr-gcc:\n");
20 + for (list_part = &avr_mcu_types[0]; list_part->name; list_part++)
22 + if (!list_part->macro)
24 + fprintf (stdout, "%-20s%s\n", list_part->name, list_part->macro);
27 + fprintf (stdout, "\n");
35 #undef TARGET_OPTION_OPTIMIZATION_TABLE
36 #define TARGET_OPTION_OPTIMIZATION_TABLE avr_option_optimization_table
38 #undef TARGET_EXCEPT_UNWIND_INFO
39 #define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info
41 +#undef TARGET_HANDLE_OPTION
42 +#define TARGET_HANDLE_OPTION avr_handle_target_option
44 struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
45 diff --git gcc/config/avr/avr.opt gcc/config/avr/avr.opt
46 index 0ad38c6..3649c5b 100644
47 --- gcc/config/avr/avr.opt
48 +++ gcc/config/avr/avr.opt
49 @@ -66,6 +66,10 @@ mpmem-wrap-around
51 Make the linker relaxation machine assume that a program counter wrap-around occurs.
54 +Target RejectNegative Var(avr_list_supported_parts)
55 +Print the list of parts supported while printing --target-help
58 Target Report Mask(ACCUMULATE_OUTGOING_ARGS)
59 Accumulate outgoing function arguments and acquire/release the needed stack space for outpoing function arguments in function prologue/epilogue. Without this option, outgoing arguments are pushed before calling a function and popped afterwards. This option can lead to reduced code size for functions that call many functions that get their arguments on the stack like, for example printf.