summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-01 10:59:08 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-01 10:59:08 +0000
commit15b936ef242981647b563b969a2a27613a7e5d1b (patch)
treea91610fe63671a92c150ffd8c3f04d2fe0ae789c
parent209cc0f21d2a22ca839dd126dd9b1fa3703e81c4 (diff)
downloadgcc-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
-rw-r--r--ChangeLog.MELT4
-rw-r--r--contrib/ChangeLog4
-rw-r--r--contrib/make_sunver.pl4
-rw-r--r--gcc/ChangeLog171
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/asan.c2
-rw-r--r--gcc/c-family/ChangeLog10
-rw-r--r--gcc/c-family/c-common.c28
-rw-r--r--gcc/config/aarch64/aarch64-builtins.c2
-rw-r--r--gcc/config/aarch64/aarch64.c9
-rw-r--r--gcc/config/arm/arm.c4
-rw-r--r--gcc/config/avr/avr-mcus.def77
-rw-r--r--gcc/config/avr/avr-tables.opt562
-rw-r--r--gcc/config/avr/avr.c26
-rw-r--r--gcc/config/avr/avr.h17
-rw-r--r--gcc/config/avr/builtins.def36
-rw-r--r--gcc/config/avr/driver-avr.c21
-rw-r--r--gcc/config/avr/t-multilib72
-rw-r--r--gcc/config/microblaze/microblaze.c17
-rw-r--r--gcc/config/microblaze/microblaze.md10
-rw-r--r--gcc/cp/ChangeLog23
-rw-r--r--gcc/cp/call.c5
-rw-r--r--gcc/cp/class.c5
-rw-r--r--gcc/cp/decl.c7
-rw-r--r--gcc/cp/name-lookup.c21
-rw-r--r--gcc/cp/pt.c5
-rw-r--r--gcc/cp/semantics.c13
-rw-r--r--gcc/df-scan.c2
-rw-r--r--gcc/doc/avr-mmcu.texi18
-rw-r--r--gcc/doc/extend.texi13
-rw-r--r--gcc/doc/invoke.texi4
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/trans-decl.c10
-rw-r--r--gcc/fortran/trans-io.c2
-rw-r--r--gcc/ipa-cp.c3
-rw-r--r--gcc/ipa-pure-const.c2
-rw-r--r--gcc/ipa-reference.c8
-rw-r--r--gcc/loop-unroll.c31
-rw-r--r--gcc/sel-sched-ir.c8
-rw-r--r--gcc/testsuite/ChangeLog41
-rw-r--r--gcc/testsuite/c-c++-common/asan/attrib-1.c38
-rw-r--r--gcc/testsuite/g++.dg/asan/default-options-1.C2
-rw-r--r--gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-and.C20
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/inh-ctor18.C22
-rw-r--r--gcc/testsuite/g++.dg/debug/pr56294.C30
-rw-r--r--gcc/testsuite/g++.dg/inherit/using5.C2
-rw-r--r--gcc/testsuite/g++.dg/template/virtual4.C30
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/using3.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C2
-rw-r--r--gcc/testsuite/gcc.dg/pr45472.c21
-rw-r--r--gcc/testsuite/gcc.dg/pr56466.c31
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-2.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-3.c6
-rw-r--r--gcc/tree-cfgcleanup.c2
-rw-r--r--gcc/tree-flow.h2
-rw-r--r--gcc/tree-sra.c48
-rw-r--r--gcc/tree-ssa-loop-niter.c1
-rw-r--r--gcc/tree-ssa.c19
-rw-r--r--gcc/tree-vect-data-refs.c7
-rw-r--r--gcc/tree-vect-loop.c1
-rw-r--r--gcc/tree-vect-slp.c13
-rw-r--r--gcc/tree-vect-stmts.c32
-rw-r--r--gcc/tree-vectorizer.h2
-rw-r--r--libcpp/ChangeLog19
-rw-r--r--libcpp/config.in4
-rwxr-xr-xlibcpp/configure46
-rw-r--r--libcpp/configure.ac46
-rw-r--r--libcpp/files.c43
-rw-r--r--libcpp/lex.c13
-rw-r--r--libgo/runtime/proc.c6
-rw-r--r--libsanitizer/ChangeLog6
-rw-r--r--libsanitizer/asan/asan_mapping.h12
-rw-r--r--libsanitizer/asan/asan_rtl.cc2
-rw-r--r--libstdc++-v3/ChangeLog8
-rw-r--r--libstdc++-v3/acinclude.m47
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt12
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt12
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt12
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt11
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt11
-rwxr-xr-xlibstdc++-v3/configure7
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