diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-03-01 10:59:08 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-03-01 10:59:08 +0000 |
commit | 15b936ef242981647b563b969a2a27613a7e5d1b (patch) | |
tree | a91610fe63671a92c150ffd8c3f04d2fe0ae789c | |
parent | 209cc0f21d2a22ca839dd126dd9b1fa3703e81c4 (diff) | |
download | gcc-15b936ef242981647b563b969a2a27613a7e5d1b.tar.gz |
2013-03-01 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 196372 using svnmerge.py
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@196374 138bc75d-0d04-0410-961f-82ee72b054a4
83 files changed, 1485 insertions, 441 deletions
diff --git a/ChangeLog.MELT b/ChangeLog.MELT index efa2164acd5..9ea76fb3d5b 100644 --- a/ChangeLog.MELT +++ b/ChangeLog.MELT @@ -1,4 +1,8 @@ +2013-03-01 Basile Starynkevitch <basile@starynkevitch.net> + + MELT branch merged with trunk rev 196372 using svnmerge.py + 2013-02-27 Basile Starynkevitch <basile@starynkevitch.net> MELT branch merged with trunk rev 196306 using svnmerge.py diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 82abb602c8d..98834acb49f 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,7 @@ +2013-02-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * make_sunver.pl: Enforce C locale. + 2013-02-06 Richard Sandiford <rdsandiford@googlemail.com> * update-copyright.py: Add libdecnumber to the default list. diff --git a/contrib/make_sunver.pl b/contrib/make_sunver.pl index db0fe21ef43..8a90b1fea0d 100644 --- a/contrib/make_sunver.pl +++ b/contrib/make_sunver.pl @@ -19,6 +19,10 @@ use FileHandle; use IPC::Open2; +# Enforce C locale. +$ENV{'LC_ALL'} = "C"; +$ENV{'LANG'} = "C"; + # Input version script, GNU style. my $symvers = shift; diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 86426e734cc..5dd088a1608 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,174 @@ +2013-02-28 Konstantin Serebryany <konstantin.s.serebryany@gmail.com> + Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56454 + * asan.c (gate_asan): Lookup no_sanitize_address instead of + no_address_safety_analysis attribute. + * doc/extend.texi (no_address_safety_attribute): Rename to + no_sanitize_address attribute, mention no_address_safety_analysis + attribute as deprecated alias. + +2013-02-28 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/56461 + * tree-vectorizer.h (vect_get_slp_defs): Change 3rd argument + type to vec<vec<tree> > *. + * tree-vect-slp.c (vect_get_slp_defs): Likewise. Change vec_defs + to be vec<tree> instead of vec<tree> *, set vec_defs + to vNULL and call vec_defs.create (number_of_vects), adjust other + uses of vec_defs. + * tree-vect-stmts.c (vect_get_vec_defs, vectorizable_call, + vectorizable_condition): Adjust vect_get_slp_defs callers. + +2013-02-28 James Greenhalgh <james.greenhalgh@arm.com> + + * config/aarch64/aarch64.c + (aarch64_float_const_representable): Remove unused variable. + +2013-02-28 James Greenhalgh <james.greenhalgh@arm.com> + + * config/aarch64/aarch64.c (aarch64_mangle_type): Make static. + +2013-02-28 James Greenhalgh <james.greenhalgh@arm.com> + + * config/aarch64/aarch64-builtins.c + (aarch64_init_simd_builtins): Make static. + +2013-02-28 James Greenhalgh <james.greenhalgh@arm.com> + + * config/aarch64/aarch64.c + (aarch64_simd_make_constant): Make static. + +2013-02-28 Martin Jambor <mjambor@suse.cz> + + * tree-sra.c (load_assign_lhs_subreplacements): Do not put replacements + with no initialization to the RHS of debug statements. + +2013-02-28 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/56294 + * tree-sra.c (analyze_access_subtree): Create replacement declarations. + Adjust dumping. + (get_access_replacement): Do not call create_access_replacement. + Assert a replacement exists. + (get_repl_default_def_ssa_name): Create the replacement declaration + itself. + +2013-02-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + + * config/arm/arm.c (arm_output_mi_thunk): Call final_start_function and + final_end_function. + +2013-02-28 Marek Polacek <polacek@redhat.com> + + PR rtl-optimization/56466 + * loop-unroll.c (unroll_and_peel_loops): Call fix_loop_structure + if we're changing a loop. + (peel_loops_completely): Likewise. + +2013-02-28 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/55813 + * doc/invoke.texi ([-Wctor-dtor-privacy]): Complete. + +2013-02-28 Georg-Johann Lay <avr@gjlay.de> + + PR target/56445 + * config/avr/avr.c (avr_init_builtins): Use 'n' instead of empty + macro parameters with: FX_FTYPE_FX, FX_FTYPE_FX_INT, INT_FTYPE_FX, + INTX_FTYPE_FX, FX_FTYPE_INTX. + * config/avr/builtins.def: Adjust respective DEF_BUILTIN. + +2013-02-28 Georg-Johann Lay <avr@gjlay.de> + + * avr/avr-mcus.def (ata5272, ata5505, attiny1634, ata6285) + (ata6286, atmega8a, atmega48pa, ata5790, ata5790n, ata5795) + (atmega164pa, atmega165pa, atmega168pa, atmega16hva, atmega16hvb) + (atmega16hvbrevb, atmega16m1, atmega16u4, atmega26hvg, atmega32a) + (atmega32a, atmega3250pa, atmega3290pa, atmega32c1, atmega32m1) + (atmega32u4, atmega32u6, atmega64a, atmega6490a, atmega6490p) + (atmega64c1, atmega64m1, atmega64rfa2, atmega64rfr2, atmega32hvb) + (atmega32hvbrevb, atmega16hva2, atmega48hvf, at90pwm161) + (atmega128a, atmega1284, atmxt112sl, atmxt224, atmxt224e) + (atmxt336s, atxmega16a4u, atxmega16c4, atxmega32a4u, atxmega32c4) + (atxmega32e5, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3) + (atxmega64c3, atxmega64d4, atxmega128a3u, atxmega128b1) + (atxmega128b3, atxmega128c3, atxmega128d4, atmxt540s, atmxt540sreva) + (atxmega192a3u, atxmega192c3, atxmega256a3u, atxmega256c3) + (atxmega384c3, atxmega384d3, atxmega128a4u): New AVR_MCU. + (avrxmega6): Increase max flash segments from 5 to 6. + * config/avr/t-multilib: Regenerate. + * config/avr/avr-tables.opt: Regenerate. + * doc/avr-mmcu.texi: Regenerate. + +2013-02-28 Georg-Johann Lay <avr@gjlay.de> + + * config/avr/avr.h (device_to_arch): Rename to device_to_ld. + (avr_device_to_arch): Rename to avr_device_to_ld. + (avr_device_to_as): New prototype. + (EXTRA_SPEC_FUNCTIONS): Add device_to_as. + (ASM_SPEC): Use device_to_as to get -mmcu= and -mno-skip-bug=. + * config/avr/driver-avr.c (avr_device_to_as): New. + (avr_device_to_arch): Rename to avr_device_to_ld. + +2013-02-27 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/56461 + * tree-vect-data-refs.c (vect_permute_load_chain): Avoid using copy + method on dr_chain and result_chain. + + PR middle-end/56461 + * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Call + pointer_set_destroy on not_executed_last_iteration. + + PR middle-end/56461 + * tree-vect-loop.c (vectorizable_reduction): Release vect_defs + vector. + + PR middle-end/56461 + * ipa-pure-const.c (propagate): Use FOR_EACH_FUNCTION instead of + FOR_EACH_DEFINED_FUNCTION when freeing state. + + PR middle-end/56461 + * df-scan.c (df_insn_delete): Use df_scan_free_mws_vec before + pool_free. + (df_insn_rescan_debug_internal): Use df_scan_free_mws_vec before + overwriting it. + + PR middle-end/56461 + * ipa-cp.c (decide_whether_version_node): Call vec_free on + known_aggs[i].items and release known_aggs vector. + + PR middle-end/56461 + * ipa-reference.c (propagate): Free node_info even for alias nodes. + +2013-02-27 Edgar E. Iglesias <edgar.iglesias@gmail.com> + + * config/microblaze/microblaze.c (microblaze_emit_compare): + Use xor for EQ/NE comparisions. + * config/microblaze/microblaze.md (cstoresf4): Add constraints + (cbranchsf4): Adjust operator to comparison_operator. + +2013-02-27 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/56461 + * tree-flow.h (edge_var_map_vector): Change into va_heap, vl_embed + vector. + * tree-ssa.c (redirect_edge_var_map_add): Use vec_safe_reserve and + vec_safe_push, always update *slot. + (redirect_edge_var_map_clear): Use vec_free. + (redirect_edge_var_map_dup): Use vec_safe_copy and vec_safe_reserve. + (free_var_map_entry): Use vec_free. + * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Use + FOR_EACH_VEC_SAFE_ELT instead of FOR_EACH_VEC_ELT. + +2013-02-27 Andrey Belevantsev <abel@ispras.ru> + + PR middle-end/45472 + * sel-sched-ir.c (merge_expr): Also change vinsn of merged expr + when the may_trap_p bit of the exprs being merged differs. + Reorder tests for speculativeness in the logical and operator. + 2013-02-27 Jakub Jelinek <jakub@redhat.com> * incpath.c (add_standard_paths): Use reconcat instead of concat diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 3a6617ff446..7f5915e3bd3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20130227 +20130301 diff --git a/gcc/asan.c b/gcc/asan.c index 67236a92e48..52a2dbc5dfd 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -2277,7 +2277,7 @@ static bool gate_asan (void) { return flag_asan != 0 - && !lookup_attribute ("no_address_safety_analysis", + && !lookup_attribute ("no_sanitize_address", DECL_ATTRIBUTES (current_function_decl)); } diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 50ad1016f7c..c1ad40b02a7 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,13 @@ +2013-02-28 Konstantin Serebryany <konstantin.s.serebryany@gmail.com> + Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56454 + * c-common.c (handle_no_sanitize_address_attribute): New function. + (c_common_attribute_table): Add no_sanitize_address attribute. + (handle_no_address_safety_analysis_attribute): Add + no_sanitize_address attribute, not no_address_safety_analysis + attribute. + 2013-02-18 Aldy Hernandez <aldyh@redhat.com> PR target/52555 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index a1d47a68045..d01de3e40d5 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -307,6 +307,8 @@ static tree handle_common_attribute (tree *, tree, tree, int, bool *); static tree handle_noreturn_attribute (tree *, tree, tree, int, bool *); static tree handle_hot_attribute (tree *, tree, tree, int, bool *); static tree handle_cold_attribute (tree *, tree, tree, int, bool *); +static tree handle_no_sanitize_address_attribute (tree *, tree, tree, + int, bool *); static tree handle_no_address_safety_analysis_attribute (tree *, tree, tree, int, bool *); static tree handle_noinline_attribute (tree *, tree, tree, int, bool *); @@ -715,6 +717,9 @@ const struct attribute_spec c_common_attribute_table[] = 0, 0, true, false, false, handle_no_address_safety_analysis_attribute, false }, + { "no_sanitize_address", 0, 0, true, false, false, + handle_no_sanitize_address_attribute, + false }, { "warning", 1, 1, true, false, false, handle_error_attribute, false }, { "error", 1, 1, true, false, false, @@ -6505,12 +6510,12 @@ handle_cold_attribute (tree *node, tree name, tree ARG_UNUSED (args), return NULL_TREE; } -/* Handle a "no_address_safety_analysis" attribute; arguments as in +/* Handle a "no_sanitize_address" attribute; arguments as in struct attribute_spec.handler. */ static tree -handle_no_address_safety_analysis_attribute (tree *node, tree name, tree, int, - bool *no_add_attrs) +handle_no_sanitize_address_attribute (tree *node, tree name, tree, int, + bool *no_add_attrs) { if (TREE_CODE (*node) != FUNCTION_DECL) { @@ -6521,6 +6526,23 @@ handle_no_address_safety_analysis_attribute (tree *node, tree name, tree, int, return NULL_TREE; } +/* Handle a "no_address_safety_analysis" attribute; arguments as in + struct attribute_spec.handler. */ + +static tree +handle_no_address_safety_analysis_attribute (tree *node, tree name, tree, int, + bool *no_add_attrs) +{ + if (TREE_CODE (*node) != FUNCTION_DECL) + warning (OPT_Wattributes, "%qE attribute ignored", name); + else if (!lookup_attribute ("no_sanitize_address", DECL_ATTRIBUTES (*node))) + DECL_ATTRIBUTES (*node) + = tree_cons (get_identifier ("no_sanitize_address"), + NULL_TREE, DECL_ATTRIBUTES (*node)); + *no_add_attrs = true; + return NULL_TREE; +} + /* Handle a "noinline" attribute; arguments as in struct attribute_spec.handler. */ diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index dfa7b8c4e85..1ea55a83eb8 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -309,7 +309,7 @@ static GTY(()) tree aarch64_builtin_decls[AARCH64_BUILTIN_MAX]; #define NUM_DREG_TYPES 6 #define NUM_QREG_TYPES 6 -void +static void aarch64_init_simd_builtins (void) { unsigned int i, fcode = AARCH64_SIMD_BUILTIN_BASE + 1; diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 85668dab254..8c8532c97cc 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -5986,7 +5986,7 @@ static aarch64_simd_mangle_map_entry aarch64_simd_mangle_map[] = { /* Implement TARGET_MANGLE_TYPE. */ -const char * +static const char * aarch64_mangle_type (const_tree type) { /* The AArch64 ABI documents say that "__va_list" has to be @@ -6586,7 +6586,7 @@ aarch64_simd_dup_constant (rtx vals) constants (for vec_init) or CONST_VECTOR, efficiently into a register. Returns an RTX to copy into the register, or NULL_RTX for a PARALLEL that can not be converted into a CONST_VECTOR. */ -rtx +static rtx aarch64_simd_make_constant (rtx vals) { enum machine_mode mode = GET_MODE (vals); @@ -7088,7 +7088,7 @@ aarch64_float_const_representable_p (rtx x) /* This represents our current view of how many bits make up the mantissa. */ int point_pos = 2 * HOST_BITS_PER_WIDE_INT - 1; - int sign, exponent; + int exponent; unsigned HOST_WIDE_INT mantissa, mask; HOST_WIDE_INT m1, m2; REAL_VALUE_TYPE r, m; @@ -7105,8 +7105,7 @@ aarch64_float_const_representable_p (rtx x) || REAL_VALUE_MINUS_ZERO (r)) return false; - /* Extract sign and exponent. */ - sign = REAL_VALUE_NEGATIVE (r) ? 1 : 0; + /* Extract exponent. */ r = real_value_abs (&r); exponent = REAL_EXP (&r); diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 677d6da027d..c720561f165 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -24313,6 +24313,8 @@ arm_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED, if (mi_delta < 0) mi_delta = - mi_delta; + final_start_function (emit_barrier (), file, 1); + if (TARGET_THUMB1) { int labelno = thunk_label++; @@ -24429,6 +24431,8 @@ arm_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED, fputs ("(PLT)", file); fputc ('\n', file); } + + final_end_function (); } int diff --git a/gcc/config/avr/avr-mcus.def b/gcc/config/avr/avr-mcus.def index b4100840431..2a730ac7a19 100644 --- a/gcc/config/avr/avr-mcus.def +++ b/gcc/config/avr/avr-mcus.def @@ -28,11 +28,8 @@ - $(srcdir)/doc/avr-mmcu.texi After that, rebuild everything and check-in the new sources to the repo. - The device list below has to be kept in sync with the following places: + The device list below has to be kept in sync with AVR-LibC. - - here - - gas/config/tc-avr.c - - avr-libc Before including this file, define a macro: @@ -79,6 +76,7 @@ AVR_MCU ("at90s8535", ARCH_AVR2, "__AVR_AT90S8535__", 0, 0, 0 /* Classic + MOVW, <= 8K. */ AVR_MCU ("avr25", ARCH_AVR25, NULL, 0, 0, 0x0060, 1, "tn85") AVR_MCU ("ata6289", ARCH_AVR25, "__AVR_ATA6289__", 0, 0, 0x0100, 1, "a6289") +AVR_MCU ("ata5272", ARCH_AVR25, "__AVR_ATA5272__", 0, 0, 0x0100, 1, "a5272") AVR_MCU ("attiny13", ARCH_AVR25, "__AVR_ATtiny13__", 1, 0, 0x0060, 1, "tn13") AVR_MCU ("attiny13a", ARCH_AVR25, "__AVR_ATtiny13A__", 1, 0, 0x0060, 1, "tn13a") AVR_MCU ("attiny2313", ARCH_AVR25, "__AVR_ATtiny2313__", 1, 0, 0x0060, 1, "tn2313") @@ -114,18 +112,24 @@ AVR_MCU ("atmega103", ARCH_AVR31, "__AVR_ATmega103__", 0, 1, 0 AVR_MCU ("at43usb320", ARCH_AVR31, "__AVR_AT43USB320__", 0, 0, 0x0060, 2, "43320") /* Classic + MOVW + JMP/CALL. */ AVR_MCU ("avr35", ARCH_AVR35, NULL, 0, 0, 0x0100, 1, "usb162") +AVR_MCU ("ata5505", ARCH_AVR35, "__AVR_ATA5505__", 0, 0, 0x0100, 1, "a5505") AVR_MCU ("at90usb82", ARCH_AVR35, "__AVR_AT90USB82__", 0, 0, 0x0100, 1, "usb82") AVR_MCU ("at90usb162", ARCH_AVR35, "__AVR_AT90USB162__", 0, 0, 0x0100, 1, "usb162") AVR_MCU ("atmega8u2", ARCH_AVR35, "__AVR_ATmega8U2__", 0, 0, 0x0100, 1, "m8u2") AVR_MCU ("atmega16u2", ARCH_AVR35, "__AVR_ATmega16U2__", 0, 0, 0x0100, 1, "m16u2") AVR_MCU ("atmega32u2", ARCH_AVR35, "__AVR_ATmega32U2__", 0, 0, 0x0100, 1, "m32u2") AVR_MCU ("attiny167", ARCH_AVR35, "__AVR_ATtiny167__", 0, 0, 0x0100, 1, "tn167") +AVR_MCU ("attiny1634", ARCH_AVR35, "__AVR_ATtiny1634__", 0, 0, 0x0100, 1, "tn1634") /* Enhanced, <= 8K. */ AVR_MCU ("avr4", ARCH_AVR4, NULL, 0, 0, 0x0060, 1, "m8") +AVR_MCU ("ata6285", ARCH_AVR4, "__AVR_ATA6285__", 0, 0, 0x0100, 1, "a6285") +AVR_MCU ("ata6286", ARCH_AVR4, "__AVR_ATA6286__", 0, 0, 0x0100, 1, "a6286") AVR_MCU ("atmega8", ARCH_AVR4, "__AVR_ATmega8__", 0, 0, 0x0060, 1, "m8") +AVR_MCU ("atmega8a", ARCH_AVR4, "__AVR_ATmega8A__", 0, 0, 0x0060, 1, "m8a") AVR_MCU ("atmega48", ARCH_AVR4, "__AVR_ATmega48__", 0, 0, 0x0100, 1, "m48") AVR_MCU ("atmega48a", ARCH_AVR4, "__AVR_ATmega48A__", 0, 0, 0x0100, 1, "m48a") AVR_MCU ("atmega48p", ARCH_AVR4, "__AVR_ATmega48P__", 0, 0, 0x0100, 1, "m48p") +AVR_MCU ("atmega48pa", ARCH_AVR4, "__AVR_ATmega48PA__", 0, 0, 0x0100, 1, "m48pa") AVR_MCU ("atmega88", ARCH_AVR4, "__AVR_ATmega88__", 0, 0, 0x0100, 1, "m88") AVR_MCU ("atmega88a", ARCH_AVR4, "__AVR_ATmega88A__", 0, 0, 0x0100, 1, "m88a") AVR_MCU ("atmega88p", ARCH_AVR4, "__AVR_ATmega88P__", 0, 0, 0x0100, 1, "m88p") @@ -141,6 +145,9 @@ AVR_MCU ("at90pwm3b", ARCH_AVR4, "__AVR_AT90PWM3B__", 0, 0, 0 AVR_MCU ("at90pwm81", ARCH_AVR4, "__AVR_AT90PWM81__", 0, 0, 0x0100, 1, "90pwm81") /* Enhanced, > 8K, <= 64K. */ AVR_MCU ("avr5", ARCH_AVR5, NULL, 0, 0, 0x0060, 1, "m16") +AVR_MCU ("ata5790", ARCH_AVR5, "__AVR_ATA5790__", 0, 0, 0x0100, 1, "a5790") +AVR_MCU ("ata5790n", ARCH_AVR5, "__AVR_ATA5790N__", 0, 0, 0x0100, 1, "a5790n") +AVR_MCU ("ata5795", ARCH_AVR5, "__AVR_ATA5795__", 0, 0, 0x0100, 1, "a5795") AVR_MCU ("atmega16", ARCH_AVR5, "__AVR_ATmega16__", 0, 0, 0x0060, 1, "m16") AVR_MCU ("atmega16a", ARCH_AVR5, "__AVR_ATmega16A__", 0, 0, 0x0060, 1, "m16a") AVR_MCU ("atmega161", ARCH_AVR5, "__AVR_ATmega161__", 0, 0, 0x0060, 1, "m161") @@ -148,17 +155,28 @@ AVR_MCU ("atmega162", ARCH_AVR5, "__AVR_ATmega162__", 0, 0, 0 AVR_MCU ("atmega163", ARCH_AVR5, "__AVR_ATmega163__", 0, 0, 0x0060, 1, "m163") AVR_MCU ("atmega164a", ARCH_AVR5, "__AVR_ATmega164A__", 0, 0, 0x0100, 1, "m164a") AVR_MCU ("atmega164p", ARCH_AVR5, "__AVR_ATmega164P__", 0, 0, 0x0100, 1, "m164p") +AVR_MCU ("atmega164pa", ARCH_AVR5, "__AVR_ATmega164PA__", 0, 0, 0x0100, 1, "m164pa") AVR_MCU ("atmega165", ARCH_AVR5, "__AVR_ATmega165__", 0, 0, 0x0100, 1, "m165") AVR_MCU ("atmega165a", ARCH_AVR5, "__AVR_ATmega165A__", 0, 0, 0x0100, 1, "m165a") AVR_MCU ("atmega165p", ARCH_AVR5, "__AVR_ATmega165P__", 0, 0, 0x0100, 1, "m165p") +AVR_MCU ("atmega165pa", ARCH_AVR5, "__AVR_ATmega165PA__", 0, 0, 0x0100, 1, "m165pa") AVR_MCU ("atmega168", ARCH_AVR5, "__AVR_ATmega168__", 0, 0, 0x0100, 1, "m168") AVR_MCU ("atmega168a", ARCH_AVR5, "__AVR_ATmega168A__", 0, 0, 0x0100, 1, "m168a") AVR_MCU ("atmega168p", ARCH_AVR5, "__AVR_ATmega168P__", 0, 0, 0x0100, 1, "m168p") +AVR_MCU ("atmega168pa", ARCH_AVR5, "__AVR_ATmega168PA__", 0, 0, 0x0100, 1, "m168pa") AVR_MCU ("atmega169", ARCH_AVR5, "__AVR_ATmega169__", 0, 0, 0x0100, 1, "m169") AVR_MCU ("atmega169a", ARCH_AVR5, "__AVR_ATmega169A__", 0, 0, 0x0100, 1, "m169a") AVR_MCU ("atmega169p", ARCH_AVR5, "__AVR_ATmega169P__", 0, 0, 0x0100, 1, "m169p") AVR_MCU ("atmega169pa", ARCH_AVR5, "__AVR_ATmega169PA__", 0, 0, 0x0100, 1, "m169pa") +AVR_MCU ("atmega16hva", ARCH_AVR5, "__AVR_ATmega16HVA__", 0, 0, 0x0100, 1, "m16hva") +AVR_MCU ("atmega16hvb", ARCH_AVR5, "__AVR_ATmega16HVB__", 0, 0, 0x0100, 1, "m16hvb") +AVR_MCU ("atmega16hvbrevb", ARCH_AVR5, "__AVR_ATmega16HVBREVB__", 0, 0, 0x0100, 1, "m16hvbrevb") +AVR_MCU ("atmega16m1", ARCH_AVR5, "__AVR_ATmega16M1__", 0, 0, 0x0100, 1, "m16m1") +AVR_MCU ("atmega16u4", ARCH_AVR5, "__AVR_ATmega16U4__", 0, 0, 0x0100, 1, "m16u4") +AVR_MCU ("atmega26hvg", ARCH_AVR5, "__AVR_ATmega26HVG__", 0, 0, 0x0100, 1, "m26hvg") +AVR_MCU ("atmega32a", ARCH_AVR5, "__AVR_ATmega32A__", 0, 0, 0x0060, 1, "m32a") AVR_MCU ("atmega32", ARCH_AVR5, "__AVR_ATmega32__", 0, 0, 0x0060, 1, "m32") +AVR_MCU ("atmega32a", ARCH_AVR5, "__AVR_ATmega32A__", 0, 0, 0x0060, 1, "m32a") AVR_MCU ("atmega323", ARCH_AVR5, "__AVR_ATmega323__", 0, 0, 0x0060, 1, "m323") AVR_MCU ("atmega324a", ARCH_AVR5, "__AVR_ATmega324A__", 0, 0, 0x0100, 1, "m324a") AVR_MCU ("atmega324p", ARCH_AVR5, "__AVR_ATmega324P__", 0, 0, 0x0100, 1, "m324p") @@ -169,6 +187,7 @@ AVR_MCU ("atmega325p", ARCH_AVR5, "__AVR_ATmega325P__", 0, 0, 0 AVR_MCU ("atmega3250", ARCH_AVR5, "__AVR_ATmega3250__", 0, 0, 0x0100, 1, "m3250") AVR_MCU ("atmega3250a", ARCH_AVR5, "__AVR_ATmega3250A__", 0, 0, 0x0100, 1, "m3250a") AVR_MCU ("atmega3250p", ARCH_AVR5, "__AVR_ATmega3250P__", 0, 0, 0x0100, 1, "m3250p") +AVR_MCU ("atmega3250pa", ARCH_AVR5, "__AVR_ATmega3250PA__", 0, 0, 0x0100, 1, "m3250pa") AVR_MCU ("atmega328", ARCH_AVR5, "__AVR_ATmega328__", 0, 0, 0x0100, 1, "m328") AVR_MCU ("atmega328p", ARCH_AVR5, "__AVR_ATmega328P__", 0, 0, 0x0100, 1, "m328p") AVR_MCU ("atmega329", ARCH_AVR5, "__AVR_ATmega329__", 0, 0, 0x0100, 1, "m329") @@ -178,8 +197,14 @@ AVR_MCU ("atmega329pa", ARCH_AVR5, "__AVR_ATmega329PA__", 0, 0, 0 AVR_MCU ("atmega3290", ARCH_AVR5, "__AVR_ATmega3290__", 0, 0, 0x0100, 1, "m3290") AVR_MCU ("atmega3290a", ARCH_AVR5, "__AVR_ATmega3290A__", 0, 0, 0x0100, 1, "m3290a") AVR_MCU ("atmega3290p", ARCH_AVR5, "__AVR_ATmega3290P__", 0, 0, 0x0100, 1, "m3290p") +AVR_MCU ("atmega3290pa", ARCH_AVR5, "__AVR_ATmega3290PA__", 0, 0, 0x0100, 1, "m3290pa") +AVR_MCU ("atmega32c1", ARCH_AVR5, "__AVR_ATmega32C1__", 0, 0, 0x0100, 1, "m32c1") +AVR_MCU ("atmega32m1", ARCH_AVR5, "__AVR_ATmega32M1__", 0, 0, 0x0100, 1, "m32m1") +AVR_MCU ("atmega32u4", ARCH_AVR5, "__AVR_ATmega32U4__", 0, 0, 0x0100, 1, "m32u4") +AVR_MCU ("atmega32u6", ARCH_AVR5, "__AVR_ATmega32U6__", 0, 0, 0x0100, 1, "m32u6") AVR_MCU ("atmega406", ARCH_AVR5, "__AVR_ATmega406__", 0, 0, 0x0100, 1, "m406") AVR_MCU ("atmega64", ARCH_AVR5, "__AVR_ATmega64__", 0, 0, 0x0100, 1, "m64") +AVR_MCU ("atmega64a", ARCH_AVR5, "__AVR_ATmega64A__", 0, 0, 0x0100, 1, "m64a") AVR_MCU ("atmega640", ARCH_AVR5, "__AVR_ATmega640__", 0, 0, 0x0200, 1, "m640") AVR_MCU ("atmega644", ARCH_AVR5, "__AVR_ATmega644__", 0, 0, 0x0100, 1, "m644") AVR_MCU ("atmega644a", ARCH_AVR5, "__AVR_ATmega644A__", 0, 0, 0x0100, 1, "m644a") @@ -199,9 +224,20 @@ AVR_MCU ("atmega16hva", ARCH_AVR5, "__AVR_ATmega16HVA__", 0, 0, 0 AVR_MCU ("atmega16hva2", ARCH_AVR5, "__AVR_ATmega16HVA2__", 0, 0, 0x0100, 1, "m16hva2") AVR_MCU ("atmega16hvb", ARCH_AVR5, "__AVR_ATmega16HVB__", 0, 0, 0x0100, 1, "m16hvb") AVR_MCU ("atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0, 0x0100, 1, "m32hvb") +AVR_MCU ("atmega6490a", ARCH_AVR5, "__AVR_ATmega6490A__", 0, 0, 0x0100, 1, "m6490a") +AVR_MCU ("atmega6490p", ARCH_AVR5, "__AVR_ATmega6490P__", 0, 0, 0x0100, 1, "m6490p") +AVR_MCU ("atmega64c1", ARCH_AVR5, "__AVR_ATmega64C1__", 0, 0, 0x0100, 1, "m64c1") +AVR_MCU ("atmega64m1", ARCH_AVR5, "__AVR_ATmega64M1__", 0, 0, 0x0100, 1, "m64m1") AVR_MCU ("atmega64hve", ARCH_AVR5, "__AVR_ATmega64HVE__", 0, 0, 0x0100, 1, "m64hve") +AVR_MCU ("atmega64rfa2", ARCH_AVR5, "__AVR_ATmega64RFA2__", 0, 0, 0x0200, 1, "m64rfa2") +AVR_MCU ("atmega64rfr2", ARCH_AVR5, "__AVR_ATmega64RFR2__", 0, 0, 0x0200, 1, "m64rfr2") +AVR_MCU ("atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0, 0x0100, 1, "m32hvb") +AVR_MCU ("atmega32hvbrevb", ARCH_AVR5, "__AVR_ATmega32HVBREVB__", 0, 0, 0x0100, 1, "m32hvbrevb") +AVR_MCU ("atmega16hva2", ARCH_AVR5, "__AVR_ATmega16HVA2__", 0, 0, 0x0100, 1, "m16hva2") +AVR_MCU ("atmega48hvf", ARCH_AVR5, "__AVR_ATmega48HVF__", 0, 0, 0x0100, 1, "m48hvf") AVR_MCU ("at90can32", ARCH_AVR5, "__AVR_AT90CAN32__", 0, 0, 0x0100, 1, "can32") AVR_MCU ("at90can64", ARCH_AVR5, "__AVR_AT90CAN64__", 0, 0, 0x0100, 1, "can64") +AVR_MCU ("at90pwm161", ARCH_AVR5, "__AVR_AT90PWM161__", 0, 0, 0x0100, 1, "90pwm161") AVR_MCU ("at90pwm216", ARCH_AVR5, "__AVR_AT90PWM216__", 0, 0, 0x0100, 1, "90pwm216") AVR_MCU ("at90pwm316", ARCH_AVR5, "__AVR_AT90PWM316__", 0, 0, 0x0100, 1, "90pwm316") AVR_MCU ("atmega32c1", ARCH_AVR5, "__AVR_ATmega32C1__", 0, 0, 0x0100, 1, "m32c1") @@ -220,8 +256,10 @@ AVR_MCU ("m3000", ARCH_AVR5, "__AVR_M3000__", 0, 0, 0 /* Enhanced, == 128K. */ AVR_MCU ("avr51", ARCH_AVR51, NULL, 0, 0, 0x0100, 2, "m128") AVR_MCU ("atmega128", ARCH_AVR51, "__AVR_ATmega128__", 0, 0, 0x0100, 2, "m128") +AVR_MCU ("atmega128a", ARCH_AVR51, "__AVR_ATmega128A__", 0, 0, 0x0100, 2, "m128a") AVR_MCU ("atmega1280", ARCH_AVR51, "__AVR_ATmega1280__", 0, 0, 0x0200, 2, "m1280") AVR_MCU ("atmega1281", ARCH_AVR51, "__AVR_ATmega1281__", 0, 0, 0x0200, 2, "m1281") +AVR_MCU ("atmega1284", ARCH_AVR51, "__AVR_ATmega1284__", 0, 0, 0x0100, 2, "m1284") AVR_MCU ("atmega1284p", ARCH_AVR51, "__AVR_ATmega1284P__", 0, 0, 0x0100, 2, "m1284p") AVR_MCU ("atmega128rfa1", ARCH_AVR51, "__AVR_ATmega128RFA1__", 0, 0, 0x0200, 2, "m128rfa1") AVR_MCU ("at90can128", ARCH_AVR51, "__AVR_AT90CAN128__", 0, 0, 0x0100, 2, "can128") @@ -239,16 +277,31 @@ AVR_MCU ("atxmega16x1", ARCH_AVRXMEGA2, "__AVR_ATxmega16X1__", 0, 0, 0 AVR_MCU ("atxmega32a4", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4__", 0, 0, 0x2000, 1, "x32a4") AVR_MCU ("atxmega32d4", ARCH_AVRXMEGA2, "__AVR_ATxmega32D4__", 0, 0, 0x2000, 1, "x32d4") AVR_MCU ("atxmega32x1", ARCH_AVRXMEGA2, "__AVR_ATxmega32X1__", 0, 0, 0x2000, 1, "x32x1") +AVR_MCU ("atmxt112sl", ARCH_AVRXMEGA2, "__AVR_ATMXT112SL__", 0, 0, 0x2000, 1, "mxt112sl") +AVR_MCU ("atmxt224", ARCH_AVRXMEGA2, "__AVR_ATMXT224__", 0, 0, 0x2000, 1, "mxt224") +AVR_MCU ("atmxt224e", ARCH_AVRXMEGA2, "__AVR_ATMXT224E__", 0, 0, 0x2000, 1, "mxt224e") +AVR_MCU ("atmxt336s", ARCH_AVRXMEGA2, "__AVR_ATMXT336S__", 0, 0, 0x2000, 1, "mxt336s") +AVR_MCU ("atxmega16a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4U__", 0, 0, 0x2000, 1, "x16a4u") +AVR_MCU ("atxmega16c4", ARCH_AVRXMEGA2, "__AVR_ATxmega16C4__", 0, 0, 0x2000, 1, "x16c4") +AVR_MCU ("atxmega32a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__", 0, 0, 0x2000, 1, "x32a4u") +AVR_MCU ("atxmega32c4", ARCH_AVRXMEGA2, "__AVR_ATxmega32C4__", 0, 0, 0x2000, 1, "x32c4") +AVR_MCU ("atxmega32e5", ARCH_AVRXMEGA2, "__AVR_ATxmega32E5__", 0, 0, 0x2000, 1, "x32e5") /* Xmega, 64K < Flash <= 128K, RAM <= 64K */ AVR_MCU ("avrxmega4", ARCH_AVRXMEGA4, NULL, 0, 0, 0x2000, 2, "x64a4") AVR_MCU ("atxmega64a3", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__", 0, 0, 0x2000, 2, "x64a3") AVR_MCU ("atxmega64d3", ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__", 0, 0, 0x2000, 2, "x64d3") +AVR_MCU ("atxmega64a3u", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3U__", 0, 0, 0x2000, 2, "x64a3u") +AVR_MCU ("atxmega64a4u", ARCH_AVRXMEGA4, "__AVR_ATxmega64A4U__", 0, 0, 0x2000, 2, "x64a4u") +AVR_MCU ("atxmega64b1", ARCH_AVRXMEGA4, "__AVR_ATxmega64B1__", 0, 0, 0x2000, 2, "x64b1") +AVR_MCU ("atxmega64b3", ARCH_AVRXMEGA4, "__AVR_ATxmega64B3__", 0, 0, 0x2000, 2, "x64b3") +AVR_MCU ("atxmega64c3", ARCH_AVRXMEGA4, "__AVR_ATxmega64C3__", 0, 0, 0x2000, 2, "x64c3") +AVR_MCU ("atxmega64d4", ARCH_AVRXMEGA4, "__AVR_ATxmega64D4__", 0, 0, 0x2000, 2, "x64d4") /* Xmega, 64K < Flash <= 128K, RAM > 64K */ AVR_MCU ("avrxmega5", ARCH_AVRXMEGA5, NULL, 0, 0, 0x2000, 2, "x64a1") AVR_MCU ("atxmega64a1", ARCH_AVRXMEGA5, "__AVR_ATxmega64A1__", 0, 0, 0x2000, 2, "x64a1") AVR_MCU ("atxmega64a1u", ARCH_AVRXMEGA5, "__AVR_ATxmega64A1U__", 0, 0, 0x2000, 2, "x64a1u") /* Xmega, 128K < Flash, RAM <= 64K */ -AVR_MCU ("avrxmega6", ARCH_AVRXMEGA6, NULL, 0, 0, 0x2000, 5, "x128a3") +AVR_MCU ("avrxmega6", ARCH_AVRXMEGA6, NULL, 0, 0, 0x2000, 6, "x128a3") AVR_MCU ("atxmega128a3", ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__", 0, 0, 0x2000, 3, "x128a3") AVR_MCU ("atxmega128d3", ARCH_AVRXMEGA6, "__AVR_ATxmega128D3__", 0, 0, 0x2000, 3, "x128d3") AVR_MCU ("atxmega192a3", ARCH_AVRXMEGA6, "__AVR_ATxmega192A3__", 0, 0, 0x2000, 4, "x192a3") @@ -257,10 +310,24 @@ AVR_MCU ("atxmega256a3", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3__", 0, 0, 0 AVR_MCU ("atxmega256a3b", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3B__", 0, 0, 0x2000, 5, "x256a3b") AVR_MCU ("atxmega256a3bu", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__", 0, 0, 0x2000, 5, "x256a3bu") AVR_MCU ("atxmega256d3", ARCH_AVRXMEGA6, "__AVR_ATxmega256D3__", 0, 0, 0x2000, 5, "x256d3") +AVR_MCU ("atxmega128a3u", ARCH_AVRXMEGA6, "__AVR_ATxmega128A3U__", 0, 0, 0x2000, 3, "x128a3u") +AVR_MCU ("atxmega128b1", ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__", 0, 0, 0x2000, 3, "x128b1") +AVR_MCU ("atxmega128b3", ARCH_AVRXMEGA6, "__AVR_ATxmega128B3__", 0, 0, 0x2000, 3, "x128b3") +AVR_MCU ("atxmega128c3", ARCH_AVRXMEGA6, "__AVR_ATxmega128C3__", 0, 0, 0x2000, 3, "x128c3") +AVR_MCU ("atxmega128d4", ARCH_AVRXMEGA6, "__AVR_ATxmega128D4__", 0, 0, 0x2000, 3, "x128d4") +AVR_MCU ("atmxt540s", ARCH_AVRXMEGA6, "__AVR_ATMXT540S__", 0, 0, 0x2000, 2, "mxt540s") +AVR_MCU ("atmxt540sreva", ARCH_AVRXMEGA6, "__AVR_ATMXT540SREVA__", 0, 0, 0x2000, 2, "mxt540sreva") +AVR_MCU ("atxmega192a3u", ARCH_AVRXMEGA6, "__AVR_ATxmega192A3U__", 0, 0, 0x2000, 4, "x192a3u") +AVR_MCU ("atxmega192c3", ARCH_AVRXMEGA6, "__AVR_ATxmega192C3__", 0, 0, 0x2000, 4, "x192c3") +AVR_MCU ("atxmega256a3u", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3U__", 0, 0, 0x2000, 5, "x256a3u") +AVR_MCU ("atxmega256c3", ARCH_AVRXMEGA6, "__AVR_ATxmega256C3__", 0, 0, 0x2000, 5, "x256c3") +AVR_MCU ("atxmega384c3", ARCH_AVRXMEGA6, "__AVR_ATxmega384C3__", 0, 0, 0x2000, 6, "x384c3") +AVR_MCU ("atxmega384d3", ARCH_AVRXMEGA6, "__AVR_ATxmega384D3__", 0, 0, 0x2000, 6, "x384d3") /* Xmega, 128K < Flash, RAM > 64K RAM. */ AVR_MCU ("avrxmega7", ARCH_AVRXMEGA7, NULL, 0, 0, 0x2000, 3, "x128a1") AVR_MCU ("atxmega128a1", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__", 0, 0, 0x2000, 3, "x128a1") AVR_MCU ("atxmega128a1u", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1U__", 0, 0, 0x2000, 3, "x128a1u") +AVR_MCU ("atxmega128a4u", ARCH_AVRXMEGA7, "__AVR_ATxmega128A4U__", 0, 0, 0x2000, 3, "x128a4u") /* Assembler only. */ AVR_MCU ("avr1", ARCH_AVR1, NULL, 0, 0, 0x0060, 1, "s1200") AVR_MCU ("at90s1200", ARCH_AVR1, "__AVR_AT90S1200__", 0, 0, 0x0060, 1, "s1200") diff --git a/gcc/config/avr/avr-tables.opt b/gcc/config/avr/avr-tables.opt index 329c3b19069..1a451bda4b6 100644 --- a/gcc/config/avr/avr-tables.opt +++ b/gcc/config/avr/avr-tables.opt @@ -69,530 +69,740 @@ EnumValue Enum(avr_mcu) String(ata6289) Value(14) EnumValue -Enum(avr_mcu) String(attiny13) Value(15) +Enum(avr_mcu) String(ata5272) Value(15) EnumValue -Enum(avr_mcu) String(attiny13a) Value(16) +Enum(avr_mcu) String(attiny13) Value(16) EnumValue -Enum(avr_mcu) String(attiny2313) Value(17) +Enum(avr_mcu) String(attiny13a) Value(17) EnumValue -Enum(avr_mcu) String(attiny2313a) Value(18) +Enum(avr_mcu) String(attiny2313) Value(18) EnumValue -Enum(avr_mcu) String(attiny24) Value(19) +Enum(avr_mcu) String(attiny2313a) Value(19) EnumValue -Enum(avr_mcu) String(attiny24a) Value(20) +Enum(avr_mcu) String(attiny24) Value(20) EnumValue -Enum(avr_mcu) String(attiny4313) Value(21) +Enum(avr_mcu) String(attiny24a) Value(21) EnumValue -Enum(avr_mcu) String(attiny44) Value(22) +Enum(avr_mcu) String(attiny4313) Value(22) EnumValue -Enum(avr_mcu) String(attiny44a) Value(23) +Enum(avr_mcu) String(attiny44) Value(23) EnumValue -Enum(avr_mcu) String(attiny84) Value(24) +Enum(avr_mcu) String(attiny44a) Value(24) EnumValue -Enum(avr_mcu) String(attiny84a) Value(25) +Enum(avr_mcu) String(attiny84) Value(25) EnumValue -Enum(avr_mcu) String(attiny25) Value(26) +Enum(avr_mcu) String(attiny84a) Value(26) EnumValue -Enum(avr_mcu) String(attiny45) Value(27) +Enum(avr_mcu) String(attiny25) Value(27) EnumValue -Enum(avr_mcu) String(attiny85) Value(28) +Enum(avr_mcu) String(attiny45) Value(28) EnumValue -Enum(avr_mcu) String(attiny261) Value(29) +Enum(avr_mcu) String(attiny85) Value(29) EnumValue -Enum(avr_mcu) String(attiny261a) Value(30) +Enum(avr_mcu) String(attiny261) Value(30) EnumValue -Enum(avr_mcu) String(attiny461) Value(31) +Enum(avr_mcu) String(attiny261a) Value(31) EnumValue -Enum(avr_mcu) String(attiny461a) Value(32) +Enum(avr_mcu) String(attiny461) Value(32) EnumValue -Enum(avr_mcu) String(attiny861) Value(33) +Enum(avr_mcu) String(attiny461a) Value(33) EnumValue -Enum(avr_mcu) String(attiny861a) Value(34) +Enum(avr_mcu) String(attiny861) Value(34) EnumValue -Enum(avr_mcu) String(attiny43u) Value(35) +Enum(avr_mcu) String(attiny861a) Value(35) EnumValue -Enum(avr_mcu) String(attiny87) Value(36) +Enum(avr_mcu) String(attiny43u) Value(36) EnumValue -Enum(avr_mcu) String(attiny48) Value(37) +Enum(avr_mcu) String(attiny87) Value(37) EnumValue -Enum(avr_mcu) String(attiny88) Value(38) +Enum(avr_mcu) String(attiny48) Value(38) EnumValue -Enum(avr_mcu) String(at86rf401) Value(39) +Enum(avr_mcu) String(attiny88) Value(39) EnumValue -Enum(avr_mcu) String(avr3) Value(40) +Enum(avr_mcu) String(at86rf401) Value(40) EnumValue -Enum(avr_mcu) String(at43usb355) Value(41) +Enum(avr_mcu) String(avr3) Value(41) EnumValue -Enum(avr_mcu) String(at76c711) Value(42) +Enum(avr_mcu) String(at43usb355) Value(42) EnumValue -Enum(avr_mcu) String(avr31) Value(43) +Enum(avr_mcu) String(at76c711) Value(43) EnumValue -Enum(avr_mcu) String(atmega103) Value(44) +Enum(avr_mcu) String(avr31) Value(44) EnumValue -Enum(avr_mcu) String(at43usb320) Value(45) +Enum(avr_mcu) String(atmega103) Value(45) EnumValue -Enum(avr_mcu) String(avr35) Value(46) +Enum(avr_mcu) String(at43usb320) Value(46) EnumValue -Enum(avr_mcu) String(at90usb82) Value(47) +Enum(avr_mcu) String(avr35) Value(47) EnumValue -Enum(avr_mcu) String(at90usb162) Value(48) +Enum(avr_mcu) String(ata5505) Value(48) EnumValue -Enum(avr_mcu) String(atmega8u2) Value(49) +Enum(avr_mcu) String(at90usb82) Value(49) EnumValue -Enum(avr_mcu) String(atmega16u2) Value(50) +Enum(avr_mcu) String(at90usb162) Value(50) EnumValue -Enum(avr_mcu) String(atmega32u2) Value(51) +Enum(avr_mcu) String(atmega8u2) Value(51) EnumValue -Enum(avr_mcu) String(attiny167) Value(52) +Enum(avr_mcu) String(atmega16u2) Value(52) EnumValue -Enum(avr_mcu) String(avr4) Value(53) +Enum(avr_mcu) String(atmega32u2) Value(53) EnumValue -Enum(avr_mcu) String(atmega8) Value(54) +Enum(avr_mcu) String(attiny167) Value(54) EnumValue -Enum(avr_mcu) String(atmega48) Value(55) +Enum(avr_mcu) String(attiny1634) Value(55) EnumValue -Enum(avr_mcu) String(atmega48a) Value(56) +Enum(avr_mcu) String(avr4) Value(56) EnumValue -Enum(avr_mcu) String(atmega48p) Value(57) +Enum(avr_mcu) String(ata6285) Value(57) EnumValue -Enum(avr_mcu) String(atmega88) Value(58) +Enum(avr_mcu) String(ata6286) Value(58) EnumValue -Enum(avr_mcu) String(atmega88a) Value(59) +Enum(avr_mcu) String(atmega8) Value(59) EnumValue -Enum(avr_mcu) String(atmega88p) Value(60) +Enum(avr_mcu) String(atmega8a) Value(60) EnumValue -Enum(avr_mcu) String(atmega88pa) Value(61) +Enum(avr_mcu) String(atmega48) Value(61) EnumValue -Enum(avr_mcu) String(atmega8515) Value(62) +Enum(avr_mcu) String(atmega48a) Value(62) EnumValue -Enum(avr_mcu) String(atmega8535) Value(63) +Enum(avr_mcu) String(atmega48p) Value(63) EnumValue -Enum(avr_mcu) String(atmega8hva) Value(64) +Enum(avr_mcu) String(atmega48pa) Value(64) EnumValue -Enum(avr_mcu) String(at90pwm1) Value(65) +Enum(avr_mcu) String(atmega88) Value(65) EnumValue -Enum(avr_mcu) String(at90pwm2) Value(66) +Enum(avr_mcu) String(atmega88a) Value(66) EnumValue -Enum(avr_mcu) String(at90pwm2b) Value(67) +Enum(avr_mcu) String(atmega88p) Value(67) EnumValue -Enum(avr_mcu) String(at90pwm3) Value(68) +Enum(avr_mcu) String(atmega88pa) Value(68) EnumValue -Enum(avr_mcu) String(at90pwm3b) Value(69) +Enum(avr_mcu) String(atmega8515) Value(69) EnumValue -Enum(avr_mcu) String(at90pwm81) Value(70) +Enum(avr_mcu) String(atmega8535) Value(70) EnumValue -Enum(avr_mcu) String(avr5) Value(71) +Enum(avr_mcu) String(atmega8hva) Value(71) EnumValue -Enum(avr_mcu) String(atmega16) Value(72) +Enum(avr_mcu) String(at90pwm1) Value(72) EnumValue -Enum(avr_mcu) String(atmega16a) Value(73) +Enum(avr_mcu) String(at90pwm2) Value(73) EnumValue -Enum(avr_mcu) String(atmega161) Value(74) +Enum(avr_mcu) String(at90pwm2b) Value(74) EnumValue -Enum(avr_mcu) String(atmega162) Value(75) +Enum(avr_mcu) String(at90pwm3) Value(75) EnumValue -Enum(avr_mcu) String(atmega163) Value(76) +Enum(avr_mcu) String(at90pwm3b) Value(76) EnumValue -Enum(avr_mcu) String(atmega164a) Value(77) +Enum(avr_mcu) String(at90pwm81) Value(77) EnumValue -Enum(avr_mcu) String(atmega164p) Value(78) +Enum(avr_mcu) String(avr5) Value(78) EnumValue -Enum(avr_mcu) String(atmega165) Value(79) +Enum(avr_mcu) String(ata5790) Value(79) EnumValue -Enum(avr_mcu) String(atmega165a) Value(80) +Enum(avr_mcu) String(ata5790n) Value(80) EnumValue -Enum(avr_mcu) String(atmega165p) Value(81) +Enum(avr_mcu) String(ata5795) Value(81) EnumValue -Enum(avr_mcu) String(atmega168) Value(82) +Enum(avr_mcu) String(atmega16) Value(82) EnumValue -Enum(avr_mcu) String(atmega168a) Value(83) +Enum(avr_mcu) String(atmega16a) Value(83) EnumValue -Enum(avr_mcu) String(atmega168p) Value(84) +Enum(avr_mcu) String(atmega161) Value(84) EnumValue -Enum(avr_mcu) String(atmega169) Value(85) +Enum(avr_mcu) String(atmega162) Value(85) EnumValue -Enum(avr_mcu) String(atmega169a) Value(86) +Enum(avr_mcu) String(atmega163) Value(86) EnumValue -Enum(avr_mcu) String(atmega169p) Value(87) +Enum(avr_mcu) String(atmega164a) Value(87) EnumValue -Enum(avr_mcu) String(atmega169pa) Value(88) +Enum(avr_mcu) String(atmega164p) Value(88) EnumValue -Enum(avr_mcu) String(atmega32) Value(89) +Enum(avr_mcu) String(atmega164pa) Value(89) EnumValue -Enum(avr_mcu) String(atmega323) Value(90) +Enum(avr_mcu) String(atmega165) Value(90) EnumValue -Enum(avr_mcu) String(atmega324a) Value(91) +Enum(avr_mcu) String(atmega165a) Value(91) EnumValue -Enum(avr_mcu) String(atmega324p) Value(92) +Enum(avr_mcu) String(atmega165p) Value(92) EnumValue -Enum(avr_mcu) String(atmega324pa) Value(93) +Enum(avr_mcu) String(atmega165pa) Value(93) EnumValue -Enum(avr_mcu) String(atmega325) Value(94) +Enum(avr_mcu) String(atmega168) Value(94) EnumValue -Enum(avr_mcu) String(atmega325a) Value(95) +Enum(avr_mcu) String(atmega168a) Value(95) EnumValue -Enum(avr_mcu) String(atmega325p) Value(96) +Enum(avr_mcu) String(atmega168p) Value(96) EnumValue -Enum(avr_mcu) String(atmega3250) Value(97) +Enum(avr_mcu) String(atmega168pa) Value(97) EnumValue -Enum(avr_mcu) String(atmega3250a) Value(98) +Enum(avr_mcu) String(atmega169) Value(98) EnumValue -Enum(avr_mcu) String(atmega3250p) Value(99) +Enum(avr_mcu) String(atmega169a) Value(99) EnumValue -Enum(avr_mcu) String(atmega328) Value(100) +Enum(avr_mcu) String(atmega169p) Value(100) EnumValue -Enum(avr_mcu) String(atmega328p) Value(101) +Enum(avr_mcu) String(atmega169pa) Value(101) EnumValue -Enum(avr_mcu) String(atmega329) Value(102) +Enum(avr_mcu) String(atmega16hva) Value(102) EnumValue -Enum(avr_mcu) String(atmega329a) Value(103) +Enum(avr_mcu) String(atmega16hvb) Value(103) EnumValue -Enum(avr_mcu) String(atmega329p) Value(104) +Enum(avr_mcu) String(atmega16hvbrevb) Value(104) EnumValue -Enum(avr_mcu) String(atmega329pa) Value(105) +Enum(avr_mcu) String(atmega16m1) Value(105) EnumValue -Enum(avr_mcu) String(atmega3290) Value(106) +Enum(avr_mcu) String(atmega16u4) Value(106) EnumValue -Enum(avr_mcu) String(atmega3290a) Value(107) +Enum(avr_mcu) String(atmega26hvg) Value(107) EnumValue -Enum(avr_mcu) String(atmega3290p) Value(108) +Enum(avr_mcu) String(atmega32a) Value(108) EnumValue -Enum(avr_mcu) String(atmega406) Value(109) +Enum(avr_mcu) String(atmega32) Value(109) EnumValue -Enum(avr_mcu) String(atmega64) Value(110) +Enum(avr_mcu) String(atmega32a) Value(110) EnumValue -Enum(avr_mcu) String(atmega640) Value(111) +Enum(avr_mcu) String(atmega323) Value(111) EnumValue -Enum(avr_mcu) String(atmega644) Value(112) +Enum(avr_mcu) String(atmega324a) Value(112) EnumValue -Enum(avr_mcu) String(atmega644a) Value(113) +Enum(avr_mcu) String(atmega324p) Value(113) EnumValue -Enum(avr_mcu) String(atmega644p) Value(114) +Enum(avr_mcu) String(atmega324pa) Value(114) EnumValue -Enum(avr_mcu) String(atmega644pa) Value(115) +Enum(avr_mcu) String(atmega325) Value(115) EnumValue -Enum(avr_mcu) String(atmega645) Value(116) +Enum(avr_mcu) String(atmega325a) Value(116) EnumValue -Enum(avr_mcu) String(atmega645a) Value(117) +Enum(avr_mcu) String(atmega325p) Value(117) EnumValue -Enum(avr_mcu) String(atmega645p) Value(118) +Enum(avr_mcu) String(atmega3250) Value(118) EnumValue -Enum(avr_mcu) String(atmega6450) Value(119) +Enum(avr_mcu) String(atmega3250a) Value(119) EnumValue -Enum(avr_mcu) String(atmega6450a) Value(120) +Enum(avr_mcu) String(atmega3250p) Value(120) EnumValue -Enum(avr_mcu) String(atmega6450p) Value(121) +Enum(avr_mcu) String(atmega3250pa) Value(121) EnumValue -Enum(avr_mcu) String(atmega649) Value(122) +Enum(avr_mcu) String(atmega328) Value(122) EnumValue -Enum(avr_mcu) String(atmega649a) Value(123) +Enum(avr_mcu) String(atmega328p) Value(123) EnumValue -Enum(avr_mcu) String(atmega649p) Value(124) +Enum(avr_mcu) String(atmega329) Value(124) EnumValue -Enum(avr_mcu) String(atmega6490) Value(125) +Enum(avr_mcu) String(atmega329a) Value(125) EnumValue -Enum(avr_mcu) String(atmega16hva) Value(126) +Enum(avr_mcu) String(atmega329p) Value(126) EnumValue -Enum(avr_mcu) String(atmega16hva2) Value(127) +Enum(avr_mcu) String(atmega329pa) Value(127) EnumValue -Enum(avr_mcu) String(atmega16hvb) Value(128) +Enum(avr_mcu) String(atmega3290) Value(128) EnumValue -Enum(avr_mcu) String(atmega32hvb) Value(129) +Enum(avr_mcu) String(atmega3290a) Value(129) EnumValue -Enum(avr_mcu) String(atmega64hve) Value(130) +Enum(avr_mcu) String(atmega3290p) Value(130) EnumValue -Enum(avr_mcu) String(at90can32) Value(131) +Enum(avr_mcu) String(atmega3290pa) Value(131) EnumValue -Enum(avr_mcu) String(at90can64) Value(132) +Enum(avr_mcu) String(atmega32c1) Value(132) EnumValue -Enum(avr_mcu) String(at90pwm216) Value(133) +Enum(avr_mcu) String(atmega32m1) Value(133) EnumValue -Enum(avr_mcu) String(at90pwm316) Value(134) +Enum(avr_mcu) String(atmega32u4) Value(134) EnumValue -Enum(avr_mcu) String(atmega32c1) Value(135) +Enum(avr_mcu) String(atmega32u6) Value(135) EnumValue -Enum(avr_mcu) String(atmega64c1) Value(136) +Enum(avr_mcu) String(atmega406) Value(136) EnumValue -Enum(avr_mcu) String(atmega16m1) Value(137) +Enum(avr_mcu) String(atmega64) Value(137) EnumValue -Enum(avr_mcu) String(atmega32m1) Value(138) +Enum(avr_mcu) String(atmega64a) Value(138) EnumValue -Enum(avr_mcu) String(atmega64m1) Value(139) +Enum(avr_mcu) String(atmega640) Value(139) EnumValue -Enum(avr_mcu) String(atmega16u4) Value(140) +Enum(avr_mcu) String(atmega644) Value(140) EnumValue -Enum(avr_mcu) String(atmega32u4) Value(141) +Enum(avr_mcu) String(atmega644a) Value(141) EnumValue -Enum(avr_mcu) String(atmega32u6) Value(142) +Enum(avr_mcu) String(atmega644p) Value(142) EnumValue -Enum(avr_mcu) String(at90scr100) Value(143) +Enum(avr_mcu) String(atmega644pa) Value(143) EnumValue -Enum(avr_mcu) String(at90usb646) Value(144) +Enum(avr_mcu) String(atmega645) Value(144) EnumValue -Enum(avr_mcu) String(at90usb647) Value(145) +Enum(avr_mcu) String(atmega645a) Value(145) EnumValue -Enum(avr_mcu) String(at94k) Value(146) +Enum(avr_mcu) String(atmega645p) Value(146) EnumValue -Enum(avr_mcu) String(m3000) Value(147) +Enum(avr_mcu) String(atmega6450) Value(147) EnumValue -Enum(avr_mcu) String(avr51) Value(148) +Enum(avr_mcu) String(atmega6450a) Value(148) EnumValue -Enum(avr_mcu) String(atmega128) Value(149) +Enum(avr_mcu) String(atmega6450p) Value(149) EnumValue -Enum(avr_mcu) String(atmega1280) Value(150) +Enum(avr_mcu) String(atmega649) Value(150) EnumValue -Enum(avr_mcu) String(atmega1281) Value(151) +Enum(avr_mcu) String(atmega649a) Value(151) EnumValue -Enum(avr_mcu) String(atmega1284p) Value(152) +Enum(avr_mcu) String(atmega649p) Value(152) EnumValue -Enum(avr_mcu) String(atmega128rfa1) Value(153) +Enum(avr_mcu) String(atmega6490) Value(153) EnumValue -Enum(avr_mcu) String(at90can128) Value(154) +Enum(avr_mcu) String(atmega16hva) Value(154) EnumValue -Enum(avr_mcu) String(at90usb1286) Value(155) +Enum(avr_mcu) String(atmega16hva2) Value(155) EnumValue -Enum(avr_mcu) String(at90usb1287) Value(156) +Enum(avr_mcu) String(atmega16hvb) Value(156) EnumValue -Enum(avr_mcu) String(avr6) Value(157) +Enum(avr_mcu) String(atmega32hvb) Value(157) EnumValue -Enum(avr_mcu) String(atmega2560) Value(158) +Enum(avr_mcu) String(atmega6490a) Value(158) EnumValue -Enum(avr_mcu) String(atmega2561) Value(159) +Enum(avr_mcu) String(atmega6490p) Value(159) EnumValue -Enum(avr_mcu) String(avrxmega2) Value(160) +Enum(avr_mcu) String(atmega64c1) Value(160) EnumValue -Enum(avr_mcu) String(atxmega16a4) Value(161) +Enum(avr_mcu) String(atmega64m1) Value(161) EnumValue -Enum(avr_mcu) String(atxmega16d4) Value(162) +Enum(avr_mcu) String(atmega64hve) Value(162) EnumValue -Enum(avr_mcu) String(atxmega16x1) Value(163) +Enum(avr_mcu) String(atmega64rfa2) Value(163) EnumValue -Enum(avr_mcu) String(atxmega32a4) Value(164) +Enum(avr_mcu) String(atmega64rfr2) Value(164) EnumValue -Enum(avr_mcu) String(atxmega32d4) Value(165) +Enum(avr_mcu) String(atmega32hvb) Value(165) EnumValue -Enum(avr_mcu) String(atxmega32x1) Value(166) +Enum(avr_mcu) String(atmega32hvbrevb) Value(166) EnumValue -Enum(avr_mcu) String(avrxmega4) Value(167) +Enum(avr_mcu) String(atmega16hva2) Value(167) EnumValue -Enum(avr_mcu) String(atxmega64a3) Value(168) +Enum(avr_mcu) String(atmega48hvf) Value(168) EnumValue -Enum(avr_mcu) String(atxmega64d3) Value(169) +Enum(avr_mcu) String(at90can32) Value(169) EnumValue -Enum(avr_mcu) String(avrxmega5) Value(170) +Enum(avr_mcu) String(at90can64) Value(170) EnumValue -Enum(avr_mcu) String(atxmega64a1) Value(171) +Enum(avr_mcu) String(at90pwm161) Value(171) EnumValue -Enum(avr_mcu) String(atxmega64a1u) Value(172) +Enum(avr_mcu) String(at90pwm216) Value(172) EnumValue -Enum(avr_mcu) String(avrxmega6) Value(173) +Enum(avr_mcu) String(at90pwm316) Value(173) EnumValue -Enum(avr_mcu) String(atxmega128a3) Value(174) +Enum(avr_mcu) String(atmega32c1) Value(174) EnumValue -Enum(avr_mcu) String(atxmega128d3) Value(175) +Enum(avr_mcu) String(atmega64c1) Value(175) EnumValue -Enum(avr_mcu) String(atxmega192a3) Value(176) +Enum(avr_mcu) String(atmega16m1) Value(176) EnumValue -Enum(avr_mcu) String(atxmega192d3) Value(177) +Enum(avr_mcu) String(atmega32m1) Value(177) EnumValue -Enum(avr_mcu) String(atxmega256a3) Value(178) +Enum(avr_mcu) String(atmega64m1) Value(178) EnumValue -Enum(avr_mcu) String(atxmega256a3b) Value(179) +Enum(avr_mcu) String(atmega16u4) Value(179) EnumValue -Enum(avr_mcu) String(atxmega256a3bu) Value(180) +Enum(avr_mcu) String(atmega32u4) Value(180) EnumValue -Enum(avr_mcu) String(atxmega256d3) Value(181) +Enum(avr_mcu) String(atmega32u6) Value(181) EnumValue -Enum(avr_mcu) String(avrxmega7) Value(182) +Enum(avr_mcu) String(at90scr100) Value(182) EnumValue -Enum(avr_mcu) String(atxmega128a1) Value(183) +Enum(avr_mcu) String(at90usb646) Value(183) EnumValue -Enum(avr_mcu) String(atxmega128a1u) Value(184) +Enum(avr_mcu) String(at90usb647) Value(184) EnumValue -Enum(avr_mcu) String(avr1) Value(185) +Enum(avr_mcu) String(at94k) Value(185) EnumValue -Enum(avr_mcu) String(at90s1200) Value(186) +Enum(avr_mcu) String(m3000) Value(186) EnumValue -Enum(avr_mcu) String(attiny11) Value(187) +Enum(avr_mcu) String(avr51) Value(187) EnumValue -Enum(avr_mcu) String(attiny12) Value(188) +Enum(avr_mcu) String(atmega128) Value(188) EnumValue -Enum(avr_mcu) String(attiny15) Value(189) +Enum(avr_mcu) String(atmega128a) Value(189) EnumValue -Enum(avr_mcu) String(attiny28) Value(190) +Enum(avr_mcu) String(atmega1280) Value(190) + +EnumValue +Enum(avr_mcu) String(atmega1281) Value(191) + +EnumValue +Enum(avr_mcu) String(atmega1284) Value(192) + +EnumValue +Enum(avr_mcu) String(atmega1284p) Value(193) + +EnumValue +Enum(avr_mcu) String(atmega128rfa1) Value(194) + +EnumValue +Enum(avr_mcu) String(at90can128) Value(195) + +EnumValue +Enum(avr_mcu) String(at90usb1286) Value(196) + +EnumValue +Enum(avr_mcu) String(at90usb1287) Value(197) + +EnumValue +Enum(avr_mcu) String(avr6) Value(198) + +EnumValue +Enum(avr_mcu) String(atmega2560) Value(199) + +EnumValue +Enum(avr_mcu) String(atmega2561) Value(200) + +EnumValue +Enum(avr_mcu) String(avrxmega2) Value(201) + +EnumValue +Enum(avr_mcu) String(atxmega16a4) Value(202) + +EnumValue +Enum(avr_mcu) String(atxmega16d4) Value(203) + +EnumValue +Enum(avr_mcu) String(atxmega16x1) Value(204) + +EnumValue +Enum(avr_mcu) String(atxmega32a4) Value(205) + +EnumValue +Enum(avr_mcu) String(atxmega32d4) Value(206) + +EnumValue +Enum(avr_mcu) String(atxmega32x1) Value(207) + +EnumValue +Enum(avr_mcu) String(atmxt112sl) Value(208) + +EnumValue +Enum(avr_mcu) String(atmxt224) Value(209) + +EnumValue +Enum(avr_mcu) String(atmxt224e) Value(210) + +EnumValue +Enum(avr_mcu) String(atmxt336s) Value(211) + +EnumValue +Enum(avr_mcu) String(atxmega16a4u) Value(212) + +EnumValue +Enum(avr_mcu) String(atxmega16c4) Value(213) + +EnumValue +Enum(avr_mcu) String(atxmega32a4u) Value(214) + +EnumValue +Enum(avr_mcu) String(atxmega32c4) Value(215) + +EnumValue +Enum(avr_mcu) String(atxmega32e5) Value(216) + +EnumValue +Enum(avr_mcu) String(avrxmega4) Value(217) + +EnumValue +Enum(avr_mcu) String(atxmega64a3) Value(218) + +EnumValue +Enum(avr_mcu) String(atxmega64d3) Value(219) + +EnumValue +Enum(avr_mcu) String(atxmega64a3u) Value(220) + +EnumValue +Enum(avr_mcu) String(atxmega64a4u) Value(221) + +EnumValue +Enum(avr_mcu) String(atxmega64b1) Value(222) + +EnumValue +Enum(avr_mcu) String(atxmega64b3) Value(223) + +EnumValue +Enum(avr_mcu) String(atxmega64c3) Value(224) + +EnumValue +Enum(avr_mcu) String(atxmega64d4) Value(225) + +EnumValue +Enum(avr_mcu) String(avrxmega5) Value(226) + +EnumValue +Enum(avr_mcu) String(atxmega64a1) Value(227) + +EnumValue +Enum(avr_mcu) String(atxmega64a1u) Value(228) + +EnumValue +Enum(avr_mcu) String(avrxmega6) Value(229) + +EnumValue +Enum(avr_mcu) String(atxmega128a3) Value(230) + +EnumValue +Enum(avr_mcu) String(atxmega128d3) Value(231) + +EnumValue +Enum(avr_mcu) String(atxmega192a3) Value(232) + +EnumValue +Enum(avr_mcu) String(atxmega192d3) Value(233) + +EnumValue +Enum(avr_mcu) String(atxmega256a3) Value(234) + +EnumValue +Enum(avr_mcu) String(atxmega256a3b) Value(235) + +EnumValue +Enum(avr_mcu) String(atxmega256a3bu) Value(236) + +EnumValue +Enum(avr_mcu) String(atxmega256d3) Value(237) + +EnumValue +Enum(avr_mcu) String(atxmega128a3u) Value(238) + +EnumValue +Enum(avr_mcu) String(atxmega128b1) Value(239) + +EnumValue +Enum(avr_mcu) String(atxmega128b3) Value(240) + +EnumValue +Enum(avr_mcu) String(atxmega128c3) Value(241) + +EnumValue +Enum(avr_mcu) String(atxmega128d4) Value(242) + +EnumValue +Enum(avr_mcu) String(atmxt540s) Value(243) + +EnumValue +Enum(avr_mcu) String(atmxt540sreva) Value(244) + +EnumValue +Enum(avr_mcu) String(atxmega192a3u) Value(245) + +EnumValue +Enum(avr_mcu) String(atxmega192c3) Value(246) + +EnumValue +Enum(avr_mcu) String(atxmega256a3u) Value(247) + +EnumValue +Enum(avr_mcu) String(atxmega256c3) Value(248) + +EnumValue +Enum(avr_mcu) String(atxmega384c3) Value(249) + +EnumValue +Enum(avr_mcu) String(atxmega384d3) Value(250) + +EnumValue +Enum(avr_mcu) String(avrxmega7) Value(251) + +EnumValue +Enum(avr_mcu) String(atxmega128a1) Value(252) + +EnumValue +Enum(avr_mcu) String(atxmega128a1u) Value(253) + +EnumValue +Enum(avr_mcu) String(atxmega128a4u) Value(254) + +EnumValue +Enum(avr_mcu) String(avr1) Value(255) + +EnumValue +Enum(avr_mcu) String(at90s1200) Value(256) + +EnumValue +Enum(avr_mcu) String(attiny11) Value(257) + +EnumValue +Enum(avr_mcu) String(attiny12) Value(258) + +EnumValue +Enum(avr_mcu) String(attiny15) Value(259) + +EnumValue +Enum(avr_mcu) String(attiny28) Value(260) diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 0f1d2c1647a..f9829904387 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -11525,22 +11525,22 @@ avr_init_builtins (void) = build_function_type_list (node_##fx##k, ITYP (node_##fx##k), NULL) tree node_hr = short_fract_type_node; - tree node_r = fract_type_node; + tree node_nr = fract_type_node; tree node_lr = long_fract_type_node; tree node_llr = long_long_fract_type_node; tree node_uhr = unsigned_short_fract_type_node; - tree node_ur = unsigned_fract_type_node; + tree node_unr = unsigned_fract_type_node; tree node_ulr = unsigned_long_fract_type_node; tree node_ullr = unsigned_long_long_fract_type_node; tree node_hk = short_accum_type_node; - tree node_k = accum_type_node; + tree node_nk = accum_type_node; tree node_lk = long_accum_type_node; tree node_llk = long_long_accum_type_node; tree node_uhk = unsigned_short_accum_type_node; - tree node_uk = unsigned_accum_type_node; + tree node_unk = unsigned_accum_type_node; tree node_ulk = unsigned_long_accum_type_node; tree node_ullk = unsigned_long_long_accum_type_node; @@ -11548,55 +11548,55 @@ avr_init_builtins (void) /* For absfx builtins. */ FX_FTYPE_FX (h); - FX_FTYPE_FX (); + FX_FTYPE_FX (n); FX_FTYPE_FX (l); FX_FTYPE_FX (ll); /* For roundfx builtins. */ FX_FTYPE_FX_INT (h); - FX_FTYPE_FX_INT (); + FX_FTYPE_FX_INT (n); FX_FTYPE_FX_INT (l); FX_FTYPE_FX_INT (ll); FX_FTYPE_FX_INT (uh); - FX_FTYPE_FX_INT (u); + FX_FTYPE_FX_INT (un); FX_FTYPE_FX_INT (ul); FX_FTYPE_FX_INT (ull); /* For countlsfx builtins. */ INT_FTYPE_FX (h); - INT_FTYPE_FX (); + INT_FTYPE_FX (n); INT_FTYPE_FX (l); INT_FTYPE_FX (ll); INT_FTYPE_FX (uh); - INT_FTYPE_FX (u); + INT_FTYPE_FX (un); INT_FTYPE_FX (ul); INT_FTYPE_FX (ull); /* For bitsfx builtins. */ INTX_FTYPE_FX (h); - INTX_FTYPE_FX (); + INTX_FTYPE_FX (n); INTX_FTYPE_FX (l); INTX_FTYPE_FX (ll); INTX_FTYPE_FX (uh); - INTX_FTYPE_FX (u); + INTX_FTYPE_FX (un); INTX_FTYPE_FX (ul); INTX_FTYPE_FX (ull); /* For fxbits builtins. */ FX_FTYPE_INTX (h); - FX_FTYPE_INTX (); + FX_FTYPE_INTX (n); FX_FTYPE_INTX (l); FX_FTYPE_INTX (ll); FX_FTYPE_INTX (uh); - FX_FTYPE_INTX (u); + FX_FTYPE_INTX (un); FX_FTYPE_INTX (ul); FX_FTYPE_INTX (ull); diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 7491f348a25..f223a6148ee 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -486,14 +486,16 @@ typedef struct avr_args #define ADJUST_INSN_LENGTH(INSN, LENGTH) \ (LENGTH = avr_adjust_insn_length (INSN, LENGTH)) -extern const char *avr_device_to_arch (int argc, const char **argv); +extern const char *avr_device_to_as (int argc, const char **argv); +extern const char *avr_device_to_ld (int argc, const char **argv); extern const char *avr_device_to_data_start (int argc, const char **argv); extern const char *avr_device_to_startfiles (int argc, const char **argv); extern const char *avr_device_to_devicelib (int argc, const char **argv); extern const char *avr_device_to_sp8 (int argc, const char **argv); #define EXTRA_SPEC_FUNCTIONS \ - { "device_to_arch", avr_device_to_arch }, \ + { "device_to_as", avr_device_to_as }, \ + { "device_to_ld", avr_device_to_ld }, \ { "device_to_data_start", avr_device_to_data_start }, \ { "device_to_startfile", avr_device_to_startfiles }, \ { "device_to_devicelib", avr_device_to_devicelib }, \ @@ -507,14 +509,9 @@ extern const char *avr_device_to_sp8 (int argc, const char **argv); #define CC1PLUS_SPEC "%{!frtti:-fno-rtti} \ %{!fenforce-eh-specs:-fno-enforce-eh-specs} \ %{!fexceptions:-fno-exceptions}" -/* A C string constant that tells the GCC driver program options to - pass to `cc1plus'. */ - -#define ASM_SPEC "%{mmcu=avr25:-mmcu=avr2;mmcu=avr35:-mmcu=avr3;mmcu=avr31:-mmcu=avr3;mmcu=avr51:-mmcu=avr5;\ -mmcu=*:-mmcu=%*} \ -%{mmcu=*:%{!mmcu=avr2:%{!mmcu=at90s8515:%{!mmcu=avr31:%{!mmcu=atmega103:\ --mno-skip-bug}}}}}" +#define ASM_SPEC "%:device_to_as(%{mmcu=*:%*}) " + #define LINK_SPEC "\ %{mrelax:--relax\ %{mpmem-wrap-around:%{mmcu=at90usb8*:--pmem-wrap-around=8k}\ @@ -524,7 +521,7 @@ mmcu=*:-mmcu=%*} \ %{mmcu=atmega64*|\ mmcu=at90can64*|\ mmcu=at90usb64*:--pmem-wrap-around=64k}}}\ -%:device_to_arch(%{mmcu=*:%*})\ +%:device_to_ld(%{mmcu=*:%*})\ %:device_to_data_start(%{mmcu=*:%*})" #define LIB_SPEC \ diff --git a/gcc/config/avr/builtins.def b/gcc/config/avr/builtins.def index ce444abae74..3562c6932a6 100644 --- a/gcc/config/avr/builtins.def +++ b/gcc/config/avr/builtins.def @@ -62,78 +62,78 @@ DEF_BUILTIN (FLASH_SEGMENT, 1, char_ftype_const_memx_ptr, flash_segment, NULL) /* 7.18a.6.2 The fixed-point absolute value functions. */ DEF_BUILTIN (ABSHR, 1, hr_ftype_hr, ssabsqq2, "__ssabs_1") -DEF_BUILTIN (ABSR, 1, r_ftype_r, ssabshq2, "__ssabs_2") +DEF_BUILTIN (ABSR, 1, nr_ftype_nr, ssabshq2, "__ssabs_2") DEF_BUILTIN (ABSLR, 1, lr_ftype_lr, ssabssq2, "__ssabs_4") DEF_BUILTIN (ABSLLR, -1, llr_ftype_llr, nothing, "__ssabsdq2") // GCC extension DEF_BUILTIN (ABSHK, 1, hk_ftype_hk, ssabsha2, "__ssabs_2") -DEF_BUILTIN (ABSK, 1, k_ftype_k, ssabssa2, "__ssabs_4") +DEF_BUILTIN (ABSK, 1, nk_ftype_nk, ssabssa2, "__ssabs_4") DEF_BUILTIN (ABSLK, -1, lk_ftype_lk, nothing, "__ssabsda2") DEF_BUILTIN (ABSLLK, -1, llk_ftype_llk, nothing, "__ssabsta2") // GCC extension /* 7.18a.6.3 The fixed-point round functions. */ DEF_BUILTIN (ROUNDHR, 2, hr_ftype_hr_int, roundqq3, "__roundhr") -DEF_BUILTIN (ROUNDR, 2, r_ftype_r_int, roundhq3, "__roundr") +DEF_BUILTIN (ROUNDR, 2, nr_ftype_nr_int, roundhq3, "__roundr") DEF_BUILTIN (ROUNDLR, 2, lr_ftype_lr_int, roundsq3, "__roundlr") DEF_BUILTIN (ROUNDLLR, -1, llr_ftype_llr_int, nothing, "__rounddq3") // GCC extension DEF_BUILTIN (ROUNDUHR, 2, uhr_ftype_uhr_int, rounduqq3, "__rounduhr") -DEF_BUILTIN (ROUNDUR, 2, ur_ftype_ur_int, rounduhq3, "__roundur") +DEF_BUILTIN (ROUNDUR, 2, unr_ftype_unr_int, rounduhq3, "__roundur") DEF_BUILTIN (ROUNDULR, 2, ulr_ftype_ulr_int, roundusq3, "__roundulr") DEF_BUILTIN (ROUNDULLR, -1, ullr_ftype_ullr_int, nothing, "__roundudq3") // GCC extension DEF_BUILTIN (ROUNDHK, 2, hk_ftype_hk_int, roundha3, "__roundhk") -DEF_BUILTIN (ROUNDK, 2, k_ftype_k_int, roundsa3, "__roundk") +DEF_BUILTIN (ROUNDK, 2, nk_ftype_nk_int, roundsa3, "__roundk") DEF_BUILTIN (ROUNDLK, -1, lk_ftype_lk_int, nothing, "__roundda3") DEF_BUILTIN (ROUNDLLK, -1, llk_ftype_llk_int, nothing, "__roundta3") // GCC extension DEF_BUILTIN (ROUNDUHK, 2, uhk_ftype_uhk_int, rounduha3, "__rounduhk") -DEF_BUILTIN (ROUNDUK, 2, uk_ftype_uk_int, roundusa3, "__rounduk") +DEF_BUILTIN (ROUNDUK, 2, unk_ftype_unk_int, roundusa3, "__rounduk") DEF_BUILTIN (ROUNDULK, -1, ulk_ftype_ulk_int, nothing, "__rounduda3") DEF_BUILTIN (ROUNDULLK, -1, ullk_ftype_ullk_int, nothing, "__rounduta3") // GCC extension /* 7.18a.6.4 The fixed-point bit countls functions. */ DEF_BUILTIN (COUNTLSHR, -1, int_ftype_hr, nothing, "__countlsqi2") -DEF_BUILTIN (COUNTLSR, -1, int_ftype_r, nothing, "__countlshi2") +DEF_BUILTIN (COUNTLSR, -1, int_ftype_nr, nothing, "__countlshi2") DEF_BUILTIN (COUNTLSLR, -1, int_ftype_lr, nothing, "__countlssi2") DEF_BUILTIN (COUNTLSLLR, -1, int_ftype_llr, nothing, "__countlsdi2") // GCC extension DEF_BUILTIN (COUNTLSUHR, -1, int_ftype_uhr, nothing, "__countlsuqi2") -DEF_BUILTIN (COUNTLSUR, -1, int_ftype_ur, nothing, "__countlsuhi2") +DEF_BUILTIN (COUNTLSUR, -1, int_ftype_unr, nothing, "__countlsuhi2") DEF_BUILTIN (COUNTLSULR, -1, int_ftype_ulr, nothing, "__countlsusi2") DEF_BUILTIN (COUNTLSULLR, -1, int_ftype_ullr, nothing, "__countlsudi2") // GCC extension DEF_BUILTIN (COUNTLSHK, -1, int_ftype_hk, nothing, "__countlshi2") -DEF_BUILTIN (COUNTLSK, -1, int_ftype_k, nothing, "__countlssi2") +DEF_BUILTIN (COUNTLSK, -1, int_ftype_nk, nothing, "__countlssi2") DEF_BUILTIN (COUNTLSLK, -1, int_ftype_lk, nothing, "__countlsdi2") DEF_BUILTIN (COUNTLSLLK, -1, int_ftype_llk, nothing, "__countlsdi2") // GCC extension DEF_BUILTIN (COUNTLSUHK, -1, int_ftype_uhk, nothing, "__countlsuhi2") -DEF_BUILTIN (COUNTLSUK, -1, int_ftype_uk, nothing, "__countlsusi2") +DEF_BUILTIN (COUNTLSUK, -1, int_ftype_unk, nothing, "__countlsusi2") DEF_BUILTIN (COUNTLSULK, -1, int_ftype_ulk, nothing, "__countlsudi2") DEF_BUILTIN (COUNTLSULLK, -1, int_ftype_ullk, nothing, "__countlsudi2") // GCC extension /* 7.18a.6.5 The bitwise fixed-point to integer conversion functions. */ DEF_BUILTIN (BITSHR, -1, inthr_ftype_hr, nothing, "__ret") -DEF_BUILTIN (BITSR, -1, intr_ftype_r, nothing, "__ret") +DEF_BUILTIN (BITSR, -1, intnr_ftype_nr, nothing, "__ret") DEF_BUILTIN (BITSLR, -1, intlr_ftype_lr, nothing, "__ret") DEF_BUILTIN (BITSLLR, -1, intllr_ftype_llr, nothing, "__ret") // GCC extension DEF_BUILTIN (BITSUHR, -1, intuhr_ftype_uhr, nothing, "__ret") -DEF_BUILTIN (BITSUR, -1, intur_ftype_ur, nothing, "__ret") +DEF_BUILTIN (BITSUR, -1, intunr_ftype_unr, nothing, "__ret") DEF_BUILTIN (BITSULR, -1, intulr_ftype_ulr, nothing, "__ret") DEF_BUILTIN (BITSULLR, -1, intullr_ftype_ullr, nothing, "__ret") // GCC extension DEF_BUILTIN (BITSHK, -1, inthk_ftype_hk, nothing, "__ret") -DEF_BUILTIN (BITSK, -1, intk_ftype_k, nothing, "__ret") +DEF_BUILTIN (BITSK, -1, intnk_ftype_nk, nothing, "__ret") DEF_BUILTIN (BITSLK, -1, intlk_ftype_lk, nothing, "__ret") DEF_BUILTIN (BITSLLK, -1, intllk_ftype_llk, nothing, "__ret") // GCC extension DEF_BUILTIN (BITSUHK, -1, intuhk_ftype_uhk, nothing, "__ret") -DEF_BUILTIN (BITSUK, -1, intuk_ftype_uk, nothing, "__ret") +DEF_BUILTIN (BITSUK, -1, intunk_ftype_unk, nothing, "__ret") DEF_BUILTIN (BITSULK, -1, intulk_ftype_ulk, nothing, "__ret") DEF_BUILTIN (BITSULLK, -1, intullk_ftype_ullk, nothing, "__ret") // GCC extension @@ -141,22 +141,22 @@ DEF_BUILTIN (BITSULLK, -1, intullk_ftype_ullk, nothing, "__ret") // GCC extensio /* 7.18a.6.6 The bitwise integer to fixed-point conversion functions. */ DEF_BUILTIN ( HRBITS, -1, hr_ftype_inthr, nothing, "__ret") -DEF_BUILTIN ( RBITS, -1, r_ftype_intr, nothing, "__ret") +DEF_BUILTIN ( RBITS, -1, nr_ftype_intnr, nothing, "__ret") DEF_BUILTIN ( LRBITS, -1, lr_ftype_intlr, nothing, "__ret") DEF_BUILTIN ( LLRBITS, -1, llr_ftype_intllr, nothing, "__ret") // GCC extension DEF_BUILTIN ( UHRBITS, -1, uhr_ftype_intuhr, nothing, "__ret") -DEF_BUILTIN ( URBITS, -1, ur_ftype_intur, nothing, "__ret") +DEF_BUILTIN ( URBITS, -1, unr_ftype_intunr, nothing, "__ret") DEF_BUILTIN ( ULRBITS, -1, ulr_ftype_intulr, nothing, "__ret") DEF_BUILTIN (ULLRBITS, -1, ullr_ftype_intullr, nothing, "__ret") // GCC extension DEF_BUILTIN ( HKBITS, -1, hk_ftype_inthk, nothing, "__ret") -DEF_BUILTIN ( KBITS, -1, k_ftype_intk, nothing, "__ret") +DEF_BUILTIN ( KBITS, -1, nk_ftype_intnk, nothing, "__ret") DEF_BUILTIN ( LKBITS, -1, lk_ftype_intlk, nothing, "__ret") DEF_BUILTIN ( LLKBITS, -1, llk_ftype_intllk, nothing, "__ret") // GCC extension DEF_BUILTIN ( UHKBITS, -1, uhk_ftype_intuhk, nothing, "__ret") -DEF_BUILTIN ( UKBITS, -1, uk_ftype_intuk, nothing, "__ret") +DEF_BUILTIN ( UKBITS, -1, unk_ftype_intunk, nothing, "__ret") DEF_BUILTIN ( ULKBITS, -1, ulk_ftype_intulk, nothing, "__ret") DEF_BUILTIN (ULLKBITS, -1, ullk_ftype_intullk, nothing, "__ret") // GCC extension diff --git a/gcc/config/avr/driver-avr.c b/gcc/config/avr/driver-avr.c index 47a04e507c5..e859f5f65a5 100644 --- a/gcc/config/avr/driver-avr.c +++ b/gcc/config/avr/driver-avr.c @@ -48,10 +48,25 @@ avr_set_current_device (const char *name) avr_current_arch = &avr_arch_types[avr_current_device->arch]; } -/* Returns command line parameters that describe the device architecture. */ +/* Returns command line parameters to pass to as. */ -const char * -avr_device_to_arch (int argc, const char **argv) +const char* +avr_device_to_as (int argc, const char **argv) +{ + if (0 == argc) + return NULL; + + avr_set_current_device (argv[0]); + + return concat ("-mmcu=", avr_current_arch->arch_name, + avr_current_device->errata_skip ? "" : " -mno-skip-bug", + NULL); +} + +/* Returns command line parameters to pass to ld. */ + +const char* +avr_device_to_ld (int argc, const char **argv) { if (0 == argc) return NULL; diff --git a/gcc/config/avr/t-multilib b/gcc/config/avr/t-multilib index 68bc54cc5e9..6b1db609271 100644 --- a/gcc/config/avr/t-multilib +++ b/gcc/config/avr/t-multilib @@ -53,6 +53,7 @@ MULTILIB_MATCHES = \ mmcu?avr2=mmcu?at90c8534 \ mmcu?avr2=mmcu?at90s8535 \ mmcu?avr25=mmcu?ata6289 \ + mmcu?avr25=mmcu?ata5272 \ mmcu?avr25=mmcu?attiny13 \ mmcu?avr25=mmcu?attiny13a \ mmcu?avr25=mmcu?attiny2313 \ @@ -82,16 +83,22 @@ MULTILIB_MATCHES = \ mmcu?avr3=mmcu?at76c711 \ mmcu?avr31=mmcu?atmega103 \ mmcu?avr31=mmcu?at43usb320 \ + mmcu?avr35=mmcu?ata5505 \ mmcu?avr35=mmcu?at90usb82 \ mmcu?avr35=mmcu?at90usb162 \ mmcu?avr35=mmcu?atmega8u2 \ mmcu?avr35=mmcu?atmega16u2 \ mmcu?avr35=mmcu?atmega32u2 \ mmcu?avr35=mmcu?attiny167 \ + mmcu?avr35=mmcu?attiny1634 \ + mmcu?avr4=mmcu?ata6285 \ + mmcu?avr4=mmcu?ata6286 \ mmcu?avr4=mmcu?atmega8 \ + mmcu?avr4=mmcu?atmega8a \ mmcu?avr4=mmcu?atmega48 \ mmcu?avr4=mmcu?atmega48a \ mmcu?avr4=mmcu?atmega48p \ + mmcu?avr4=mmcu?atmega48pa \ mmcu?avr4=mmcu?atmega88 \ mmcu?avr4=mmcu?atmega88a \ mmcu?avr4=mmcu?atmega88p \ @@ -105,6 +112,9 @@ MULTILIB_MATCHES = \ mmcu?avr4=mmcu?at90pwm3 \ mmcu?avr4=mmcu?at90pwm3b \ mmcu?avr4=mmcu?at90pwm81 \ + mmcu?avr5=mmcu?ata5790 \ + mmcu?avr5=mmcu?ata5790n \ + mmcu?avr5=mmcu?ata5795 \ mmcu?avr5=mmcu?atmega16 \ mmcu?avr5=mmcu?atmega16a \ mmcu?avr5=mmcu?atmega161 \ @@ -112,17 +122,28 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega163 \ mmcu?avr5=mmcu?atmega164a \ mmcu?avr5=mmcu?atmega164p \ + mmcu?avr5=mmcu?atmega164pa \ mmcu?avr5=mmcu?atmega165 \ mmcu?avr5=mmcu?atmega165a \ mmcu?avr5=mmcu?atmega165p \ + mmcu?avr5=mmcu?atmega165pa \ mmcu?avr5=mmcu?atmega168 \ mmcu?avr5=mmcu?atmega168a \ mmcu?avr5=mmcu?atmega168p \ + mmcu?avr5=mmcu?atmega168pa \ mmcu?avr5=mmcu?atmega169 \ mmcu?avr5=mmcu?atmega169a \ mmcu?avr5=mmcu?atmega169p \ mmcu?avr5=mmcu?atmega169pa \ + mmcu?avr5=mmcu?atmega16hva \ + mmcu?avr5=mmcu?atmega16hvb \ + mmcu?avr5=mmcu?atmega16hvbrevb \ + mmcu?avr5=mmcu?atmega16m1 \ + mmcu?avr5=mmcu?atmega16u4 \ + mmcu?avr5=mmcu?atmega26hvg \ + mmcu?avr5=mmcu?atmega32a \ mmcu?avr5=mmcu?atmega32 \ + mmcu?avr5=mmcu?atmega32a \ mmcu?avr5=mmcu?atmega323 \ mmcu?avr5=mmcu?atmega324a \ mmcu?avr5=mmcu?atmega324p \ @@ -133,6 +154,7 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega3250 \ mmcu?avr5=mmcu?atmega3250a \ mmcu?avr5=mmcu?atmega3250p \ + mmcu?avr5=mmcu?atmega3250pa \ mmcu?avr5=mmcu?atmega328 \ mmcu?avr5=mmcu?atmega328p \ mmcu?avr5=mmcu?atmega329 \ @@ -142,8 +164,14 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega3290 \ mmcu?avr5=mmcu?atmega3290a \ mmcu?avr5=mmcu?atmega3290p \ + mmcu?avr5=mmcu?atmega3290pa \ + mmcu?avr5=mmcu?atmega32c1 \ + mmcu?avr5=mmcu?atmega32m1 \ + mmcu?avr5=mmcu?atmega32u4 \ + mmcu?avr5=mmcu?atmega32u6 \ mmcu?avr5=mmcu?atmega406 \ mmcu?avr5=mmcu?atmega64 \ + mmcu?avr5=mmcu?atmega64a \ mmcu?avr5=mmcu?atmega640 \ mmcu?avr5=mmcu?atmega644 \ mmcu?avr5=mmcu?atmega644a \ @@ -163,9 +191,20 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega16hva2 \ mmcu?avr5=mmcu?atmega16hvb \ mmcu?avr5=mmcu?atmega32hvb \ + mmcu?avr5=mmcu?atmega6490a \ + mmcu?avr5=mmcu?atmega6490p \ + mmcu?avr5=mmcu?atmega64c1 \ + mmcu?avr5=mmcu?atmega64m1 \ mmcu?avr5=mmcu?atmega64hve \ + mmcu?avr5=mmcu?atmega64rfa2 \ + mmcu?avr5=mmcu?atmega64rfr2 \ + mmcu?avr5=mmcu?atmega32hvb \ + mmcu?avr5=mmcu?atmega32hvbrevb \ + mmcu?avr5=mmcu?atmega16hva2 \ + mmcu?avr5=mmcu?atmega48hvf \ mmcu?avr5=mmcu?at90can32 \ mmcu?avr5=mmcu?at90can64 \ + mmcu?avr5=mmcu?at90pwm161 \ mmcu?avr5=mmcu?at90pwm216 \ mmcu?avr5=mmcu?at90pwm316 \ mmcu?avr5=mmcu?atmega32c1 \ @@ -182,8 +221,10 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?at94k \ mmcu?avr5=mmcu?m3000 \ mmcu?avr51=mmcu?atmega128 \ + mmcu?avr51=mmcu?atmega128a \ mmcu?avr51=mmcu?atmega1280 \ mmcu?avr51=mmcu?atmega1281 \ + mmcu?avr51=mmcu?atmega1284 \ mmcu?avr51=mmcu?atmega1284p \ mmcu?avr51=mmcu?atmega128rfa1 \ mmcu?avr51=mmcu?at90can128 \ @@ -197,8 +238,23 @@ MULTILIB_MATCHES = \ mmcu?avrxmega2=mmcu?atxmega32a4 \ mmcu?avrxmega2=mmcu?atxmega32d4 \ mmcu?avrxmega2=mmcu?atxmega32x1 \ + mmcu?avrxmega2=mmcu?atmxt112sl \ + mmcu?avrxmega2=mmcu?atmxt224 \ + mmcu?avrxmega2=mmcu?atmxt224e \ + mmcu?avrxmega2=mmcu?atmxt336s \ + mmcu?avrxmega2=mmcu?atxmega16a4u \ + mmcu?avrxmega2=mmcu?atxmega16c4 \ + mmcu?avrxmega2=mmcu?atxmega32a4u \ + mmcu?avrxmega2=mmcu?atxmega32c4 \ + mmcu?avrxmega2=mmcu?atxmega32e5 \ mmcu?avrxmega4=mmcu?atxmega64a3 \ mmcu?avrxmega4=mmcu?atxmega64d3 \ + mmcu?avrxmega4=mmcu?atxmega64a3u \ + mmcu?avrxmega4=mmcu?atxmega64a4u \ + mmcu?avrxmega4=mmcu?atxmega64b1 \ + mmcu?avrxmega4=mmcu?atxmega64b3 \ + mmcu?avrxmega4=mmcu?atxmega64c3 \ + mmcu?avrxmega4=mmcu?atxmega64d4 \ mmcu?avrxmega5=mmcu?atxmega64a1 \ mmcu?avrxmega5=mmcu?atxmega64a1u \ mmcu?avrxmega6=mmcu?atxmega128a3 \ @@ -209,5 +265,19 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega256a3b \ mmcu?avrxmega6=mmcu?atxmega256a3bu \ mmcu?avrxmega6=mmcu?atxmega256d3 \ + mmcu?avrxmega6=mmcu?atxmega128a3u \ + mmcu?avrxmega6=mmcu?atxmega128b1 \ + mmcu?avrxmega6=mmcu?atxmega128b3 \ + mmcu?avrxmega6=mmcu?atxmega128c3 \ + mmcu?avrxmega6=mmcu?atxmega128d4 \ + mmcu?avrxmega6=mmcu?atmxt540s \ + mmcu?avrxmega6=mmcu?atmxt540sreva \ + mmcu?avrxmega6=mmcu?atxmega192a3u \ + mmcu?avrxmega6=mmcu?atxmega192c3 \ + mmcu?avrxmega6=mmcu?atxmega256a3u \ + mmcu?avrxmega6=mmcu?atxmega256c3 \ + mmcu?avrxmega6=mmcu?atxmega384c3 \ + mmcu?avrxmega6=mmcu?atxmega384d3 \ mmcu?avrxmega7=mmcu?atxmega128a1 \ - mmcu?avrxmega7=mmcu?atxmega128a1u + mmcu?avrxmega7=mmcu?atxmega128a1u \ + mmcu?avrxmega7=mmcu?atxmega128a4u diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c index fc0296e2c15..f45d30cf450 100644 --- a/gcc/config/microblaze/microblaze.c +++ b/gcc/config/microblaze/microblaze.c @@ -2842,21 +2842,8 @@ microblaze_emit_compare (enum machine_mode mode, rtx cmp, enum rtx_code *cmp_cod if (code == EQ || code == NE) { - if (TARGET_PATTERN_COMPARE && GET_CODE(cmp_op1) == REG) - { - if (code == EQ) - { - emit_insn (gen_seq_internal_pat (comp_reg, cmp_op0, cmp_op1)); - *cmp_code = NE; - } - else - { - emit_insn (gen_sne_internal_pat (comp_reg, cmp_op0, cmp_op1)); - } - } - else - /* Use xor for equal/not-equal comparison. */ - emit_insn (gen_xorsi3 (comp_reg, cmp_op0, cmp_op1)); + /* Use xor for equal/not-equal comparison. */ + emit_insn (gen_xorsi3 (comp_reg, cmp_op0, cmp_op1)); } else if (code == GT || code == GTU || code == LE || code == LEU) { diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md index 1b4200307cb..339186455ba 100644 --- a/gcc/config/microblaze/microblaze.md +++ b/gcc/config/microblaze/microblaze.md @@ -1637,10 +1637,10 @@ ;; Setting a register from an floating point comparison. ;;---------------------------------------------------------------- (define_insn "cstoresf4" - [(set (match_operand:SI 0 "register_operand") - (match_operator:SI 1 "ordered_comparison_operator" - [(match_operand:SF 2 "register_operand") - (match_operand:SF 3 "register_operand")]))] + [(set (match_operand:SI 0 "register_operand" "=r") + (match_operator 1 "comparison_operator" + [(match_operand:SF 2 "register_operand" "r") + (match_operand:SF 3 "register_operand" "r")]))] "TARGET_HARD_FLOAT" "fcmp.%C1\t%0,%3,%2" [(set_attr "type" "fcmp") @@ -1667,7 +1667,7 @@ (define_expand "cbranchsf4" [(set (pc) - (if_then_else (match_operator:SI 0 "ordered_comparison_operator" + (if_then_else (match_operator 0 "comparison_operator" [(match_operand:SF 1 "register_operand") (match_operand:SF 2 "register_operand")]) (label_ref (match_operand 3 "")) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9290413c283..eb030f117e2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,26 @@ +2013-03-01 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (grokdeclarator): Remove dead code. + +2013-02-28 Jason Merrill <jason@redhat.com> + + PR c++/56481 + * semantics.c (potential_constant_expression_1): Use + cxx_eval_outermost_constant_expr rather than maybe_constant_value. + + PR c++/56243 + * call.c (build_over_call): Avoid virtual lookup in a template. + +2013-02-27 Jason Merrill <jason@redhat.com> + + PR c++/56358 + PR c++/56323 + * name-lookup.c (do_class_using_decl): Use ctor_identifier instead + of the base name for inheriting ctors. + (push_class_level_binding_1): Remove inheriting ctor handling. + * pt.c (tsubst_decl) [USING_DECL]: Likewise. + * class.c (add_implicitly_declared_members): Adjust. + 2013-02-26 David Binderman <dcb314@hotmail.com> PR c++/55632 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 7c414217f05..4eb38ec73e9 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -7033,7 +7033,10 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) if (!already_used) mark_used (fn); - if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0) + if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0 + /* Don't mess with virtual lookup in fold_non_dependent_expr; virtual + functions can't be constexpr. */ + && !in_template_function ()) { tree t; tree binfo = lookup_base (TREE_TYPE (TREE_TYPE (argarray[0])), diff --git a/gcc/cp/class.c b/gcc/cp/class.c index eaa109acce3..2a0351f7c83 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -3010,11 +3010,10 @@ add_implicitly_declared_members (tree t, tree* access_decls, { tree using_decl = TREE_VALUE (*access_decls); tree decl = USING_DECL_DECLS (using_decl); - if (DECL_SELF_REFERENCE_P (decl)) + if (DECL_NAME (using_decl) == ctor_identifier) { /* declare, then remove the decl */ - tree ctor_list = lookup_fnfields_slot (TREE_TYPE (decl), - ctor_identifier); + tree ctor_list = decl; location_t loc = input_location; input_location = DECL_SOURCE_LOCATION (using_decl); if (ctor_list) diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index a90044a488a..40ab0bdee98 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -8599,7 +8599,6 @@ grokdeclarator (const cp_declarator *declarator, int explicit_int = 0; int explicit_char = 0; int defaulted_int = 0; - tree dependent_name = NULL_TREE; tree typedef_decl = NULL_TREE; const char *name = NULL; @@ -9196,12 +9195,6 @@ grokdeclarator (const cp_declarator *declarator, } friendp = decl_spec_seq_has_spec_p (declspecs, ds_friend); - if (dependent_name && !friendp) - { - error ("%<%T::%D%> is not a valid declarator", ctype, dependent_name); - return error_mark_node; - } - /* Issue errors about use of storage classes for parameters. */ if (decl_context == PARM) { diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 1f3c042041e..2a47331ea73 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -3027,13 +3027,6 @@ push_class_level_binding_1 (tree name, tree x) && TREE_TYPE (decl) == error_mark_node) decl = TREE_VALUE (decl); - if (TREE_CODE (decl) == USING_DECL - && TYPE_NAME (USING_DECL_SCOPE (decl)) - && DECL_NAME (decl) == TYPE_IDENTIFIER (USING_DECL_SCOPE (decl))) - /* This using-declaration declares inheriting constructors; it does not - redeclare the name of a template parameter. */ - return true; - if (!check_template_shadow (decl)) return false; @@ -3225,12 +3218,14 @@ do_class_using_decl (tree scope, tree name) error ("%<%T::%D%> names destructor", scope, name); return NULL_TREE; } - if (TYPE_NAME (scope) && name == TYPE_IDENTIFIER (scope)) - /* 3.4.3.1 says that using B::B always names the constructor even if B - is a typedef; now replace the second B with the real name. */ - name = TYPE_IDENTIFIER (TYPE_MAIN_VARIANT (scope)); - if (MAYBE_CLASS_TYPE_P (scope) && constructor_name_p (name, scope)) - maybe_warn_cpp0x (CPP0X_INHERITING_CTORS); + /* Using T::T declares inheriting ctors, even if T is a typedef. */ + if (MAYBE_CLASS_TYPE_P (scope) + && ((TYPE_NAME (scope) && name == TYPE_IDENTIFIER (scope)) + || constructor_name_p (name, scope))) + { + maybe_warn_cpp0x (CPP0X_INHERITING_CTORS); + name = ctor_identifier; + } if (constructor_name_p (name, current_class_type)) { error ("%<%T::%D%> names constructor in %qT", diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 9b7fc3a5a4f..eb9fc7f94c7 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -10490,14 +10490,9 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain) if (DECL_DEPENDENT_P (t) || uses_template_parms (USING_DECL_SCOPE (t))) { - tree scope = USING_DECL_SCOPE (t); tree inst_scope = tsubst_copy (USING_DECL_SCOPE (t), args, complain, in_decl); tree name = tsubst_copy (DECL_NAME (t), args, complain, in_decl); - /* Handle 'using T::T'. */ - if (TYPE_NAME (scope) - && name == TYPE_IDENTIFIER (scope)) - name = TYPE_IDENTIFIER (inst_scope); r = do_class_using_decl (inst_scope, name); if (!r) r = error_mark_node; diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 9446f831bd5..8038aa26e48 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -8683,10 +8683,12 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) case ROUND_MOD_EXPR: { tree denom = TREE_OPERAND (t, 1); - /* We can't call maybe_constant_value on an expression + if (!potential_constant_expression_1 (denom, rval, flags)) + return false; + /* We can't call cxx_eval_outermost_constant_expr on an expression that hasn't been through fold_non_dependent_expr yet. */ if (!processing_template_decl) - denom = maybe_constant_value (denom); + denom = cxx_eval_outermost_constant_expr (denom, true); if (integer_zerop (denom)) { if (flags & tf_error) @@ -8696,7 +8698,8 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) else { want_rval = true; - goto binary; + return potential_constant_expression_1 (TREE_OPERAND (t, 0), + want_rval, flags); } } @@ -8731,7 +8734,7 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) if (!potential_constant_expression_1 (op, rval, flags)) return false; if (!processing_template_decl) - op = maybe_constant_value (op); + op = cxx_eval_outermost_constant_expr (op, true); if (tree_int_cst_equal (op, tmp)) return potential_constant_expression_1 (TREE_OPERAND (t, 1), rval, flags); else @@ -8793,7 +8796,7 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) if (!potential_constant_expression_1 (tmp, rval, flags)) return false; if (!processing_template_decl) - tmp = maybe_constant_value (tmp); + tmp = cxx_eval_outermost_constant_expr (tmp, true); if (integer_zerop (tmp)) return potential_constant_expression_1 (TREE_OPERAND (t, 2), want_rval, flags); diff --git a/gcc/df-scan.c b/gcc/df-scan.c index 2928776dfcf..931fa2c7e48 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -1153,6 +1153,7 @@ df_insn_delete (basic_block bb, unsigned int uid) df_ref_chain_delete (insn_info->defs); df_ref_chain_delete (insn_info->uses); df_ref_chain_delete (insn_info->eq_uses); + df_scan_free_mws_vec (insn_info->mw_hardregs); } pool_free (problem_data->insn_pool, insn_info); DF_INSN_UID_SET (uid, NULL); @@ -1332,6 +1333,7 @@ df_insn_rescan_debug_internal (rtx insn) df_ref_chain_delete (insn_info->defs); df_ref_chain_delete (insn_info->uses); df_ref_chain_delete (insn_info->eq_uses); + df_scan_free_mws_vec (insn_info->mw_hardregs); insn_info->defs = df_null_ref_rec; insn_info->uses = df_null_ref_rec; diff --git a/gcc/doc/avr-mmcu.texi b/gcc/doc/avr-mmcu.texi index 85d6fc993f6..b1313c45e9e 100644 --- a/gcc/doc/avr-mmcu.texi +++ b/gcc/doc/avr-mmcu.texi @@ -18,7 +18,7 @@ @item avr25 ``Classic'' devices with up to 8@tie{}KiB of program memory and with the @code{MOVW} instruction. -@*@var{mcu}@tie{}= @code{ata6289}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny43u}, @code{attiny4313}, @code{attiny44}, @code{attiny44a}, @code{attiny45}, @code{attiny461}, @code{attiny461a}, @code{attiny48}, @code{attiny84}, @code{attiny84a}, @code{attiny85}, @code{attiny861}, @code{attiny861a}, @code{attiny87}, @code{attiny88}, @code{at86rf401}. +@*@var{mcu}@tie{}= @code{ata5272}, @code{ata6289}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny43u}, @code{attiny4313}, @code{attiny44}, @code{attiny44a}, @code{attiny45}, @code{attiny461}, @code{attiny461a}, @code{attiny48}, @code{attiny84}, @code{attiny84a}, @code{attiny85}, @code{attiny861}, @code{attiny861a}, @code{attiny87}, @code{attiny88}, @code{at86rf401}. @item avr3 ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory. @@ -30,19 +30,19 @@ @item avr35 ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the @code{MOVW} instruction. -@*@var{mcu}@tie{}= @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny167}, @code{at90usb162}, @code{at90usb82}. +@*@var{mcu}@tie{}= @code{ata5505}, @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny1634}, @code{attiny167}, @code{at90usb162}, @code{at90usb82}. @item avr4 ``Enhanced'' devices with up to 8@tie{}KiB of program memory. -@*@var{mcu}@tie{}= @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega8}, @code{atmega8hva}, @code{atmega8515}, @code{atmega8535}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}. +@*@var{mcu}@tie{}= @code{ata6285}, @code{ata6286}, @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega48pa}, @code{atmega8}, @code{atmega8a}, @code{atmega8hva}, @code{atmega8515}, @code{atmega8535}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}. @item avr5 ``Enhanced'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory. -@*@var{mcu}@tie{}= @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega32}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega406}, @code{atmega64}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{at90can32}, @code{at90can64}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}. +@*@var{mcu}@tie{}= @code{ata5790}, @code{ata5790n}, @code{ata5795}, @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16hvb}, @code{atmega16hvbrevb}, @code{atmega16m1}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega164pa}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega165pa}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega168pa}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega26hvg}, @code{atmega32}, @code{atmega32a}, @code{atmega32a}, @code{atmega32c1}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32hvb}, @code{atmega32hvbrevb}, @code{atmega32m1}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega3250pa}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega3290pa}, @code{atmega406}, @code{atmega48hvf}, @code{atmega64}, @code{atmega64a}, @code{atmega64c1}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{atmega64m1}, @code{atmega64rfa2}, @code{atmega64rfr2}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{atmega6490a}, @code{atmega6490p}, @code{at90can32}, @code{at90can64}, @code{at90pwm161}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}. @item avr51 ``Enhanced'' devices with 128@tie{}KiB of program memory. -@*@var{mcu}@tie{}= @code{atmega128}, @code{atmega128rfa1}, @code{atmega1280}, @code{atmega1281}, @code{atmega1284p}, @code{at90can128}, @code{at90usb1286}, @code{at90usb1287}. +@*@var{mcu}@tie{}= @code{atmega128}, @code{atmega128a}, @code{atmega128rfa1}, @code{atmega1280}, @code{atmega1281}, @code{atmega1284}, @code{atmega1284p}, @code{at90can128}, @code{at90usb1286}, @code{at90usb1287}. @item avr6 ``Enhanced'' devices with 3-byte PC, i.e.@: with more than 128@tie{}KiB of program memory. @@ -50,11 +50,11 @@ @item avrxmega2 ``XMEGA'' devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory. -@*@var{mcu}@tie{}= @code{atxmega16a4}, @code{atxmega16d4}, @code{atxmega16x1}, @code{atxmega32a4}, @code{atxmega32d4}, @code{atxmega32x1}. +@*@var{mcu}@tie{}= @code{atmxt112sl}, @code{atmxt224}, @code{atmxt224e}, @code{atmxt336s}, @code{atxmega16a4}, @code{atxmega16a4u}, @code{atxmega16c4}, @code{atxmega16d4}, @code{atxmega16x1}, @code{atxmega32a4}, @code{atxmega32a4u}, @code{atxmega32c4}, @code{atxmega32d4}, @code{atxmega32e5}, @code{atxmega32x1}. @item avrxmega4 ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory. -@*@var{mcu}@tie{}= @code{atxmega64a3}, @code{atxmega64d3}. +@*@var{mcu}@tie{}= @code{atxmega64a3}, @code{atxmega64a3u}, @code{atxmega64a4u}, @code{atxmega64b1}, @code{atxmega64b3}, @code{atxmega64c3}, @code{atxmega64d3}, @code{atxmega64d4}. @item avrxmega5 ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory and more than 64@tie{}KiB of RAM. @@ -62,11 +62,11 @@ @item avrxmega6 ``XMEGA'' devices with more than 128@tie{}KiB of program memory. -@*@var{mcu}@tie{}= @code{atxmega128a3}, @code{atxmega128d3}, @code{atxmega192a3}, @code{atxmega192d3}, @code{atxmega256a3}, @code{atxmega256a3b}, @code{atxmega256a3bu}, @code{atxmega256d3}. +@*@var{mcu}@tie{}= @code{atmxt540s}, @code{atmxt540sreva}, @code{atxmega128a3}, @code{atxmega128a3u}, @code{atxmega128b1}, @code{atxmega128b3}, @code{atxmega128c3}, @code{atxmega128d3}, @code{atxmega128d4}, @code{atxmega192a3}, @code{atxmega192a3u}, @code{atxmega192c3}, @code{atxmega192d3}, @code{atxmega256a3}, @code{atxmega256a3b}, @code{atxmega256a3bu}, @code{atxmega256a3u}, @code{atxmega256c3}, @code{atxmega256d3}, @code{atxmega384c3}, @code{atxmega384d3}. @item avrxmega7 ``XMEGA'' devices with more than 128@tie{}KiB of program memory and more than 64@tie{}KiB of RAM. -@*@var{mcu}@tie{}= @code{atxmega128a1}, @code{atxmega128a1u}. +@*@var{mcu}@tie{}= @code{atxmega128a1}, @code{atxmega128a1u}, @code{atxmega128a4u}. @item avr1 This ISA is implemented by the minimal AVR core and supported for assembler only. diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index eb84408ce7c..2165983762c 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -2133,7 +2133,8 @@ attributes are currently defined for functions on all targets: @code{weak}, @code{malloc}, @code{alias}, @code{ifunc}, @code{warn_unused_result}, @code{nonnull}, @code{gnu_inline}, @code{externally_visible}, @code{hot}, @code{cold}, @code{artificial}, -@code{no_address_safety_analysis}, @code{error} and @code{warning}. +@code{no_sanitize_address}, @code{no_address_safety_analysis}, +@code{error} and @code{warning}. Several other attributes are defined for functions on particular target systems. Other attributes, including @code{section} are supported for variables declarations (@pxref{Variable Attributes}) @@ -3432,11 +3433,15 @@ with computed goto or @code{asm goto}. The @code{cold} attribute on labels is not implemented in GCC versions earlier than 4.8. -@item no_address_safety_analysis -@cindex @code{no_address_safety_analysis} function attribute -The @code{no_address_safety_analysis} attribute on functions is used +@item no_sanitize_address +@itemx no_address_safety_analysis +@cindex @code{no_sanitize_address} function attribute +The @code{no_sanitize_address} attribute on functions is used to inform the compiler that it should not instrument memory accesses in the function when compiling with the @option{-fsanitize=address} option. +The @code{no_address_safety_analysis} is a deprecated alias of the +@code{no_sanitize_address} attribute, new code should use +@code{no_sanitize_address}. @item regparm (@var{number}) @cindex @code{regparm} attribute diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 7f2a7389a62..e18a47a88a7 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -2459,7 +2459,9 @@ union U @{ @opindex Wno-ctor-dtor-privacy Warn when a class seems unusable because all the constructors or destructors in that class are private, and it has neither friends nor -public static member functions. +public static member functions. Also warn if there are no non-private +methods, and there's at least one private member function that isn't +a constructor or destructor. @item -Wdelete-non-virtual-dtor @r{(C++ and Objective-C++ only)} @opindex Wdelete-non-virtual-dtor diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2bea99664f0..cb6fd6122a0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-03-01 Tobias Burnus <burnus@net-b.de> + + * trans-decl.c (gfc_trans_deferred_vars): Free expr after use. + * trans-io.c (build_dt): Ditto. + 2013-02-24 Joseph Myers <joseph@codesourcery.com> * resolve.c (generate_component_assignments): Don't use UTF-8 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 337d747520f..7806bbbd878 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -3818,10 +3818,12 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block) NULL_TREE, true, NULL, true); else - tmp = gfc_deallocate_scalar_with_status (se.expr, NULL_TREE, - true, - gfc_lval_expr_from_sym (sym), - sym->ts); + { + gfc_expr *expr = gfc_lval_expr_from_sym (sym); + tmp = gfc_deallocate_scalar_with_status (se.expr, NULL_TREE, + true, expr, sym->ts); + gfc_free_expr (expr); + } } if (sym->ts.type == BT_CLASS) { diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index bb5fa2423a6..9394810f01f 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -1782,6 +1782,8 @@ build_dt (tree function, gfc_code * code) mask |= set_string (&block, &post_block, var, IOPARM_dt_namelist_name, nmlname); + gfc_free_expr (nmlname); + if (last_dt == READ) mask |= IOPARM_dt_namelist_read_mode; diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 9a67f3c0be3..d01b053a3f9 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -3406,6 +3406,9 @@ decide_whether_version_node (struct cgraph_node *node) info = IPA_NODE_REF (node); info->do_clone_for_all_contexts = false; IPA_NODE_REF (clone)->is_all_contexts_clone = true; + for (i = 0; i < count ; i++) + vec_free (known_aggs[i].items); + known_aggs.release (); ret = true; } else diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index 07ba90fa19b..94c7315c124 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -1479,7 +1479,7 @@ propagate (void) propagate_pure_const (); /* Cleanup. */ - FOR_EACH_DEFINED_FUNCTION (node) + FOR_EACH_FUNCTION (node) if (has_function_state (node)) free (get_function_state (node)); funct_state_vec.release (); diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c index 98c2056839c..f3c483f67f9 100644 --- a/gcc/ipa-reference.c +++ b/gcc/ipa-reference.c @@ -834,12 +834,10 @@ propagate (void) ipa_reference_global_vars_info_t node_g; ipa_reference_optimization_summary_t opt; - if (node->alias) - continue; - node_info = get_reference_vars_info (node); - if (cgraph_function_body_availability (node) > AVAIL_OVERWRITABLE - || (flags_from_decl_or_type (node->symbol.decl) & ECF_LEAF)) + if (!node->alias + && (cgraph_function_body_availability (node) > AVAIL_OVERWRITABLE + || (flags_from_decl_or_type (node->symbol.decl) & ECF_LEAF))) { node_g = &node_info->global; diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c index 42512b8d978..1eb904b5061 100644 --- a/gcc/loop-unroll.c +++ b/gcc/loop-unroll.c @@ -207,7 +207,7 @@ void unroll_and_peel_loops (int flags) { struct loop *loop; - bool check; + bool changed = false; loop_iterator li; /* First perform complete loop peeling (it is almost surely a win, @@ -220,7 +220,6 @@ unroll_and_peel_loops (int flags) /* Scan the loops, inner ones first. */ FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST) { - check = true; /* And perform the appropriate transformations. */ switch (loop->lpt_decision.decision) { @@ -229,30 +228,33 @@ unroll_and_peel_loops (int flags) gcc_unreachable (); case LPT_PEEL_SIMPLE: peel_loop_simple (loop); + changed = true; break; case LPT_UNROLL_CONSTANT: unroll_loop_constant_iterations (loop); + changed = true; break; case LPT_UNROLL_RUNTIME: unroll_loop_runtime_iterations (loop); + changed = true; break; case LPT_UNROLL_STUPID: unroll_loop_stupid (loop); + changed = true; break; case LPT_NONE: - check = false; break; default: gcc_unreachable (); } - if (check) - { -#ifdef ENABLE_CHECKING - verify_loop_structure (); -#endif - } } + if (changed) + { + calculate_dominance_info (CDI_DOMINATORS); + fix_loop_structure (NULL); + } + iv_analysis_done (); } @@ -283,6 +285,7 @@ peel_loops_completely (int flags) { struct loop *loop; loop_iterator li; + bool changed = false; /* Scan the loops, the inner ones first. */ FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST) @@ -306,11 +309,15 @@ peel_loops_completely (int flags) { report_unroll_peel (loop, locus); peel_loop_completely (loop); -#ifdef ENABLE_CHECKING - verify_loop_structure (); -#endif + changed = true; } } + + if (changed) + { + calculate_dominance_info (CDI_DOMINATORS); + fix_loop_structure (NULL); + } } /* Decide whether unroll or peel loops (depending on FLAGS) and how much. */ diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index 39dc52f66d9..ae17351b595 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -1866,8 +1866,12 @@ merge_expr (expr_t to, expr_t from, insn_t split_point) /* Make sure that speculative pattern is propagated into exprs that have non-speculative one. This will provide us with consistent speculative bits and speculative patterns inside expr. */ - if (EXPR_SPEC_DONE_DS (to) == 0 - && EXPR_SPEC_DONE_DS (from) != 0) + if ((EXPR_SPEC_DONE_DS (from) != 0 + && EXPR_SPEC_DONE_DS (to) == 0) + /* Do likewise for volatile insns, so that we always retain + the may_trap_p bit on the resulting expression. */ + || (VINSN_MAY_TRAP_P (EXPR_VINSN (from)) + && !VINSN_MAY_TRAP_P (EXPR_VINSN (to)))) change_vinsn_in_expr (to, EXPR_VINSN (from)); merge_expr_data (to, from, split_point); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9f00b8708c2..527fefb0b6c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,44 @@ +2013-02-28 Konstantin Serebryany <konstantin.s.serebryany@gmail.com> + Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56454 + * g++.dg/asan/default-options-1.C (__asan_default_options): Use + no_sanitize_address attribute rather than no_address_safety_analysis. + * g++.dg/asan/sanitizer_test_utils.h + (ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS): Likewise. + * c-c++-common/asan/attrib-1.c: Test no_sanitize_address attribute + in addition to no_address_safety_analysis. + +2013-02-28 Jason Merrill <jason@redhat.com> + + PR c++/56481 + * g++.dg/cpp0x/constexpr-and.C: New. + +2013-02-28 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/56294 + * g++.dg/debug/pr56294.C: New test. + +2013-02-28 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * g++.old-deja/g++.pt/ptrmem6.C(main): Add xfail aarch64*-*-*. + +2013-02-27 Marek Polacek <polacek@redhat.com> + + PR rtl-optimization/56466 + * gcc.dg/pr56466.c: New test. + +2013-02-28 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com> + + * gcc.dg/tree-ssa/slsr-1.c: Allow widening multiplications. + * gcc.dg/tree-ssa/slsr-2.c: Likewise. + * gcc.dg/tree-ssa/slsr-3.c: Likewise. + +2013-02-27 Andrey Belevantsev <abel@ispras.ru> + + PR middle-end/45472 + * gcc.dg/pr45472.c: New test. + 2013-02-26 Marek Polacek <polacek@redhat.com> PR tree-optimization/56426 diff --git a/gcc/testsuite/c-c++-common/asan/attrib-1.c b/gcc/testsuite/c-c++-common/asan/attrib-1.c index e633bb6181a..a2a7f7c9f99 100644 --- a/gcc/testsuite/c-c++-common/asan/attrib-1.c +++ b/gcc/testsuite/c-c++-common/asan/attrib-1.c @@ -1,7 +1,7 @@ /* PR sanitizer/55435 */ /* { dg-do compile } */ -__attribute__((no_address_safety_analysis)) int +__attribute__((no_sanitize_address)) int f1 (int *p, int *q) { *p = 42; @@ -9,8 +9,8 @@ f1 (int *p, int *q) } void f2 (char *); -void f2 (char *) __attribute__((no_address_safety_analysis)); -void f2 (char *) __attribute__((no_address_safety_analysis)); +void f2 (char *) __attribute__((no_sanitize_address)); +void f2 (char *) __attribute__((no_sanitize_address)); void f2 (char *); void @@ -20,7 +20,7 @@ f2 (char *p) } void f3 (short *); -__typeof (f3) f3 __attribute__((__no_address_safety_analysis__)); +__typeof (f3) f3 __attribute__((__no_sanitize_address__)); void f3 (short *p) @@ -28,7 +28,35 @@ f3 (short *p) *p = 42; } -int v __attribute__((no_address_safety_analysis)); /* { dg-warning "attribute ignored" } */ +__attribute__((no_sanitize_address)) int +f4 (int *p, int *q) +{ + *p = 42; + return *q; +} + +void f5 (char *); +void f5 (char *) __attribute__((no_sanitize_address)); +void f5 (char *) __attribute__((no_sanitize_address)); +void f5 (char *); + +void +f5 (char *p) +{ + *p = 42; +} + +void f6 (short *); +__typeof (f6) f6 __attribute__((__no_address_safety_analysis__)); + +void +f6 (short *p) +{ + *p = 42; +} + +int v __attribute__((no_sanitize_address)); /* { dg-warning "attribute ignored" } */ +int v2 __attribute__((no_address_safety_analysis)); /* { dg-warning "attribute ignored" } */ /* { dg-final { scan-assembler-not "__asan_report_store" } } */ /* { dg-final { scan-assembler-not "__asan_report_load" } } */ diff --git a/gcc/testsuite/g++.dg/asan/default-options-1.C b/gcc/testsuite/g++.dg/asan/default-options-1.C index 42b41640afb..cdcb370d141 100644 --- a/gcc/testsuite/g++.dg/asan/default-options-1.C +++ b/gcc/testsuite/g++.dg/asan/default-options-1.C @@ -3,7 +3,7 @@ const char *kAsanDefaultOptions="verbosity=1 foo=bar"; extern "C" -__attribute__((no_address_safety_analysis)) +__attribute__((no_sanitize_address)) const char *__asan_default_options() { return kAsanDefaultOptions; } diff --git a/gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h b/gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h index 2184cc76788..99720c354fa 100644 --- a/gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h +++ b/gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h @@ -36,7 +36,7 @@ typedef __int64 int64_t; #if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__) # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS \ - __attribute__((no_address_safety_analysis)) + __attribute__((no_sanitize_address)) #else # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS #endif diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-and.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-and.C new file mode 100644 index 00000000000..15ad2524694 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-and.C @@ -0,0 +1,20 @@ +// PR c++/56481 +// Non-linearity in potential_constant_expression_1 +// { dg-options -std=c++11 } + +struct S +{ + constexpr bool foo (); +#define A(n) , f##n##0, f##n##1, f##n##2, f##n##3 +#define B(n) A(n##0) A(n##1) A(n##2) A(n##3) +#define C B(0) B(1) B(2) B(3) + bool f C; +}; + +constexpr bool +S::foo () +{ +#undef A +#define A(n) && f##n##0 && f##n##1 && f##n##2 && f##n##3 + return f C; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/inh-ctor18.C b/gcc/testsuite/g++.dg/cpp0x/inh-ctor18.C new file mode 100644 index 00000000000..05735559a72 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/inh-ctor18.C @@ -0,0 +1,22 @@ +// PR c++/56358 +// { dg-do compile { target c++11 } } + +struct foo { + explicit foo(int) {} +}; + +template<typename T> +struct bar: T { + using T::T; + + // Bad + explicit bar(): T(0) {} + + void baz() + { + // Also bad + using qux = T; + } +}; + +bar<foo> b, b2(42); diff --git a/gcc/testsuite/g++.dg/debug/pr56294.C b/gcc/testsuite/g++.dg/debug/pr56294.C new file mode 100644 index 00000000000..204c78eadc6 --- /dev/null +++ b/gcc/testsuite/g++.dg/debug/pr56294.C @@ -0,0 +1,30 @@ +// { dg-do compile } +// { dg-options "-fno-ipa-sra -fcompare-debug" } + +struct comp_cost { int cost; unsigned complexity; }; +struct cost_pair { struct iv_cand *cand; }; +struct iv_use { unsigned n_map_members; cost_pair *cost_map; }; +struct iv_cand { unsigned id; }; + +unsigned gu; + +void +bar (comp_cost, comp_cost) +{ +} + +void +foo (iv_use *use, iv_cand *cand) +{ + unsigned i, s = cand->id & (use->n_map_members - 1); + for (i = 0; i < s; i++) + if (use->cost_map[i].cand) + goto found; +found: + use->cost_map[i].cand = cand; + comp_cost elim_cost, express_cost, bound_cost; + bar (elim_cost, express_cost); + gu = express_cost.complexity; +} + + diff --git a/gcc/testsuite/g++.dg/inherit/using5.C b/gcc/testsuite/g++.dg/inherit/using5.C index 89c7ca03ba6..b8e51078ff9 100644 --- a/gcc/testsuite/g++.dg/inherit/using5.C +++ b/gcc/testsuite/g++.dg/inherit/using5.C @@ -6,7 +6,7 @@ template<int> struct A { - A::A; // { dg-error "constructor" } + A::A; // { dg-error "constructor|not a base" } }; struct B diff --git a/gcc/testsuite/g++.dg/template/virtual4.C b/gcc/testsuite/g++.dg/template/virtual4.C new file mode 100644 index 00000000000..a2c7420b402 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/virtual4.C @@ -0,0 +1,30 @@ +// PR c++/56243 + +struct A +{ + virtual int String (); +}; + +struct F: A { }; + +struct G +{ + F value; +}; + +struct D +{ + template <int> + void Verify() + { + G x; + F& name = x.value; + name.String(); + } +}; + +int main() +{ + D d; + d.Verify<42>(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.other/using3.C b/gcc/testsuite/g++.old-deja/g++.other/using3.C index f30ecbc3d0f..3df78f09691 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/using3.C +++ b/gcc/testsuite/g++.old-deja/g++.other/using3.C @@ -8,5 +8,5 @@ typedef struct { } S; struct B: S{ - using S::S; // { dg-error "" } no such field + using S::S; // { dg-error "" "" { target c++98 } } no such field }; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C b/gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C index a4be012d79a..9a537133c4f 100644 --- a/gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C +++ b/gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C @@ -25,7 +25,7 @@ int main() { h<&B::j>(); // { dg-error "" } g<(void (A::*)()) &A::f>(); // { dg-error "" "" { xfail c++11 } } h<(int A::*) &A::i>(); // { dg-error "" "" { xfail c++11 } } - g<(void (A::*)()) &B::f>(); // { dg-error "" "" { xfail { c++11 && { arm*-*-* mips*-*-* } } } } + g<(void (A::*)()) &B::f>(); // { dg-error "" "" { xfail { c++11 && { aarch64*-*-* arm*-*-* mips*-*-* } } } } h<(int A::*) &B::j>(); // { dg-error "" } g<(void (A::*)()) 0>(); // { dg-error "" "" { target c++98 } } h<(int A::*) 0>(); // { dg-error "" "" { target c++98 } } diff --git a/gcc/testsuite/gcc.dg/pr45472.c b/gcc/testsuite/gcc.dg/pr45472.c new file mode 100644 index 00000000000..573e83d700c --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr45472.c @@ -0,0 +1,21 @@ +/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */ +/* { dg-options "-O -fschedule-insns2 -fselective-scheduling2" } */ + +struct S +{ + volatile long vl; + int i; +}; +struct S s1, s2; + +void +foo (int j, int c) +{ + int i; + for (i = 0; i <= j; i++) + { + if (c) + s2.vl += s1.vl; + s1 = s2; + } +} diff --git a/gcc/testsuite/gcc.dg/pr56466.c b/gcc/testsuite/gcc.dg/pr56466.c new file mode 100644 index 00000000000..9d9e27356e6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr56466.c @@ -0,0 +1,31 @@ +/* PR rtl-optimization/56466 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -w -funroll-loops" } */ + +int a, b, c; + +void +f (void) +{ + for (; b; b++) + { + if (0) + for (; b < 0; b++) + if (1 % 0) + { + while (1) + { + a = 0; + lbl1: + c++; + } + lbl2: + ; + } + + goto lbl1; + } + + a = 0; + goto lbl2; +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c index f8c33191b7b..38da1791512 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c @@ -14,7 +14,7 @@ f (int *p, unsigned int n) foo (*(p + 48 + n * 4)); } -/* { dg-final { scan-tree-dump-times "\\+ 128" 1 "optimized" } } */ -/* { dg-final { scan-tree-dump-times "\\+ 64" 1 "optimized" } } */ -/* { dg-final { scan-tree-dump-times "\\+ 192" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "\\+ 128|\\, 128>" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "\\+ 64|\\, 64>" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "\\+ 192|\\, 192>" 1 "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-2.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-2.c index 6709ee0f77a..c6bb3e030e9 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/slsr-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-2.c @@ -11,6 +11,6 @@ f (int *p, int n) foo (*(p + 16 + n * 4)); } -/* { dg-final { scan-tree-dump-times "\\+ 144" 1 "optimized" } } */ -/* { dg-final { scan-tree-dump-times "\\+ 96" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "\\+ 144|\\, 144>" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "\\+ 96|\\, 96>" 1 "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-3.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-3.c index a21ee4d8c26..32edf2b77b3 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/slsr-3.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-3.c @@ -16,7 +16,7 @@ foo (int a[], int b[], int i) } /* { dg-final { scan-tree-dump-times "\\* 4" 1 "optimized" } } */ -/* { dg-final { scan-tree-dump-times "\\+ 4" 2 "optimized" } } */ -/* { dg-final { scan-tree-dump-times "\\+ 8" 1 "optimized" } } */ -/* { dg-final { scan-tree-dump-times "\\+ 12" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "\\+ 4|\\, 4>" 2 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "\\+ 8|\\, 8>" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "\\+ 12|\\, 12>" 1 "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c index 94e616b7cf6..064d994ad3d 100644 --- a/gcc/tree-cfgcleanup.c +++ b/gcc/tree-cfgcleanup.c @@ -822,7 +822,7 @@ remove_forwarder_block_with_phi (basic_block bb) redirection, replace it with the PHI argument that used to be on E. */ head = redirect_edge_var_map_vector (e); - FOR_EACH_VEC_ELT (*head, i, vm) + FOR_EACH_VEC_SAFE_ELT (head, i, vm) { tree old_arg = redirect_edge_var_map_result (vm); tree new_arg = redirect_edge_var_map_def (vm); diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 80cb2945dce..20584b8c60f 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -481,7 +481,7 @@ typedef struct _edge_var_map edge_var_map; /* A vector of var maps. */ -typedef vec<edge_var_map> edge_var_map_vector; +typedef vec<edge_var_map, va_heap, vl_embed> edge_var_map_vector; extern void init_tree_ssa (struct function *); extern void redirect_edge_var_map_add (edge, tree, tree, source_location); diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 234dde22da1..67212c204c4 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -2000,8 +2000,7 @@ create_access_replacement (struct access *access) static inline tree get_access_replacement (struct access *access) { - if (!access->replacement_decl) - access->replacement_decl = create_access_replacement (access); + gcc_checking_assert (access->replacement_decl); return access->replacement_decl; } @@ -2157,7 +2156,6 @@ analyze_access_subtree (struct access *root, struct access *parent, || ((root->grp_scalar_read || root->grp_assignment_read) && (root->grp_scalar_write || root->grp_assignment_write)))) { - bool new_integer_type; /* Always create access replacements that cover the whole access. For integral types this means the precision has to match. Avoid assumptions based on the integral type kind, too. */ @@ -2176,22 +2174,19 @@ analyze_access_subtree (struct access *root, struct access *parent, root->expr = build_ref_for_offset (UNKNOWN_LOCATION, root->base, root->offset, root->type, NULL, false); - new_integer_type = true; - } - else - new_integer_type = false; - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fprintf (dump_file, "Marking "); - print_generic_expr (dump_file, root->base, 0); - fprintf (dump_file, " offset: %u, size: %u ", - (unsigned) root->offset, (unsigned) root->size); - fprintf (dump_file, " to be replaced%s.\n", - new_integer_type ? " with an integer": ""); + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "Changing the type of a replacement for "); + print_generic_expr (dump_file, root->base, 0); + fprintf (dump_file, " offset: %u, size: %u ", + (unsigned) root->offset, (unsigned) root->size); + fprintf (dump_file, " to an integer.\n"); + } } root->grp_to_be_replaced = 1; + root->replacement_decl = create_access_replacement (root); sth_created = true; hole = false; } @@ -2209,15 +2204,7 @@ analyze_access_subtree (struct access *root, struct access *parent, if (MAY_HAVE_DEBUG_STMTS) { root->grp_to_be_debug_replaced = 1; - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fprintf (dump_file, "Marking "); - print_generic_expr (dump_file, root->base, 0); - fprintf (dump_file, " offset: %u, size: %u ", - (unsigned) root->offset, (unsigned) root->size); - fprintf (dump_file, " to be replaced with debug " - "statements.\n"); - } + root->replacement_decl = create_access_replacement (root); } } @@ -2883,7 +2870,12 @@ load_assign_lhs_subreplacements (struct access *lacc, struct access *top_racc, lacc->size); if (racc && racc->grp_to_be_replaced) - drhs = get_access_replacement (racc); + { + if (racc->grp_write) + drhs = get_access_replacement (racc); + else + drhs = NULL; + } else if (*refreshed == SRA_UDH_LEFT) drhs = build_debug_ref_for_model (loc, lacc->base, lacc->offset, lacc); @@ -2973,7 +2965,11 @@ sra_modify_constructor_assign (gimple *stmt, gimple_stmt_iterator *gsi) static tree get_repl_default_def_ssa_name (struct access *racc) { - return get_or_create_ssa_default_def (cfun, get_access_replacement (racc)); + gcc_checking_assert (!racc->grp_to_be_replaced && + !racc->grp_to_be_debug_replaced); + if (!racc->replacement_decl) + racc->replacement_decl = create_access_replacement (racc); + return get_or_create_ssa_default_def (cfun, racc->replacement_decl); } /* Return true if REF has a COMPONENT_REF with a bit-field field declaration diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 7ba7416f37a..744fa71a95d 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -3293,6 +3293,7 @@ maybe_lower_iteration_bound (struct loop *loop) } BITMAP_FREE (visited); queue.release (); + pointer_set_destroy (not_executed_last_iteration); } /* Records estimates on numbers of iterations of LOOP. If USE_UNDEFINED_P diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index e08bcf89970..b0619faefd5 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -59,16 +59,13 @@ redirect_edge_var_map_add (edge e, tree result, tree def, source_location locus) slot = pointer_map_insert (edge_var_maps, e); head = (edge_var_map_vector *) *slot; if (!head) - { - head = new edge_var_map_vector; - head->create (5); - *slot = head; - } + vec_safe_reserve (head, 5); new_node.def = def; new_node.result = result; new_node.locus = locus; - head->safe_push (new_node); + vec_safe_push (head, new_node); + *slot = head; } @@ -88,7 +85,7 @@ redirect_edge_var_map_clear (edge e) if (slot) { head = (edge_var_map_vector *) *slot; - delete head; + vec_free (head); *slot = NULL; } } @@ -115,11 +112,11 @@ redirect_edge_var_map_dup (edge newe, edge olde) return; head = (edge_var_map_vector *) *old_slot; - edge_var_map_vector *new_head = new edge_var_map_vector; + edge_var_map_vector *new_head = NULL; if (head) - *new_head = head->copy (); + new_head = vec_safe_copy (head); else - new_head->create (5); + vec_safe_reserve (new_head, 5); *new_slot = new_head; } @@ -151,7 +148,7 @@ free_var_map_entry (const void *key ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) { edge_var_map_vector *head = (edge_var_map_vector *) *value; - delete head; + vec_free (head); return true; } diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 74d8c3a41fa..bf5a7b7731f 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -4673,7 +4673,9 @@ vect_permute_load_chain (vec<tree> dr_chain, unsigned nelt = TYPE_VECTOR_SUBPARTS (vectype); unsigned char *sel = XALLOCAVEC (unsigned char, nelt); - *result_chain = dr_chain.copy (); + result_chain->quick_grow (length); + memcpy (result_chain->address (), dr_chain.address (), + length * sizeof (tree)); for (i = 0; i < nelt; ++i) sel[i] = i * 2; @@ -4708,7 +4710,8 @@ vect_permute_load_chain (vec<tree> dr_chain, vect_finish_stmt_generation (stmt, perm_stmt, gsi); (*result_chain)[j/2+length/2] = data_ref; } - dr_chain = result_chain->copy (); + memcpy (dr_chain.address (), result_chain->address (), + length * sizeof (tree)); } } diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 3693cd27a96..6f71016080e 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -5209,6 +5209,7 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi, double_reduc, slp_node); phis.release (); + vect_defs.release (); vec_oprnds0.release (); vec_oprnds1.release (); diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 36f81299d5c..873c18e74ed 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -2614,14 +2614,14 @@ vect_get_slp_vect_defs (slp_tree slp_node, vec<tree> *vec_oprnds) void vect_get_slp_defs (vec<tree> ops, slp_tree slp_node, - vec<slp_void_p> *vec_oprnds, int reduc_index) + vec<vec<tree> > *vec_oprnds, int reduc_index) { gimple first_stmt; int number_of_vects = 0, i; unsigned int child_index = 0; HOST_WIDE_INT lhs_size_unit, rhs_size_unit; slp_tree child = NULL; - vec<tree> *vec_defs; + vec<tree> vec_defs; tree oprnd; bool vectorized_defs; @@ -2676,19 +2676,20 @@ vect_get_slp_defs (vec<tree> ops, slp_tree slp_node, } /* Allocate memory for vectorized defs. */ - vec_alloc (vec_defs, number_of_vects); + vec_defs = vNULL; + vec_defs.create (number_of_vects); /* For reduction defs we call vect_get_constant_vectors (), since we are looking for initial loop invariant values. */ if (vectorized_defs && reduc_index == -1) /* The defs are already vectorized. */ - vect_get_slp_vect_defs (child, vec_defs); + vect_get_slp_vect_defs (child, &vec_defs); else /* Build vectors from scalar defs. */ - vect_get_constant_vectors (oprnd, slp_node, vec_defs, i, + vect_get_constant_vectors (oprnd, slp_node, &vec_defs, i, number_of_vects, reduc_index); - vec_oprnds->quick_push ((slp_void_p) vec_defs); + vec_oprnds->quick_push (vec_defs); /* For reductions, we only need initial values. */ if (reduc_index != -1) diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 37f24234a9c..7ba76cd5f2e 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -1583,7 +1583,7 @@ vect_get_vec_defs (tree op0, tree op1, gimple stmt, int nops = (op1 == NULL_TREE) ? 1 : 2; vec<tree> ops; ops.create (nops); - vec<slp_void_p> vec_defs; + vec<vec<tree> > vec_defs; vec_defs.create (nops); ops.quick_push (op0); @@ -1592,9 +1592,9 @@ vect_get_vec_defs (tree op0, tree op1, gimple stmt, vect_get_slp_defs (ops, slp_node, &vec_defs, reduc_index); - *vec_oprnds0 = *((vec<tree> *) vec_defs[0]); + *vec_oprnds0 = vec_defs[0]; if (op1) - *vec_oprnds1 = *((vec<tree> *) vec_defs[1]); + *vec_oprnds1 = vec_defs[1]; ops.release (); vec_defs.release (); @@ -1882,14 +1882,14 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, if (slp_node) { - vec<slp_void_p> vec_defs; + vec<vec<tree> > vec_defs; vec_defs.create (nargs); vec<tree> vec_oprnds0; for (i = 0; i < nargs; i++) vargs.quick_push (gimple_call_arg (stmt, i)); vect_get_slp_defs (vargs, slp_node, &vec_defs, -1); - vec_oprnds0 = *((vec<tree> *) vec_defs[0]); + vec_oprnds0 = vec_defs[0]; /* Arguments are ready. Create the new vector stmt. */ FOR_EACH_VEC_ELT (vec_oprnds0, i, vec_oprnd0) @@ -1897,7 +1897,7 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, size_t k; for (k = 0; k < nargs; k++) { - vec<tree> vec_oprndsk = *((vec<tree> *) vec_defs[k]); + vec<tree> vec_oprndsk = vec_defs[k]; vargs[k] = vec_oprndsk[i]; } new_stmt = gimple_build_call_vec (fndecl, vargs); @@ -1909,7 +1909,7 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, for (i = 0; i < nargs; i++) { - vec<tree> vec_oprndsi = *((vec<tree> *) vec_defs[i]); + vec<tree> vec_oprndsi = vec_defs[i]; vec_oprndsi.release (); } vec_defs.release (); @@ -1958,14 +1958,14 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, if (slp_node) { - vec<slp_void_p> vec_defs; + vec<vec<tree> > vec_defs; vec_defs.create (nargs); vec<tree> vec_oprnds0; for (i = 0; i < nargs; i++) vargs.quick_push (gimple_call_arg (stmt, i)); vect_get_slp_defs (vargs, slp_node, &vec_defs, -1); - vec_oprnds0 = *((vec<tree> *) vec_defs[0]); + vec_oprnds0 = vec_defs[0]; /* Arguments are ready. Create the new vector stmt. */ for (i = 0; vec_oprnds0.iterate (i, &vec_oprnd0); i += 2) @@ -1974,7 +1974,7 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, vargs.truncate (0); for (k = 0; k < nargs; k++) { - vec<tree> vec_oprndsk = *((vec<tree> *) vec_defs[k]); + vec<tree> vec_oprndsk = vec_defs[k]; vargs.quick_push (vec_oprndsk[i]); vargs.quick_push (vec_oprndsk[i + 1]); } @@ -1987,7 +1987,7 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, for (i = 0; i < nargs; i++) { - vec<tree> vec_oprndsi = *((vec<tree> *) vec_defs[i]); + vec<tree> vec_oprndsi = vec_defs[i]; vec_oprndsi.release (); } vec_defs.release (); @@ -5392,7 +5392,7 @@ vectorizable_condition (gimple stmt, gimple_stmt_iterator *gsi, { vec<tree> ops; ops.create (4); - vec<slp_void_p> vec_defs; + vec<vec<tree> > vec_defs; vec_defs.create (4); ops.safe_push (TREE_OPERAND (cond_expr, 0)); @@ -5400,10 +5400,10 @@ vectorizable_condition (gimple stmt, gimple_stmt_iterator *gsi, ops.safe_push (then_clause); ops.safe_push (else_clause); vect_get_slp_defs (ops, slp_node, &vec_defs, -1); - vec_oprnds3 = *((vec<tree> *) vec_defs.pop ()); - vec_oprnds2 = *((vec<tree> *) vec_defs.pop ()); - vec_oprnds1 = *((vec<tree> *) vec_defs.pop ()); - vec_oprnds0 = *((vec<tree> *) vec_defs.pop ()); + vec_oprnds3 = vec_defs.pop (); + vec_oprnds2 = vec_defs.pop (); + vec_oprnds1 = vec_defs.pop (); + vec_oprnds0 = vec_defs.pop (); ops.release (); vec_defs.release (); diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 8d3a3def1f4..f2ec7135a9b 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -978,7 +978,7 @@ extern bool vect_analyze_slp (loop_vec_info, bb_vec_info); extern bool vect_make_slp_decision (loop_vec_info); extern void vect_detect_hybrid_slp (loop_vec_info); extern void vect_get_slp_defs (vec<tree> , slp_tree, - vec<slp_void_p> *, int); + vec<vec<tree> > *, int); extern LOC find_bb_location (basic_block); extern bb_vec_info vect_slp_analyze_bb (basic_block); diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 22451a2103f..934db6a08cd 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,22 @@ +2013-02-28 Jakub Jelinek <jakub@redhat.com> + + * files.c (_cpp_find_file): If returning early, before storing + something to *hash_slot and *hash_slot is NULL, call htab_clear_slot + on it. Access *hash_slot using void * type rather than + struct file_hash_entry * to avoid aliasing issues. + + * configure.ac: Don't define ENABLE_CHECKING whenever + --enable-checking is seen, instead use similar --enable-checking=yes + vs. --enable-checking=release default as gcc/ subdir has and + define ENABLE_CHECKING if ENABLE_CHECKING is defined in gcc/. + Define ENABLE_VALGRIND_CHECKING if requested. + * lex.c (new_buff): If ENABLE_VALGRIND_CHECKING, put _cpp_buff + struct first in the allocated buffer and result->base after it. + (_cpp_free_buff): If ENABLE_VALGRIND_CHECKING, free buff itself + instead of buff->base. + * config.in: Regenerated. + * configure: Regenerated. + 2013-02-13 Ed Smith-Rowland <3dw4rd@verizon.net> PR c++/55582 diff --git a/libcpp/config.in b/libcpp/config.in index fca690cd306..1b0b25555cf 100644 --- a/libcpp/config.in +++ b/libcpp/config.in @@ -21,6 +21,10 @@ language is requested. */ #undef ENABLE_NLS +/* Define if you want to workaround valgrind (a memory checker) warnings about + possible memory leaks because of libcpp use of interior pointers. */ +#undef ENABLE_VALGRIND_CHECKING + /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA diff --git a/libcpp/configure b/libcpp/configure index d07aed3199c..f21b361577f 100755 --- a/libcpp/configure +++ b/libcpp/configure @@ -1333,7 +1333,11 @@ Optional Features: --enable-werror-always enable -Werror despite compiler version --disable-rpath do not hardcode runtime library paths --enable-maintainer-mode enable rules only needed by maintainers - --enable-checking enable expensive run-time checks + --enable-checking[=LIST] + enable expensive run-time checks. With LIST, enable + only specific categories of checks. Categories are: + yes,no,all,none,release. Flags are: misc,valgrind or + other strings --enable-canonical-system-headers enable or disable system headers canonicalization @@ -7083,20 +7087,54 @@ else fi +# Enable expensive internal checks +is_release= +if test -f $srcdir/../gcc/DEV-PHASE \ + && test x"`cat $srcdir/../gcc/DEV-PHASE`" != xexperimental; then + is_release=yes +fi + # Check whether --enable-checking was given. if test "${enable_checking+set}" = set; then : - enableval=$enable_checking; + enableval=$enable_checking; ac_checking_flags="${enableval}" +else + +# Determine the default checks. +if test x$is_release = x ; then + ac_checking_flags=yes else - enable_checking=no + ac_checking_flags=release +fi fi +IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS," +for check in release $ac_checking_flags +do + case $check in + # these set all the flags to specific states + yes|all) ac_checking=1 ; ac_valgrind_checking= ;; + no|none|release) ac_checking= ; ac_valgrind_checking= ;; + # these enable particular checks + misc) ac_checking=1 ;; + valgrind) ac_valgrind_checking=1 ;; + # accept + *) ;; + esac +done +IFS="$ac_save_IFS" -if test $enable_checking != no ; then +if test x$ac_checking != x ; then $as_echo "#define ENABLE_CHECKING 1" >>confdefs.h fi +if test x$ac_valgrind_checking != x ; then + +$as_echo "#define ENABLE_VALGRIND_CHECKING 1" >>confdefs.h + +fi + # Check whether --enable-canonical-system-headers was given. if test "${enable_canonical_system_headers+set}" = set; then : enableval=$enable_canonical_system_headers; diff --git a/libcpp/configure.ac b/libcpp/configure.ac index 34ae5c20622..e0c4ae6958f 100644 --- a/libcpp/configure.ac +++ b/libcpp/configure.ac @@ -123,15 +123,53 @@ else fi AC_SUBST(MAINT) -AC_ARG_ENABLE(checking, -[ --enable-checking enable expensive run-time checks],, -enable_checking=no) +# Enable expensive internal checks +is_release= +if test -f $srcdir/../gcc/DEV-PHASE \ + && test x"`cat $srcdir/../gcc/DEV-PHASE`" != xexperimental; then + is_release=yes +fi -if test $enable_checking != no ; then +AC_ARG_ENABLE(checking, +[AS_HELP_STRING([[--enable-checking[=LIST]]], + [enable expensive run-time checks. With LIST, + enable only specific categories of checks. + Categories are: yes,no,all,none,release. + Flags are: misc,valgrind or other strings])], +[ac_checking_flags="${enableval}"],[ +# Determine the default checks. +if test x$is_release = x ; then + ac_checking_flags=yes +else + ac_checking_flags=release +fi]) +IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS," +for check in release $ac_checking_flags +do + case $check in + # these set all the flags to specific states + yes|all) ac_checking=1 ; ac_valgrind_checking= ;; + no|none|release) ac_checking= ; ac_valgrind_checking= ;; + # these enable particular checks + misc) ac_checking=1 ;; + valgrind) ac_valgrind_checking=1 ;; + # accept + *) ;; + esac +done +IFS="$ac_save_IFS" + +if test x$ac_checking != x ; then AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want more run-time sanity checks.]) fi +if test x$ac_valgrind_checking != x ; then + AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1, +[Define if you want to workaround valgrind (a memory checker) warnings about + possible memory leaks because of libcpp use of interior pointers.]) +fi + AC_ARG_ENABLE(canonical-system-headers, [ --enable-canonical-system-headers enable or disable system headers canonicalization], diff --git a/libcpp/files.c b/libcpp/files.c index 105cd969748..a614b7cebed 100644 --- a/libcpp/files.c +++ b/libcpp/files.c @@ -492,7 +492,8 @@ _cpp_file * _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool fake, int angle_brackets, bool implicit_preinclude) { - struct file_hash_entry *entry, **hash_slot; + struct file_hash_entry *entry; + void **hash_slot; _cpp_file *file; bool invalid_pch = false; bool saw_bracket_include = false; @@ -503,13 +504,12 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, if (start_dir == NULL) cpp_error (pfile, CPP_DL_ICE, "NULL directory in find_file"); - hash_slot = (struct file_hash_entry **) - htab_find_slot_with_hash (pfile->file_hash, fname, - htab_hash_string (fname), - INSERT); + hash_slot + = htab_find_slot_with_hash (pfile->file_hash, fname, + htab_hash_string (fname), INSERT); /* First check the cache before we resort to memory allocation. */ - entry = search_cache (*hash_slot, start_dir); + entry = search_cache ((struct file_hash_entry *) *hash_slot, start_dir); if (entry) return entry->u.file; @@ -533,6 +533,17 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, the list of all files so that #import works. */ file->next_file = pfile->all_files; pfile->all_files = file; + if (*hash_slot == NULL) + { + /* If *hash_slot is NULL, the above htab_find_slot_with_hash + call just created the slot, but we aren't going to store + there anything, so need to remove the newly created entry. + htab_clear_slot requires that it is non-NULL, so store + there some non-NULL pointer, htab_clear_slot will + overwrite it immediately. */ + *hash_slot = file; + htab_clear_slot (pfile->file_hash, hash_slot); + } return file; } @@ -548,6 +559,12 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, { free ((char *) file->name); free (file); + if (*hash_slot == NULL) + { + /* See comment on the above htab_clear_slot call. */ + *hash_slot = file; + htab_clear_slot (pfile->file_hash, hash_slot); + } return NULL; } else @@ -565,7 +582,7 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, else continue; - entry = search_cache (*hash_slot, file->dir); + entry = search_cache ((struct file_hash_entry *) *hash_slot, file->dir); if (entry) { found_in_cache = file->dir; @@ -589,11 +606,11 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, /* Store this new result in the hash table. */ entry = new_file_hash_entry (pfile); - entry->next = *hash_slot; + entry->next = (struct file_hash_entry *) *hash_slot; entry->start_dir = start_dir; entry->location = pfile->line_table->highest_location; entry->u.file = file; - *hash_slot = entry; + *hash_slot = (void *) entry; /* If we passed the quote or bracket chain heads, cache them also. This speeds up processing if there are lots of -I options. */ @@ -602,22 +619,22 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, && found_in_cache != pfile->bracket_include) { entry = new_file_hash_entry (pfile); - entry->next = *hash_slot; + entry->next = (struct file_hash_entry *) *hash_slot; entry->start_dir = pfile->bracket_include; entry->location = pfile->line_table->highest_location; entry->u.file = file; - *hash_slot = entry; + *hash_slot = (void *) entry; } if (saw_quote_include && pfile->quote_include != start_dir && found_in_cache != pfile->quote_include) { entry = new_file_hash_entry (pfile); - entry->next = *hash_slot; + entry->next = (struct file_hash_entry *) *hash_slot; entry->start_dir = pfile->quote_include; entry->location = pfile->line_table->highest_location; entry->u.file = file; - *hash_slot = entry; + *hash_slot = (void *) entry; } return file; diff --git a/libcpp/lex.c b/libcpp/lex.c index 976d9e8b0eb..570c00733cb 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -2846,8 +2846,17 @@ new_buff (size_t len) len = MIN_BUFF_SIZE; len = CPP_ALIGN (len); +#ifdef ENABLE_VALGRIND_CHECKING + /* Valgrind warns about uses of interior pointers, so put _cpp_buff + struct first. */ + size_t slen = CPP_ALIGN2 (sizeof (_cpp_buff), 2 * DEFAULT_ALIGNMENT); + base = XNEWVEC (unsigned char, len + slen); + result = (_cpp_buff *) base; + base += slen; +#else base = XNEWVEC (unsigned char, len + sizeof (_cpp_buff)); result = (_cpp_buff *) (base + len); +#endif result->base = base; result->cur = base; result->limit = base + len; @@ -2934,7 +2943,11 @@ _cpp_free_buff (_cpp_buff *buff) for (; buff; buff = next) { next = buff->next; +#ifdef ENABLE_VALGRIND_CHECKING + free (buff); +#else free (buff->base); +#endif } } diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c index b59f4acf0dc..9b563a50946 100644 --- a/libgo/runtime/proc.c +++ b/libgo/runtime/proc.c @@ -1256,6 +1256,12 @@ runtime_newm(void) // Block signals during pthread_create so that the new thread // starts with signals disabled. It will enable them in minit. sigfillset(&clear); + +#ifdef SIGTRAP + // Blocking SIGTRAP reportedly breaks gdb on Alpha GNU/Linux. + sigdelset(&clear, SIGTRAP); +#endif + sigemptyset(&old); sigprocmask(SIG_BLOCK, &clear, &old); ret = pthread_create(&tid, &attr, runtime_mstart, mp); diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog index 608ffab0851..4e3facc1a8e 100644 --- a/libsanitizer/ChangeLog +++ b/libsanitizer/ChangeLog @@ -1,3 +1,9 @@ +2013-02-28 Jakub Jelinek <jakub@redhat.com> + + * asan/asan_mapping.h (kMidMemEnd): Increase to 0x4fffffffffULL. + * asan/asan_rtl.cc (__asan_init): Increase kMidMemEnd to + 0x4fffffffffULL. + 2013-02-22 Jakub Jelinek <jakub@redhat.com> PR sanitizer/56393 diff --git a/libsanitizer/asan/asan_mapping.h b/libsanitizer/asan/asan_mapping.h index df952363893..9b4dd35f1eb 100644 --- a/libsanitizer/asan/asan_mapping.h +++ b/libsanitizer/asan/asan_mapping.h @@ -30,13 +30,13 @@ // || `[0x000000040000, 0x01ffffffffff]` || ShadowGap || // // Special case when something is already mapped between -// 0x003000000000 and 0x004000000000 (e.g. when prelink is installed): +// 0x003000000000 and 0x005000000000 (e.g. when prelink is installed): // || `[0x10007fff8000, 0x7fffffffffff]` || HighMem || // || `[0x02008fff7000, 0x10007fff7fff]` || HighShadow || -// || `[0x004000000000, 0x02008fff6fff]` || ShadowGap3 || -// || `[0x003000000000, 0x003fffffffff]` || MidMem || -// || `[0x00087fff8000, 0x002fffffffff]` || ShadowGap2 || -// || `[0x00067fff8000, 0x00087fff7fff]` || MidShadow || +// || `[0x005000000000, 0x02008fff6fff]` || ShadowGap3 || +// || `[0x003000000000, 0x004fffffffff]` || MidMem || +// || `[0x000a7fff8000, 0x002fffffffff]` || ShadowGap2 || +// || `[0x00067fff8000, 0x000a7fff7fff]` || MidShadow || // || `[0x00008fff7000, 0x00067fff7fff]` || ShadowGap || // || `[0x00007fff8000, 0x00008fff6fff]` || LowShadow || // || `[0x000000000000, 0x00007fff7fff]` || LowMem || @@ -129,7 +129,7 @@ extern uptr AsanMappingProfile[]; // difference between fixed and non-fixed mapping is below the noise level. static uptr kHighMemEnd = 0x7fffffffffffULL; static uptr kMidMemBeg = 0x3000000000ULL; -static uptr kMidMemEnd = 0x3fffffffffULL; +static uptr kMidMemEnd = 0x4fffffffffULL; #else SANITIZER_INTERFACE_ATTRIBUTE extern uptr kHighMemEnd, kMidMemBeg, kMidMemEnd; // Initialized in __asan_init. diff --git a/libsanitizer/asan/asan_rtl.cc b/libsanitizer/asan/asan_rtl.cc index e551b6fbc26..6ddb01329ad 100644 --- a/libsanitizer/asan/asan_rtl.cc +++ b/libsanitizer/asan/asan_rtl.cc @@ -455,7 +455,7 @@ void __asan_init() { #if ASAN_LINUX && defined(__x86_64__) && !ASAN_FIXED_MAPPING if (!full_shadow_is_available) { kMidMemBeg = kLowMemEnd < 0x3000000000ULL ? 0x3000000000ULL : 0; - kMidMemEnd = kLowMemEnd < 0x3000000000ULL ? 0x3fffffffffULL : 0; + kMidMemEnd = kLowMemEnd < 0x3000000000ULL ? 0x4fffffffffULL : 0; } #endif diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 8f995121feb..eae75170811 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2013-03-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config/abi/post/solaris2.9/baseline_symbols.txt: Regenerate. + * config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise. + 2013-02-26 Jonathan Wakely <jwakely.gcc@gmail.com> PR libstdc++/56012 diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 528ce8320e6..0871a6a2883 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -1739,7 +1739,12 @@ AC_DEFUN([GLIBCXX_CHECK_RANDOM_TR1], [ AC_MSG_CHECKING([for "/dev/random" and "/dev/urandom" for TR1 random_device]) AC_CACHE_VAL(glibcxx_cv_random_tr1, [ if test -r /dev/random && test -r /dev/urandom; then - glibcxx_cv_random_tr1=yes; + ## For MSys environment the test above is detect as false-positive + ## on mingw-targets. So disable it explicit for them. + case ${target_os} in + *mingw*) glibcxx_cv_random_tr1=no ;; + *) glibcxx_cv_random_tr1=yes ;; + esac else glibcxx_cv_random_tr1=no; fi diff --git a/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt index d7f3613bbc3..5072849bb55 100644 --- a/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt @@ -388,6 +388,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 @@ -575,6 +576,8 @@ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@@GLIBCXX_3.4.18 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@@GLIBCXX_3.4.18 FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9 FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4 FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4 @@ -1178,6 +1181,7 @@ FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11this_thread11__sleep_forENSt6chrono8durationIlSt5ratioILl1ELl1EEEENS1_IlS2_ILl1ELl1000000000EEEE@@GLIBCXX_3.4.18 FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4 FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1 FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4 @@ -1454,6 +1458,11 @@ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4 +FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 @@ -2430,6 +2439,7 @@ FUNC:__cxa_guard_acquire@@CXXABI_1.3 FUNC:__cxa_guard_release@@CXXABI_1.3 FUNC:__cxa_pure_virtual@@CXXABI_1.3 FUNC:__cxa_rethrow@@CXXABI_1.3 +FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 @@ -2454,6 +2464,7 @@ OBJECT:0:CXXABI_1.3.3 OBJECT:0:CXXABI_1.3.4 OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 +OBJECT:0:CXXABI_1.3.7 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2465,6 +2476,7 @@ OBJECT:0:GLIBCXX_3.4.14 OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 +OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 diff --git a/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt index d2356ba65ec..3874be08f07 100644 --- a/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt @@ -388,6 +388,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 @@ -575,6 +576,8 @@ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEj@@GLIBCXX_3.4.18 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj@@GLIBCXX_3.4.18 FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9 FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4 FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4 @@ -1178,6 +1181,7 @@ FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE@@GLIBCXX_3.4.18 FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4 FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1 FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4 @@ -1454,6 +1458,11 @@ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4 +FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 @@ -2430,6 +2439,7 @@ FUNC:__cxa_guard_acquire@@CXXABI_1.3 FUNC:__cxa_guard_release@@CXXABI_1.3 FUNC:__cxa_pure_virtual@@CXXABI_1.3 FUNC:__cxa_rethrow@@CXXABI_1.3 +FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 @@ -2454,6 +2464,7 @@ OBJECT:0:CXXABI_1.3.3 OBJECT:0:CXXABI_1.3.4 OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 +OBJECT:0:CXXABI_1.3.7 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2465,6 +2476,7 @@ OBJECT:0:GLIBCXX_3.4.14 OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 +OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 diff --git a/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt index 912ce2527a9..3d3efcbaea9 100644 --- a/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt @@ -388,6 +388,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 @@ -575,6 +576,8 @@ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@@GLIBCXX_3.4.18 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@@GLIBCXX_3.4.18 FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9 FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4 FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4 @@ -1178,6 +1181,7 @@ FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11this_thread11__sleep_forENSt6chrono8durationIlSt5ratioILl1ELl1EEEENS1_IlS2_ILl1ELl1000000000EEEE@@GLIBCXX_3.4.18 FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4 FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1 FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4 @@ -1454,6 +1458,11 @@ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4 +FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 @@ -2430,6 +2439,7 @@ FUNC:__cxa_guard_acquire@@CXXABI_1.3 FUNC:__cxa_guard_release@@CXXABI_1.3 FUNC:__cxa_pure_virtual@@CXXABI_1.3 FUNC:__cxa_rethrow@@CXXABI_1.3 +FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 @@ -2454,6 +2464,7 @@ OBJECT:0:CXXABI_1.3.3 OBJECT:0:CXXABI_1.3.4 OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 +OBJECT:0:CXXABI_1.3.7 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2465,6 +2476,7 @@ OBJECT:0:GLIBCXX_3.4.14 OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 +OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 diff --git a/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt index 143f0f4d73c..05fe095d63e 100644 --- a/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt @@ -387,6 +387,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 @@ -574,6 +575,8 @@ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEj@@GLIBCXX_3.4.18 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj@@GLIBCXX_3.4.18 FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9 FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4 FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4 @@ -1442,6 +1445,11 @@ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4 +FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 @@ -2403,6 +2411,7 @@ FUNC:__cxa_guard_acquire@@CXXABI_1.3 FUNC:__cxa_guard_release@@CXXABI_1.3 FUNC:__cxa_pure_virtual@@CXXABI_1.3 FUNC:__cxa_rethrow@@CXXABI_1.3 +FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 @@ -2469,6 +2478,7 @@ OBJECT:0:CXXABI_1.3.3 OBJECT:0:CXXABI_1.3.4 OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 +OBJECT:0:CXXABI_1.3.7 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2480,6 +2490,7 @@ OBJECT:0:GLIBCXX_3.4.14 OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 +OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 diff --git a/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt index 353d5374119..3183063f84d 100644 --- a/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt @@ -387,6 +387,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 @@ -574,6 +575,8 @@ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@@GLIBCXX_3.4.18 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@@GLIBCXX_3.4.18 FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9 FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4 FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4 @@ -1442,6 +1445,11 @@ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4 +FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 @@ -2403,6 +2411,7 @@ FUNC:__cxa_guard_acquire@@CXXABI_1.3 FUNC:__cxa_guard_release@@CXXABI_1.3 FUNC:__cxa_pure_virtual@@CXXABI_1.3 FUNC:__cxa_rethrow@@CXXABI_1.3 +FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 @@ -2469,6 +2478,7 @@ OBJECT:0:CXXABI_1.3.3 OBJECT:0:CXXABI_1.3.4 OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 +OBJECT:0:CXXABI_1.3.7 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2480,6 +2490,7 @@ OBJECT:0:GLIBCXX_3.4.14 OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 +OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index ed7a080ae36..52b828905c2 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -26472,7 +26472,12 @@ $as_echo_n "checking for \"/dev/random\" and \"/dev/urandom\" for TR1 random_dev else if test -r /dev/random && test -r /dev/urandom; then - glibcxx_cv_random_tr1=yes; + ## For MSys environment the test above is detect as false-positive + ## on mingw-targets. So disable it explicit for them. + case ${target_os} in + *mingw*) glibcxx_cv_random_tr1=no ;; + *) glibcxx_cv_random_tr1=yes ;; + esac else glibcxx_cv_random_tr1=no; fi |