diff options
author | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2013-09-20 09:51:31 +0000 |
---|---|---|
committer | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2013-09-20 09:51:31 +0000 |
commit | aa9a860d6095cf4cf2307b79b9409461e7fd50af (patch) | |
tree | 22d5d64b32ffacc40f54e7561623033a5c297620 | |
parent | db749201e64b1c8a130f7f574ff1e71a32a37594 (diff) | |
download | gcc-47-aa9a860d6095cf4cf2307b79b9409461e7fd50af.tar.gz |
* Update to SVN 20130920 (r202771) from the gcc-4_7-branch.
git-svn-id: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc-4.7@6964 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
-rw-r--r-- | debian/changelog | 6 | ||||
-rw-r--r-- | debian/patches/svn-updates.diff | 1005 |
2 files changed, 985 insertions, 26 deletions
diff --git a/debian/changelog b/debian/changelog index 6595e4c..9217e2c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +gcc-4.7 (4.7.3-7ubuntu1) UNRELEASED; urgency=low + + * Update to SVN 20130920 (r202771) from the gcc-4_7-branch. + + -- Matthias Klose <doko@debian.org> Fri, 20 Sep 2013 11:23:55 +0200 + gcc-4.7 (4.7.3-7) unstable; urgency=low * Update to SVN 20130821 (r201895) from the gcc-4_7-branch. diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff index b43c402..d5e0ba9 100644 --- a/debian/patches/svn-updates.diff +++ b/debian/patches/svn-updates.diff @@ -1,10 +1,10 @@ -# DP: updates from the 4.7 branch upto 20130820 (r201895). +# DP: updates from the 4.7 branch upto 20130920 (r202771). last_updated() { cat > ${dir}LAST_UPDATED <<EOF -Wed Aug 21 11:15:52 CEST 2013 -Wed Aug 21 09:15:52 UTC 2013 (revision 201895) +Fri Sep 20 11:18:33 CEST 2013 +Fri Sep 20 09:18:33 UTC 2013 (revision 202771) EOF } @@ -104,11 +104,33 @@ Index: libstdc++-v3/include/bits/basic_string.h */ template<typename _CharT, typename _Traits, typename _Alloc> inline basic_istream<_CharT, _Traits>& +Index: libstdc++-v3/include/bits/random.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/random.tcc (.../tags/gcc_4_7_3_release) ++++ b/src/libstdc++-v3/include/bits/random.tcc (.../branches/gcc-4_7-branch) +@@ -1125,7 +1125,7 @@ + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { +- typedef typename std::gamma_distribution<result_type>::param_type ++ typedef typename std::gamma_distribution<double>::param_type + param_type; + + const double __y = Index: libstdc++-v3/ChangeLog =================================================================== --- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_4_7_3_release) +++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-4_7-branch) -@@ -1,3 +1,38 @@ +@@ -1,3 +1,47 @@ ++2013-09-03 Paolo Carlini <paolo.carlini@oracle.com> ++ ++ PR libstdc++/58302 ++ * include/bits/random.tcc (negative_binomial_distribution<>:: ++ operator()(_UniformRandomNumberGenerator&, const param_type&): ++ Fix typo in template argument. ++ * testsuite/26_numerics/random/negative_binomial_distribution/ ++ operators/58302.cc: New. ++ +2013-08-17 Uros Bizjak <ubizjak@gmail.com> + + * src/c++98/compatibility.cc (_ZTIe): Use @@ -147,6 +169,45 @@ Index: libstdc++-v3/ChangeLog 2013-04-11 Release Manager * GCC 4.7.3 released. +Index: libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc (.../tags/gcc_4_7_3_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc (.../branches/gcc-4_7-branch) +@@ -0,0 +1,34 @@ ++// { dg-do compile } ++// { dg-options "-std=gnu++11" } ++// { dg-require-cstdint "" } ++// ++// Copyright (C) 2013 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// <http://www.gnu.org/licenses/>. ++ ++#include <random> ++ ++void test01() ++{ ++ typedef std::negative_binomial_distribution<> dist_type; ++ ++ std::default_random_engine engine; ++ ++ dist_type dist; ++ dist_type::param_type param(3, 0.5); ++ ++ dist(engine, param); // compile error! ++} Index: libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc =================================================================== --- a/src/libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc (.../tags/gcc_4_7_3_release) @@ -569,6 +630,50 @@ Index: libgcc/config/mips/vr4120-div.S <http://www.gnu.org/licenses/>. */ /* This file contains functions which implement divsi3 and modsi3 for +Index: gcc/c-family/ChangeLog +=================================================================== +--- a/src/gcc/c-family/ChangeLog (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-4_7-branch) +@@ -1,3 +1,11 @@ ++2013-09-01 Iain Sandoe <iain@codesourcery.com> ++ ++ Backported from 4.8 ++ 2012-06-19 Steven Bosscher <steven@gcc.gnu.org> ++ ++ * c-target.def (objc_declare_unresolved_class_reference, ++ objc_declare_class_definition): Add new hooks. ++ + 2013-04-11 Release Manager + + * GCC 4.7.3 released. +Index: gcc/c-family/c-target.def +=================================================================== +--- a/src/gcc/c-family/c-target.def (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/c-family/c-target.def (.../branches/gcc-4_7-branch) +@@ -59,8 +59,22 @@ + common-format string object when the target provides one.", + tree, (tree string), + NULL) +- ++ + DEFHOOK ++(objc_declare_unresolved_class_reference, ++ "Declare that Objective C class @var{classname} is referenced\ ++ by the current TU.", ++ void, (const char *classname), ++ NULL) ++ ++DEFHOOK ++(objc_declare_class_definition, ++ "Declare that Objective C class @var{classname} is defined\ ++ by the current TU.", ++ void, (const char *classname), ++ NULL) ++ ++DEFHOOK + (string_object_ref_type_p, + "If a target implements string objects then this hook should return\ + @code{true} if @var{stringref} is a valid reference to such an object.", Index: gcc/target.def =================================================================== --- a/src/gcc/target.def (.../tags/gcc_4_7_3_release) @@ -593,7 +698,7 @@ Index: gcc/DATESTAMP +++ b/src/gcc/DATESTAMP (.../branches/gcc-4_7-branch) @@ -1 +1 @@ -20130411 -+20130821 ++20130920 Index: gcc/tree-tailcall.c =================================================================== --- a/src/gcc/tree-tailcall.c (.../tags/gcc_4_7_3_release) @@ -644,11 +749,257 @@ Index: gcc/builtins.c /* Fall through... */ case rvc_zero: /* Zero may set errno and/or raise an exception for logb, also +Index: gcc/objc/ChangeLog +=================================================================== +--- a/src/gcc/objc/ChangeLog (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/objc/ChangeLog (.../branches/gcc-4_7-branch) +@@ -1,3 +1,14 @@ ++2013-09-01 Iain Sandoe <iain@codesourcery.com> ++ ++ Backported from 4.8 ++ 2012-06-19 Steven Bosscher <steven@gcc.gnu.org> ++ ++ * objc-next-runtime-abi-01.c: Do not include tm.h and output.h. ++ Include c-family/c-target.h. ++ (handle_next_class_ref): Rewrite to emit top-level asm statements. ++ (handle_next_impent): Likewise. ++ * objc/Make-lang.in: Fix dependencies for objc-next-runtime-abi-01.o. ++ + 2013-04-11 Release Manager + + * GCC 4.7.3 released. +Index: gcc/objc/Make-lang.in +=================================================================== +--- a/src/gcc/objc/Make-lang.in (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/objc/Make-lang.in (.../branches/gcc-4_7-branch) +@@ -106,7 +106,7 @@ + gt-objc-objc-next-runtime-abi-01.h \ + $(START_HDRS) \ + $(GGC_H) $(DIAGNOSTIC_CORE_H) $(FLAGS_H) input.h \ +- $(TARGET_H) output.h \ ++ $(TARGET_H) \ + objc/objc-encoding.h \ + objc/objc-next-metadata-tags.h \ + objc/objc-runtime-hooks.h \ +Index: gcc/objc/objc-next-runtime-abi-01.c +=================================================================== +--- a/src/gcc/objc/objc-next-runtime-abi-01.c (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/objc/objc-next-runtime-abi-01.c (.../branches/gcc-4_7-branch) +@@ -26,7 +26,6 @@ + #include "config.h" + #include "system.h" + #include "coretypes.h" +-#include "tm.h" + #include "tree.h" + + #ifdef OBJCPLUS +@@ -49,7 +48,7 @@ + + #include "ggc.h" + #include "target.h" +-#include "output.h" ++#include "c-family/c-target.h" + #include "tree-iterator.h" + + #include "objc-runtime-hooks.h" +@@ -2268,47 +2267,50 @@ + init_objc_symtab (TREE_TYPE (UOBJC_SYMBOLS_decl))); + } + ++/* Any target implementing NeXT ObjC m32 ABI has to ensure that objects ++ refer to, and define, symbols that enforce linkage of classes into the ++ executable image, preserving unix archive semantics. + ++ At present (4.8), the only targets implementing this are Darwin; these ++ use top level asms to implement a scheme (see config/darwin-c.c). The ++ latter method is a hack, but compatible with LTO see also PR48109 for ++ further discussion and other possible methods. */ ++ + static void +-handle_next_class_ref (tree chain) ++handle_next_class_ref (tree chain ATTRIBUTE_UNUSED) + { +- const char *name = IDENTIFIER_POINTER (TREE_VALUE (chain)); +- char *string = (char *) alloca (strlen (name) + 30); +- +- sprintf (string, ".objc_class_name_%s", name); +- +-#ifdef ASM_DECLARE_UNRESOLVED_REFERENCE +- ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string); +-#else +- return ; /* NULL build for targets other than Darwin. */ +-#endif ++ if (targetcm.objc_declare_unresolved_class_reference) ++ { ++ const char *name = IDENTIFIER_POINTER (TREE_VALUE (chain)); ++ char *string = (char *) alloca (strlen (name) + 30); ++ sprintf (string, ".objc_class_name_%s", name); ++ targetcm.objc_declare_unresolved_class_reference (string); ++ } + } + + static void +-handle_next_impent (struct imp_entry *impent) ++handle_next_impent (struct imp_entry *impent ATTRIBUTE_UNUSED) + { +- char buf[BUFSIZE]; ++ if (targetcm.objc_declare_class_definition) ++ { ++ char buf[BUFSIZE]; + +- switch (TREE_CODE (impent->imp_context)) +- { +- case CLASS_IMPLEMENTATION_TYPE: +- snprintf (buf, BUFSIZE, ".objc_class_name_%s", +- IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context))); +- break; +- case CATEGORY_IMPLEMENTATION_TYPE: +- snprintf (buf, BUFSIZE, "*.objc_category_name_%s_%s", +- IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context)), +- IDENTIFIER_POINTER (CLASS_SUPER_NAME (impent->imp_context))); +- break; +- default: +- return; ++ switch (TREE_CODE (impent->imp_context)) ++ { ++ case CLASS_IMPLEMENTATION_TYPE: ++ snprintf (buf, BUFSIZE, ".objc_class_name_%s", ++ IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context))); ++ break; ++ case CATEGORY_IMPLEMENTATION_TYPE: ++ snprintf (buf, BUFSIZE, "*.objc_category_name_%s_%s", ++ IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context)), ++ IDENTIFIER_POINTER (CLASS_SUPER_NAME (impent->imp_context))); ++ break; ++ default: ++ return; ++ } ++ targetcm.objc_declare_class_definition (buf); + } +- +-#ifdef ASM_DECLARE_CLASS_REFERENCE +- ASM_DECLARE_CLASS_REFERENCE (asm_out_file, buf); +-#else +- return ; /* NULL build for targets other than Darwin. */ +-#endif + } + + static void +@@ -2415,8 +2417,7 @@ + + /* Dump the class references. This forces the appropriate classes + to be linked into the executable image, preserving unix archive +- semantics. This can be removed when we move to a more dynamically +- linked environment. */ ++ semantics. */ + + for (chain = cls_ref_chain; chain; chain = TREE_CHAIN (chain)) + { Index: gcc/ChangeLog =================================================================== --- a/src/gcc/ChangeLog (.../tags/gcc_4_7_3_release) +++ b/src/gcc/ChangeLog (.../branches/gcc-4_7-branch) -@@ -1,3 +1,342 @@ +@@ -1,3 +1,442 @@ ++2013-09-18 Daniel Morris <danielm@ecoscentric.com> ++ Paolo Carlini <paolo.carlini@oracle.com> ++ ++ PR c++/58458 ++ * doc/implement-cxx.texi: Fix references to the C++ standards. ++ ++2013-09-14 John David Anglin <danglin@gcc.gnu.org> ++ ++ PR target/58382 ++ * config/pa/pa.c (pa_expand_prologue): Change mode in gen_rtx_POST_INC ++ calls to word_mode. ++ ++2013-09-12 Terry Guo <terry.guo@arm.com> ++ ++ Backport from mainline ++ 2012-09-17 Richard Guenther <rguenther@suse.de> ++ ++ PR lto/54598 ++ * tree-streamer-in.c (unpack_ts_real_cst_value_fields): Use ggc'ed ++ FIXED_VALUE_TYPE instead of struct fixed_value. ++ ++2013-09-10 Richard Earnshaw <rearnsha@arm.com> ++ ++ PR target/58361 ++ * arm/vfp.md (combine_vcvt_f32_<FCVTI32typename>): Fix pattern to ++ support conditional execution. ++ (combine_vcvt_f64_<FCVTI32typename>): Likewise. ++ ++2013-09-01 Uros Bizjak <ubizjak@gmail.com> ++ ++ Backport from mainline ++ 2013-08-31 Uros Bizjak <ubizjak@gmail.com> ++ ++ * config/alpha/alpha.c (alpha_emit_conditional_move): Update ++ "cmp" RTX before signed_comparison_operator check to account ++ for "code" changes. ++ ++2013-09-01 John David Anglin <danglin@gcc.gnu.org> ++ ++ * config/pa/pa.md: Allow "const 0" operand 1 in "scc" insns. ++ ++2013-09-01 Iain Sandoe <iain@codesourcery.com> ++ ++ Backported from 4.8 ++ 2012-06-19 Steven Bosscher <steven@gcc.gnu.org> ++ ++ * doc/tm.texi.in (TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE, ++ TARGET_OBJC_DECLARE_CLASS_DEFINITION): Add @hooks. ++ (ASM_DECLARE_CLASS_REFERENCE, ASM_DECLARE_UNRESOLVED_REFERENCE): ++ Remove. ++ * doc/tm.texi: Regenerate. ++ * config/darwin.h (ASM_OUTPUT_LABELREF): Remove special case for ++ .objc_class_name_*. ++ * config/darwin-c.c: Include target.h. ++ (darwin_objc_declare_unresolved_class_reference): New function. ++ (darwin_objc_declare_class_definition): New function. ++ (TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE): Define. ++ (TARGET_OBJC_DECLARE_CLASS_DEFINITION): Define. ++ ++2013-09-01 Iain Sandoe <iain@codesourcery.com> ++ ++ Backport from mainline: ++ 2013-07-22 Uros Bizjak <ubizjak@gmail.com> ++ ++ * config/i386/i386.md (nonlocal_goto_receiver): Delete insn if ++ it is not needed after split. ++ ++ 2013-07-20 Iain Sandoe <iain@codesourcery.com> ++ ++ PR target/51784 ++ * config/i386/i386.c (output_set_got) [TARGET_MACHO]: Adjust to emit a ++ second label for nonlocal goto receivers. Don't output pic base labels ++ unless we're producing PIC; mark that action unreachable(). ++ (ix86_save_reg): If the function contains a nonlocal label, save the ++ PIC base reg. ++ * config/darwin-protos.h (machopic_should_output_picbase_label): New. ++ * gcc/config/darwin.c (emitted_pic_label_num): New GTY. ++ (update_pic_label_number_if_needed): New. ++ (machopic_output_function_base_name): Adjust for nonlocal receiver ++ case. ++ (machopic_should_output_picbase_label): New. ++ * config/i386/i386.md (enum unspecv): UNSPECV_NLGR: New. ++ (nonlocal_goto_receiver): New insn and split. ++ ++2013-08-28 Uros Bizjak <ubizjak@gmail.com> ++ ++ Backport from mainline ++ 2013-08-27 Christian Widmer <shadow@umbrox.de> ++ ++ PR target/57927 ++ * config/i386/driver-i386.c (host_detect_local_cpu): Add detection ++ of Ivy Bridge processors. ++ ++2013-08-21 Richard Earnshaw <rearnsha@arm.com> ++ ++ PR target/56979 ++ * arm.c (aapcs_vfp_allocate): Decompose the argument if the ++ suggested mode for the assignment isn't compatible with the ++ registers required. ++ +2013-08-17 Uros Bizjak <ubizjak@gmail.com> + + Backport from mainline @@ -1740,6 +2091,41 @@ Index: gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads + function F return Natural; + +end Loop_Optimization16_Pkg; +Index: gcc/testsuite/gnat.dg/in_out_parameter4.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/in_out_parameter4.adb (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/testsuite/gnat.dg/in_out_parameter4.adb (.../branches/gcc-4_7-branch) +@@ -0,0 +1,30 @@ ++-- { dg-do run } ++-- { dg-options "-gnat12 -gnatVa" } ++ ++procedure In_Out_Parameter4 is ++ ++ type Enum is (E_Undetermined, E_Down, E_Up); ++ subtype Status_T is Enum range E_Down .. E_Up; ++ ++ function Recurse (Val : in out Integer) return Status_T is ++ ++ Result : Status_T; ++ ++ procedure Dummy (I : in out Integer) is begin null; end; ++ ++ begin ++ if Val > 500 then ++ Val := Val - 1; ++ Result := Recurse (Val); ++ return Result; ++ else ++ return E_UP; ++ end if; ++ end; ++ ++ Val : Integer := 501; ++ S : Status_T; ++ ++begin ++ S := Recurse (Val); ++end; Index: gcc/testsuite/gnat.dg/loop_optimization16.adb =================================================================== --- a/src/gcc/testsuite/gnat.dg/loop_optimization16.adb (.../tags/gcc_4_7_3_release) @@ -1957,7 +2343,11 @@ Index: gcc/testsuite/ChangeLog =================================================================== --- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_7_3_release) +++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_7-branch) -@@ -1,3 +1,210 @@ +@@ -1,3 +1,214 @@ ++2013-09-18 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gnat.dg/in_out_parameter4.adb: New test. ++ +2013-08-13 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/loop_optimization16.adb: New test. @@ -2458,6 +2848,26 @@ Index: gcc/testsuite/g++.dg/template/delete2.C + B<int> b; + delete b; // { dg-error "template|delete" } +} +Index: gcc/testsuite/g++.dg/template/inherit9.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/template/inherit9.C (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/testsuite/g++.dg/template/inherit9.C (.../branches/gcc-4_7-branch) +@@ -0,0 +1,15 @@ ++// PR c++/58273 ++ ++class A {}; ++class B ++{ ++ int goo(A); ++}; ++template<typename E> ++class D : public B ++{ ++ void foo(A t) ++ { ++ int const i(B::goo(t)); ++ } ++}; Index: gcc/testsuite/objc.dg/no-extra-load.m =================================================================== --- a/src/gcc/testsuite/objc.dg/no-extra-load.m (.../tags/gcc_4_7_3_release) @@ -3323,7 +3733,13 @@ Index: gcc/cp/ChangeLog =================================================================== --- a/src/gcc/cp/ChangeLog (.../tags/gcc_4_7_3_release) +++ b/src/gcc/cp/ChangeLog (.../branches/gcc-4_7-branch) -@@ -1,3 +1,56 @@ +@@ -1,3 +1,62 @@ ++2013-09-13 Jason Merrill <jason@redhat.com> ++ ++ PR c++/58273 ++ * pt.c (any_type_dependent_elements_p): Actually check for ++ type-dependence, not value-dependence. ++ +2013-08-20 Jason Merrill <jason@redhat.com> + + PR c++/58119 @@ -3405,6 +3821,15 @@ Index: gcc/cp/pt.c case IDENTIFIER_NODE: if (IDENTIFIER_TYPENAME_P (t)) { +@@ -19545,7 +19552,7 @@ + any_type_dependent_elements_p (const_tree list) + { + for (; list; list = TREE_CHAIN (list)) +- if (value_dependent_expression_p (TREE_VALUE (list))) ++ if (type_dependent_expression_p (TREE_VALUE (list))) + return true; + + return false; Index: gcc/cp/semantics.c =================================================================== --- a/src/gcc/cp/semantics.c (.../tags/gcc_4_7_3_release) @@ -3646,7 +4071,12 @@ Index: gcc/ada/ChangeLog =================================================================== --- a/src/gcc/ada/ChangeLog (.../tags/gcc_4_7_3_release) +++ b/src/gcc/ada/ChangeLog (.../branches/gcc-4_7-branch) -@@ -1,3 +1,13 @@ +@@ -1,3 +1,18 @@ ++2013-09-18 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc-interface/trans.c (Subprogram_Body_to_gnu): Pop the stack of ++ return variables for subprograms using the CICO mechanism. ++ +2013-08-13 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/trans.c (can_equal_min_or_max_val_p): Be prepared for @@ -3699,6 +4129,15 @@ Index: gcc/ada/gcc-interface/trans.c } /* Return true if VAL (of type TYPE) can equal the minimum value of TYPE. +@@ -3430,6 +3438,8 @@ + { + tree gnu_retval; + ++ VEC_pop (tree, gnu_return_var_stack); ++ + add_stmt (gnu_result); + add_stmt (build1 (LABEL_EXPR, void_type_node, + VEC_last (tree, gnu_return_label_stack))); Index: gcc/fortran/interface.c =================================================================== --- a/src/gcc/fortran/interface.c (.../tags/gcc_4_7_3_release) @@ -4316,6 +4755,28 @@ Index: gcc/sched-deps.c flush_pending_lists (deps, insn, true, true); reg_pending_barrier = NOT_A_BARRIER; +Index: gcc/tree-streamer-in.c +=================================================================== +--- a/src/gcc/tree-streamer-in.c (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/tree-streamer-in.c (.../branches/gcc-4_7-branch) +@@ -172,12 +172,11 @@ + static void + unpack_ts_fixed_cst_value_fields (struct bitpack_d *bp, tree expr) + { +- struct fixed_value fv; +- +- fv.mode = bp_unpack_enum (bp, machine_mode, MAX_MACHINE_MODE); +- fv.data.low = bp_unpack_var_len_int (bp); +- fv.data.high = bp_unpack_var_len_int (bp); +- TREE_FIXED_CST (expr) = fv; ++ FIXED_VALUE_TYPE *fp = ggc_alloc_fixed_value (); ++ fp->mode = bp_unpack_enum (bp, machine_mode, MAX_MACHINE_MODE); ++ fp->data.low = bp_unpack_var_len_int (bp); ++ fp->data.high = bp_unpack_var_len_int (bp); ++ TREE_FIXED_CST_PTR (expr) = fp; + } + + Index: gcc/collect2-aix.h =================================================================== --- a/src/gcc/collect2-aix.h (.../tags/gcc_4_7_3_release) @@ -4458,7 +4919,15 @@ Index: gcc/config/alpha/alpha.c =================================================================== --- a/src/gcc/config/alpha/alpha.c (.../tags/gcc_4_7_3_release) +++ b/src/gcc/config/alpha/alpha.c (.../branches/gcc-4_7-branch) -@@ -2658,12 +2658,12 @@ +@@ -2617,6 +2617,7 @@ + cmp_mode = cmp_mode == DImode ? DFmode : DImode; + op0 = gen_lowpart (cmp_mode, tem); + op1 = CONST0_RTX (cmp_mode); ++ cmp = gen_rtx_fmt_ee (code, VOIDmode, op0, op1); + local_fast_math = 1; + } + +@@ -2658,12 +2659,12 @@ break; case GE: case GT: case GEU: case GTU: @@ -4477,7 +4946,7 @@ Index: gcc/config/alpha/alpha.c break; default: -@@ -3025,12 +3025,9 @@ +@@ -3025,12 +3026,9 @@ operands[1] = op1; out = gen_reg_rtx (DImode); @@ -4575,6 +5044,90 @@ Index: gcc/config/sparc/sparc.c /* FALLTHRU */ case SMM_PSO: +Index: gcc/config/darwin-c.c +=================================================================== +--- a/src/gcc/config/darwin-c.c (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/config/darwin-c.c (.../branches/gcc-4_7-branch) +@@ -25,6 +25,7 @@ + #include "tm.h" + #include "cpplib.h" + #include "tree.h" ++#include "target.h" + #include "incpath.h" + #include "c-family/c-common.h" + #include "c-family/c-pragma.h" +@@ -36,6 +37,7 @@ + #include "prefix.h" + #include "c-family/c-target.h" + #include "c-family/c-target-def.h" ++#include "cgraph.h" + + /* Pragmas. */ + +@@ -711,13 +713,60 @@ + } + }; + +-#undef TARGET_HANDLE_C_OPTION ++ ++/* Support routines to dump the class references for NeXT ABI v1, aka ++ 32-bits ObjC-2.0, as top-level asms. ++ The following two functions should only be called from ++ objc/objc-next-runtime-abi-01.c. */ ++ ++static void ++darwin_objc_declare_unresolved_class_reference (const char *name) ++{ ++ const char *lazy_reference = ".lazy_reference\t"; ++ const char *hard_reference = ".reference\t"; ++ const char *reference = MACHOPIC_INDIRECT ? lazy_reference : hard_reference; ++ size_t len = strlen (reference) + strlen(name) + 2; ++ char *buf = (char *) alloca (len); ++ ++ gcc_checking_assert (!strncmp (name, ".objc_class_name_", 17)); ++ ++ snprintf (buf, len, "%s%s", reference, name); ++ cgraph_add_asm_node (build_string (strlen (buf), buf)); ++} ++ ++static void ++darwin_objc_declare_class_definition (const char *name) ++{ ++ const char *xname = targetm.strip_name_encoding (name); ++ size_t len = strlen (xname) + 7 + 5; ++ char *buf = (char *) alloca (len); ++ ++ gcc_checking_assert (!strncmp (name, ".objc_class_name_", 17) ++ || !strncmp (name, "*.objc_category_name_", 21)); ++ ++ /* Mimic default_globalize_label. */ ++ snprintf (buf, len, ".globl\t%s", xname); ++ cgraph_add_asm_node (build_string (strlen (buf), buf)); ++ ++ snprintf (buf, len, "%s = 0", xname); ++ cgraph_add_asm_node (build_string (strlen (buf), buf)); ++} ++ ++#undef TARGET_HANDLE_C_OPTION + #define TARGET_HANDLE_C_OPTION handle_c_option + +-#undef TARGET_OBJC_CONSTRUCT_STRING_OBJECT ++#undef TARGET_OBJC_CONSTRUCT_STRING_OBJECT + #define TARGET_OBJC_CONSTRUCT_STRING_OBJECT darwin_objc_construct_string + +-#undef TARGET_STRING_OBJECT_REF_TYPE_P ++#undef TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE ++#define TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE \ ++ darwin_objc_declare_unresolved_class_reference ++ ++#undef TARGET_OBJC_DECLARE_CLASS_DEFINITION ++#define TARGET_OBJC_DECLARE_CLASS_DEFINITION \ ++ darwin_objc_declare_class_definition ++ ++#undef TARGET_STRING_OBJECT_REF_TYPE_P + #define TARGET_STRING_OBJECT_REF_TYPE_P darwin_cfstring_ref_p + + #undef TARGET_CHECK_STRING_OBJECT_FORMAT_ARG Index: gcc/config/i386/i386.md =================================================================== --- a/src/gcc/config/i386/i386.md (.../tags/gcc_4_7_3_release) @@ -4587,7 +5140,20 @@ Index: gcc/config/i386/i386.md ;; For SSE/MMX support: UNSPEC_FIX_NOTRUNC -@@ -1855,18 +1856,16 @@ +@@ -201,8 +202,11 @@ + + ;; For RDRAND support + UNSPECV_RDRAND +-]) + ++ ;; Non-local goto. ++ UNSPECV_NLGR ++ ]) ++ + ;; Constants to represent rounding modes in the ROUND instruction + (define_constants + [(ROUND_FLOOR 0x1) +@@ -1855,18 +1859,16 @@ [(set_attr "type" "*,*,sselog1,ssemov,ssemov") (set_attr "prefix" "*,*,maybe_vex,maybe_vex,maybe_vex") (set (attr "mode") @@ -4616,7 +5182,7 @@ Index: gcc/config/i386/i386.md (define_split [(set (match_operand:TI 0 "nonimmediate_operand" "") -@@ -2328,7 +2327,7 @@ +@@ -2328,7 +2330,7 @@ "TARGET_LP64 && ix86_check_movabs (insn, 0)" "@ movabs{<imodesuffix>}\t{%1, %P0|[%P0], %1} @@ -4625,7 +5191,7 @@ Index: gcc/config/i386/i386.md [(set_attr "type" "imov") (set_attr "modrm" "0,*") (set_attr "length_address" "8,0") -@@ -2342,7 +2341,7 @@ +@@ -2342,7 +2344,7 @@ "TARGET_LP64 && ix86_check_movabs (insn, 1)" "@ movabs{<imodesuffix>}\t{%P1, %0|%0, [%P1]} @@ -4634,7 +5200,7 @@ Index: gcc/config/i386/i386.md [(set_attr "type" "imov") (set_attr "modrm" "0,*") (set_attr "length_address" "8,0") -@@ -3444,9 +3443,9 @@ +@@ -3444,9 +3446,9 @@ }) (define_insn "*zero_extendsidi2_rex64" @@ -4646,7 +5212,7 @@ Index: gcc/config/i386/i386.md "TARGET_64BIT" "@ mov{l}\t{%1, %k0|%k0, %1} -@@ -3469,9 +3468,9 @@ +@@ -3469,9 +3471,9 @@ ;; %%% Kill me once multi-word ops are sane. (define_insn "zero_extendsidi2_1" @@ -4658,7 +5224,7 @@ Index: gcc/config/i386/i386.md (clobber (reg:CC FLAGS_REG))] "!TARGET_64BIT" "@ -@@ -15912,7 +15911,8 @@ +@@ -15912,7 +15914,8 @@ [(parallel [(set (match_operand 1 "memory_operand" "") (match_operand 2 "register_operand" "")) (set (match_operand 0 "register_operand" "") @@ -4668,7 +5234,7 @@ Index: gcc/config/i386/i386.md "" "ix86_current_function_needs_cld = 1;") -@@ -15921,7 +15921,8 @@ +@@ -15921,7 +15924,8 @@ (match_operand:DI 2 "register_operand" "a")) (set (match_operand:DI 0 "register_operand" "=D") (plus:DI (match_dup 1) @@ -4678,7 +5244,7 @@ Index: gcc/config/i386/i386.md "TARGET_64BIT && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosq" -@@ -15934,7 +15935,8 @@ +@@ -15934,7 +15938,8 @@ (match_operand:SI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) @@ -4688,7 +5254,7 @@ Index: gcc/config/i386/i386.md "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stos{l|d}" [(set_attr "type" "str") -@@ -15946,7 +15948,8 @@ +@@ -15946,7 +15951,8 @@ (match_operand:HI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) @@ -4698,7 +5264,7 @@ Index: gcc/config/i386/i386.md "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosw" [(set_attr "type" "str") -@@ -15958,7 +15961,8 @@ +@@ -15958,7 +15964,8 @@ (match_operand:QI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) @@ -4708,7 +5274,46 @@ Index: gcc/config/i386/i386.md "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosb" [(set_attr "type" "str") -@@ -17190,6 +17194,7 @@ +@@ -16797,7 +16804,37 @@ + emit_insn (gen_set_got (pic_offset_table_rtx)); + DONE; + }) +- ++ ++(define_insn_and_split "nonlocal_goto_receiver" ++ [(unspec_volatile [(const_int 0)] UNSPECV_NLGR)] ++ "TARGET_MACHO && !TARGET_64BIT && flag_pic" ++ "#" ++ "&& reload_completed" ++ [(const_int 0)] ++{ ++ if (crtl->uses_pic_offset_table) ++ { ++ rtx xops[3]; ++ rtx label_rtx = gen_label_rtx (); ++ rtx tmp; ++ ++ /* Get a new pic base. */ ++ emit_insn (gen_set_got_labelled (pic_offset_table_rtx, label_rtx)); ++ /* Correct this with the offset from the new to the old. */ ++ xops[0] = xops[1] = pic_offset_table_rtx; ++ label_rtx = gen_rtx_LABEL_REF (SImode, label_rtx); ++ tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, label_rtx), ++ UNSPEC_MACHOPIC_OFFSET); ++ xops[2] = gen_rtx_CONST (Pmode, tmp); ++ ix86_expand_binary_operator (MINUS, SImode, xops); ++ } ++ else ++ /* No pic reg restore needed. */ ++ emit_note (NOTE_INSN_DELETED); ++ ++ DONE; ++}) ++ + ;; Avoid redundant prefixes by splitting HImode arithmetic to SImode. + + (define_split +@@ -17190,6 +17227,7 @@ "(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ()) && peep2_reg_dead_p (4, operands[0]) && !reg_overlap_mentioned_p (operands[0], operands[1]) @@ -4716,7 +5321,7 @@ Index: gcc/config/i386/i386.md && (<MODE>mode != QImode || immediate_operand (operands[2], QImode) || q_regs_operand (operands[2], QImode)) -@@ -17254,6 +17259,7 @@ +@@ -17254,6 +17292,7 @@ || immediate_operand (operands[2], SImode) || q_regs_operand (operands[2], SImode)) && !reg_overlap_mentioned_p (operands[0], operands[1]) @@ -4813,6 +5418,47 @@ Index: gcc/config/i386/driver-i386.c else { switch (family) +@@ -593,13 +630,18 @@ + /* Atom. */ + cpu = "atom"; + break; ++ case 0x0f: ++ /* Merom. */ ++ case 0x17: ++ case 0x1d: ++ /* Penryn. */ ++ cpu = "core2"; ++ break; + case 0x1a: + case 0x1e: + case 0x1f: + case 0x2e: + /* Nehalem. */ +- cpu = "corei7"; +- break; + case 0x25: + case 0x2c: + case 0x2f: +@@ -611,15 +653,11 @@ + /* Sandy Bridge. */ + cpu = "corei7-avx"; + break; +- case 0x17: +- case 0x1d: +- /* Penryn. */ +- cpu = "core2"; ++ case 0x3a: ++ case 0x3e: ++ /* Ivy Bridge. */ ++ cpu = "core-avx-i"; + break; +- case 0x0f: +- /* Merom. */ +- cpu = "core2"; +- break; + default: + if (arch) + { Index: gcc/config/i386/i386.c =================================================================== --- a/src/gcc/config/i386/i386.c (.../tags/gcc_4_7_3_release) @@ -4835,7 +5481,62 @@ Index: gcc/config/i386/i386.c for (i = 0; i < n; i++) if (regclass[i] == X86_64_X87_CLASS || regclass[i] == X86_64_X87UP_CLASS -@@ -20026,7 +20026,7 @@ +@@ -8613,17 +8613,12 @@ + + if (!flag_pic) + { ++ if (TARGET_MACHO) ++ /* We don't need a pic base, we're not producing pic. */ ++ gcc_unreachable (); ++ + xops[2] = gen_rtx_LABEL_REF (Pmode, label ? label : gen_label_rtx ()); +- + output_asm_insn ("mov%z0\t{%2, %0|%0, %2}", xops); +- +-#if TARGET_MACHO +- /* Output the Mach-O "canonical" label name ("Lxx$pb") here too. This +- is what will be referenced by the Mach-O PIC subsystem. */ +- if (!label) +- ASM_OUTPUT_LABEL (asm_out_file, MACHOPIC_FUNCTION_BASE_NAME); +-#endif +- + targetm.asm_out.internal_label (asm_out_file, "L", + CODE_LABEL_NUMBER (XEXP (xops[2], 0))); + } +@@ -8636,12 +8631,18 @@ + xops[2] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name)); + xops[2] = gen_rtx_MEM (QImode, xops[2]); + output_asm_insn ("call\t%X2", xops); +- /* Output the Mach-O "canonical" label name ("Lxx$pb") here too. This +- is what will be referenced by the Mach-O PIC subsystem. */ ++ + #if TARGET_MACHO +- if (!label) ++ /* Output the Mach-O "canonical" pic base label name ("Lxx$pb") here. ++ This is what will be referenced by the Mach-O PIC subsystem. */ ++ if (machopic_should_output_picbase_label () || !label) + ASM_OUTPUT_LABEL (asm_out_file, MACHOPIC_FUNCTION_BASE_NAME); +- else ++ ++ /* When we are restoring the pic base at the site of a nonlocal label, ++ and we decided to emit the pic base above, we will still output a ++ local label used for calculating the correction offset (even though ++ the offset will be 0 in that case). */ ++ if (label) + targetm.asm_out.internal_label (asm_out_file, "L", + CODE_LABEL_NUMBER (label)); + #endif +@@ -8717,7 +8718,8 @@ + && (df_regs_ever_live_p (REAL_PIC_OFFSET_TABLE_REGNUM) + || crtl->profile + || crtl->calls_eh_return +- || crtl->uses_const_pool)) ++ || crtl->uses_const_pool ++ || cfun->has_nonlocal_label)) + return ix86_select_alt_pic_regnum () == INVALID_REGNUM; + + if (crtl->calls_eh_return && maybe_eh_return) +@@ -20026,7 +20028,7 @@ vec[i * 2 + 1] = const1_rtx; } vt = gen_rtx_CONST_VECTOR (maskmode, gen_rtvec_v (w, vec)); @@ -4844,7 +5545,7 @@ Index: gcc/config/i386/i386.c t1 = expand_simple_binop (maskmode, PLUS, t1, vt, t1, 1, OPTAB_DIRECT); -@@ -20223,7 +20223,7 @@ +@@ -20223,7 +20225,7 @@ for (i = 0; i < 16; ++i) vec[i] = GEN_INT (i/e * e); vt = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, vec)); @@ -4853,7 +5554,7 @@ Index: gcc/config/i386/i386.c if (TARGET_XOP) emit_insn (gen_xop_pperm (mask, mask, mask, vt)); else -@@ -20234,7 +20234,7 @@ +@@ -20234,7 +20236,7 @@ for (i = 0; i < 16; ++i) vec[i] = GEN_INT (i % e); vt = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, vec)); @@ -4862,6 +5563,18 @@ Index: gcc/config/i386/i386.c emit_insn (gen_addv16qi3 (mask, mask, vt)); } +Index: gcc/config/darwin-protos.h +=================================================================== +--- a/src/gcc/config/darwin-protos.h (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/config/darwin-protos.h (.../branches/gcc-4_7-branch) +@@ -26,6 +26,7 @@ + extern void machopic_output_function_base_name (FILE *); + extern const char *machopic_indirection_name (rtx, bool); + extern const char *machopic_mcount_stub_name (void); ++extern bool machopic_should_output_picbase_label (void); + + #ifdef RTX_CODE + Index: gcc/config/sh/sh.md =================================================================== --- a/src/gcc/config/sh/sh.md (.../tags/gcc_4_7_3_release) @@ -4978,6 +5691,60 @@ Index: gcc/config/rs6000/rs6000.h #define VSX_VECTOR_MODE(MODE) \ ((MODE) == V4SFmode \ +Index: gcc/config/darwin.c +=================================================================== +--- a/src/gcc/config/darwin.c (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/config/darwin.c (.../branches/gcc-4_7-branch) +@@ -362,14 +362,13 @@ + + static GTY(()) const char * function_base_func_name; + static GTY(()) int current_pic_label_num; ++static GTY(()) int emitted_pic_label_num; + +-void +-machopic_output_function_base_name (FILE *file) ++static void ++update_pic_label_number_if_needed (void) + { + const char *current_name; + +- /* If dynamic-no-pic is on, we should not get here. */ +- gcc_assert (!MACHO_DYNAMIC_NO_PIC_P); + /* When we are generating _get_pc thunks within stubs, there is no current + function. */ + if (current_function_decl) +@@ -387,9 +386,30 @@ + ++current_pic_label_num; + function_base_func_name = "L_machopic_stub_dummy"; + } +- fprintf (file, "L%011d$pb", current_pic_label_num); + } + ++void ++machopic_output_function_base_name (FILE *file) ++{ ++ /* If dynamic-no-pic is on, we should not get here. */ ++ gcc_assert (!MACHO_DYNAMIC_NO_PIC_P); ++ ++ update_pic_label_number_if_needed (); ++ fprintf (file, "L%d$pb", current_pic_label_num); ++} ++ ++bool ++machopic_should_output_picbase_label (void) ++{ ++ update_pic_label_number_if_needed (); ++ ++ if (current_pic_label_num == emitted_pic_label_num) ++ return false; ++ ++ emitted_pic_label_num = current_pic_label_num; ++ return true; ++} ++ + /* The suffix attached to non-lazy pointer symbols. */ + #define NON_LAZY_POINTER_SUFFIX "$non_lazy_ptr" + /* The suffix attached to stub symbols. */ Index: gcc/config/darwin.h =================================================================== --- a/src/gcc/config/darwin.h (.../tags/gcc_4_7_3_release) @@ -5011,6 +5778,45 @@ Index: gcc/config/darwin.h /* When generating stabs debugging, use N_BINCL entries. */ #define DBX_USE_BINCL +@@ -612,8 +616,6 @@ + fprintf (FILE, "\"%s\"", xname); \ + else if (darwin_label_is_anonymous_local_objc_name (xname)) \ + fprintf (FILE, "L%s", xname); \ +- else if (!strncmp (xname, ".objc_class_name_", 17)) \ +- fprintf (FILE, "%s", xname); \ + else if (xname[0] != '"' && name_needs_quotes (xname)) \ + asm_fprintf (FILE, "\"%U%s\"", xname); \ + else \ +@@ -696,29 +698,6 @@ + #undef TARGET_ASM_RELOC_RW_MASK + #define TARGET_ASM_RELOC_RW_MASK machopic_reloc_rw_mask + +- +-#define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ +- do { \ +- if (FILE) { \ +- if (MACHOPIC_INDIRECT) \ +- fprintf (FILE, "\t.lazy_reference "); \ +- else \ +- fprintf (FILE, "\t.reference "); \ +- assemble_name (FILE, NAME); \ +- fprintf (FILE, "\n"); \ +- } \ +- } while (0) +- +-#define ASM_DECLARE_CLASS_REFERENCE(FILE,NAME) \ +- do { \ +- if (FILE) { \ +- fprintf (FILE, "\t"); \ +- assemble_name (FILE, NAME); \ +- fprintf (FILE, "=0\n"); \ +- (*targetm.asm_out.globalize_label) (FILE, NAME); \ +- } \ +- } while (0) +- + /* Globalizing directive for a label. */ + #define GLOBAL_ASM_OP "\t.globl " + #define TARGET_ASM_GLOBALIZE_LABEL darwin_globalize_label Index: gcc/config/arm/thumb2.md =================================================================== --- a/src/gcc/config/arm/thumb2.md (.../tags/gcc_4_7_3_release) @@ -5060,6 +5866,21 @@ Index: gcc/config/arm/thumb2.md (set_attr "neg_pool_range" "*,250")] ) +Index: gcc/config/arm/arm.c +=================================================================== +--- a/src/gcc/config/arm/arm.c (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/config/arm/arm.c (.../branches/gcc-4_7-branch) +@@ -4355,7 +4355,9 @@ + if (((pcum->aapcs_vfp_regs_free >> regno) & mask) == mask) + { + pcum->aapcs_vfp_reg_alloc = mask << regno; +- if (mode == BLKmode || (mode == TImode && !TARGET_NEON)) ++ if (mode == BLKmode ++ || (mode == TImode && ! TARGET_NEON) ++ || ! arm_hard_regno_mode_ok (FIRST_VFP_REGNUM + regno, mode)) + { + int i; + int rcount = pcum->aapcs_vfp_rcount; Index: gcc/config/arm/vfp.md =================================================================== --- a/src/gcc/config/arm/vfp.md (.../tags/gcc_4_7_3_release) @@ -5111,6 +5932,52 @@ Index: gcc/config/arm/vfp.md (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")] ) +@@ -1144,18 +1146,18 @@ + (set_attr "type" "fcmpd")] + ) + +-;; Fixed point to floating point conversions. ++;; Fixed point to floating point conversions. + (define_code_iterator FCVT [unsigned_float float]) + (define_code_attr FCVTI32typename [(unsigned_float "u32") (float "s32")]) + + (define_insn "*combine_vcvt_f32_<FCVTI32typename>" + [(set (match_operand:SF 0 "s_register_operand" "=t") + (mult:SF (FCVT:SF (match_operand:SI 1 "s_register_operand" "0")) +- (match_operand 2 ++ (match_operand 2 + "const_double_vcvt_power_of_two_reciprocal" "Dt")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math" +- "vcvt.f32.<FCVTI32typename>\\t%0, %1, %v2" +- [(set_attr "predicable" "no") ++ "vcvt%?.f32.<FCVTI32typename>\\t%0, %1, %v2" ++ [(set_attr "predicable" "yes") + (set_attr "type" "f_cvt")] + ) + +@@ -1164,15 +1166,16 @@ + (define_insn "*combine_vcvt_f64_<FCVTI32typename>" + [(set (match_operand:DF 0 "s_register_operand" "=x,x,w") + (mult:DF (FCVT:DF (match_operand:SI 1 "s_register_operand" "r,t,r")) +- (match_operand 2 ++ (match_operand 2 + "const_double_vcvt_power_of_two_reciprocal" "Dt,Dt,Dt")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math + && !TARGET_VFP_SINGLE" + "@ +- vmov.f32\\t%0, %1\;vcvt.f64.<FCVTI32typename>\\t%P0, %P0, %v2 +- vmov.f32\\t%0, %1\;vcvt.f64.<FCVTI32typename>\\t%P0, %P0, %v2 +- vmov.f64\\t%P0, %1, %1\;vcvt.f64.<FCVTI32typename>\\t%P0, %P0, %v2" +- [(set_attr "predicable" "no") ++ vmov%?.f32\\t%0, %1\;vcvt%?.f64.<FCVTI32typename>\\t%P0, %P0, %v2 ++ vmov%?.f32\\t%0, %1\;vcvt%?.f64.<FCVTI32typename>\\t%P0, %P0, %v2 ++ vmov%?.f64\\t%P0, %1, %1\;vcvt%?.f64.<FCVTI32typename>\\t%P0, %P0, %v2" ++ [(set_attr "predicable" "yes") ++ (set_attr "ce_count" "2") + (set_attr "type" "f_cvt") + (set_attr "length" "8")] + ) Index: gcc/config/arm/neon.md =================================================================== --- a/src/gcc/config/arm/neon.md (.../tags/gcc_4_7_3_release) @@ -5320,6 +6187,72 @@ Index: gcc/config/arm/t-rtems-eabi +MULTILIB_EXCEPTIONS += mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += mfpu=neon +MULTILIB_EXCEPTIONS += mfloat-abi=hard +Index: gcc/config/pa/pa.md +=================================================================== +--- a/src/gcc/config/pa/pa.md (.../tags/gcc_4_7_3_release) ++++ b/src/gcc/config/pa/pa.md (.../branches/gcc-4_7-branch) +@@ -730,7 +730,7 @@ + (define_insn "scc" + [(set (match_operand:SI 0 "register_operand" "=r") + (match_operator:SI 3 "comparison_operator" +- [(match_operand:SI 1 "register_operand" "r") ++ [(match_operand:SI 1 "reg_or_0_operand" "rM") + (match_operand:SI 2 "arith11_operand" "rI")]))] + "" + "{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi 1,%0" +@@ -740,7 +740,7 @@ + (define_insn "" + [(set (match_operand:DI 0 "register_operand" "=r") + (match_operator:DI 3 "comparison_operator" +- [(match_operand:DI 1 "register_operand" "r") ++ [(match_operand:DI 1 "reg_or_0_operand" "rM") + (match_operand:DI 2 "arith11_operand" "rI")]))] + "TARGET_64BIT" + "cmp%I2clr,*%B3 %2,%1,%0\;ldi 1,%0" +@@ -750,10 +750,10 @@ + (define_insn "iorscc" + [(set (match_operand:SI 0 "register_operand" "=r") + (ior:SI (match_operator:SI 3 "comparison_operator" +- [(match_operand:SI 1 "register_operand" "r") ++ [(match_operand:SI 1 "reg_or_0_operand" "rM") + (match_operand:SI 2 "arith11_operand" "rI")]) + (match_operator:SI 6 "comparison_operator" +- [(match_operand:SI 4 "register_operand" "r") ++ [(match_operand:SI 4 "reg_or_0_operand" "rM") + (match_operand:SI 5 "arith11_operand" "rI")])))] + "" + "{com%I2clr|cmp%I2clr},%S3 %2,%1,%%r0\;{com%I5clr|cmp%I5clr},%B6 %5,%4,%0\;ldi 1,%0" +@@ -763,10 +763,10 @@ + (define_insn "" + [(set (match_operand:DI 0 "register_operand" "=r") + (ior:DI (match_operator:DI 3 "comparison_operator" +- [(match_operand:DI 1 "register_operand" "r") ++ [(match_operand:DI 1 "reg_or_0_operand" "rM") + (match_operand:DI 2 "arith11_operand" "rI")]) + (match_operator:DI 6 "comparison_operator" +- [(match_operand:DI 4 "register_operand" "r") ++ [(match_operand:DI 4 "reg_or_0_operand" "rM") + (match_operand:DI 5 "arith11_operand" "rI")])))] + "TARGET_64BIT" + "cmp%I2clr,*%S3 %2,%1,%%r0\;cmp%I5clr,*%B6 %5,%4,%0\;ldi 1,%0" +@@ -778,7 +778,7 @@ + (define_insn "negscc" + [(set (match_operand:SI 0 "register_operand" "=r") + (neg:SI (match_operator:SI 3 "comparison_operator" +- [(match_operand:SI 1 "register_operand" "r") ++ [(match_operand:SI 1 "reg_or_0_operand" "rM") + (match_operand:SI 2 "arith11_operand" "rI")])))] + "" + "{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi -1,%0" +@@ -788,7 +788,7 @@ + (define_insn "" + [(set (match_operand:DI 0 "register_operand" "=r") + (neg:DI (match_operator:DI 3 "comparison_operator" +- [(match_operand:DI 1 "register_operand" "r") ++ [(match_operand:DI 1 "reg_or_0_operand" "rM") + (match_operand:DI 2 "arith11_operand" "rI")])))] + "TARGET_64BIT" + "cmp%I2clr,*%B3 %2,%1,%0\;ldi -1,%0" Index: gcc/config/pa/pa.c =================================================================== --- a/src/gcc/config/pa/pa.c (.../tags/gcc_4_7_3_release) @@ -5335,6 +6268,26 @@ Index: gcc/config/pa/pa.c } crtl->uses_pic_offset_table = 1; return reg; +@@ -4001,7 +4003,8 @@ + || (! TARGET_64BIT && df_regs_ever_live_p (i + 1))) + { + rtx addr, insn, reg; +- addr = gen_rtx_MEM (DFmode, gen_rtx_POST_INC (DFmode, tmpreg)); ++ addr = gen_rtx_MEM (DFmode, ++ gen_rtx_POST_INC (word_mode, tmpreg)); + reg = gen_rtx_REG (DFmode, i); + insn = emit_move_insn (addr, reg); + if (DO_FRAME_NOTES) +@@ -4291,7 +4294,8 @@ + if (df_regs_ever_live_p (i) + || (! TARGET_64BIT && df_regs_ever_live_p (i + 1))) + { +- rtx src = gen_rtx_MEM (DFmode, gen_rtx_POST_INC (DFmode, tmpreg)); ++ rtx src = gen_rtx_MEM (DFmode, ++ gen_rtx_POST_INC (word_mode, tmpreg)); + rtx dest = gen_rtx_REG (DFmode, i); + emit_move_insn (dest, src); + } Index: gcc/config/v850/t-rtems =================================================================== --- a/src/gcc/config/v850/t-rtems (.../tags/gcc_4_7_3_release) |