summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2010-12-07 19:02:54 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2010-12-07 19:02:54 +0000
commit3b777bfb43410684ccba93c320a88d01456d8db9 (patch)
treef24e332333fb703a4b36ca697ba2af135e98daca
parentd3e794252245eec7dc5b1e54844ed9109402f807 (diff)
downloadgcc-3b777bfb43410684ccba93c320a88d01456d8db9.tar.gz
2010-12-07 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 167556 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@167562 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog2
-rw-r--r--ChangeLog.MELT4
-rw-r--r--gcc/ChangeLog184
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in2
-rw-r--r--gcc/c-parser.c11
-rw-r--r--gcc/cfgexpand.c2
-rw-r--r--gcc/cfglayout.c15
-rw-r--r--gcc/config.gcc18
-rw-r--r--gcc/config/bfin/bfin.c4
-rw-r--r--gcc/config/frv/frv.c34
-rw-r--r--gcc/config/frv/frv.h40
-rw-r--r--gcc/config/frv/frv.md28
-rw-r--r--gcc/config/frv/predicates.md28
-rw-r--r--gcc/config/i386/driver-i386.c4
-rw-r--r--gcc/config/i386/i386.c9
-rw-r--r--gcc/config/ia64/ia64.c11
-rw-r--r--gcc/config/mcore/mcore.c9
-rw-r--r--gcc/config/mmix/mmix.c2
-rw-r--r--gcc/config/pdp11/pdp11.c13
-rw-r--r--gcc/config/sparc/sol2-gas.h5
-rw-r--r--gcc/config/sparc/sol2.h7
-rw-r--r--gcc/config/spu/spu.c5
-rw-r--r--gcc/config/vax/vax.c4
-rw-r--r--gcc/cp/ChangeLog13
-rw-r--r--gcc/cp/cp-tree.h4
-rw-r--r--gcc/cp/error.c4
-rw-r--r--gcc/cp/lex.c5
-rw-r--r--gcc/cp/name-lookup.c67
-rw-r--r--gcc/cp/rtti.c1
-rw-r--r--gcc/doc/invoke.texi7
-rw-r--r--gcc/doc/tm.texi4
-rw-r--r--gcc/doc/tm.texi.in2
-rw-r--r--gcc/dwarf2out.c9
-rw-r--r--gcc/go/ChangeLog14
-rw-r--r--gcc/go/Make-lang.in12
-rw-r--r--gcc/go/gccgo.texi13
-rw-r--r--gcc/go/go-lang.c61
-rw-r--r--gcc/go/gofrontend/LICENSE69
-rw-r--r--gcc/go/gofrontend/PATENTS22
-rw-r--r--gcc/ira.c8
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/jcf-parse.c3
-rw-r--r--gcc/objc/ChangeLog5
-rw-r--r--gcc/objc/objc-act.c12
-rw-r--r--gcc/params.def9
-rw-r--r--gcc/profile.c7
-rw-r--r--gcc/reginfo.c2
-rw-r--r--gcc/regrename.c304
-rw-r--r--gcc/target.def15
-rw-r--r--gcc/targhooks.c7
-rw-r--r--gcc/targhooks.h1
-rw-r--r--gcc/testsuite/ChangeLog79
-rwxr-xr-xgcc/testsuite/ada/acats/run_acats6
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/pr45997-1.C22
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/pr45997-2.C22
-rw-r--r--gcc/testsuite/g++.dg/ext/builtin3.C3
-rw-r--r--gcc/testsuite/g++.dg/graphite/pr41562.C18
-rw-r--r--gcc/testsuite/g++.dg/lookup/error1.C3
-rw-r--r--gcc/testsuite/g++.dg/lookup/koenig5.C17
-rw-r--r--gcc/testsuite/g++.dg/overload/koenig1.C3
-rw-r--r--gcc/testsuite/g++.dg/parse/decl-specifier-1.C3
-rw-r--r--gcc/testsuite/g++.dg/pr45330.C37
-rw-r--r--gcc/testsuite/g++.dg/template/static10.C3
-rw-r--r--gcc/testsuite/g++.dg/torture/20100825.C15
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/ns5.C3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/ns7.C3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig5.C3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig9.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/lineno5.C3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr46832.c4
-rw-r--r--gcc/testsuite/gcc.dg/autopar/pr46799.c12
-rw-r--r--gcc/testsuite/gcc.dg/graphite/id-pr44676.c12
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr46185.c46
-rw-r--r--gcc/testsuite/gcc.dg/pr46771.c18
-rw-r--r--gcc/testsuite/gcc.dg/pr46777.c49
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr42327.c7
-rw-r--r--gcc/testsuite/gcc.target/ia64/pr43897.c12
-rw-r--r--gcc/testsuite/gfortran.dg/internal_dummy_2.f082
-rw-r--r--gcc/testsuite/gfortran.dg/internal_dummy_3.f082
-rw-r--r--gcc/testsuite/objc.dg/foreach-8.m51
-rw-r--r--gcc/tree-data-ref.c4
-rw-r--r--gcc/tree-inline.c27
-rw-r--r--gcc/tree-parloops.c40
-rw-r--r--gcc/tree-ssa-copyrename.c6
-rw-r--r--gcc/tree-ssa-math-opts.c4
-rw-r--r--gcc/tree-vect-data-refs.c15
-rw-r--r--libffi/ChangeLog7
-rwxr-xr-xlibffi/configure4
-rw-r--r--libffi/configure.ac4
-rw-r--r--libgo/LICENSE69
-rw-r--r--libgo/Makefile.am82
-rw-r--r--libgo/Makefile.in615
-rw-r--r--libgo/PATENTS22
-rw-r--r--libgomp/ChangeLog5
-rw-r--r--libgomp/acinclude.m42
-rwxr-xr-xlibgomp/configure2
-rw-r--r--libquadmath/ChangeLog8
-rw-r--r--libquadmath/quadmath-imp.h20
-rw-r--r--libquadmath/quadmath.h20
-rw-r--r--libquadmath/quadmath_io.c20
-rw-r--r--libquadmath/quadmath_weak.h20
-rw-r--r--libstdc++-v3/ChangeLog41
-rw-r--r--libstdc++-v3/acinclude.m42
-rwxr-xr-xlibstdc++-v3/configure2
-rw-r--r--libstdc++-v3/include/bits/shared_ptr.h20
-rw-r--r--libstdc++-v3/include/bits/shared_ptr_base.h31
-rw-r--r--libstdc++-v3/include/ext/sso_string_base.h6
-rw-r--r--libstdc++-v3/include/std/tuple8
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc6
111 files changed, 2014 insertions, 693 deletions
diff --git a/ChangeLog b/ChangeLog
index 63e5621a361..f1d756c0db3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -20,7 +20,7 @@
2010-11-26 Alexandre Oliva <aoliva@redhat.com>
- PR other/46020
+ PR other/46026
* configure.ac (CXX_FOR_TARGET): Add -funconfigured-libstdc++-v3.
* Makefile.def (CXX_FOR_TARGET): Removed from flags_to_pass.
* Makefile.tpl (CXX_FOR_TARGET_FLAG_TO_PASS): New.
diff --git a/ChangeLog.MELT b/ChangeLog.MELT
index 23b33048f0b..4b558334377 100644
--- a/ChangeLog.MELT
+++ b/ChangeLog.MELT
@@ -1,3 +1,7 @@
+2010-12-07 Basile Starynkevitch <basile@starynkevitch.net>
+
+ MELT branch merged with trunk rev 167556
+
2010-12-06 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 167487
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ccb7019fa41..ff5268678ea 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,183 @@
+2010-12-07 Paul Koning <ni1d@arrl.net>
+
+ * config/pdp11/pdp11.c (TARGET_ASM_FUNCTION_SECTION): Define.
+ (pdp11_function_section): New function.
+
+2010-12-07 Joseph Myers <joseph@codesourcery.com>
+
+ * config/mcore/mcore.c Don't include assert.h.
+ (layout_mcore_frame, handle_structs_in_regs): Use gcc_assert.
+ * config/spu/spu.c: Don't include assert.h.
+ (spu_sms_res_mii): Use gcc_assert.
+
+2010-12-07 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR tree-optimization/42327
+ * tree-data-ref.c (omega_setup_subscript): Call build_int_cst
+ instead of using integer_minus_one_node.
+
+2010-12-07 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR c++/45330
+ * params.def (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP): New parameter.
+ * doc/invoke.texi (cxx-max-namespaces-for-diagnostic-help): Document.
+
+2010-12-07 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/46832
+ * tree-ssa-math-opts.c (execute_optimize_widening_mul): Check
+ that the call has a lhs.
+
+2010-12-07 Yao Qi <yao@codesourcery.com>
+
+ * Makefile.in: Add $(TARGET_H) to the regrename.o rule.
+ * regrename.c (struct du_head): Add new element length.
+ (sort_du_head, get_element, merge, merge_sort_comparison):
+ New functions of merge sort implementation to du_head list.
+ (regrename_optimize): Sort du_head linked list by length.
+ Iterate registers in a preferred-register-first order.
+ Move some code to ...
+ (check_new_reg_p): here. New function.
+ (create_new_chain): Initialize length.
+ (scan_rtx_reg): Increase length for non-debug insns.
+ * target.def: New hook preferred_rename_class.
+ * targhook.c (default_preferred_rename_class): New.
+ * targhook.h: Declare it.
+ * doc/tm.texi.in: New hook TARGET_PREFERRED_RENAME_CLASS.
+ * doc/tm.texi: Regenerate.
+
+2010-12-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/46799
+ * tree-parloops.c (separate_decls_in_region): Use UNKNOWN_LOCATION
+ instead of BUILTINS_LOCATION.
+ (create_loop_fn): Add LOC argument, pass it to build_decl instead of
+ BUILTINS_LOCATION.
+ (create_parallel_loop): Add LOC argument, use it for OMP clauses
+ and GIMPLE_*OMP* statements.
+ (gen_parallel_loop): Determine locus for the parallel loop, pass it
+ to create_loop_fn and create_parallel_loop.
+ * cfgexpand.c (gimple_expand_cfg): For builtin functions, call
+ set_curr_insn_source_location (UNKNOWN_LOCATION).
+
+2010-12-07 Joern Rennecke <amylaar@spamcop.net>
+ Richard Guenther <rguenther@suse.de>
+
+ PR target/46737
+ * config/bfin/bfin.c (BB_AUX_INDEX): Cast to intptr_t.
+ (bfin_reorder_loops): Change type of index to intptr_t.
+
+2010-12-07 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/46726
+ * tree-inline.c (estimate_num_insns): Special case pow (x, 2.0).
+
+2010-12-07 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-math-opts.c (execute_optimize_widening_mul): Unlink
+ virtual operands.
+
+2010-12-07 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * c-parser.c (c_parser_typeof_specifier): Removed special
+ treatment of objc_volatilized attribute for Objective-C.
+
+2010-12-06 Vladimir Makarov <vmakarov@redhat.com>
+
+ * ira.c (update_equiv_regs): Prohibit move insns if
+ pressure-sensitive scheduling was done.
+
+2010-12-06 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * c-parser.c (c_parser_for_statement): Use c_fully_fold() instead
+ of c_process_expr_stmt() for the iterating and collection
+ expressions of an Objective-C fast enumeration loop.
+
+2010-12-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/45997
+ * dwarf2out.c (modified_type_die): If both is_const_type and
+ is_volatile_type is set, start with DW_TAG_const_type or
+ DW_TAG_volatile_type depending on where we get qualified type
+ in the recursive call.
+
+ PR target/43897
+ * config/ia64/ia64.c (rtx_needs_barrier): Handle asm CLOBBER
+ as a store into that register.
+
+ PR tree-optimization/46528
+ PR debug/46338
+ * profile.c (branch_prob): Make sure last is never set to a debug
+ stmt.
+
+ PR debug/46771
+ * reginfo.c (init_subregs_of_mode): Don't call find_subregs_of_mode
+ on DEBUG_INSNs.
+
+ PR rtl-optimization/46777
+ * cfglayout.c (duplicate_insn_chain): Avoid duplicating
+ also barrier after tablejump.
+
+2010-12-06 Joern Rennecke <amylaar@spamcop.net>
+ Richard Henderson <rth@redhat.com>
+
+ PR target/46740
+ * config/vax/vax.c (vax_output_int_move): Fold #if into if.
+
+2010-12-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sol2.h (PUSHSECTION_FORMAT): Redefine unconditionally.
+ * config/sparc/sol2-gas.h (PUSHSECTION_FORMAT): Redefine.
+
+2010-12-06 Joern Rennecke <amylaar@spamcop.net>
+
+ PR target/46735
+ * config/frv/predicates.md (gpr_or_int12_operand): Use IN_RANGE.
+ (gpr_fpr_or_int12_operand, gpr_or_int10_operand): Likewise.
+ (int12_operand, int_2word_operand, uint16_operand): Likewise.
+ (fpr_or_int6_operand, int6_operand, int5_operand): Likewise.
+ (uint5_operand, uint4_operand): Likewise.
+ * config/frv/frv.h (IN_RANGE_P): Delete.
+ (GPR_P, FPR_P, CC_P, ICC_P, FCC_P, CR_P, ICR_P, FCR_P): Use IN_RANGE.
+ (ACC_P, ACCG_P, SPR_P, CONST_OK_FOR_I, CONST_OK_FOR_J): Likewise.
+ (CONST_OK_FOR_L, CONST_OK_FOR_M, CONST_OK_FOR_N): Likewise.
+ (CONST_OK_FOR_P): Likewise.
+ * config/frv/frv.md (*movqicc_internal2_int): Likewise.
+ (*movqicc_internal2_float, *movhicc_internal2_int): Likewise.
+ (*movhicc_internal2_float, *movsicc_internal2_int): Likewise.
+ (*movsicc_internal2_float, casesi): Likewise.
+ * config/frv/frv.c (frv_frame_offset_rtx): Likewise.
+ (frv_asm_output_mi_thunk, frv_legitimate_address_p_1): Likewise.
+ (frv_emit_movsi, output_move_single, frv_emit_cond_move): Likewise.
+ (frv_split_cond_move, frv_rtx_costs): Likewise.
+
+ PR target/46739
+ * config/mmix/mmix.c (mmix_intval): Split shift count.
+
+2010-12-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/i386.c (m_COREI7): New.
+ (initial_ix86_tune_features): Turn on
+ X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL and
+ X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL for Core i7.
+
+2010-12-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config.gcc: Allow corei7-avx for --with-arch/--with-cpu.
+
+ * config/i386/driver-i386.c (host_detect_local_cpu): Support
+ Sandy Bridge.
+
+ * config/i386/i386.c (override_options): Handle "corei7-avx".
+
+ * doc/invoke.texi: Document corei7-avx.
+
+2010-12-06 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/46806
+ * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Do not
+ coalesce different types.
+
2010-12-06 Richard Guenther <rguenther@suse.de>
PR tree-optimization/46785
@@ -24,7 +204,7 @@
* c-family/c-format.c: Same change.
* c-family/stub-objc.c: Same change.
* c-decl.c: Include c-family/c-objc.h.
- * c-parser.c: Same change.
+ * c-parser.c: Same change.
* c-typeck.c: Same change.
* c-config-lang.in (gtfiles): Added c-family/c-objc.h.
* Makefile.in (c-decl.o): Depend on c-family/c-objc.h.
@@ -34,7 +214,7 @@
(c-family/stub-objc.o): Same change.
(c-family/c-common.o): Same change.
(PLUGIN_HEADERS): Added c-family/c-objc.h.
-
+
2010-12-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* config.gcc [hppa[12]*-*-hpux10*, hppa[12]*-*-hpux11*]: Ignore
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 21645a082c1..d42b148c74b 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20101206
+20101207
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 4227c0f1f2b..421fea06cea 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3552,7 +3552,7 @@ regcprop.o : regcprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_ERROR_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
output.h $(RECOG_H) $(FUNCTION_H) $(OBSTACK_H) $(FLAGS_H) $(TM_P_H) \
- addresses.h reload.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H)
+ addresses.h reload.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(TARGET_H)
ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) $(DIAGNOSTIC_CORE_H) $(FLAGS_H) insn-config.h $(FUNCTION_H) $(RECOG_H) \
$(TARGET_H) $(BASIC_BLOCK_H) $(EXPR_H) output.h $(EXCEPT_H) $(TM_P_H) \
diff --git a/gcc/c-parser.c b/gcc/c-parser.c
index f2d5e5b0af8..6faaacf157c 100644
--- a/gcc/c-parser.c
+++ b/gcc/c-parser.c
@@ -2667,11 +2667,6 @@ c_parser_typeof_specifier (c_parser *parser)
error_at (here, "%<typeof%> applied to a bit-field");
mark_exp_read (expr.value);
ret.spec = TREE_TYPE (expr.value);
- if (c_dialect_objc()
- && ret.spec != error_mark_node
- && lookup_attribute ("objc_volatilized", TYPE_ATTRIBUTES (ret.spec)))
- ret.spec = build_qualified_type
- (ret.spec, (TYPE_QUALS (ret.spec) & ~TYPE_QUAL_VOLATILE));
was_vm = variably_modified_type_p (ret.spec, NULL_TREE);
/* This is returned with the type so that when the type is
evaluated, this can be evaluated. */
@@ -4812,8 +4807,7 @@ c_parser_for_statement (c_parser *parser)
is_foreach_statement = true;
if (! lvalue_p (init_expression))
c_parser_error (parser, "invalid iterating variable in fast enumeration");
- object_expression = c_process_expr_stmt (loc, init_expression);
-
+ object_expression = c_fully_fold (init_expression, false, NULL);
}
else
{
@@ -4854,7 +4848,8 @@ c_parser_for_statement (c_parser *parser)
else
{
if (is_foreach_statement)
- collection_expression = c_process_expr_stmt (loc, c_parser_expression (parser).value);
+ collection_expression = c_fully_fold (c_parser_expression (parser).value,
+ false, NULL);
else
incr = c_process_expr_stmt (loc, c_parser_expression (parser).value);
}
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index f15e4e02dba..0ab06ead9f2 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -3927,6 +3927,8 @@ gimple_expand_cfg (void)
else
set_curr_insn_source_location (cfun->function_start_locus);
}
+ else
+ set_curr_insn_source_location (UNKNOWN_LOCATION);
set_curr_insn_block (DECL_INITIAL (current_function_decl));
prologue_locator = curr_insn_locator ();
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index e883af4afab..f7d4d104403 100644
--- a/gcc/cfglayout.c
+++ b/gcc/cfglayout.c
@@ -1177,7 +1177,20 @@ duplicate_insn_chain (rtx from, rtx to)
moved far from original jump. */
if (GET_CODE (PATTERN (insn)) == ADDR_VEC
|| GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
- break;
+ {
+ /* Avoid copying following barrier as well if any
+ (and debug insns in between). */
+ rtx next;
+
+ for (next = NEXT_INSN (insn);
+ next != NEXT_INSN (to);
+ next = NEXT_INSN (next))
+ if (!DEBUG_INSN_P (next))
+ break;
+ if (next != NEXT_INSN (to) && BARRIER_P (next))
+ insn = next;
+ break;
+ }
copy = emit_copy_of_insn_after (insn, get_last_insn ());
maybe_copy_prologue_epilogue_insn (insn, copy);
break;
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 50985fd4302..dfbf2c56081 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1234,7 +1234,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
need_64bit_hwint=yes
need_64bit_isa=yes
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xcorei7|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+ Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
@@ -1243,7 +1243,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 corei7 nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+ echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
@@ -1372,7 +1372,7 @@ i[34567]86-*-solaris2*)
need_64bit_isa=yes
use_gcc_stdint=wrap
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xcorei7|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+ Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
@@ -1381,7 +1381,7 @@ i[34567]86-*-solaris2*)
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 corei7 nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+ echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
@@ -1452,7 +1452,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
if test x$enable_targets = xall; then
tm_defines="${tm_defines} TARGET_BI_ARCH=1"
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xcorei7|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+ Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
@@ -1461,7 +1461,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 corei7 nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+ echo "generic atom core2 corei7 Xcorei7-avx nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
@@ -2828,6 +2828,10 @@ case ${target} in
arch=corei7
cpu=corei7
;;
+ corei7_avx-*)
+ arch=corei7-avx
+ cpu=corei7-avx
+ ;;
pentium_m-*)
arch=pentium-m
cpu=pentium-m
@@ -3265,7 +3269,7 @@ case "${target}" in
"" | x86-64 | generic | native \
| k8 | k8-sse3 | athlon64 | athlon64-sse3 | opteron \
| opteron-sse3 | athlon-fx | bdver1 | amdfam10 \
- | barcelona | nocona | core2 | corei7 | atom)
+ | barcelona | nocona | core2 | corei7 | corei7-avx | atom)
# OK
;;
*)
diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c
index 93edc88b558..a6f2a38a06e 100644
--- a/gcc/config/bfin/bfin.c
+++ b/gcc/config/bfin/bfin.c
@@ -4662,7 +4662,7 @@ free_loops (loop_info loops)
}
}
-#define BB_AUX_INDEX(BB) ((unsigned)(BB)->aux)
+#define BB_AUX_INDEX(BB) ((intptr_t)(BB)->aux)
/* The taken-branch edge from the loop end can actually go forward. Since the
Blackfin's LSETUP instruction requires that the loop end be after the loop
@@ -4679,7 +4679,7 @@ bfin_reorder_loops (loop_info loops, FILE *dump_file)
for (loop = loops; loop; loop = loop->next)
{
- unsigned index;
+ intptr_t index;
basic_block bb;
edge e;
edge_iterator ei;
diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c
index 56f69e2065d..0f59265532e 100644
--- a/gcc/config/frv/frv.c
+++ b/gcc/config/frv/frv.c
@@ -1624,12 +1624,12 @@ static rtx
frv_frame_offset_rtx (int offset)
{
rtx offset_rtx = GEN_INT (offset);
- if (IN_RANGE_P (offset, -2048, 2047))
+ if (IN_RANGE (offset, -2048, 2047))
return offset_rtx;
else
{
rtx reg_rtx = gen_rtx_REG (SImode, OFFSET_REGNO);
- if (IN_RANGE_P (offset, -32768, 32767))
+ if (IN_RANGE (offset, -32768, 32767))
emit_insn (gen_movsi (reg_rtx, offset_rtx));
else
{
@@ -2057,7 +2057,7 @@ frv_asm_output_mi_thunk (FILE *file,
const char *parallel = (frv_issue_rate () > 1 ? ".p" : "");
/* Do the add using an addi if possible. */
- if (IN_RANGE_P (delta, -2048, 2047))
+ if (IN_RANGE (delta, -2048, 2047))
fprintf (file, "\taddi %s,#%d,%s\n", name_arg0, (int) delta, name_arg0);
else
{
@@ -3459,13 +3459,13 @@ frv_legitimate_address_p_1 (enum machine_mode mode,
ret = FALSE;
else
{
- ret = IN_RANGE_P (INTVAL (x), -2048, 2047);
+ ret = IN_RANGE (INTVAL (x), -2048, 2047);
/* If we can't use load/store double operations, make sure we can
address the second word. */
if (ret && GET_MODE_SIZE (mode) > UNITS_PER_WORD)
- ret = IN_RANGE_P (INTVAL (x) + GET_MODE_SIZE (mode) - 1,
- -2048, 2047);
+ ret = IN_RANGE (INTVAL (x) + GET_MODE_SIZE (mode) - 1,
+ -2048, 2047);
}
break;
@@ -3511,12 +3511,12 @@ frv_legitimate_address_p_1 (enum machine_mode mode,
else
{
value = INTVAL (x1);
- ret = IN_RANGE_P (value, -2048, 2047);
+ ret = IN_RANGE (value, -2048, 2047);
/* If we can't use load/store double operations, make sure we can
address the second word. */
if (ret && GET_MODE_SIZE (mode) > UNITS_PER_WORD)
- ret = IN_RANGE_P (value + GET_MODE_SIZE (mode) - 1, -2048, 2047);
+ ret = IN_RANGE (value + GET_MODE_SIZE (mode) - 1, -2048, 2047);
}
break;
@@ -4076,9 +4076,9 @@ frv_emit_movsi (rtx dest, rtx src)
add instruction, so expose this to CSE by copying to
an intermediate register. */
|| (GET_CODE (src) == REG
- && IN_RANGE_P (REGNO (src),
- FIRST_VIRTUAL_REGISTER,
- LAST_VIRTUAL_POINTER_REGISTER))))
+ && IN_RANGE (REGNO (src),
+ FIRST_VIRTUAL_REGISTER,
+ LAST_VIRTUAL_POINTER_REGISTER))))
{
emit_insn (gen_rtx_SET (VOIDmode, dest, copy_to_mode_reg (SImode, src)));
return TRUE;
@@ -4380,7 +4380,7 @@ output_move_single (rtx operands[], rtx insn)
else
value = CONST_DOUBLE_LOW (src);
- if (IN_RANGE_P (value, -32768, 32767))
+ if (IN_RANGE (value, -32768, 32767))
return "setlos %1, %0";
return "#";
@@ -4951,8 +4951,8 @@ frv_emit_cond_move (rtx dest, rtx test_rtx, rtx src1, rtx src2)
between the two fits in an addi's range, load up the difference, then
conditionally move in 0, and then unconditionally add the first
value. */
- else if (IN_RANGE_P (value1, -2048, 2047)
- && IN_RANGE_P (value2 - value1, -2048, 2047))
+ else if (IN_RANGE (value1, -2048, 2047)
+ && IN_RANGE (value2 - value1, -2048, 2047))
;
/* If neither condition holds, just force the constant into a
@@ -5046,8 +5046,8 @@ frv_split_cond_move (rtx operands[])
between the two fits in an addi's range, load up the difference, then
conditionally move in 0, and then unconditionally add the first
value. */
- else if (IN_RANGE_P (value1, -2048, 2047)
- && IN_RANGE_P (value2 - value1, -2048, 2047))
+ else if (IN_RANGE (value1, -2048, 2047)
+ && IN_RANGE (value2 - value1, -2048, 2047))
{
rtx dest_si = ((GET_MODE (dest) == SImode)
? dest
@@ -9611,7 +9611,7 @@ frv_rtx_costs (rtx x,
{
case CONST_INT:
/* Make 12-bit integers really cheap. */
- if (IN_RANGE_P (INTVAL (x), -2048, 2047))
+ if (IN_RANGE (INTVAL (x), -2048, 2047))
{
*total = 0;
return true;
diff --git a/gcc/config/frv/frv.h b/gcc/config/frv/frv.h
index e3ed9159e20..f2a103574f1 100644
--- a/gcc/config/frv/frv.h
+++ b/gcc/config/frv/frv.h
@@ -26,12 +26,6 @@
/* Frv general purpose macros. */
/* Align an address. */
#define ADDR_ALIGN(addr,align) (((addr) + (align) - 1) & ~((align) - 1))
-
-/* Return true if a value is inside a range. */
-#define IN_RANGE_P(VALUE, LOW, HIGH) \
- ( (((HOST_WIDE_INT)(VALUE)) >= (HOST_WIDE_INT)(LOW)) \
- && (((HOST_WIDE_INT)(VALUE)) <= ((HOST_WIDE_INT)(HIGH))))
-
/* Driver configuration. */
@@ -604,18 +598,18 @@
#define IACC_FIRST (SPR_FIRST + 2)
#define IACC_LAST (SPR_FIRST + 3)
-#define GPR_P(R) IN_RANGE_P (R, GPR_FIRST, GPR_LAST)
+#define GPR_P(R) IN_RANGE (R, GPR_FIRST, GPR_LAST)
#define GPR_OR_AP_P(R) (GPR_P (R) || (R) == ARG_POINTER_REGNUM)
-#define FPR_P(R) IN_RANGE_P (R, FPR_FIRST, FPR_LAST)
-#define CC_P(R) IN_RANGE_P (R, CC_FIRST, CC_LAST)
-#define ICC_P(R) IN_RANGE_P (R, ICC_FIRST, ICC_LAST)
-#define FCC_P(R) IN_RANGE_P (R, FCC_FIRST, FCC_LAST)
-#define CR_P(R) IN_RANGE_P (R, CR_FIRST, CR_LAST)
-#define ICR_P(R) IN_RANGE_P (R, ICR_FIRST, ICR_LAST)
-#define FCR_P(R) IN_RANGE_P (R, FCR_FIRST, FCR_LAST)
-#define ACC_P(R) IN_RANGE_P (R, ACC_FIRST, ACC_LAST)
-#define ACCG_P(R) IN_RANGE_P (R, ACCG_FIRST, ACCG_LAST)
-#define SPR_P(R) IN_RANGE_P (R, SPR_FIRST, SPR_LAST)
+#define FPR_P(R) IN_RANGE (R, FPR_FIRST, FPR_LAST)
+#define CC_P(R) IN_RANGE (R, CC_FIRST, CC_LAST)
+#define ICC_P(R) IN_RANGE (R, ICC_FIRST, ICC_LAST)
+#define FCC_P(R) IN_RANGE (R, FCC_FIRST, FCC_LAST)
+#define CR_P(R) IN_RANGE (R, CR_FIRST, CR_LAST)
+#define ICR_P(R) IN_RANGE (R, ICR_FIRST, ICR_LAST)
+#define FCR_P(R) IN_RANGE (R, FCR_FIRST, FCR_LAST)
+#define ACC_P(R) IN_RANGE (R, ACC_FIRST, ACC_LAST)
+#define ACCG_P(R) IN_RANGE (R, ACCG_FIRST, ACCG_LAST)
+#define SPR_P(R) IN_RANGE (R, SPR_FIRST, SPR_LAST)
#define GPR_OR_PSEUDO_P(R) (GPR_P (R) || (R) >= FIRST_PSEUDO_REGISTER)
#define FPR_OR_PSEUDO_P(R) (FPR_P (R) || (R) >= FIRST_PSEUDO_REGISTER)
@@ -1166,21 +1160,21 @@ extern enum reg_class reg_class_from_letter[];
#define ZERO_P(x) (x == CONST0_RTX (GET_MODE (x)))
/* 6-bit signed immediate. */
-#define CONST_OK_FOR_I(VALUE) IN_RANGE_P(VALUE, -32, 31)
+#define CONST_OK_FOR_I(VALUE) IN_RANGE (VALUE, -32, 31)
/* 10-bit signed immediate. */
-#define CONST_OK_FOR_J(VALUE) IN_RANGE_P(VALUE, -512, 511)
+#define CONST_OK_FOR_J(VALUE) IN_RANGE (VALUE, -512, 511)
/* Unused */
#define CONST_OK_FOR_K(VALUE) 0
/* 16-bit signed immediate. */
-#define CONST_OK_FOR_L(VALUE) IN_RANGE_P(VALUE, -32768, 32767)
+#define CONST_OK_FOR_L(VALUE) IN_RANGE (VALUE, -32768, 32767)
/* 16-bit unsigned immediate. */
-#define CONST_OK_FOR_M(VALUE) IN_RANGE_P (VALUE, 0, 65535)
+#define CONST_OK_FOR_M(VALUE) IN_RANGE (VALUE, 0, 65535)
/* 12-bit signed immediate that is negative. */
-#define CONST_OK_FOR_N(VALUE) IN_RANGE_P(VALUE, -2048, -1)
+#define CONST_OK_FOR_N(VALUE) IN_RANGE (VALUE, -2048, -1)
/* Zero */
#define CONST_OK_FOR_O(VALUE) ((VALUE) == 0)
/* 12-bit signed immediate that is negative. */
-#define CONST_OK_FOR_P(VALUE) IN_RANGE_P(VALUE, 1, 2047)
+#define CONST_OK_FOR_P(VALUE) IN_RANGE (VALUE, 1, 2047)
/* A C expression that defines the machine-dependent operand constraint letters
(`I', `J', `K', .. 'P') that specify particular ranges of integer values.
diff --git a/gcc/config/frv/frv.md b/gcc/config/frv/frv.md
index 81b4b1646af..9b4a11a39dc 100644
--- a/gcc/config/frv/frv.md
+++ b/gcc/config/frv/frv.md
@@ -4628,8 +4628,8 @@
(clobber (match_operand:CC_CCR 5 "icr_operand" "=v,v,v,v,v"))]
"(INTVAL (operands[3]) == 0
|| INTVAL (operands[4]) == 0
- || (IN_RANGE_P (INTVAL (operands[3]), -2048, 2047)
- && IN_RANGE_P (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
+ || (IN_RANGE (INTVAL (operands[3]), -2048, 2047)
+ && IN_RANGE (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
"#"
[(set_attr "length" "8,12,8,12,12")
(set_attr "type" "multi")])
@@ -4645,8 +4645,8 @@
"TARGET_HARD_FLOAT
&& (INTVAL (operands[3]) == 0
|| INTVAL (operands[4]) == 0
- || (IN_RANGE_P (INTVAL (operands[3]), -2048, 2047)
- && IN_RANGE_P (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
+ || (IN_RANGE (INTVAL (operands[3]), -2048, 2047)
+ && IN_RANGE (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
"#"
[(set_attr "length" "8,12,8,12,12")
(set_attr "type" "multi")])
@@ -4713,8 +4713,8 @@
(clobber (match_operand:CC_CCR 5 "icr_operand" "=v,v,v,v,v"))]
"(INTVAL (operands[3]) == 0
|| INTVAL (operands[4]) == 0
- || (IN_RANGE_P (INTVAL (operands[3]), -2048, 2047)
- && IN_RANGE_P (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
+ || (IN_RANGE (INTVAL (operands[3]), -2048, 2047)
+ && IN_RANGE (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
"#"
[(set_attr "length" "8,12,8,12,12")
(set_attr "type" "multi")])
@@ -4730,8 +4730,8 @@
"TARGET_HARD_FLOAT
&& (INTVAL (operands[3]) == 0
|| INTVAL (operands[4]) == 0
- || (IN_RANGE_P (INTVAL (operands[3]), -2048, 2047)
- && IN_RANGE_P (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
+ || (IN_RANGE (INTVAL (operands[3]), -2048, 2047)
+ && IN_RANGE (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
"#"
[(set_attr "length" "8,12,8,12,12")
(set_attr "type" "multi")])
@@ -4798,8 +4798,8 @@
(clobber (match_operand:CC_CCR 5 "icr_operand" "=v,v,v,v,v"))]
"(INTVAL (operands[3]) == 0
|| INTVAL (operands[4]) == 0
- || (IN_RANGE_P (INTVAL (operands[3]), -2048, 2047)
- && IN_RANGE_P (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
+ || (IN_RANGE (INTVAL (operands[3]), -2048, 2047)
+ && IN_RANGE (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
"#"
[(set_attr "length" "8,12,8,12,12")
(set_attr "type" "multi")])
@@ -4815,8 +4815,8 @@
"TARGET_HARD_FLOAT
&& (INTVAL (operands[3]) == 0
|| INTVAL (operands[4]) == 0
- || (IN_RANGE_P (INTVAL (operands[3]), -2048, 2047)
- && IN_RANGE_P (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
+ || (IN_RANGE (INTVAL (operands[3]), -2048, 2047)
+ && IN_RANGE (INTVAL (operands[4]) - INTVAL (operands[3]), -2048, 2047)))"
"#"
[(set_attr "length" "8,12,8,12,12")
(set_attr "type" "multi")])
@@ -5564,7 +5564,7 @@
gcc_assert (GET_CODE (operands[2]) == CONST_INT);
/* If we can't generate an immediate instruction, promote to register. */
- if (! IN_RANGE_P (INTVAL (range), -2048, 2047))
+ if (! IN_RANGE (INTVAL (range), -2048, 2047))
range = force_reg (SImode, range);
/* If low bound is 0, we don't have to subtract it. */
@@ -5573,7 +5573,7 @@
else
{
indx = gen_reg_rtx (SImode);
- if (IN_RANGE_P (INTVAL (low), -2047, 2048))
+ if (IN_RANGE (INTVAL (low), -2047, 2048))
emit_insn (gen_addsi3 (indx, operands[0], GEN_INT (- INTVAL (low))));
else
emit_insn (gen_subsi3 (indx, operands[0], force_reg (SImode, low)));
diff --git a/gcc/config/frv/predicates.md b/gcc/config/frv/predicates.md
index 4ecfa9aed45..363c83b5c20 100644
--- a/gcc/config/frv/predicates.md
+++ b/gcc/config/frv/predicates.md
@@ -110,7 +110,7 @@
(match_code "reg,subreg,const_int,const")
{
if (GET_CODE (op) == CONST_INT)
- return IN_RANGE_P (INTVAL (op), -2048, 2047);
+ return IN_RANGE (INTVAL (op), -2048, 2047);
if (got12_operand (op, mode))
return true;
@@ -141,7 +141,7 @@
int regno;
if (GET_CODE (op) == CONST_INT)
- return IN_RANGE_P (INTVAL (op), -2048, 2047);
+ return IN_RANGE (INTVAL (op), -2048, 2047);
if (GET_MODE (op) != mode && mode != VOIDmode)
return FALSE;
@@ -170,7 +170,7 @@
(match_code "reg,subreg,const_int")
{
if (GET_CODE (op) == CONST_INT)
- return IN_RANGE_P (INTVAL (op), -512, 511);
+ return IN_RANGE (INTVAL (op), -512, 511);
if (GET_MODE (op) != mode && mode != VOIDmode)
return FALSE;
@@ -493,7 +493,7 @@
if (GET_CODE (op) != CONST_INT)
return FALSE;
- return IN_RANGE_P (INTVAL (op), -2048, 2047);
+ return IN_RANGE (INTVAL (op), -2048, 2047);
})
;; Return 1 if operand is an integer constant that takes 2
@@ -535,7 +535,7 @@
return (flag_pic == 0) && (! SYMBOL_REF_SMALL_P (op));
case CONST_INT:
- return ! IN_RANGE_P (INTVAL (op), -32768, 32767);
+ return ! IN_RANGE (INTVAL (op), -32768, 32767);
case CONST_DOUBLE:
if (GET_MODE (op) == SFmode)
@@ -543,12 +543,12 @@
REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_SINGLE (rv, l);
value = l;
- return ! IN_RANGE_P (value, -32768, 32767);
+ return ! IN_RANGE (value, -32768, 32767);
}
else if (GET_MODE (op) == VOIDmode)
{
value = CONST_DOUBLE_LOW (op);
- return ! IN_RANGE_P (value, -32768, 32767);
+ return ! IN_RANGE (value, -32768, 32767);
}
break;
}
@@ -1117,7 +1117,7 @@
if (GET_CODE (op) != CONST_INT)
return FALSE;
- return IN_RANGE_P (INTVAL (op), 0, 0xffff);
+ return IN_RANGE (INTVAL (op), 0, 0xffff);
})
;; Returns 1 if OP is either a SYMBOL_REF or a constant.
@@ -1444,7 +1444,7 @@
(match_code "reg,subreg,const_int")
{
if (GET_CODE (op) == CONST_INT)
- return IN_RANGE_P (INTVAL (op), -32, 31);
+ return IN_RANGE (INTVAL (op), -32, 31);
if (GET_MODE (op) != mode && mode != VOIDmode)
return FALSE;
@@ -1471,7 +1471,7 @@
if (GET_CODE (op) != CONST_INT)
return FALSE;
- return IN_RANGE_P (INTVAL (op), -32, 31);
+ return IN_RANGE (INTVAL (op), -32, 31);
})
;; Return 1 if operand is a 5-bit signed immediate.
@@ -1479,7 +1479,7 @@
(define_predicate "int5_operand"
(match_code "const_int")
{
- return GET_CODE (op) == CONST_INT && IN_RANGE_P (INTVAL (op), -16, 15);
+ return GET_CODE (op) == CONST_INT && IN_RANGE (INTVAL (op), -16, 15);
})
;; Return 1 if operand is a 5-bit unsigned immediate.
@@ -1487,7 +1487,7 @@
(define_predicate "uint5_operand"
(match_code "const_int")
{
- return GET_CODE (op) == CONST_INT && IN_RANGE_P (INTVAL (op), 0, 31);
+ return GET_CODE (op) == CONST_INT && IN_RANGE (INTVAL (op), 0, 31);
})
;; Return 1 if operand is a 4-bit unsigned immediate.
@@ -1495,7 +1495,7 @@
(define_predicate "uint4_operand"
(match_code "const_int")
{
- return GET_CODE (op) == CONST_INT && IN_RANGE_P (INTVAL (op), 0, 15);
+ return GET_CODE (op) == CONST_INT && IN_RANGE (INTVAL (op), 0, 15);
})
;; Return 1 if operand is a 1-bit unsigned immediate (0 or 1).
@@ -1503,7 +1503,7 @@
(define_predicate "uint1_operand"
(match_code "const_int")
{
- return GET_CODE (op) == CONST_INT && IN_RANGE_P (INTVAL (op), 0, 1);
+ return GET_CODE (op) == CONST_INT && IN_RANGE (INTVAL (op), 0, 1);
})
;; Return 1 if operand is a valid ACC register number.
diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
index bf7ec0c81a3..340283c6a58 100644
--- a/gcc/config/i386/driver-i386.c
+++ b/gcc/config/i386/driver-i386.c
@@ -568,6 +568,10 @@ const char *host_detect_local_cpu (int argc, const char **argv)
/* Westmere. */
cpu = "corei7";
break;
+ case 0x2a:
+ /* Sandy Bridge. */
+ cpu = "corei7-avx";
+ break;
case 0x17:
case 0x1d:
/* Penryn. */
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index fafa299db5a..e9c14d0d95a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -1644,6 +1644,7 @@ const struct processor_costs *ix86_cost = &pentium_cost;
#define m_CORE2_64 (1<<PROCESSOR_CORE2_64)
#define m_COREI7_32 (1<<PROCESSOR_COREI7_32)
#define m_COREI7_64 (1<<PROCESSOR_COREI7_64)
+#define m_COREI7 (m_COREI7_32 | m_COREI7_64)
#define m_CORE2I7_32 (m_CORE2_32 | m_COREI7_32)
#define m_CORE2I7_64 (m_CORE2_64 | m_COREI7_64)
#define m_CORE2I7 (m_CORE2I7_32 | m_CORE2I7_64)
@@ -1810,10 +1811,10 @@ static unsigned int initial_ix86_tune_features[X86_TUNE_LAST] = {
| m_AMDFAM10 | m_BDVER1,
/* X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL */
- m_AMDFAM10 | m_BDVER1,
+ m_AMDFAM10 | m_BDVER1 | m_COREI7,
/* X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL */
- m_BDVER1,
+ m_BDVER1 | m_COREI7,
/* X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL */
m_BDVER1,
@@ -3237,6 +3238,10 @@ ix86_option_override_internal (bool main_args_p)
{"corei7", PROCESSOR_COREI7_64, CPU_COREI7,
PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
| PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_CX16},
+ {"corei7-avx", PROCESSOR_COREI7_64, CPU_COREI7,
+ PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
+ | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX
+ | PTA_CX16 | PTA_POPCNT | PTA_AES | PTA_PCLMUL},
{"atom", PROCESSOR_ATOM, CPU_ATOM,
PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
| PTA_SSSE3 | PTA_CX16 | PTA_MOVBE},
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 0c2d20eaf6e..f789d00ebc6 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -6320,6 +6320,17 @@ rtx_needs_barrier (rtx x, struct reg_flags flags, int pred)
break;
case CLOBBER:
+ if (REG_P (XEXP (pat, 0))
+ && extract_asm_operands (x) != NULL_RTX
+ && REGNO (XEXP (pat, 0)) != AR_UNAT_REGNUM)
+ {
+ new_flags.is_write = 1;
+ need_barrier |= rtx_needs_barrier (XEXP (pat, 0),
+ new_flags, pred);
+ new_flags = flags;
+ }
+ break;
+
case RETURN:
break;
diff --git a/gcc/config/mcore/mcore.c b/gcc/config/mcore/mcore.c
index a66eb3cd162..6227b174c39 100644
--- a/gcc/config/mcore/mcore.c
+++ b/gcc/config/mcore/mcore.c
@@ -25,7 +25,6 @@
#include "rtl.h"
#include "tree.h"
#include "tm_p.h"
-#include "assert.h"
#include "mcore.h"
#include "regs.h"
#include "hard-reg-set.h"
@@ -1826,7 +1825,7 @@ layout_mcore_frame (struct mcore_frame * infp)
infp->local_growth = growths;
all -= step;
- assert (all == 0);
+ gcc_assert (all == 0);
/* Finish off if we need to do so. */
if (outbounds)
@@ -1904,8 +1903,8 @@ layout_mcore_frame (struct mcore_frame * infp)
/* Anything else that we've forgotten?, plus a few consistency checks. */
finish:
- assert (infp->reg_offset >= 0);
- assert (growths <= MAX_STACK_GROWS);
+ gcc_assert (infp->reg_offset >= 0);
+ gcc_assert (growths <= MAX_STACK_GROWS);
for (i = 0; i < growths; i++)
gcc_assert (!(infp->growth[i] % STACK_BYTES));
@@ -2772,7 +2771,7 @@ handle_structs_in_regs (enum machine_mode mode, const_tree type, int reg)
}
/* We assume here that NPARM_REGS == 6. The assert checks this. */
- assert (ARRAY_SIZE (arg_regs) == 6);
+ gcc_assert (ARRAY_SIZE (arg_regs) == 6);
rtvec = gen_rtvec (nregs, arg_regs[0], arg_regs[1], arg_regs[2],
arg_regs[3], arg_regs[4], arg_regs[5]);
diff --git a/gcc/config/mmix/mmix.c b/gcc/config/mmix/mmix.c
index c0801163865..c96fdcb66a5 100644
--- a/gcc/config/mmix/mmix.c
+++ b/gcc/config/mmix/mmix.c
@@ -2747,7 +2747,7 @@ mmix_intval (rtx x)
retval |=
(unsigned HOST_WIDEST_INT) CONST_DOUBLE_HIGH (x)
- << (HOST_BITS_PER_LONG);
+ << (HOST_BITS_PER_LONG)/2 << (HOST_BITS_PER_LONG)/2;
}
else
retval = CONST_DOUBLE_HIGH (x);
diff --git a/gcc/config/pdp11/pdp11.c b/gcc/config/pdp11/pdp11.c
index 682c7bcea2b..2617d30853f 100644
--- a/gcc/config/pdp11/pdp11.c
+++ b/gcc/config/pdp11/pdp11.c
@@ -233,6 +233,10 @@ static const struct default_options pdp11_option_optimization_table[] =
#undef TARGET_CONDITIONAL_REGISTER_USAGE
#define TARGET_CONDITIONAL_REGISTER_USAGE pdp11_conditional_register_usage
+
+#undef TARGET_ASM_FUNCTION_SECTION
+#define TARGET_ASM_FUNCTION_SECTION pdp11_function_section
+
/* Implement TARGET_HANDLE_OPTION. */
@@ -2118,4 +2122,13 @@ pdp11_conditional_register_usage (void)
}
}
+static section *
+pdp11_function_section (tree decl ATTRIBUTE_UNUSED,
+ enum node_frequency freq ATTRIBUTE_UNUSED,
+ bool startup ATTRIBUTE_UNUSED,
+ bool exit ATTRIBUTE_UNUSED)
+{
+ return NULL;
+}
+
struct gcc_target targetm = TARGET_INITIALIZER;
diff --git a/gcc/config/sparc/sol2-gas.h b/gcc/config/sparc/sol2-gas.h
index 4bc2cb470ae..d83e7b9179b 100644
--- a/gcc/config/sparc/sol2-gas.h
+++ b/gcc/config/sparc/sol2-gas.h
@@ -40,3 +40,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Use default ELF section syntax. */
#undef TARGET_ASM_NAMED_SECTION
#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
+
+/* And standard pushsection syntax. While GNU as supports the non-standard
+ variant too, we prefer the former. */
+#undef PUSHSECTION_FORMAT
+#define PUSHSECTION_FORMAT "\t.pushsection\t%s\n"
diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
index 11286626ecc..c370ea0d857 100644
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -188,12 +188,9 @@ along with GCC; see the file COPYING3. If not see
#undef TARGET_ASM_NAMED_SECTION
#define TARGET_ASM_NAMED_SECTION sparc_solaris_elf_asm_named_section
-/* Solaris/SPARC as uses a non-standard .section/.pushsection syntax.
- While gas supports it, too, we prefer the standard variant. */
-#ifndef USE_GAS
+/* And SPARC non-standard pushsection syntax. */
#undef PUSHSECTION_FORMAT
-#define PUSHSECTION_FORMAT "\t.pushsection\t\"%s\"\n"
-#endif
+#define PUSHSECTION_FORMAT "\t.pushsection\t\"%s\"\n"
/* Static stack checking is supported by means of probes. */
#define STACK_CHECK_STATIC_BUILTIN 1
diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c
index bdea7e032e8..bbe6eddde2a 100644
--- a/gcc/config/spu/spu.c
+++ b/gcc/config/spu/spu.c
@@ -46,7 +46,6 @@
#include "cfglayout.h"
#include "sched-int.h"
#include "params.h"
-#include "assert.h"
#include "machmode.h"
#include "gimple.h"
#include "tm-constrs.h"
@@ -6946,8 +6945,8 @@ spu_sms_res_mii (struct ddg *g)
rtx insn = g->nodes[i].insn;
int p = get_pipe (insn) + 2;
- assert (p >= 0);
- assert (p < 4);
+ gcc_assert (p >= 0);
+ gcc_assert (p < 4);
t[p]++;
if (dump_file && INSN_P (insn))
diff --git a/gcc/config/vax/vax.c b/gcc/config/vax/vax.c
index a9e032aa695..9656d736581 100644
--- a/gcc/config/vax/vax.c
+++ b/gcc/config/vax/vax.c
@@ -1129,18 +1129,16 @@ vax_output_int_move (rtx insn ATTRIBUTE_UNUSED, rtx *operands,
{
lval >>= n;
-#if HOST_BITS_PER_WIDE_INT == 32
/* On 32bit platforms, if the 6bits didn't overflow into the
upper 32bit value that value better be 0. If we have
overflowed, make sure it wasn't too much. */
- if (hval != 0)
+ if (HOST_BITS_PER_WIDE_INT == 32 && hval != 0)
{
if (n <= 26 || hval >= ((unsigned)1 << (n - 26)))
n = 0; /* failure */
else
lval |= hval << (32 - n);
}
-#endif
/* If n is 0, then ashq is not the best way to emit this. */
if (n > 0)
{
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ef506d13da2..47a915aca3a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,16 @@
+2010-12-07 Joseph Myers <joseph@codesourcery.com>
+
+ * rtti.c: Don't include assert.h.
+
+2010-12-07 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR c++/45330
+ * cp-tree.h (suggest_alternatives_for, location_of): Declare.
+ * error.c (dump_expr): Handle TYPE_DECL.
+ (location_of): Unstaticize.
+ * name-lookup.c (suggest_alternatives_for): New function.
+ * lex.c (unqualified_name_lookup_error): Call it.
+
2010-12-06 Nicola Pero <nicola.pero@meta-innovation.com>
* call.c: Include c-family/c-objc.h.
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 59342e31157..aba8dfddba9 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -4907,6 +4907,7 @@ extern void print_instantiation_context (void);
extern void maybe_warn_variadic_templates (void);
extern void maybe_warn_cpp0x (cpp0x_warn_str str);
extern bool pedwarn_cxx98 (location_t, int, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4);
+extern location_t location_of (tree);
/* in except.c */
extern void init_exception_processing (void);
@@ -5639,6 +5640,9 @@ extern tree cxx_omp_clause_dtor (tree, tree);
extern void cxx_omp_finish_clause (tree);
extern bool cxx_omp_privatize_by_reference (const_tree);
+/* in name-lookup.c */
+extern void suggest_alternatives_for (tree);
+
/* -- end of C++ */
#endif /* ! GCC_CP_TREE_H */
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index ed168c48440..4fb47dc3b17 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -98,7 +98,6 @@ static void cp_print_error_function (diagnostic_context *, diagnostic_info *);
static bool cp_printer (pretty_printer *, text_info *, const char *,
int, bool, bool, bool);
-static location_t location_of (tree);
void
init_error (void)
@@ -1700,6 +1699,7 @@ dump_expr (tree t, int flags)
case NAMESPACE_DECL:
case LABEL_DECL:
case OVERLOAD:
+ case TYPE_DECL:
case IDENTIFIER_NODE:
dump_decl (t, (flags & ~TFF_DECL_SPECIFIERS) | TFF_NO_FUNCTION_ARGUMENTS);
break;
@@ -2487,7 +2487,7 @@ lang_decl_name (tree decl, int v, bool translate)
/* Return the location of a tree passed to %+ formats. */
-static location_t
+location_t
location_of (tree t)
{
if (TREE_CODE (t) == PARM_DECL && DECL_CONTEXT (t))
diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c
index 684803f4e46..5a2ae41ff18 100644
--- a/gcc/cp/lex.c
+++ b/gcc/cp/lex.c
@@ -450,7 +450,10 @@ unqualified_name_lookup_error (tree name)
else
{
if (!objc_diagnose_private_ivar (name))
- error ("%qD was not declared in this scope", name);
+ {
+ error ("%qD was not declared in this scope", name);
+ suggest_alternatives_for (name);
+ }
/* Prevent repeated error messages by creating a VAR_DECL with
this NAME in the innermost block scope. */
if (current_function_decl)
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index 3d19c08f185..4cf13809031 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -29,8 +29,10 @@ along with GCC; see the file COPYING3. If not see
#include "name-lookup.h"
#include "timevar.h"
#include "diagnostic-core.h"
+#include "intl.h"
#include "debug.h"
#include "c-family/c-pragma.h"
+#include "params.h"
/* The bindings for a particular name in a particular scope. */
@@ -3916,6 +3918,71 @@ remove_hidden_names (tree fns)
return fns;
}
+/* Suggest alternatives for NAME, an IDENTIFIER_NODE for which name
+ lookup failed. Search through all available namespaces and print out
+ possible candidates. */
+
+void
+suggest_alternatives_for (tree name)
+{
+ VEC(tree,heap) *candidates = NULL;
+ VEC(tree,heap) *namespaces_to_search = NULL;
+ int max_to_search = PARAM_VALUE (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP);
+ int n_searched = 0;
+ tree t;
+ unsigned ix;
+ location_t name_location;
+
+ VEC_safe_push (tree, heap, namespaces_to_search, global_namespace);
+
+ while (!VEC_empty (tree, namespaces_to_search)
+ && n_searched < max_to_search)
+ {
+ tree scope = VEC_pop (tree, namespaces_to_search);
+ struct scope_binding binding = EMPTY_SCOPE_BINDING;
+ struct cp_binding_level *level = NAMESPACE_LEVEL (scope);
+
+ /* Look in this namespace. */
+ qualified_lookup_using_namespace (name, scope, &binding, 0);
+
+ n_searched++;
+
+ if (binding.value)
+ VEC_safe_push (tree, heap, candidates, binding.value);
+
+ /* Add child namespaces. */
+ for (t = level->namespaces; t; t = DECL_CHAIN (t))
+ VEC_safe_push (tree, heap, namespaces_to_search, t);
+ }
+
+ name_location = location_of (name);
+
+ /* If we stopped before we could examine all namespaces, inform the
+ user. Do this even if we don't have any candidates, since there
+ might be more candidates further down that we weren't able to
+ find. */
+ if (n_searched >= max_to_search
+ && !VEC_empty (tree, namespaces_to_search))
+ inform (name_location,
+ "maximum limit of %d namespaces searched for %qE",
+ max_to_search, name);
+
+ VEC_free (tree, heap, namespaces_to_search);
+
+ /* Nothing useful to report. */
+ if (VEC_empty (tree, candidates))
+ return;
+
+ inform_n (name_location, VEC_length (tree, candidates),
+ "suggested alternative:",
+ "suggested alternatives:");
+
+ FOR_EACH_VEC_ELT (tree, candidates, ix, t)
+ inform (location_of (t), " %qE", t);
+
+ VEC_free (tree, heap, candidates);
+}
+
/* Unscoped lookup of a global: iterate over current namespaces,
considering using-directives. */
diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c
index 16b0db956cd..0feaf07f851 100644
--- a/gcc/cp/rtti.c
+++ b/gcc/cp/rtti.c
@@ -29,7 +29,6 @@ along with GCC; see the file COPYING3. If not see
#include "cp-tree.h"
#include "flags.h"
#include "output.h"
-#include "assert.h"
#include "convert.h"
#include "target.h"
#include "c-family/c-pragma.h"
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index d1b55dadb06..faa176f48ca 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -8826,6 +8826,10 @@ Size of minimal paritition for WHOPR (in estimated instructions).
This prevents expenses of splitting very small programs into too many
partitions.
+@item cxx-max-namespaces-for-diagnostic-help
+The maximum number of namespaces to consult for suggestions when C++
+name lookup fails for an identifier. The default is 1000.
+
@end table
@end table
@@ -12086,6 +12090,9 @@ instruction set support.
@item corei7
Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1
and SSE4.2 instruction set support.
+@item corei7-avx
+Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
+SSE4.1, SSE4.2, AVX, AES and PCLMUL instruction set support.
@item atom
Intel Atom CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3
instruction set support.
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 10184154df1..8870d76e7be 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -2504,6 +2504,10 @@ looking for one that is valid, and will reload one or both registers
only if neither labeling works.
@end defmac
+@deftypefn {Target Hook} reg_class_t TARGET_PREFERRED_RENAME_CLASS (reg_class_t @var{rclass})
+A target hook that places additional preference on the register class to use when it is necessary to rename a register in class @var{class} to another class, or perhaps @var{NO_REGS}, if no prefered register class is found or hook @code{preferred_rename_class} is not implemented. Sometimes returning a more restrictive class makes better code. For example, on ARM, thumb-2 instructions using @code{LO_REGS} may be smaller than instructions using @code{GENERIC_REGS}. By returning @code{LO_REGS} from @code{preferred_rename_class}, code size can be reduced.
+@end deftypefn
+
@deftypefn {Target Hook} reg_class_t TARGET_PREFERRED_RELOAD_CLASS (rtx @var{x}, reg_class_t @var{rclass})
A target hook that places additional restrictions on the register class
to use when it is necessary to copy value @var{x} into a register in class
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index 04ce9a46819..c85dfa28fd4 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -2494,6 +2494,8 @@ looking for one that is valid, and will reload one or both registers
only if neither labeling works.
@end defmac
+@hook TARGET_PREFERRED_RENAME_CLASS
+
@hook TARGET_PREFERRED_RELOAD_CLASS
A target hook that places additional restrictions on the register class
to use when it is necessary to copy value @var{x} into a register in class
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index acb70ed3368..c9855270d38 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -12907,7 +12907,12 @@ modified_type_die (tree type, int is_const_type, int is_volatile_type,
/* Else cv-qualified version of named type; fall through. */
}
- if (is_const_type)
+ if (is_const_type
+ /* If both is_const_type and is_volatile_type, prefer the path
+ which leads to a qualified type. */
+ && (!is_volatile_type
+ || get_qualified_type (type, TYPE_QUAL_CONST) == NULL_TREE
+ || get_qualified_type (type, TYPE_QUAL_VOLATILE) != NULL_TREE))
{
mod_type_die = new_die (DW_TAG_const_type, comp_unit_die (), type);
sub_die = modified_type_die (type, 0, is_volatile_type, context_die);
@@ -12915,7 +12920,7 @@ modified_type_die (tree type, int is_const_type, int is_volatile_type,
else if (is_volatile_type)
{
mod_type_die = new_die (DW_TAG_volatile_type, comp_unit_die (), type);
- sub_die = modified_type_die (type, 0, 0, context_die);
+ sub_die = modified_type_die (type, is_const_type, 0, context_die);
}
else if (code == POINTER_TYPE)
{
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index b68f4bb070b..d70dc40c4c6 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -1,3 +1,17 @@
+2010-12-06 Ian Lance Taylor <iant@google.com>
+
+ PR other/46789
+ PR bootstrap/46812
+ * go-lang.c (go_char_p): Define type and vectors.
+ (go_search_dirs): New static variable.
+ (go_langhook_handle_option): Use version and version/machine
+ directories for -L.
+ (go_langhook_post_options): Add non-specific -L paths.
+ * Make-lang.in (go/go-lang.o): Define DEFAULT_TARGET_VERSION and
+ DEFAULT_TARGET_MACHINE when compiling.
+ * gccgo.texi (Invoking gccgo): Only document -L for linking.
+ (Import and Export): Don't mention -L for finding import files.
+
2010-12-03 Ian Lance Taylor <iant@google.com>
PR bootstrap/46776
diff --git a/gcc/go/Make-lang.in b/gcc/go/Make-lang.in
index fc981d4a5fb..4d008161a1c 100644
--- a/gcc/go/Make-lang.in
+++ b/gcc/go/Make-lang.in
@@ -218,10 +218,16 @@ GO_IMPORT_H = go/gofrontend/import.h go/gofrontend/export.h
go/go-backend.o: go/go-backend.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(TM_H) $(TM_P_H)
+
go/go-lang.o: go/go-lang.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(OPTS_H) \
- $(TREE_H) $(GIMPLE_H) $(GGC_H) $(TOPLEV_H) debug.h options.h \
- $(FLAGS_H) convert.h $(DIAGNOSTIC_H) langhooks.h $(LANGHOOKS_DEF_H) \
- $(EXCEPT_H) $(TARGET_H) $(GO_C_H) gt-go-go-lang.h gtype-go.h
+ $(TREE_H) $(GIMPLE_H) $(GGC_H) $(TOPLEV_H) debug.h options.h \
+ $(FLAGS_H) convert.h $(DIAGNOSTIC_H) langhooks.h \
+ $(LANGHOOKS_DEF_H) $(EXCEPT_H) $(TARGET_H) $(GO_C_H) \
+ gt-go-go-lang.h gtype-go.h
+ $(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
+ -DDEFAULT_TARGET_VERSION=\"$(version)\" \
+ -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \
+ -c $< $(OUTPUT_OPTION)
GOINCLUDES = -I $(srcdir)/go -I $(srcdir)/go/gofrontend
diff --git a/gcc/go/gccgo.texi b/gcc/go/gccgo.texi
index 0e41261eec1..b6f8910a8db 100644
--- a/gcc/go/gccgo.texi
+++ b/gcc/go/gccgo.texi
@@ -154,8 +154,8 @@ compile time.
@item -L@var{dir}
@cindex @option{-L}
-When compiling, synonymous with @option{-I}. When linking, specify a
-library search directory, as with @command{gcc}.
+When linking, specify a library search directory, as with
+@command{gcc}.
@item -fgo-prefix=@var{string}
@cindex @option{-fgo-prefix}
@@ -198,11 +198,10 @@ first one that it finds.
@end table
The compiler will search for these files in the directories named by
-any @option{-I} or @option{-L} options, in order in which the
-directories appear on the command line. The compiler will then search
-several standard system directories. Finally the compiler will search
-the current directory (to search the current directory earlier, use
-@samp{-I.}).
+any @option{-I} options, in order in which the directories appear on
+the command line. The compiler will then search several standard
+system directories. Finally the compiler will search the current
+directory (to search the current directory earlier, use @samp{-I.}).
The compiler will extract the export information directly from the
compiled object file. The file @file{@var{gopackage}.gox} will
diff --git a/gcc/go/go-lang.c b/gcc/go/go-lang.c
index 9c85ab7f7a2..0f3c1838f4b 100644
--- a/gcc/go/go-lang.c
+++ b/gcc/go/go-lang.c
@@ -162,6 +162,17 @@ go_langhook_init_options_struct (struct gcc_options *opts)
opts->x_flag_non_call_exceptions = 1;
}
+/* Infrastructure for a VEC of char * pointers. */
+
+typedef const char *go_char_p;
+DEF_VEC_P(go_char_p);
+DEF_VEC_ALLOC_P(go_char_p, heap);
+
+/* The list of directories to search after all the Go specific
+ directories have been searched. */
+
+static VEC(go_char_p, heap) *go_search_dirs;
+
/* Handle Go specific options. Return 0 if we didn't do anything. */
static bool
@@ -179,13 +190,47 @@ go_langhook_handle_option (
switch (code)
{
case OPT_I:
- case OPT_L:
- /* For the compiler, we currently handle -I and -L exactly the
- same way: they give us a directory to search for import
- statements. */
go_add_search_path (arg);
break;
+ case OPT_L:
+ /* A -L option is assumed to come from the compiler driver.
+ This is a system directory. We search the following
+ directories, if they exist, before this one:
+ dir/go/VERSION
+ dir/go/VERSION/MACHINE
+ This is like include/c++. */
+ {
+ static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
+ size_t len;
+ char *p;
+ struct stat st;
+
+ len = strlen (arg);
+ p = XALLOCAVEC (char,
+ (len + sizeof "go" + sizeof DEFAULT_TARGET_VERSION
+ + sizeof DEFAULT_TARGET_MACHINE + 3));
+ strcpy (p, arg);
+ if (len > 0 && !IS_DIR_SEPARATOR (p[len - 1]))
+ strcat (p, dir_separator_str);
+ strcat (p, "go");
+ strcat (p, dir_separator_str);
+ strcat (p, DEFAULT_TARGET_VERSION);
+ if (stat (p, &st) == 0 && S_ISDIR (st.st_mode))
+ {
+ go_add_search_path (p);
+ strcat (p, dir_separator_str);
+ strcat (p, DEFAULT_TARGET_MACHINE);
+ if (stat (p, &st) == 0 && S_ISDIR (st.st_mode))
+ go_add_search_path (p);
+ }
+
+ /* Search ARG too, but only after we've searched to Go
+ specific directories for all -L arguments. */
+ VEC_safe_push (go_char_p, heap, go_search_dirs, arg);
+ }
+ break;
+
case OPT_fgo_dump_:
ret = go_enable_dump (arg) ? true : false;
break;
@@ -207,8 +252,16 @@ go_langhook_handle_option (
static bool
go_langhook_post_options (const char **pfilename ATTRIBUTE_UNUSED)
{
+ unsigned int ix;
+ const char *dir;
+
gcc_assert (num_in_fnames > 0);
+ FOR_EACH_VEC_ELT (go_char_p, go_search_dirs, ix, dir)
+ go_add_search_path (dir);
+ VEC_free (go_char_p, heap, go_search_dirs);
+ go_search_dirs = NULL;
+
if (flag_excess_precision_cmdline == EXCESS_PRECISION_DEFAULT)
flag_excess_precision_cmdline = EXCESS_PRECISION_STANDARD;
diff --git a/gcc/go/gofrontend/LICENSE b/gcc/go/gofrontend/LICENSE
index d77335ff888..6a66aea5eaf 100644
--- a/gcc/go/gofrontend/LICENSE
+++ b/gcc/go/gofrontend/LICENSE
@@ -1,42 +1,27 @@
-// Copyright (c) 2009 The Go Authors. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Subject to the terms and conditions of this License, Google hereby
-// grants to You a perpetual, worldwide, non-exclusive, no-charge,
-// royalty-free, irrevocable (except as stated in this section) patent
-// license to make, have made, use, offer to sell, sell, import, and
-// otherwise transfer this implementation of Go, where such license
-// applies only to those patent claims licensable by Google that are
-// necessarily infringed by use of this implementation of Go. If You
-// institute patent litigation against any entity (including a
-// cross-claim or counterclaim in a lawsuit) alleging that this
-// implementation of Go or a Contribution incorporated within this
-// implementation of Go constitutes direct or contributory patent
-// infringement, then any patent licenses granted to You under this
-// License for this implementation of Go shall terminate as of the date
-// such litigation is filed.
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/gcc/go/gofrontend/PATENTS b/gcc/go/gofrontend/PATENTS
new file mode 100644
index 00000000000..733099041f8
--- /dev/null
+++ b/gcc/go/gofrontend/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/gcc/ira.c b/gcc/ira.c
index d37247f55b1..df86bb5965d 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -2585,7 +2585,13 @@ update_equiv_regs (void)
rtx equiv_insn;
if (! reg_equiv[regno].replace
- || reg_equiv[regno].loop_depth < loop_depth)
+ || reg_equiv[regno].loop_depth < loop_depth
+ /* There is no sense to move insns if we did
+ register pressure-sensitive scheduling was
+ done because it will not improve allocation
+ but worsen insn schedule with a big
+ probability. */
+ || (flag_sched_pressure && flag_schedule_insns))
continue;
/* reg_equiv[REGNO].replace gets set only when
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 38df4b30a50..906a5a09e80 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-07 Joseph Myers <joseph@codesourcery.com>
+
+ * jcf-parse.c: Don't include assert.h.
+ (java_parse_file): Use gcc_assert.
+
2010-12-03 Joseph Myers <joseph@codesourcery.com>
* lang.opt (static-libgcj): New option.
diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c
index 9166f311e99..d10791fe631 100644
--- a/gcc/java/jcf-parse.c
+++ b/gcc/java/jcf-parse.c
@@ -38,7 +38,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "parse.h"
#include "ggc.h"
#include "debug.h"
-#include "assert.h"
#include "cgraph.h"
#include "vecprim.h"
#include "bitmap.h"
@@ -1855,7 +1854,7 @@ java_parse_file (void)
const char *resource_filename;
/* Only one resource file may be compiled at a time. */
- assert (VEC_length (tree, all_translation_units) == 1);
+ gcc_assert (VEC_length (tree, all_translation_units) == 1);
resource_filename
= IDENTIFIER_POINTER
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 99df7843ede..f3001e581fb 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,5 +1,10 @@
2010-12-06 Nicola Pero <nicola.pero@meta-innovation.com>
+ * objc-act.c (objc_finish_foreach_loop): Mark the
+ object_expression as used.
+
+2010-12-06 Nicola Pero <nicola.pero@meta-innovation.com>
+
* objc-act.c: Include c-family/c-objc.h.
* objc-lang.c: Same change.
* Make-lang.in (objc/objc-act.o): Depend on
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 49e2442bff6..f53055652ea 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -13290,6 +13290,18 @@ objc_finish_foreach_loop (location_t location, tree object_expression, tree coll
/* type object; */
/* Done by c-parser.c. */
+ /* Disable warnings that 'object' is unused. For example the code
+
+ for (id object in collection)
+ i++;
+
+ which can be used to count how many objects there are in the
+ collection is fine and should generate no warnings even if
+ 'object' is technically unused. */
+ TREE_USED (object_expression) = 1;
+ if (DECL_P (object_expression))
+ DECL_READ_P (object_expression) = 1;
+
/* id __objc_foreach_collection */
objc_foreach_collection_decl = objc_create_temporary_var (objc_object_type, "__objc_foreach_collection");
diff --git a/gcc/params.def b/gcc/params.def
index 4bcddbe5f7e..533c825c3a4 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -879,6 +879,15 @@ DEFPARAM (MIN_PARTITION_SIZE,
"lto-min-partition",
"Size of minimal paritition for WHOPR (in estimated instructions)",
1000, 0, 0)
+
+/* Diagnostic parameters. */
+
+DEFPARAM (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP,
+ "cxx-max-namespaces-for-diagnostic-help",
+ "Maximum number of namespaces to search for alternatives when "
+ "name lookup fails",
+ 1000, 0, 0)
+
/*
Local variables:
mode:c
diff --git a/gcc/profile.c b/gcc/profile.c
index 9e8c2036ca1..606e3b2e866 100644
--- a/gcc/profile.c
+++ b/gcc/profile.c
@@ -936,11 +936,12 @@ branch_prob (void)
/* It may happen that there are compiler generated statements
without a locus at all. Go through the basic block from the
last to the first statement looking for a locus. */
- for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi_prev (&gsi))
+ for (gsi = gsi_last_nondebug_bb (bb);
+ !gsi_end_p (gsi);
+ gsi_prev_nondebug (&gsi))
{
last = gsi_stmt (gsi);
- if (!is_gimple_debug (last)
- && gimple_has_location (last))
+ if (gimple_has_location (last))
break;
}
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index aaf062ed135..7c1209fe4b4 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -1330,7 +1330,7 @@ init_subregs_of_mode (void)
FOR_EACH_BB (bb)
FOR_BB_INSNS (bb, insn)
- if (INSN_P (insn))
+ if (NONDEBUG_INSN_P (insn))
find_subregs_of_mode (PATTERN (insn));
}
diff --git a/gcc/regrename.c b/gcc/regrename.c
index 2535ab74ab9..48013f385d8 100644
--- a/gcc/regrename.c
+++ b/gcc/regrename.c
@@ -38,6 +38,7 @@
#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
+#include "target.h"
#if HOST_BITS_PER_WIDE_INT <= MAX_RECOG_OPERANDS
#error "Use a different bitmap implementation for untracked_operands."
@@ -51,6 +52,11 @@ struct du_head
struct du_head *next_chain;
/* The first and last elements of this chain. */
struct du_chain *first, *last;
+ /* The number of elements of this chain, excluding those corresponding
+ to references of the register in debug insns. The du_head linked
+ list can be sorted by this, and register-rename can prefer
+ register classes according to this order. */
+ int length;
/* Describes the register being tracked. */
unsigned regno, nregs;
@@ -154,6 +160,197 @@ merge_overlapping_regs (HARD_REG_SET *pset, struct du_head *head)
}
}
+/* Return the Nth element in LIST. If LIST contains less than N
+ elements, return the last one. */
+static struct du_head *
+get_element (struct du_head *list, int n)
+{
+ while (n-- && list->next_chain != NULL)
+ list = list->next_chain;
+
+ return list;
+}
+
+/* Comparison function of merge sort. Return true if A is less than
+ B, otherwise return false. */
+static inline int
+merge_sort_comparison(const struct du_head *a,
+ const struct du_head *b)
+{
+ return a->length < b->length;
+}
+
+/* Merge the first 2 sub-lists of LENGTH nodes contained in the
+ linked list pointed to by START_NODE. Update START_NODE to point
+ to the merged nodes, and return a pointer to the last merged
+ node. Return NULL if START_NODE doesn't contain enough
+ elements, or this pass of merge is done. */
+
+static struct du_head *
+merge(struct du_head **start_node, int length)
+{
+ int i, left_count, right_count;
+ struct du_head *left, *right;
+ /* Current node of sort result. */
+ struct du_head *current_sorted_node;
+ /* Tail node of sort, used to connect with next piece of list. */
+ struct du_head *current_tail_node;
+
+ if (*start_node == NULL)
+ return NULL;
+
+ left = right = *start_node;
+ right_count = left_count = 0;
+
+ /* Step RIGHT along the list by LENGTH places. */
+ for (i = 0; i < length; i++)
+ {
+ right = right->next_chain;
+ if (right == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ /* Initialize current_sorted_node. */
+ if (merge_sort_comparison (left, right))
+ {
+ ++right_count;
+ current_sorted_node = right;
+ *start_node = right;
+ right = right->next_chain;
+ }
+ else
+ {
+ ++left_count;
+ current_sorted_node = left;
+ left = left->next_chain;
+ }
+
+ while (1)
+ {
+ /* Choose LEFT or RIGHT to take the next element from. If
+ either is empty, choose from the other one. */
+ if (left_count == length || left == NULL)
+ {
+ current_sorted_node->next_chain = right;
+ current_tail_node = get_element (current_sorted_node,
+ length - right_count);
+
+ break;
+ }
+ else if (right_count == length || right == NULL)
+ {
+ /* Save the head node of next piece of linked list. */
+ struct du_head *tmp = current_sorted_node->next_chain;
+
+ current_sorted_node->next_chain = left;
+ current_tail_node
+ = get_element (current_sorted_node,
+ length - left_count);
+ /* Connect sorted list to next piece of list. */
+ current_tail_node->next_chain = tmp;
+ break;
+ }
+ else
+ {
+ /* Normal merge operations. If both LEFT and RIGHT are
+ non-empty, compare the first element of each and choose
+ the lower one. */
+ if (merge_sort_comparison (left, right))
+ {
+ right_count++;
+ current_sorted_node->next_chain = right;
+ right = right->next_chain;
+ }
+ else
+ {
+ left_count++;
+ current_sorted_node->next_chain = left;
+ left = left->next_chain;
+ }
+ current_sorted_node = current_sorted_node->next_chain;
+ }
+ }
+ /* Return NULL if this pass of merge is done. */
+ return (current_tail_node->next_chain ? current_tail_node : NULL);
+}
+
+/* Sort the linked list pointed to by HEAD. The algorithm is a
+ non-recursive merge sort to linked list. */
+
+static void
+sort_du_head (struct du_head **head)
+{
+ int current_length = 1;
+ struct du_head *last_tail;
+
+ /* In each pass, lists of size current_length is merged to
+ lists of size 2xcurrent_length (Initially current_length
+ is 1). */
+ while (1)
+ {
+ last_tail = merge(head, current_length);
+ if (last_tail != NULL)
+ {
+ do
+ last_tail = merge (&last_tail->next_chain, current_length);
+ while (last_tail != NULL);
+
+ current_length *= 2;
+ }
+ else
+ break;
+ }
+}
+
+/* Check if NEW_REG can be the candidate register to rename for
+ REG in THIS_HEAD chain. THIS_UNAVAILABLE is a set of unavailable hard
+ registers. */
+
+static bool
+check_new_reg_p (int reg, int new_reg, struct du_head *this_head,
+ HARD_REG_SET this_unavailable)
+{
+ enum machine_mode mode = GET_MODE (*this_head->first->loc);
+ int nregs = hard_regno_nregs[new_reg][mode];
+ int i;
+ struct du_chain *tmp;
+
+ for (i = nregs - 1; i >= 0; --i)
+ if (TEST_HARD_REG_BIT (this_unavailable, new_reg + i)
+ || fixed_regs[new_reg + i]
+ || global_regs[new_reg + i]
+ /* Can't use regs which aren't saved by the prologue. */
+ || (! df_regs_ever_live_p (new_reg + i)
+ && ! call_used_regs[new_reg + i])
+#ifdef LEAF_REGISTERS
+ /* We can't use a non-leaf register if we're in a
+ leaf function. */
+ || (current_function_is_leaf
+ && !LEAF_REGISTERS[new_reg + i])
+#endif
+#ifdef HARD_REGNO_RENAME_OK
+ || ! HARD_REGNO_RENAME_OK (reg + i, new_reg + i)
+#endif
+ )
+ return false;
+
+ /* See whether it accepts all modes that occur in
+ definition and uses. */
+ for (tmp = this_head->first; tmp; tmp = tmp->next_use)
+ if ((! HARD_REGNO_MODE_OK (new_reg, GET_MODE (*tmp->loc))
+ && ! DEBUG_INSN_P (tmp->insn))
+ || (this_head->need_caller_save_reg
+ && ! (HARD_REGNO_CALL_PART_CLOBBERED
+ (reg, GET_MODE (*tmp->loc)))
+ && (HARD_REGNO_CALL_PART_CLOBBERED
+ (new_reg, GET_MODE (*tmp->loc)))))
+ return false;
+
+ return true;
+}
+
/* Perform register renaming on the current function. */
static unsigned int
@@ -195,6 +392,8 @@ regrename_optimize (void)
if (dump_file)
dump_def_use_chain (all_chains);
+ sort_du_head (&all_chains);
+
CLEAR_HARD_REG_SET (unavailable);
/* Don't clobber traceback for noreturn functions. */
if (frame_pointer_needed)
@@ -213,7 +412,9 @@ regrename_optimize (void)
struct du_chain *tmp;
HARD_REG_SET this_unavailable;
int reg = this_head->regno;
- int i;
+ int pass;
+ enum reg_class superunion_class = NO_REGS;
+ enum reg_class preferred_class;
all_chains = this_head->next_chain;
@@ -243,16 +444,23 @@ regrename_optimize (void)
COPY_HARD_REG_SET (this_unavailable, unavailable);
- /* Count number of uses, and narrow the set of registers we can
- use for renaming. */
+ /* Iterate elements in chain in order to:
+ 1. Count number of uses, and narrow the set of registers we can
+ use for renaming.
+ 2. Compute the superunion of register classes in this chain. */
n_uses = 0;
+ superunion_class = NO_REGS;
for (tmp = this_head->first; tmp; tmp = tmp->next_use)
{
if (DEBUG_INSN_P (tmp->insn))
continue;
n_uses++;
+
IOR_COMPL_HARD_REG_SET (this_unavailable,
reg_class_contents[tmp->cl]);
+
+ superunion_class
+ = reg_class_superunion[(int) superunion_class][(int) tmp->cl];
}
if (n_uses < 2)
@@ -262,56 +470,53 @@ regrename_optimize (void)
IOR_HARD_REG_SET (this_unavailable, call_used_reg_set);
merge_overlapping_regs (&this_unavailable, this_head);
-
- /* Now potential_regs is a reasonable approximation, let's
- have a closer look at each register still in there. */
- for (new_reg = 0; new_reg < FIRST_PSEUDO_REGISTER; new_reg++)
+ /* Compute preferred rename class of super union of all the classes
+ on the chain. */
+ preferred_class
+ = (enum reg_class) targetm.preferred_rename_class(superunion_class);
+
+ /* The register iteration order here is "preferred-register-first".
+ Firstly(pass == 0), we iterate registers belong to PREFERRED_CLASS,
+ if we find a new register, we stop immeidately.
+ Otherwise, we iterate over registers that don't belong to
+ PREFERRED_CLASS.
+ If PREFERRED_CLASS is NO_REGS, we iterate over all registers in
+ ascending order without any preference. */
+ for (pass = (preferred_class == NO_REGS ? 1 : 0); pass < 2; pass++)
{
- enum machine_mode mode = GET_MODE (*this_head->first->loc);
- int nregs = hard_regno_nregs[new_reg][mode];
-
- for (i = nregs - 1; i >= 0; --i)
- if (TEST_HARD_REG_BIT (this_unavailable, new_reg + i)
- || fixed_regs[new_reg + i]
- || global_regs[new_reg + i]
- /* Can't use regs which aren't saved by the prologue. */
- || (! df_regs_ever_live_p (new_reg + i)
- && ! call_used_regs[new_reg + i])
-#ifdef LEAF_REGISTERS
- /* We can't use a non-leaf register if we're in a
- leaf function. */
- || (current_function_is_leaf
- && !LEAF_REGISTERS[new_reg + i])
-#endif
-#ifdef HARD_REGNO_RENAME_OK
- || ! HARD_REGNO_RENAME_OK (reg + i, new_reg + i)
-#endif
- )
- break;
- if (i >= 0)
- continue;
-
- /* See whether it accepts all modes that occur in
- definition and uses. */
- for (tmp = this_head->first; tmp; tmp = tmp->next_use)
- if ((! HARD_REGNO_MODE_OK (new_reg, GET_MODE (*tmp->loc))
- && ! DEBUG_INSN_P (tmp->insn))
- || (this_head->need_caller_save_reg
- && ! (HARD_REGNO_CALL_PART_CLOBBERED
- (reg, GET_MODE (*tmp->loc)))
- && (HARD_REGNO_CALL_PART_CLOBBERED
- (new_reg, GET_MODE (*tmp->loc)))))
- break;
- if (! tmp)
+ bool found = false;
+ /* Now potential_regs is a reasonable approximation, let's
+ have a closer look at each register still in there. */
+ for (new_reg = 0; new_reg < FIRST_PSEUDO_REGISTER; new_reg++)
{
- if (tick[best_new_reg] > tick[new_reg])
+ /* Iterate registers first in prefered class. */
+ if (pass == 0
+ && !TEST_HARD_REG_BIT (reg_class_contents[preferred_class],
+ new_reg))
+ continue;
+
+ if (check_new_reg_p (reg, new_reg, this_head,
+ this_unavailable))
{
- best_new_reg = new_reg;
- best_nregs = nregs;
+ if (tick[best_new_reg] > tick[new_reg])
+ {
+ enum machine_mode mode
+ = GET_MODE (*this_head->first->loc);
+ best_new_reg = new_reg;
+ best_nregs = hard_regno_nregs[new_reg][mode];
+ /* If we find a new reg in our preferred class,
+ stop immediately. */
+ if (best_new_reg != reg && pass == 0)
+ {
+ found = true;
+ break;
+ }
+ }
}
}
+ if (found)
+ break;
}
-
if (dump_file)
{
fprintf (dump_file, "Register %s in insn %d",
@@ -527,6 +732,7 @@ create_new_chain (unsigned this_regno, unsigned this_nregs, rtx *loc,
head->need_caller_save_reg = 0;
head->cannot_rename = 0;
head->terminated = 0;
+ head->length = 0;
VEC_safe_push (du_head_p, heap, id_to_chain, head);
head->id = current_id++;
@@ -572,6 +778,8 @@ create_new_chain (unsigned this_regno, unsigned this_nregs, rtx *loc,
this_du->loc = loc;
this_du->insn = insn;
this_du->cl = cl;
+
+ head->length = 1;
}
static void
@@ -661,6 +869,8 @@ scan_rtx_reg (rtx insn, rtx *loc, enum reg_class cl, enum scan_actions action,
head->last->next_use = this_du;
head->last = this_du;
+ if (!DEBUG_INSN_P (insn))
+ head->length++;
}
/* Avoid adding the same location in a DEBUG_INSN multiple times,
which could happen with non-exact overlap. */
diff --git a/gcc/target.def b/gcc/target.def
index a486ffad485..7e4fe123a02 100644
--- a/gcc/target.def
+++ b/gcc/target.def
@@ -2224,6 +2224,21 @@ DEFHOOK
bool, (reg_class_t rclass),
default_class_likely_spilled_p)
+DEFHOOK
+(preferred_rename_class,
+ "A target hook that places additional preference on the register\
+ class to use when it is necessary to rename a register in class\
+ @var{class} to another class, or perhaps @var{NO_REGS}, if no\
+ prefered register class is found or hook @code{preferred_rename_class}\
+ is not implemented.\
+ Sometimes returning a more restrictive class makes better code. For\
+ example, on ARM, thumb-2 instructions using @code{LO_REGS} may be\
+ smaller than instructions using @code{GENERIC_REGS}. By returning\
+ @code{LO_REGS} from @code{preferred_rename_class}, code size can\
+ be reduced.",
+ reg_class_t, (reg_class_t rclass),
+ default_preferred_rename_class)
+
/* This target hook allows the backend to perform additional
processing while initializing for variable expansion. */
DEFHOOK
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index 14ec00c7bf2..0eee5288b6c 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -1278,6 +1278,13 @@ default_preferred_output_reload_class (rtx x ATTRIBUTE_UNUSED,
#endif
}
+/* The default implementation of TARGET_PREFERRED_RENAME_CLASS. */
+reg_class_t
+default_preferred_rename_class (reg_class_t rclass ATTRIBUTE_UNUSED)
+{
+ return NO_REGS;
+}
+
/* The default implementation of TARGET_CLASS_LIKELY_SPILLED_P. */
bool
diff --git a/gcc/targhooks.h b/gcc/targhooks.h
index 1e603c983dd..db6f7146b00 100644
--- a/gcc/targhooks.h
+++ b/gcc/targhooks.h
@@ -160,6 +160,7 @@ extern int default_register_move_cost (enum machine_mode, reg_class_t,
extern bool default_profile_before_prologue (void);
extern reg_class_t default_preferred_reload_class (rtx, reg_class_t);
extern reg_class_t default_preferred_output_reload_class (rtx, reg_class_t);
+extern reg_class_t default_preferred_rename_class (reg_class_t rclass);
extern bool default_class_likely_spilled_p (reg_class_t);
extern enum unwind_info_type default_debug_unwind_info (void);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 600655d1d2c..96275ed6d29 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,82 @@
+2010-12-07 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR tree-optimization/44676
+ * gcc.dg/graphite/id-pr44676.c: New.
+
+2010-12-07 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR tree-optimization/42327
+ * gcc.dg/tree-ssa/pr42327.c: New.
+
+2010-12-07 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR c++/45330
+ * g++.dg/pr45330.C: New test.
+ * g++.dg/ext/builtin3.C: Adjust.
+ * g++.dg/lookup/error1.C: Adjust.
+ * g++.dg/lookup/koenig5.C: Adjust.
+ * g++.dg/overload/koenig1.C: Adjust.
+ * g++.dg/parse/decl-specifier-1.C: Adjust.
+ * g++.dg/template/static10.C: Adjust.
+ * g++.old-deja/g++.mike/ns5.C: Adjust.
+ * g++.old-deja/g++.mike/ns7.C: Adjust.
+ * g++.old-deja/g++.ns/koenig5.C: Adjust.
+ * g++.old-deja/g++.ns/koenig9.C: Adjust.
+ * g++.old-deja/g++.other/lineno5.C: Adjust.
+
+2010-12-07 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/46832
+ * gcc.c-torture/compile/pr46832.c: New testcase.
+
+2010-12-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/46799
+ * gcc.dg/autopar/pr46799.c: New test.
+
+2010-12-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ * gfortran.dg/internal_dummy_2.f08: Fix dg-options.
+ * gfortran.dg/internal_dummy_3.f08: Fix dg-options.
+
+2010-12-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/41562
+ * g++.dg/graphite/pr41562.C: New.
+
+ PR middle-end/46185
+ * gcc.dg/graphite/pr46185.c: New.
+
+2010-12-06 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc.dg/foreach-8.m: New.
+
+2010-12-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/45997
+ * g++.dg/debug/dwarf2/pr45997-1.C: New test.
+ * g++.dg/debug/dwarf2/pr45997-2.C: New test.
+
+ PR target/43897
+ * gcc.target/ia64/pr43897.c: New test.
+
+ PR debug/46771
+ * gcc.dg/pr46771.c: New test.
+
+ PR rtl-optimization/46777
+ * gcc.dg/pr46777.c: New test.
+
+2010-12-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * ada/acats/run_acats (which): Assign output to temporary
+ variable, only use if successful.
+ Use last field of type output.
+
+2010-12-06 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/46806
+ * g++.dg/torture/20100825.C: New testcase.
+
2010-12-06 Richard Guenther <rguenther@suse.de>
PR tree-optimization/46785
diff --git a/gcc/testsuite/ada/acats/run_acats b/gcc/testsuite/ada/acats/run_acats
index cf6b4283783..bb68e62bf8a 100755
--- a/gcc/testsuite/ada/acats/run_acats
+++ b/gcc/testsuite/ada/acats/run_acats
@@ -14,9 +14,9 @@ fi
# Fall back to whence which ksh88 and ksh93 provide, but bash does not.
which () {
- type -p $* 2>/dev/null && return 0
- type $* 2>/dev/null | awk '{print $3}' && return 0
- whence $* 2>/dev/null && return 0
+ path=`type -p $* 2>/dev/null` && { echo $path; return 0; }
+ path=`type $* 2>/dev/null | awk '{print $NF}'` && { echo $path; return 0; }
+ path=`whence $* 2>/dev/null` && { echo $path; return 0; }
return 1
}
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/pr45997-1.C b/gcc/testsuite/g++.dg/debug/dwarf2/pr45997-1.C
new file mode 100644
index 00000000000..72f24ad4a7b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/pr45997-1.C
@@ -0,0 +1,22 @@
+// PR debug/45997
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA" }
+
+typedef int my_int;
+typedef const my_int const_my_int;
+typedef volatile const_my_int volatile_const_my_int;
+
+my_int v_my_int = 0;
+const_my_int v_const_my_int = 1;
+volatile_const_my_int v_volatile_const_my_int = 4;
+
+int
+main ()
+{
+ asm volatile ("" : : "r" (&v_my_int));
+ asm volatile ("" : : "r" (&v_const_my_int));
+ asm volatile ("" : : "r" (&v_volatile_const_my_int));
+ return 0;
+}
+
+// { dg-final { scan-assembler-times "DIE\[^\n\r\]*DW_TAG_base_type" 1 } }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/pr45997-2.C b/gcc/testsuite/g++.dg/debug/dwarf2/pr45997-2.C
new file mode 100644
index 00000000000..ade542804fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/pr45997-2.C
@@ -0,0 +1,22 @@
+// PR debug/45997
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA" }
+
+typedef int my_int;
+typedef volatile my_int volatile_my_int;
+typedef const volatile_my_int const_volatile_my_int;
+
+my_int v_my_int = 0;
+volatile_my_int v_volatile_my_int = 1;
+const_volatile_my_int v_const_volatile_my_int = 4;
+
+int
+main ()
+{
+ asm volatile ("" : : "r" (&v_my_int));
+ asm volatile ("" : : "r" (&v_volatile_my_int));
+ asm volatile ("" : : "r" (&v_const_volatile_my_int));
+ return 0;
+}
+
+// { dg-final { scan-assembler-times "DIE\[^\n\r\]*DW_TAG_base_type" 1 } }
diff --git a/gcc/testsuite/g++.dg/ext/builtin3.C b/gcc/testsuite/g++.dg/ext/builtin3.C
index 3d06dd7534a..001d5f784d2 100644
--- a/gcc/testsuite/g++.dg/ext/builtin3.C
+++ b/gcc/testsuite/g++.dg/ext/builtin3.C
@@ -5,9 +5,10 @@
// { dg-options "" }
namespace std {
-extern "C" int printf(char*, ...);
+extern "C" int printf(char*, ...); // { dg-message "std::printf" }
}
void foo() {
printf("abc"); // { dg-error "not declared" }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 12 }
}
diff --git a/gcc/testsuite/g++.dg/graphite/pr41562.C b/gcc/testsuite/g++.dg/graphite/pr41562.C
new file mode 100644
index 00000000000..36b8c275f17
--- /dev/null
+++ b/gcc/testsuite/g++.dg/graphite/pr41562.C
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-loop-distribution -floop-block" } */
+
+typedef struct stSirenEncoder { } *SirenEncoder;
+
+int Siren7_EncodeFrame(SirenEncoder encoder, unsigned char *DataIn, unsigned char *DataOut) {
+ int number_of_regions;
+ static int absolute_region_power_index[28] = {0};
+ static int region_mlt_bit_counts[28] = {0};
+ int dwRes = 0;
+ int region;
+ if (dwRes != 0) return dwRes;
+ for(region = 0; region < number_of_regions; region++)
+ {
+ absolute_region_power_index[region] += 24;
+ region_mlt_bit_counts[region] = 0;
+ }
+}
diff --git a/gcc/testsuite/g++.dg/lookup/error1.C b/gcc/testsuite/g++.dg/lookup/error1.C
index 2264b238403..3eb4b972132 100644
--- a/gcc/testsuite/g++.dg/lookup/error1.C
+++ b/gcc/testsuite/g++.dg/lookup/error1.C
@@ -2,8 +2,9 @@
// Origin: <papadopo@shfj.cea.fr>
// { dg-do compile }
-namespace N { int i; }
+namespace N { int i; } // { dg-message "N::i" }
void foo() { i; } // { dg-error "not declared" }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 6 }
using namespace N;
void bar() { i; }
diff --git a/gcc/testsuite/g++.dg/lookup/koenig5.C b/gcc/testsuite/g++.dg/lookup/koenig5.C
index 6ecc25daadb..c44543bd52f 100644
--- a/gcc/testsuite/g++.dg/lookup/koenig5.C
+++ b/gcc/testsuite/g++.dg/lookup/koenig5.C
@@ -8,23 +8,23 @@
namespace N
{
struct A {};
- void One (...);
- void (*Two) (...);
- namespace Three {}
+ void One (...); // { dg-message "N::One" }
+ void (*Two) (...); // { dg-message "N::Two" }
+ namespace Three {} // { dg-message "N::Three" }
}
namespace M
{
struct B {};
- struct One {};
- void (*Two) (...);
- void Three (...);
+ struct One {}; // { dg-message "M::One" }
+ void (*Two) (...); // { dg-message "M::Two" }
+ void Three (...); // { dg-message "M::Three" }
}
namespace O
{
struct C {};
- void Two (...);
+ void Two (...); // { dg-message "O::Two" }
}
void g (N::A *a, M::B *b, O::C *c)
@@ -32,10 +32,12 @@ void g (N::A *a, M::B *b, O::C *c)
One (a); // ok
One (a, b); // ok
One (b); // { dg-error "not declared" }
+ // { dg-message "suggested alternatives" "suggested alternative for One" { target *-*-* } 34 }
Two (c); // ok
Two (a, c); // ok
Two (a); // { dg-error "not declared" }
+ // { dg-message "suggested alternatives" "suggested alternative for Two" { target *-*-* } 39 }
Two (a, a); // error masked by earlier error
Two (b); // error masked by earlier error
Two (a, b); // error masked by earlier error
@@ -43,4 +45,5 @@ void g (N::A *a, M::B *b, O::C *c)
Three (b); // ok
Three (a, b); // ok
Three (a); // { dg-error "not declared" }
+ // { dg-message "suggested alternatives" "suggested alternative for Three" { target *-*-* } 47 }
}
diff --git a/gcc/testsuite/g++.dg/overload/koenig1.C b/gcc/testsuite/g++.dg/overload/koenig1.C
index 1ed7bce0b14..a4612591967 100644
--- a/gcc/testsuite/g++.dg/overload/koenig1.C
+++ b/gcc/testsuite/g++.dg/overload/koenig1.C
@@ -3,7 +3,7 @@
// valid call.
namespace N {
- template <class T> void f (T);
+ template <class T> void f (T); // { dg-message "N::f" }
struct A;
}
@@ -14,5 +14,6 @@ void g ()
B *bp;
N::A *ap;
f (bp); // { dg-error "not declared" }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 16 }
f (ap);
}
diff --git a/gcc/testsuite/g++.dg/parse/decl-specifier-1.C b/gcc/testsuite/g++.dg/parse/decl-specifier-1.C
index e81fbabf2c3..baf0fe77816 100644
--- a/gcc/testsuite/g++.dg/parse/decl-specifier-1.C
+++ b/gcc/testsuite/g++.dg/parse/decl-specifier-1.C
@@ -5,7 +5,7 @@
namespace N
{
template<typename>
- struct X { };
+ struct X { }; // { dg-message "N::X" }
}
N::X X; // { dg-error "" "" }
@@ -13,4 +13,5 @@ N::X X; // { dg-error "" "" }
int main()
{
return sizeof(X); // { dg-error "" "" }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 15 }
}
diff --git a/gcc/testsuite/g++.dg/pr45330.C b/gcc/testsuite/g++.dg/pr45330.C
new file mode 100644
index 00000000000..02d9b3f63bb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr45330.C
@@ -0,0 +1,37 @@
+// { dg-do compile }
+// Search std, __cxxabiv1, and global namespaces, plus one more.
+// { dg-options "--param cxx-max-namespaces-for-diagnostic-help=4" }
+
+#define NSPACE(NAME) namespace NAME { int foo; }
+
+namespace A
+{
+ int foo; // { dg-message "A::foo" "suggested alternative" }
+}
+
+namespace B
+{
+ int foo;
+}
+
+namespace C
+{
+ int foo;
+}
+
+namespace D
+{
+ int foo;
+}
+
+namespace E
+{
+ int foo;
+}
+
+int bar()
+{
+ return foo; // { dg-error "was not declared" }
+ // { dg-message "maximum limit of 4 namespaces" "maximum limit" { target *-*-* } 34 }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 34 }
+}
diff --git a/gcc/testsuite/g++.dg/template/static10.C b/gcc/testsuite/g++.dg/template/static10.C
index ab857bd814e..881db081c4f 100644
--- a/gcc/testsuite/g++.dg/template/static10.C
+++ b/gcc/testsuite/g++.dg/template/static10.C
@@ -4,7 +4,7 @@ namespace __gnu_debug_def { }
namespace std
{
using namespace __gnu_debug_def;
- template<typename _Tp> class allocator {};
+ template<typename _Tp> class allocator {}; // { dg-message "std::allocator" }
}
namespace __gnu_debug_def
{
@@ -20,4 +20,5 @@ namespace std
{
template<> void
vector<int, allocator<int> >::swap(vector<int, allocator<int> >&) { } // { dg-error "" }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 22 }
}
diff --git a/gcc/testsuite/g++.dg/torture/20100825.C b/gcc/testsuite/g++.dg/torture/20100825.C
new file mode 100644
index 00000000000..460c1b60875
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/20100825.C
@@ -0,0 +1,15 @@
+// { dg-do run }
+
+typedef enum { zero = 0, one = 1, two = 2, ENUM_MAX = 3 } my_enum;
+my_enum e;
+extern "C" void abort (void);
+int __attribute__((noinline)) foo() { return 10; }
+int main()
+{
+ int r;
+ r = foo();
+ if ((r < 0) || (r >= ENUM_MAX))
+ return 0;
+ e = (my_enum)r;
+ abort ();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/ns5.C b/gcc/testsuite/g++.old-deja/g++.mike/ns5.C
index 9d806cabdb3..fd1fbffce9e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/ns5.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/ns5.C
@@ -1,6 +1,7 @@
// { dg-do assemble }
namespace A {
- int i = 1;
+ int i = 1; // { dg-message "A::i" }
}
int j = i; // { dg-error "" }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 6 }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/ns7.C b/gcc/testsuite/g++.old-deja/g++.mike/ns7.C
index 57008dbed61..67d9e7741f1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/ns7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/ns7.C
@@ -1,9 +1,10 @@
// { dg-do assemble }
namespace A {
- int i = 1;
+ int i = 1; // { dg-message "A::i" }
}
namespace B {
int j = i; // { dg-error "" }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 8 }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
index 33061ad0bd8..7c56d5cbc5e 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
@@ -3,7 +3,7 @@
namespace A{
void foo();
struct X{};
- void (*bar)(X*)=0;
+ void (*bar)(X*)=0; // { dg-message "A::bar" }
}
using A::X;
@@ -15,4 +15,5 @@ void g()
// foo variable first, and therefore do not
// perform argument-dependent lookup.
bar(new X); // { dg-error "not declared" }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 17 }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C
index 78b0e8b36ca..46efcb72d1e 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C
@@ -3,11 +3,12 @@
// Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Theodore.Papadopoulo 23 Jun 2000 <Theodore.Papadopoulo@sophia.inria.fr>
-#include <algorithm>
+int count (int);
+void *count (char *, char);
void foo(const char*,...);
inline void
bar() {
- foo("",count); // { dg-error "" } multiple overloaded count functions
+ foo("",count); // { dg-error "overloaded function" "multiple overloaded functions" }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.other/lineno5.C b/gcc/testsuite/g++.old-deja/g++.other/lineno5.C
index d14bd90c2db..d22733953f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/lineno5.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/lineno5.C
@@ -10,10 +10,11 @@
namespace tmp {
typedef int B;
- B b;
+ B b; // { dg-message "tmp::b" }
}
class A {
public:
int kaka(tmp::B = b); // { dg-error "" } no b in scope
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 18 }
};
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr46832.c b/gcc/testsuite/gcc.c-torture/compile/pr46832.c
new file mode 100644
index 00000000000..f500aa51068
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr46832.c
@@ -0,0 +1,4 @@
+double pow(double x, double y);
+void foo( double x ) {
+ int j = (int) ((pow(x, 2)) < 0.0 ? (pow(x, 2))-0.5 : (pow(x, 2))+0.5);
+}
diff --git a/gcc/testsuite/gcc.dg/autopar/pr46799.c b/gcc/testsuite/gcc.dg/autopar/pr46799.c
new file mode 100644
index 00000000000..575e12c5559
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/autopar/pr46799.c
@@ -0,0 +1,12 @@
+/* PR debug/46799 */
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-parallelize-loops=2 -fno-tree-dce -ftree-pre -fcompare-debug" } */
+
+int
+foo (int i, int *a)
+{
+ int e;
+ for (; i; i++)
+ e = *a;
+ return e;
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/id-pr44676.c b/gcc/testsuite/gcc.dg/graphite/id-pr44676.c
new file mode 100644
index 00000000000..65821edba2a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/id-pr44676.c
@@ -0,0 +1,12 @@
+/* { dg-options "-O2 -fgraphite-identity -fprofile-generate" } */
+
+int
+extend_options (int h, int map, int x, int y, int dx)
+{
+ while (dx--)
+ {
+ if (x != dx && y != -x)
+ map++;
+ }
+ return map;
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/pr46185.c b/gcc/testsuite/gcc.dg/graphite/pr46185.c
new file mode 100644
index 00000000000..36d46a41cb9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr46185.c
@@ -0,0 +1,46 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -floop-interchange -ffast-math -fno-ipa-cp" } */
+
+#define DEBUG 0
+#if DEBUG
+#include <stdio.h>
+#endif
+
+double u[1782225];
+
+static int __attribute__((noinline))
+foo (int N, int *res)
+{
+ int i, j;
+ double sum = 0;
+ for (i = 0; i < N; i++)
+ for (j = 0; j < N; j++)
+ sum = sum + u[i + 1335 * j];
+
+ for (i = 0; i < N; i++)
+ u[1336 * i] *= 2;
+
+ *res = sum + N + u[1336 * 2] + u[1336];
+}
+
+extern void abort ();
+
+int
+main (void)
+{
+ int i, j, res;
+
+ for (i = 0; i < 1782225; i++)
+ u[i] = 2;
+
+ foo (1335, &res);
+
+#if DEBUG
+ fprintf (stderr, "res = %d \n", res);
+#endif
+
+ if (res != 3565793)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr46771.c b/gcc/testsuite/gcc.dg/pr46771.c
new file mode 100644
index 00000000000..b44dfd466ab
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr46771.c
@@ -0,0 +1,18 @@
+/* PR debug/46771 */
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-vectorize -fcompare-debug" } */
+
+unsigned char v[1600];
+
+unsigned char
+foo (unsigned char x)
+{
+ int i;
+ unsigned char a = x;
+ unsigned char b = x;
+ for (i = 0; i < 1600; i++)
+ a = a < v[i] ? v[i] : a;
+ for (i = 0; i < 1600; i++)
+ b = b > v[i] ? v[i] : b;
+ return a - b;
+}
diff --git a/gcc/testsuite/gcc.dg/pr46777.c b/gcc/testsuite/gcc.dg/pr46777.c
new file mode 100644
index 00000000000..e9f40a080eb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr46777.c
@@ -0,0 +1,49 @@
+/* PR rtl-optimization/46777 */
+/* { dg-do compile } */
+/* { dg-options "-fgcse -O -fno-tree-dominator-opts -funroll-loops" } */
+
+struct S { char s[256]; };
+
+static inline int
+foo (int x, int y)
+{
+ switch (x)
+ {
+ case 1:
+ case 2:
+ return 3;
+ case 3:
+ case 4:
+ return 2;
+ case 5:
+ switch (y)
+ {
+ case 4:
+ return 1;
+ }
+ }
+ return 0;
+}
+
+void
+bar (struct S *x, int *y, int *z, int **w)
+{
+ switch (*y ? x->s[*y] : foo (y[1], y[0]))
+ {
+ case 3:
+ if (y + 2 == z)
+ for (;;)
+ {
+ y += 2;
+ switch (*y ? x->s[*y] : foo (y[1], y[0]))
+ {
+ case 6:
+ break;
+ default:
+ *w = y;
+ }
+ if (y == z)
+ break;
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr42327.c b/gcc/testsuite/gcc.dg/tree-ssa/pr42327.c
new file mode 100644
index 00000000000..c0d3811b249
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr42327.c
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fcheck-data-deps" } */
+
+void foo(char *str)
+{
+ while (*str != 0) *str++ = 0;
+}
diff --git a/gcc/testsuite/gcc.target/ia64/pr43897.c b/gcc/testsuite/gcc.target/ia64/pr43897.c
new file mode 100644
index 00000000000..fb73e86923a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/ia64/pr43897.c
@@ -0,0 +1,12 @@
+/* PR target/43897 */
+/* { dg-do assemble } */
+/* { dg-options "-O2" } */
+
+int
+sub (int i)
+{
+ float tmp;
+ if (i)
+ __asm__ __volatile__ ("frcpa.s0 %0,p1=f0,f0":"=f" (tmp)::"p1");
+ return i + 10;
+}
diff --git a/gcc/testsuite/gfortran.dg/internal_dummy_2.f08 b/gcc/testsuite/gfortran.dg/internal_dummy_2.f08
index c6adcc57d72..7ec6ad4c648 100644
--- a/gcc/testsuite/gfortran.dg/internal_dummy_2.f08
+++ b/gcc/testsuite/gfortran.dg/internal_dummy_2.f08
@@ -1,5 +1,5 @@
! { dg-do run }
-! [ dg-options "-std=f2008" }
+! { dg-options "-std=f2008 -fall-intrinsics" }
! PR fortran/34162
! Internal procedures as actual arguments (like restricted closures).
diff --git a/gcc/testsuite/gfortran.dg/internal_dummy_3.f08 b/gcc/testsuite/gfortran.dg/internal_dummy_3.f08
index b5a50ee6c6c..9780c27b3b4 100644
--- a/gcc/testsuite/gfortran.dg/internal_dummy_3.f08
+++ b/gcc/testsuite/gfortran.dg/internal_dummy_3.f08
@@ -1,5 +1,5 @@
! { dg-do run }
-! [ dg-options "-std=f2008" }
+! { dg-options "-std=f2008 -fall-intrinsics" }
! PR fortran/34162
! Internal procedures as actual arguments (like restricted closures).
diff --git a/gcc/testsuite/objc.dg/foreach-8.m b/gcc/testsuite/objc.dg/foreach-8.m
new file mode 100644
index 00000000000..9a68e9ffb05
--- /dev/null
+++ b/gcc/testsuite/objc.dg/foreach-8.m
@@ -0,0 +1,51 @@
+/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */
+/* { dg-options "-Wall" } */
+/* { dg-do compile } */
+
+/* Test that fast enumeration loops where the iterating variable is declared
+ but not used do not generate warnings. */
+
+/*
+struct __objcFastEnumerationState
+{
+ unsigned long state;
+ id *itemsPtr;
+ unsigned long *mutationsPtr;
+ unsigned long extra[5];
+};
+*/
+@interface Object
+{
+ Class isa;
+}
+- (unsigned long)countByEnumeratingWithState: (struct __objcFastEnumerationState *)state
+ objects:(id *)stackbuf
+ count:(unsigned int)len;
+- (id) enumerator;
+- (Class) classEnumerator;
+@end
+
+unsigned int count_objects_in_collection (id collection)
+{
+ unsigned int count = 0;
+
+ /* The following line should generate no warnings even with
+ -Wall. */
+ for (id object in collection)
+ count++;
+
+ return count;
+}
+
+unsigned int count_objects_in_collection_2 (id collection)
+{
+ unsigned int count = 0;
+ id object;
+
+ /* The following line should generate no warnings even with
+ -Wall. */
+ for (object in collection)
+ count++;
+
+ return count;
+}
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c
index 094d16822a9..4dfcd5cafd4 100644
--- a/gcc/tree-data-ref.c
+++ b/gcc/tree-data-ref.c
@@ -3482,6 +3482,7 @@ omega_setup_subscript (tree access_fun_a, tree access_fun_b,
tree fun_a = chrec_convert (type, access_fun_a, NULL);
tree fun_b = chrec_convert (type, access_fun_b, NULL);
tree difference = chrec_fold_minus (type, fun_a, fun_b);
+ tree minus_one;
/* When the fun_a - fun_b is not constant, the dependence is not
captured by the classic distance vector representation. */
@@ -3496,7 +3497,8 @@ omega_setup_subscript (tree access_fun_a, tree access_fun_b,
return true;
}
- fun_b = chrec_fold_multiply (type, fun_b, integer_minus_one_node);
+ minus_one = build_int_cst (type, -1);
+ fun_b = chrec_fold_multiply (type, fun_b, minus_one);
eq = omega_add_zero_eq (pb, omega_black);
if (!init_omega_eq_with_af (pb, eq, DDR_NB_LOOPS (ddr), fun_a, ddr)
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 97a9869d31e..def733fe466 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -3496,16 +3496,37 @@ estimate_num_insns (gimple stmt, eni_weights *weights)
/* Do not special case builtins where we see the body.
This just confuse inliner. */
if (!decl || cgraph_node (decl)->analyzed)
- cost = weights->call_cost;
+ ;
/* For buitins that are likely expanded to nothing or
inlined do not account operand costs. */
else if (is_simple_builtin (decl))
return 0;
else if (is_inexpensive_builtin (decl))
return weights->target_builtin_call_cost;
- else
- cost = weights->call_cost;
+ else if (DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL)
+ {
+ /* We canonicalize x * x to pow (x, 2.0) with -ffast-math, so
+ specialize the cheap expansion we do here.
+ ??? This asks for a more general solution. */
+ switch (DECL_FUNCTION_CODE (decl))
+ {
+ case BUILT_IN_POW:
+ case BUILT_IN_POWF:
+ case BUILT_IN_POWL:
+ if (TREE_CODE (gimple_call_arg (stmt, 1)) == REAL_CST
+ && REAL_VALUES_EQUAL
+ (TREE_REAL_CST (gimple_call_arg (stmt, 1)), dconst2))
+ return estimate_operator_cost (MULT_EXPR, weights,
+ gimple_call_arg (stmt, 0),
+ gimple_call_arg (stmt, 0));
+ break;
+
+ default:
+ break;
+ }
+ }
+ cost = weights->call_cost;
if (decl)
funtype = TREE_TYPE (decl);
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index a0d16883398..25ef2f29454 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -1202,7 +1202,7 @@ separate_decls_in_region (edge entry, edge exit, htab_t reduction_list,
{
/* Create the type for the structure to store the ssa names to. */
type = lang_hooks.types.make_type (RECORD_TYPE);
- type_name = build_decl (BUILTINS_LOCATION,
+ type_name = build_decl (UNKNOWN_LOCATION,
TYPE_DECL, create_tmp_var_name (".paral_data"),
type);
TYPE_NAME (type) = type_name;
@@ -1269,7 +1269,7 @@ parallelized_function_p (tree fn)
a parallelized loop. */
static tree
-create_loop_fn (void)
+create_loop_fn (location_t loc)
{
char buf[100];
char *tname;
@@ -1283,8 +1283,7 @@ create_loop_fn (void)
name = get_identifier (tname);
type = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE);
- decl = build_decl (BUILTINS_LOCATION,
- FUNCTION_DECL, name, type);
+ decl = build_decl (loc, FUNCTION_DECL, name, type);
if (!parallelized_functions)
parallelized_functions = BITMAP_GGC_ALLOC ();
bitmap_set_bit (parallelized_functions, DECL_UID (decl));
@@ -1299,14 +1298,12 @@ create_loop_fn (void)
DECL_CONTEXT (decl) = NULL_TREE;
DECL_INITIAL (decl) = make_node (BLOCK);
- t = build_decl (BUILTINS_LOCATION,
- RESULT_DECL, NULL_TREE, void_type_node);
+ t = build_decl (loc, RESULT_DECL, NULL_TREE, void_type_node);
DECL_ARTIFICIAL (t) = 1;
DECL_IGNORED_P (t) = 1;
DECL_RESULT (decl) = t;
- t = build_decl (BUILTINS_LOCATION,
- PARM_DECL, get_identifier (".paral_data_param"),
+ t = build_decl (loc, PARM_DECL, get_identifier (".paral_data_param"),
ptr_type_node);
DECL_ARTIFICIAL (t) = 1;
DECL_ARG_TYPE (t) = ptr_type_node;
@@ -1448,7 +1445,7 @@ transform_to_exit_first_loop (struct loop *loop, htab_t reduction_list, tree nit
static basic_block
create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
- tree new_data, unsigned n_threads)
+ tree new_data, unsigned n_threads, location_t loc)
{
gimple_stmt_iterator gsi;
basic_block bb, paral_bb, for_bb, ex_bb;
@@ -1462,10 +1459,11 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
paral_bb = single_pred (bb);
gsi = gsi_last_bb (paral_bb);
- t = build_omp_clause (BUILTINS_LOCATION, OMP_CLAUSE_NUM_THREADS);
+ t = build_omp_clause (loc, OMP_CLAUSE_NUM_THREADS);
OMP_CLAUSE_NUM_THREADS_EXPR (t)
= build_int_cst (integer_type_node, n_threads);
stmt = gimple_build_omp_parallel (NULL, t, loop_fn, data);
+ gimple_set_location (stmt, loc);
gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
@@ -1488,7 +1486,9 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
/* Emit GIMPLE_OMP_RETURN for GIMPLE_OMP_PARALLEL. */
bb = split_loop_exit_edge (single_dom_exit (loop));
gsi = gsi_last_bb (bb);
- gsi_insert_after (&gsi, gimple_build_omp_return (false), GSI_NEW_STMT);
+ stmt = gimple_build_omp_return (false);
+ gimple_set_location (stmt, loc);
+ gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
/* Extract data for GIMPLE_OMP_FOR. */
gcc_assert (loop->header == single_dom_exit (loop)->src);
@@ -1538,10 +1538,11 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
/* Emit GIMPLE_OMP_FOR. */
gimple_cond_set_lhs (cond_stmt, cvar_base);
type = TREE_TYPE (cvar);
- t = build_omp_clause (BUILTINS_LOCATION, OMP_CLAUSE_SCHEDULE);
+ t = build_omp_clause (loc, OMP_CLAUSE_SCHEDULE);
OMP_CLAUSE_SCHEDULE_KIND (t) = OMP_CLAUSE_SCHEDULE_STATIC;
for_stmt = gimple_build_omp_for (NULL, t, 1, NULL);
+ gimple_set_location (for_stmt, loc);
gimple_omp_for_set_index (for_stmt, 0, initvar);
gimple_omp_for_set_initial (for_stmt, 0, cvar_init);
gimple_omp_for_set_final (for_stmt, 0, gimple_cond_rhs (cond_stmt));
@@ -1557,12 +1558,15 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
/* Emit GIMPLE_OMP_CONTINUE. */
gsi = gsi_last_bb (loop->latch);
stmt = gimple_build_omp_continue (cvar_next, cvar);
+ gimple_set_location (stmt, loc);
gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
SSA_NAME_DEF_STMT (cvar_next) = stmt;
/* Emit GIMPLE_OMP_RETURN for GIMPLE_OMP_FOR. */
gsi = gsi_last_bb (ex_bb);
- gsi_insert_after (&gsi, gimple_build_omp_return (true), GSI_NEW_STMT);
+ stmt = gimple_build_omp_return (true);
+ gimple_set_location (stmt, loc);
+ gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
return paral_bb;
}
@@ -1585,6 +1589,8 @@ gen_parallel_loop (struct loop *loop, htab_t reduction_list,
edge entry, exit;
struct clsn_data clsn_data;
unsigned prob;
+ location_t loc;
+ gimple cond_stmt;
/* From
@@ -1696,8 +1702,12 @@ gen_parallel_loop (struct loop *loop, htab_t reduction_list,
&new_arg_struct, &clsn_data);
/* Create the parallel constructs. */
- parallel_head = create_parallel_loop (loop, create_loop_fn (), arg_struct,
- new_arg_struct, n_threads);
+ loc = UNKNOWN_LOCATION;
+ cond_stmt = last_stmt (loop->header);
+ if (cond_stmt)
+ loc = gimple_location (cond_stmt);
+ parallel_head = create_parallel_loop (loop, create_loop_fn (loc), arg_struct,
+ new_arg_struct, n_threads, loc);
if (htab_elements (reduction_list) > 0)
create_call_for_reduction (loop, reduction_list, &clsn_data);
diff --git a/gcc/tree-ssa-copyrename.c b/gcc/tree-ssa-copyrename.c
index 41d43a6179c..abee6b9407f 100644
--- a/gcc/tree-ssa-copyrename.c
+++ b/gcc/tree-ssa-copyrename.c
@@ -226,11 +226,11 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
ign2 = false;
}
- /* Don't coalesce if the two variables aren't type compatible. */
- if (!types_compatible_p (TREE_TYPE (root1), TREE_TYPE (root2)))
+ /* Don't coalesce if the two variables are not of the same type. */
+ if (TREE_TYPE (root1) != TREE_TYPE (root2))
{
if (debug)
- fprintf (debug, " : Incompatible types. No coalesce.\n");
+ fprintf (debug, " : Different types. No coalesce.\n");
return false;
}
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c
index 435c014ea7c..ed9b7a9d546 100644
--- a/gcc/tree-ssa-math-opts.c
+++ b/gcc/tree-ssa-math-opts.c
@@ -1707,7 +1707,8 @@ execute_optimize_widening_mul (void)
default:;
}
}
- else if (is_gimple_call (stmt))
+ else if (is_gimple_call (stmt)
+ && gimple_call_lhs (stmt))
{
tree fndecl = gimple_call_fndecl (stmt);
if (fndecl
@@ -1726,6 +1727,7 @@ execute_optimize_widening_mul (void)
gimple_call_arg (stmt, 0),
gimple_call_arg (stmt, 0)))
{
+ unlink_stmt_vdef (stmt);
gsi_remove (&gsi, true);
release_defs (stmt);
if (gimple_purge_dead_eh_edges (bb))
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 2c92c37bcce..9a94df4b7f7 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -2918,7 +2918,14 @@ vect_create_addr_base_for_vector_ref (gimple stmt,
if (DR_PTR_INFO (dr)
&& TREE_CODE (vec_stmt) == SSA_NAME)
- duplicate_ssa_name_ptr_info (vec_stmt, DR_PTR_INFO (dr));
+ {
+ duplicate_ssa_name_ptr_info (vec_stmt, DR_PTR_INFO (dr));
+ if (offset)
+ {
+ SSA_NAME_PTR_INFO (vec_stmt)->align = 1;
+ SSA_NAME_PTR_INFO (vec_stmt)->misalign = 0;
+ }
+ }
if (vect_print_dump_info (REPORT_DETAILS))
{
@@ -3308,7 +3315,11 @@ bump_vector_ptr (tree dataref_ptr, gimple ptr_incr, gimple_stmt_iterator *gsi,
/* Copy the points-to information if it exists. */
if (DR_PTR_INFO (dr))
- duplicate_ssa_name_ptr_info (new_dataref_ptr, DR_PTR_INFO (dr));
+ {
+ duplicate_ssa_name_ptr_info (new_dataref_ptr, DR_PTR_INFO (dr));
+ SSA_NAME_PTR_INFO (new_dataref_ptr)->align = 1;
+ SSA_NAME_PTR_INFO (new_dataref_ptr)->misalign = 0;
+ }
if (!ptr_incr)
return new_dataref_ptr;
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 16e463806f9..81b6b6e7f80 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,10 @@
+2010-12-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * configure.ac (libffi_cv_as_ascii_pseudo_op): Use double
+ backslashes.
+ (libffi_cv_as_string_pseudo_op): Likewise.
+ * configure: Regenerate.
+
2010-12-03 Chung-Lin Tang <cltang@codesourcery.com>
* src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive.
diff --git a/libffi/configure b/libffi/configure
index 05e58b0cc70..0db3728360a 100755
--- a/libffi/configure
+++ b/libffi/configure
@@ -12423,7 +12423,7 @@ else
# Check if we have .ascii
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-asm (".ascii \"string\"");
+asm (".ascii \\"string\\"");
int
main ()
{
@@ -12458,7 +12458,7 @@ else
# Check if we have .string
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-asm (".string \"string\"");
+asm (".string \\"string\\"");
int
main ()
{
diff --git a/libffi/configure.ac b/libffi/configure.ac
index ac48c8297de..f9bde00bd30 100644
--- a/libffi/configure.ac
+++ b/libffi/configure.ac
@@ -282,7 +282,7 @@ if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64
libffi_cv_as_ascii_pseudo_op, [
libffi_cv_as_ascii_pseudo_op=unknown
# Check if we have .ascii
- AC_TRY_COMPILE([asm (".ascii \"string\"");],,
+ AC_TRY_COMPILE([asm (".ascii \\"string\\"");],,
[libffi_cv_as_ascii_pseudo_op=yes],
[libffi_cv_as_ascii_pseudo_op=no])
])
@@ -295,7 +295,7 @@ if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64
libffi_cv_as_string_pseudo_op, [
libffi_cv_as_string_pseudo_op=unknown
# Check if we have .string
- AC_TRY_COMPILE([asm (".string \"string\"");],,
+ AC_TRY_COMPILE([asm (".string \\"string\\"");],,
[libffi_cv_as_string_pseudo_op=yes],
[libffi_cv_as_string_pseudo_op=no])
])
diff --git a/libgo/LICENSE b/libgo/LICENSE
index d77335ff888..6a66aea5eaf 100644
--- a/libgo/LICENSE
+++ b/libgo/LICENSE
@@ -1,42 +1,27 @@
-// Copyright (c) 2009 The Go Authors. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Subject to the terms and conditions of this License, Google hereby
-// grants to You a perpetual, worldwide, non-exclusive, no-charge,
-// royalty-free, irrevocable (except as stated in this section) patent
-// license to make, have made, use, offer to sell, sell, import, and
-// otherwise transfer this implementation of Go, where such license
-// applies only to those patent claims licensable by Google that are
-// necessarily infringed by use of this implementation of Go. If You
-// institute patent litigation against any entity (including a
-// cross-claim or counterclaim in a lawsuit) alleging that this
-// implementation of Go or a Contribution incorporated within this
-// implementation of Go constitutes direct or contributory patent
-// infringement, then any patent licenses granted to You under this
-// License for this implementation of Go shall terminate as of the date
-// such litigation is filed.
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/libgo/Makefile.am b/libgo/Makefile.am
index 1e972648715..d73af0d7a79 100644
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -15,6 +15,8 @@ endif
SUBDIRS = ${subdirs}
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+
MAINT_CHARSET = latin1
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
@@ -95,7 +97,9 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
toolexeclib_LTLIBRARIES = libgo.la
toolexeclib_LIBRARIES = libgobegin.a
-toolexeclib_DATA = \
+toolexeclibgodir = $(toolexeclibdir)/go/$(gcc_version)/$(target_alias)
+
+toolexeclibgo_DATA = \
asn1.gox \
big.gox \
bufio.gox \
@@ -145,30 +149,30 @@ toolexeclib_DATA = \
websocket.gox \
xml.gox
-toolexeclibarchivedir = $(toolexeclibdir)/archive
+toolexeclibgoarchivedir = $(toolexeclibgodir)/archive
-toolexeclibarchive_DATA = \
+toolexeclibgoarchive_DATA = \
archive/tar.gox \
archive/zip.gox
-toolexeclibcompressdir = $(toolexeclibdir)/compress
+toolexeclibgocompressdir = $(toolexeclibgodir)/compress
-toolexeclibcompress_DATA = \
+toolexeclibgocompress_DATA = \
compress/flate.gox \
compress/gzip.gox \
compress/zlib.gox
-toolexeclibcontainerdir = $(toolexeclibdir)/container
+toolexeclibgocontainerdir = $(toolexeclibgodir)/container
-toolexeclibcontainer_DATA = \
+toolexeclibgocontainer_DATA = \
container/heap.gox \
container/list.gox \
container/ring.gox \
container/vector.gox
-toolexeclibcryptodir = $(toolexeclibdir)/crypto
+toolexeclibgocryptodir = $(toolexeclibgodir)/crypto
-toolexeclibcrypto_DATA = \
+toolexeclibgocrypto_DATA = \
crypto/aes.gox \
crypto/block.gox \
crypto/blowfish.gox \
@@ -189,9 +193,9 @@ toolexeclibcrypto_DATA = \
crypto/x509.gox \
crypto/xtea.gox
-toolexeclibdebugdir = $(toolexeclibdir)/debug
+toolexeclibgodebugdir = $(toolexeclibgodir)/debug
-toolexeclibdebug_DATA = \
+toolexeclibgodebug_DATA = \
debug/dwarf.gox \
debug/elf.gox \
debug/gosym.gox \
@@ -199,9 +203,9 @@ toolexeclibdebug_DATA = \
debug/pe.gox \
debug/proc.gox
-toolexeclibencodingdir = $(toolexeclibdir)/encoding
+toolexeclibgoencodingdir = $(toolexeclibgodir)/encoding
-toolexeclibencoding_DATA = \
+toolexeclibgoencoding_DATA = \
encoding/ascii85.gox \
encoding/base64.gox \
encoding/binary.gox \
@@ -209,16 +213,16 @@ toolexeclibencoding_DATA = \
encoding/hex.gox \
encoding/pem.gox
-toolexeclibexpdir = $(toolexeclibdir)/exp
+toolexeclibgoexpdir = $(toolexeclibgodir)/exp
-toolexeclibexp_DATA = \
+toolexeclibgoexp_DATA = \
exp/datafmt.gox \
exp/draw.gox \
exp/eval.gox
-toolexeclibgodir = $(toolexeclibdir)/go
+toolexeclibgogodir = $(toolexeclibgodir)/go
-toolexeclibgo_DATA = \
+toolexeclibgogo_DATA = \
go/ast.gox \
go/doc.gox \
go/parser.gox \
@@ -227,63 +231,63 @@ toolexeclibgo_DATA = \
go/token.gox \
go/typechecker.gox
-toolexeclibhashdir = $(toolexeclibdir)/hash
+toolexeclibgohashdir = $(toolexeclibgodir)/hash
-toolexeclibhash_DATA = \
+toolexeclibgohash_DATA = \
hash/adler32.gox \
hash/crc32.gox \
hash/crc64.gox
-toolexeclibhttpdir = $(toolexeclibdir)/http
+toolexeclibgohttpdir = $(toolexeclibgodir)/http
-toolexeclibhttp_DATA = \
+toolexeclibgohttp_DATA = \
http/pprof.gox
-toolexeclibimagedir = $(toolexeclibdir)/image
+toolexeclibgoimagedir = $(toolexeclibgodir)/image
-toolexeclibimage_DATA = \
+toolexeclibgoimage_DATA = \
image/jpeg.gox \
image/png.gox
-toolexeclibindexdir = $(toolexeclibdir)/index
+toolexeclibgoindexdir = $(toolexeclibgodir)/index
-toolexeclibindex_DATA = \
+toolexeclibgoindex_DATA = \
index/suffixarray.gox
-toolexeclibiodir = $(toolexeclibdir)/io
+toolexeclibgoiodir = $(toolexeclibgodir)/io
-toolexeclibio_DATA = \
+toolexeclibgoio_DATA = \
io/ioutil.gox
-toolexeclibmimedir = $(toolexeclibdir)/mime
+toolexeclibgomimedir = $(toolexeclibgodir)/mime
-toolexeclibmime_DATA = \
+toolexeclibgomime_DATA = \
mime/multipart.gox
-toolexeclibnetdir = $(toolexeclibdir)/net
+toolexeclibgonetdir = $(toolexeclibgodir)/net
-toolexeclibnet_DATA = \
+toolexeclibgonet_DATA = \
net/dict.gox \
net/textproto.gox
-toolexeclibosdir = $(toolexeclibdir)/os
+toolexeclibgoosdir = $(toolexeclibgodir)/os
-toolexeclibos_DATA = \
+toolexeclibgoos_DATA = \
os/signal.gox
-toolexeclibrpcdir = $(toolexeclibdir)/rpc
+toolexeclibgorpcdir = $(toolexeclibgodir)/rpc
-toolexeclibrpc_DATA = \
+toolexeclibgorpc_DATA = \
rpc/jsonrpc.gox
-toolexeclibruntimedir = $(toolexeclibdir)/runtime
+toolexeclibgoruntimedir = $(toolexeclibgodir)/runtime
-toolexeclibruntime_DATA = \
+toolexeclibgoruntime_DATA = \
runtime/pprof.gox
-toolexeclibtestingdir = $(toolexeclibdir)/testing
+toolexeclibgotestingdir = $(toolexeclibgodir)/testing
-toolexeclibtesting_DATA = \
+toolexeclibgotesting_DATA = \
testing/iotest.gox \
testing/quick.gox \
testing/script.gox
diff --git a/libgo/Makefile.in b/libgo/Makefile.in
index f3c7a8999de..b2c6a75a2cc 100644
--- a/libgo/Makefile.in
+++ b/libgo/Makefile.in
@@ -92,26 +92,26 @@ am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \
- "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" \
- "$(DESTDIR)$(toolexeclibarchivedir)" \
- "$(DESTDIR)$(toolexeclibcompressdir)" \
- "$(DESTDIR)$(toolexeclibcontainerdir)" \
- "$(DESTDIR)$(toolexeclibcryptodir)" \
- "$(DESTDIR)$(toolexeclibdebugdir)" \
- "$(DESTDIR)$(toolexeclibencodingdir)" \
- "$(DESTDIR)$(toolexeclibexpdir)" \
- "$(DESTDIR)$(toolexeclibgodir)" \
- "$(DESTDIR)$(toolexeclibhashdir)" \
- "$(DESTDIR)$(toolexeclibhttpdir)" \
- "$(DESTDIR)$(toolexeclibimagedir)" \
- "$(DESTDIR)$(toolexeclibindexdir)" \
- "$(DESTDIR)$(toolexeclibiodir)" \
- "$(DESTDIR)$(toolexeclibmimedir)" \
- "$(DESTDIR)$(toolexeclibnetdir)" \
- "$(DESTDIR)$(toolexeclibosdir)" \
- "$(DESTDIR)$(toolexeclibrpcdir)" \
- "$(DESTDIR)$(toolexeclibruntimedir)" \
- "$(DESTDIR)$(toolexeclibtestingdir)"
+ "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibgodir)" \
+ "$(DESTDIR)$(toolexeclibgoarchivedir)" \
+ "$(DESTDIR)$(toolexeclibgocompressdir)" \
+ "$(DESTDIR)$(toolexeclibgocontainerdir)" \
+ "$(DESTDIR)$(toolexeclibgocryptodir)" \
+ "$(DESTDIR)$(toolexeclibgodebugdir)" \
+ "$(DESTDIR)$(toolexeclibgoencodingdir)" \
+ "$(DESTDIR)$(toolexeclibgoexpdir)" \
+ "$(DESTDIR)$(toolexeclibgogodir)" \
+ "$(DESTDIR)$(toolexeclibgohashdir)" \
+ "$(DESTDIR)$(toolexeclibgohttpdir)" \
+ "$(DESTDIR)$(toolexeclibgoimagedir)" \
+ "$(DESTDIR)$(toolexeclibgoindexdir)" \
+ "$(DESTDIR)$(toolexeclibgoiodir)" \
+ "$(DESTDIR)$(toolexeclibgomimedir)" \
+ "$(DESTDIR)$(toolexeclibgonetdir)" \
+ "$(DESTDIR)$(toolexeclibgoosdir)" \
+ "$(DESTDIR)$(toolexeclibgorpcdir)" \
+ "$(DESTDIR)$(toolexeclibgoruntimedir)" \
+ "$(DESTDIR)$(toolexeclibgotestingdir)"
LIBRARIES = $(toolexeclib_LIBRARIES)
ARFLAGS = cru
libgobegin_a_AR = $(AR) $(ARFLAGS)
@@ -228,16 +228,16 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
-DATA = $(toolexeclib_DATA) $(toolexeclibarchive_DATA) \
- $(toolexeclibcompress_DATA) $(toolexeclibcontainer_DATA) \
- $(toolexeclibcrypto_DATA) $(toolexeclibdebug_DATA) \
- $(toolexeclibencoding_DATA) $(toolexeclibexp_DATA) \
- $(toolexeclibgo_DATA) $(toolexeclibhash_DATA) \
- $(toolexeclibhttp_DATA) $(toolexeclibimage_DATA) \
- $(toolexeclibindex_DATA) $(toolexeclibio_DATA) \
- $(toolexeclibmime_DATA) $(toolexeclibnet_DATA) \
- $(toolexeclibos_DATA) $(toolexeclibrpc_DATA) \
- $(toolexeclibruntime_DATA) $(toolexeclibtesting_DATA)
+DATA = $(toolexeclibgo_DATA) $(toolexeclibgoarchive_DATA) \
+ $(toolexeclibgocompress_DATA) $(toolexeclibgocontainer_DATA) \
+ $(toolexeclibgocrypto_DATA) $(toolexeclibgodebug_DATA) \
+ $(toolexeclibgoencoding_DATA) $(toolexeclibgoexp_DATA) \
+ $(toolexeclibgogo_DATA) $(toolexeclibgohash_DATA) \
+ $(toolexeclibgohttp_DATA) $(toolexeclibgoimage_DATA) \
+ $(toolexeclibgoindex_DATA) $(toolexeclibgoio_DATA) \
+ $(toolexeclibgomime_DATA) $(toolexeclibgonet_DATA) \
+ $(toolexeclibgoos_DATA) $(toolexeclibgorpc_DATA) \
+ $(toolexeclibgoruntime_DATA) $(toolexeclibgotesting_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -420,6 +420,7 @@ top_srcdir = @top_srcdir@
SUFFIXES = .c .go .gox .o .obj .lo .a
@LIBGO_IS_RTEMS_TRUE@subdirs = testsuite
SUBDIRS = ${subdirs}
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
MAINT_CHARSET = latin1
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
PWD_COMMAND = $${PWDCMD-pwd}
@@ -489,7 +490,8 @@ AM_MAKEFLAGS = \
FLAGS_TO_PASS = $(AM_MAKEFLAGS)
toolexeclib_LTLIBRARIES = libgo.la
toolexeclib_LIBRARIES = libgobegin.a
-toolexeclib_DATA = \
+toolexeclibgodir = $(toolexeclibdir)/go/$(gcc_version)/$(target_alias)
+toolexeclibgo_DATA = \
asn1.gox \
big.gox \
bufio.gox \
@@ -539,26 +541,26 @@ toolexeclib_DATA = \
websocket.gox \
xml.gox
-toolexeclibarchivedir = $(toolexeclibdir)/archive
-toolexeclibarchive_DATA = \
+toolexeclibgoarchivedir = $(toolexeclibgodir)/archive
+toolexeclibgoarchive_DATA = \
archive/tar.gox \
archive/zip.gox
-toolexeclibcompressdir = $(toolexeclibdir)/compress
-toolexeclibcompress_DATA = \
+toolexeclibgocompressdir = $(toolexeclibgodir)/compress
+toolexeclibgocompress_DATA = \
compress/flate.gox \
compress/gzip.gox \
compress/zlib.gox
-toolexeclibcontainerdir = $(toolexeclibdir)/container
-toolexeclibcontainer_DATA = \
+toolexeclibgocontainerdir = $(toolexeclibgodir)/container
+toolexeclibgocontainer_DATA = \
container/heap.gox \
container/list.gox \
container/ring.gox \
container/vector.gox
-toolexeclibcryptodir = $(toolexeclibdir)/crypto
-toolexeclibcrypto_DATA = \
+toolexeclibgocryptodir = $(toolexeclibgodir)/crypto
+toolexeclibgocrypto_DATA = \
crypto/aes.gox \
crypto/block.gox \
crypto/blowfish.gox \
@@ -579,8 +581,8 @@ toolexeclibcrypto_DATA = \
crypto/x509.gox \
crypto/xtea.gox
-toolexeclibdebugdir = $(toolexeclibdir)/debug
-toolexeclibdebug_DATA = \
+toolexeclibgodebugdir = $(toolexeclibgodir)/debug
+toolexeclibgodebug_DATA = \
debug/dwarf.gox \
debug/elf.gox \
debug/gosym.gox \
@@ -588,8 +590,8 @@ toolexeclibdebug_DATA = \
debug/pe.gox \
debug/proc.gox
-toolexeclibencodingdir = $(toolexeclibdir)/encoding
-toolexeclibencoding_DATA = \
+toolexeclibgoencodingdir = $(toolexeclibgodir)/encoding
+toolexeclibgoencoding_DATA = \
encoding/ascii85.gox \
encoding/base64.gox \
encoding/binary.gox \
@@ -597,14 +599,14 @@ toolexeclibencoding_DATA = \
encoding/hex.gox \
encoding/pem.gox
-toolexeclibexpdir = $(toolexeclibdir)/exp
-toolexeclibexp_DATA = \
+toolexeclibgoexpdir = $(toolexeclibgodir)/exp
+toolexeclibgoexp_DATA = \
exp/datafmt.gox \
exp/draw.gox \
exp/eval.gox
-toolexeclibgodir = $(toolexeclibdir)/go
-toolexeclibgo_DATA = \
+toolexeclibgogodir = $(toolexeclibgodir)/go
+toolexeclibgogo_DATA = \
go/ast.gox \
go/doc.gox \
go/parser.gox \
@@ -613,52 +615,52 @@ toolexeclibgo_DATA = \
go/token.gox \
go/typechecker.gox
-toolexeclibhashdir = $(toolexeclibdir)/hash
-toolexeclibhash_DATA = \
+toolexeclibgohashdir = $(toolexeclibgodir)/hash
+toolexeclibgohash_DATA = \
hash/adler32.gox \
hash/crc32.gox \
hash/crc64.gox
-toolexeclibhttpdir = $(toolexeclibdir)/http
-toolexeclibhttp_DATA = \
+toolexeclibgohttpdir = $(toolexeclibgodir)/http
+toolexeclibgohttp_DATA = \
http/pprof.gox
-toolexeclibimagedir = $(toolexeclibdir)/image
-toolexeclibimage_DATA = \
+toolexeclibgoimagedir = $(toolexeclibgodir)/image
+toolexeclibgoimage_DATA = \
image/jpeg.gox \
image/png.gox
-toolexeclibindexdir = $(toolexeclibdir)/index
-toolexeclibindex_DATA = \
+toolexeclibgoindexdir = $(toolexeclibgodir)/index
+toolexeclibgoindex_DATA = \
index/suffixarray.gox
-toolexeclibiodir = $(toolexeclibdir)/io
-toolexeclibio_DATA = \
+toolexeclibgoiodir = $(toolexeclibgodir)/io
+toolexeclibgoio_DATA = \
io/ioutil.gox
-toolexeclibmimedir = $(toolexeclibdir)/mime
-toolexeclibmime_DATA = \
+toolexeclibgomimedir = $(toolexeclibgodir)/mime
+toolexeclibgomime_DATA = \
mime/multipart.gox
-toolexeclibnetdir = $(toolexeclibdir)/net
-toolexeclibnet_DATA = \
+toolexeclibgonetdir = $(toolexeclibgodir)/net
+toolexeclibgonet_DATA = \
net/dict.gox \
net/textproto.gox
-toolexeclibosdir = $(toolexeclibdir)/os
-toolexeclibos_DATA = \
+toolexeclibgoosdir = $(toolexeclibgodir)/os
+toolexeclibgoos_DATA = \
os/signal.gox
-toolexeclibrpcdir = $(toolexeclibdir)/rpc
-toolexeclibrpc_DATA = \
+toolexeclibgorpcdir = $(toolexeclibgodir)/rpc
+toolexeclibgorpc_DATA = \
rpc/jsonrpc.gox
-toolexeclibruntimedir = $(toolexeclibdir)/runtime
-toolexeclibruntime_DATA = \
+toolexeclibgoruntimedir = $(toolexeclibgodir)/runtime
+toolexeclibgoruntime_DATA = \
runtime/pprof.gox
-toolexeclibtestingdir = $(toolexeclibdir)/testing
-toolexeclibtesting_DATA = \
+toolexeclibgotestingdir = $(toolexeclibgodir)/testing
+toolexeclibgotesting_DATA = \
testing/iotest.gox \
testing/quick.gox \
testing/script.gox
@@ -2656,406 +2658,406 @@ distclean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
maintainer-clean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE)
-install-toolexeclibDATA: $(toolexeclib_DATA)
+install-toolexeclibgoDATA: $(toolexeclibgo_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)"
- @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \
+ test -z "$(toolexeclibgodir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgodir)"
+ @list='$(toolexeclibgo_DATA)'; test -n "$(toolexeclibgodir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgodir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgodir)" || exit $$?; \
done
-uninstall-toolexeclibDATA:
+uninstall-toolexeclibgoDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \
+ @list='$(toolexeclibgo_DATA)'; test -n "$(toolexeclibgodir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibdir)" && rm -f $$files
-install-toolexeclibarchiveDATA: $(toolexeclibarchive_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgodir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgodir)" && rm -f $$files
+install-toolexeclibgoarchiveDATA: $(toolexeclibgoarchive_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibarchivedir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibarchivedir)"
- @list='$(toolexeclibarchive_DATA)'; test -n "$(toolexeclibarchivedir)" || list=; \
+ test -z "$(toolexeclibgoarchivedir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoarchivedir)"
+ @list='$(toolexeclibgoarchive_DATA)'; test -n "$(toolexeclibgoarchivedir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibarchivedir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibarchivedir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoarchivedir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoarchivedir)" || exit $$?; \
done
-uninstall-toolexeclibarchiveDATA:
+uninstall-toolexeclibgoarchiveDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibarchive_DATA)'; test -n "$(toolexeclibarchivedir)" || list=; \
+ @list='$(toolexeclibgoarchive_DATA)'; test -n "$(toolexeclibgoarchivedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibarchivedir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibarchivedir)" && rm -f $$files
-install-toolexeclibcompressDATA: $(toolexeclibcompress_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgoarchivedir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgoarchivedir)" && rm -f $$files
+install-toolexeclibgocompressDATA: $(toolexeclibgocompress_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibcompressdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibcompressdir)"
- @list='$(toolexeclibcompress_DATA)'; test -n "$(toolexeclibcompressdir)" || list=; \
+ test -z "$(toolexeclibgocompressdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgocompressdir)"
+ @list='$(toolexeclibgocompress_DATA)'; test -n "$(toolexeclibgocompressdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibcompressdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibcompressdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgocompressdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgocompressdir)" || exit $$?; \
done
-uninstall-toolexeclibcompressDATA:
+uninstall-toolexeclibgocompressDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibcompress_DATA)'; test -n "$(toolexeclibcompressdir)" || list=; \
+ @list='$(toolexeclibgocompress_DATA)'; test -n "$(toolexeclibgocompressdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibcompressdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibcompressdir)" && rm -f $$files
-install-toolexeclibcontainerDATA: $(toolexeclibcontainer_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgocompressdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgocompressdir)" && rm -f $$files
+install-toolexeclibgocontainerDATA: $(toolexeclibgocontainer_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibcontainerdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibcontainerdir)"
- @list='$(toolexeclibcontainer_DATA)'; test -n "$(toolexeclibcontainerdir)" || list=; \
+ test -z "$(toolexeclibgocontainerdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgocontainerdir)"
+ @list='$(toolexeclibgocontainer_DATA)'; test -n "$(toolexeclibgocontainerdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibcontainerdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibcontainerdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgocontainerdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgocontainerdir)" || exit $$?; \
done
-uninstall-toolexeclibcontainerDATA:
+uninstall-toolexeclibgocontainerDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibcontainer_DATA)'; test -n "$(toolexeclibcontainerdir)" || list=; \
+ @list='$(toolexeclibgocontainer_DATA)'; test -n "$(toolexeclibgocontainerdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibcontainerdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibcontainerdir)" && rm -f $$files
-install-toolexeclibcryptoDATA: $(toolexeclibcrypto_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgocontainerdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgocontainerdir)" && rm -f $$files
+install-toolexeclibgocryptoDATA: $(toolexeclibgocrypto_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibcryptodir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibcryptodir)"
- @list='$(toolexeclibcrypto_DATA)'; test -n "$(toolexeclibcryptodir)" || list=; \
+ test -z "$(toolexeclibgocryptodir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgocryptodir)"
+ @list='$(toolexeclibgocrypto_DATA)'; test -n "$(toolexeclibgocryptodir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibcryptodir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibcryptodir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgocryptodir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgocryptodir)" || exit $$?; \
done
-uninstall-toolexeclibcryptoDATA:
+uninstall-toolexeclibgocryptoDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibcrypto_DATA)'; test -n "$(toolexeclibcryptodir)" || list=; \
+ @list='$(toolexeclibgocrypto_DATA)'; test -n "$(toolexeclibgocryptodir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibcryptodir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibcryptodir)" && rm -f $$files
-install-toolexeclibdebugDATA: $(toolexeclibdebug_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgocryptodir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgocryptodir)" && rm -f $$files
+install-toolexeclibgodebugDATA: $(toolexeclibgodebug_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibdebugdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdebugdir)"
- @list='$(toolexeclibdebug_DATA)'; test -n "$(toolexeclibdebugdir)" || list=; \
+ test -z "$(toolexeclibgodebugdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgodebugdir)"
+ @list='$(toolexeclibgodebug_DATA)'; test -n "$(toolexeclibgodebugdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibdebugdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibdebugdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgodebugdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgodebugdir)" || exit $$?; \
done
-uninstall-toolexeclibdebugDATA:
+uninstall-toolexeclibgodebugDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibdebug_DATA)'; test -n "$(toolexeclibdebugdir)" || list=; \
+ @list='$(toolexeclibgodebug_DATA)'; test -n "$(toolexeclibgodebugdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibdebugdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibdebugdir)" && rm -f $$files
-install-toolexeclibencodingDATA: $(toolexeclibencoding_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgodebugdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgodebugdir)" && rm -f $$files
+install-toolexeclibgoencodingDATA: $(toolexeclibgoencoding_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibencodingdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibencodingdir)"
- @list='$(toolexeclibencoding_DATA)'; test -n "$(toolexeclibencodingdir)" || list=; \
+ test -z "$(toolexeclibgoencodingdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoencodingdir)"
+ @list='$(toolexeclibgoencoding_DATA)'; test -n "$(toolexeclibgoencodingdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibencodingdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibencodingdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoencodingdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoencodingdir)" || exit $$?; \
done
-uninstall-toolexeclibencodingDATA:
+uninstall-toolexeclibgoencodingDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibencoding_DATA)'; test -n "$(toolexeclibencodingdir)" || list=; \
+ @list='$(toolexeclibgoencoding_DATA)'; test -n "$(toolexeclibgoencodingdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibencodingdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibencodingdir)" && rm -f $$files
-install-toolexeclibexpDATA: $(toolexeclibexp_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgoencodingdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgoencodingdir)" && rm -f $$files
+install-toolexeclibgoexpDATA: $(toolexeclibgoexp_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibexpdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibexpdir)"
- @list='$(toolexeclibexp_DATA)'; test -n "$(toolexeclibexpdir)" || list=; \
+ test -z "$(toolexeclibgoexpdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoexpdir)"
+ @list='$(toolexeclibgoexp_DATA)'; test -n "$(toolexeclibgoexpdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibexpdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibexpdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoexpdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoexpdir)" || exit $$?; \
done
-uninstall-toolexeclibexpDATA:
+uninstall-toolexeclibgoexpDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibexp_DATA)'; test -n "$(toolexeclibexpdir)" || list=; \
+ @list='$(toolexeclibgoexp_DATA)'; test -n "$(toolexeclibgoexpdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibexpdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibexpdir)" && rm -f $$files
-install-toolexeclibgoDATA: $(toolexeclibgo_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgoexpdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgoexpdir)" && rm -f $$files
+install-toolexeclibgogoDATA: $(toolexeclibgogo_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibgodir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgodir)"
- @list='$(toolexeclibgo_DATA)'; test -n "$(toolexeclibgodir)" || list=; \
+ test -z "$(toolexeclibgogodir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgogodir)"
+ @list='$(toolexeclibgogo_DATA)'; test -n "$(toolexeclibgogodir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgodir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgodir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgogodir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgogodir)" || exit $$?; \
done
-uninstall-toolexeclibgoDATA:
+uninstall-toolexeclibgogoDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibgo_DATA)'; test -n "$(toolexeclibgodir)" || list=; \
+ @list='$(toolexeclibgogo_DATA)'; test -n "$(toolexeclibgogodir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibgodir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibgodir)" && rm -f $$files
-install-toolexeclibhashDATA: $(toolexeclibhash_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgogodir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgogodir)" && rm -f $$files
+install-toolexeclibgohashDATA: $(toolexeclibgohash_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibhashdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibhashdir)"
- @list='$(toolexeclibhash_DATA)'; test -n "$(toolexeclibhashdir)" || list=; \
+ test -z "$(toolexeclibgohashdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgohashdir)"
+ @list='$(toolexeclibgohash_DATA)'; test -n "$(toolexeclibgohashdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibhashdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibhashdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgohashdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgohashdir)" || exit $$?; \
done
-uninstall-toolexeclibhashDATA:
+uninstall-toolexeclibgohashDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibhash_DATA)'; test -n "$(toolexeclibhashdir)" || list=; \
+ @list='$(toolexeclibgohash_DATA)'; test -n "$(toolexeclibgohashdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibhashdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibhashdir)" && rm -f $$files
-install-toolexeclibhttpDATA: $(toolexeclibhttp_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgohashdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgohashdir)" && rm -f $$files
+install-toolexeclibgohttpDATA: $(toolexeclibgohttp_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibhttpdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibhttpdir)"
- @list='$(toolexeclibhttp_DATA)'; test -n "$(toolexeclibhttpdir)" || list=; \
+ test -z "$(toolexeclibgohttpdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgohttpdir)"
+ @list='$(toolexeclibgohttp_DATA)'; test -n "$(toolexeclibgohttpdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibhttpdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibhttpdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgohttpdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgohttpdir)" || exit $$?; \
done
-uninstall-toolexeclibhttpDATA:
+uninstall-toolexeclibgohttpDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibhttp_DATA)'; test -n "$(toolexeclibhttpdir)" || list=; \
+ @list='$(toolexeclibgohttp_DATA)'; test -n "$(toolexeclibgohttpdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibhttpdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibhttpdir)" && rm -f $$files
-install-toolexeclibimageDATA: $(toolexeclibimage_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgohttpdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgohttpdir)" && rm -f $$files
+install-toolexeclibgoimageDATA: $(toolexeclibgoimage_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibimagedir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibimagedir)"
- @list='$(toolexeclibimage_DATA)'; test -n "$(toolexeclibimagedir)" || list=; \
+ test -z "$(toolexeclibgoimagedir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoimagedir)"
+ @list='$(toolexeclibgoimage_DATA)'; test -n "$(toolexeclibgoimagedir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibimagedir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibimagedir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoimagedir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoimagedir)" || exit $$?; \
done
-uninstall-toolexeclibimageDATA:
+uninstall-toolexeclibgoimageDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibimage_DATA)'; test -n "$(toolexeclibimagedir)" || list=; \
+ @list='$(toolexeclibgoimage_DATA)'; test -n "$(toolexeclibgoimagedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibimagedir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibimagedir)" && rm -f $$files
-install-toolexeclibindexDATA: $(toolexeclibindex_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgoimagedir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgoimagedir)" && rm -f $$files
+install-toolexeclibgoindexDATA: $(toolexeclibgoindex_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibindexdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibindexdir)"
- @list='$(toolexeclibindex_DATA)'; test -n "$(toolexeclibindexdir)" || list=; \
+ test -z "$(toolexeclibgoindexdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoindexdir)"
+ @list='$(toolexeclibgoindex_DATA)'; test -n "$(toolexeclibgoindexdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibindexdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibindexdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoindexdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoindexdir)" || exit $$?; \
done
-uninstall-toolexeclibindexDATA:
+uninstall-toolexeclibgoindexDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibindex_DATA)'; test -n "$(toolexeclibindexdir)" || list=; \
+ @list='$(toolexeclibgoindex_DATA)'; test -n "$(toolexeclibgoindexdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibindexdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibindexdir)" && rm -f $$files
-install-toolexeclibioDATA: $(toolexeclibio_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgoindexdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgoindexdir)" && rm -f $$files
+install-toolexeclibgoioDATA: $(toolexeclibgoio_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibiodir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibiodir)"
- @list='$(toolexeclibio_DATA)'; test -n "$(toolexeclibiodir)" || list=; \
+ test -z "$(toolexeclibgoiodir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoiodir)"
+ @list='$(toolexeclibgoio_DATA)'; test -n "$(toolexeclibgoiodir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibiodir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibiodir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoiodir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoiodir)" || exit $$?; \
done
-uninstall-toolexeclibioDATA:
+uninstall-toolexeclibgoioDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibio_DATA)'; test -n "$(toolexeclibiodir)" || list=; \
+ @list='$(toolexeclibgoio_DATA)'; test -n "$(toolexeclibgoiodir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibiodir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibiodir)" && rm -f $$files
-install-toolexeclibmimeDATA: $(toolexeclibmime_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgoiodir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgoiodir)" && rm -f $$files
+install-toolexeclibgomimeDATA: $(toolexeclibgomime_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibmimedir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibmimedir)"
- @list='$(toolexeclibmime_DATA)'; test -n "$(toolexeclibmimedir)" || list=; \
+ test -z "$(toolexeclibgomimedir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgomimedir)"
+ @list='$(toolexeclibgomime_DATA)'; test -n "$(toolexeclibgomimedir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibmimedir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibmimedir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgomimedir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgomimedir)" || exit $$?; \
done
-uninstall-toolexeclibmimeDATA:
+uninstall-toolexeclibgomimeDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibmime_DATA)'; test -n "$(toolexeclibmimedir)" || list=; \
+ @list='$(toolexeclibgomime_DATA)'; test -n "$(toolexeclibgomimedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibmimedir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibmimedir)" && rm -f $$files
-install-toolexeclibnetDATA: $(toolexeclibnet_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgomimedir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgomimedir)" && rm -f $$files
+install-toolexeclibgonetDATA: $(toolexeclibgonet_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibnetdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibnetdir)"
- @list='$(toolexeclibnet_DATA)'; test -n "$(toolexeclibnetdir)" || list=; \
+ test -z "$(toolexeclibgonetdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgonetdir)"
+ @list='$(toolexeclibgonet_DATA)'; test -n "$(toolexeclibgonetdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibnetdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibnetdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgonetdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgonetdir)" || exit $$?; \
done
-uninstall-toolexeclibnetDATA:
+uninstall-toolexeclibgonetDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibnet_DATA)'; test -n "$(toolexeclibnetdir)" || list=; \
+ @list='$(toolexeclibgonet_DATA)'; test -n "$(toolexeclibgonetdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibnetdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibnetdir)" && rm -f $$files
-install-toolexeclibosDATA: $(toolexeclibos_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgonetdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgonetdir)" && rm -f $$files
+install-toolexeclibgoosDATA: $(toolexeclibgoos_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibosdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibosdir)"
- @list='$(toolexeclibos_DATA)'; test -n "$(toolexeclibosdir)" || list=; \
+ test -z "$(toolexeclibgoosdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoosdir)"
+ @list='$(toolexeclibgoos_DATA)'; test -n "$(toolexeclibgoosdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibosdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibosdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoosdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoosdir)" || exit $$?; \
done
-uninstall-toolexeclibosDATA:
+uninstall-toolexeclibgoosDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibos_DATA)'; test -n "$(toolexeclibosdir)" || list=; \
+ @list='$(toolexeclibgoos_DATA)'; test -n "$(toolexeclibgoosdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibosdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibosdir)" && rm -f $$files
-install-toolexeclibrpcDATA: $(toolexeclibrpc_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgoosdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgoosdir)" && rm -f $$files
+install-toolexeclibgorpcDATA: $(toolexeclibgorpc_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibrpcdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibrpcdir)"
- @list='$(toolexeclibrpc_DATA)'; test -n "$(toolexeclibrpcdir)" || list=; \
+ test -z "$(toolexeclibgorpcdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgorpcdir)"
+ @list='$(toolexeclibgorpc_DATA)'; test -n "$(toolexeclibgorpcdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibrpcdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibrpcdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgorpcdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgorpcdir)" || exit $$?; \
done
-uninstall-toolexeclibrpcDATA:
+uninstall-toolexeclibgorpcDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibrpc_DATA)'; test -n "$(toolexeclibrpcdir)" || list=; \
+ @list='$(toolexeclibgorpc_DATA)'; test -n "$(toolexeclibgorpcdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibrpcdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibrpcdir)" && rm -f $$files
-install-toolexeclibruntimeDATA: $(toolexeclibruntime_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgorpcdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgorpcdir)" && rm -f $$files
+install-toolexeclibgoruntimeDATA: $(toolexeclibgoruntime_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibruntimedir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibruntimedir)"
- @list='$(toolexeclibruntime_DATA)'; test -n "$(toolexeclibruntimedir)" || list=; \
+ test -z "$(toolexeclibgoruntimedir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoruntimedir)"
+ @list='$(toolexeclibgoruntime_DATA)'; test -n "$(toolexeclibgoruntimedir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibruntimedir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibruntimedir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoruntimedir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoruntimedir)" || exit $$?; \
done
-uninstall-toolexeclibruntimeDATA:
+uninstall-toolexeclibgoruntimeDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibruntime_DATA)'; test -n "$(toolexeclibruntimedir)" || list=; \
+ @list='$(toolexeclibgoruntime_DATA)'; test -n "$(toolexeclibgoruntimedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibruntimedir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibruntimedir)" && rm -f $$files
-install-toolexeclibtestingDATA: $(toolexeclibtesting_DATA)
+ echo " ( cd '$(DESTDIR)$(toolexeclibgoruntimedir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgoruntimedir)" && rm -f $$files
+install-toolexeclibgotestingDATA: $(toolexeclibgotesting_DATA)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibtestingdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibtestingdir)"
- @list='$(toolexeclibtesting_DATA)'; test -n "$(toolexeclibtestingdir)" || list=; \
+ test -z "$(toolexeclibgotestingdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgotestingdir)"
+ @list='$(toolexeclibgotesting_DATA)'; test -n "$(toolexeclibgotestingdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibtestingdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibtestingdir)" || exit $$?; \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgotestingdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgotestingdir)" || exit $$?; \
done
-uninstall-toolexeclibtestingDATA:
+uninstall-toolexeclibgotestingDATA:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclibtesting_DATA)'; test -n "$(toolexeclibtestingdir)" || list=; \
+ @list='$(toolexeclibgotesting_DATA)'; test -n "$(toolexeclibgotestingdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(toolexeclibtestingdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(toolexeclibtestingdir)" && rm -f $$files
+ echo " ( cd '$(DESTDIR)$(toolexeclibgotestingdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(toolexeclibgotestingdir)" && rm -f $$files
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
@@ -3373,7 +3375,7 @@ all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) all-multi $(DATA) \
config.h
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibarchivedir)" "$(DESTDIR)$(toolexeclibcompressdir)" "$(DESTDIR)$(toolexeclibcontainerdir)" "$(DESTDIR)$(toolexeclibcryptodir)" "$(DESTDIR)$(toolexeclibdebugdir)" "$(DESTDIR)$(toolexeclibencodingdir)" "$(DESTDIR)$(toolexeclibexpdir)" "$(DESTDIR)$(toolexeclibgodir)" "$(DESTDIR)$(toolexeclibhashdir)" "$(DESTDIR)$(toolexeclibhttpdir)" "$(DESTDIR)$(toolexeclibimagedir)" "$(DESTDIR)$(toolexeclibindexdir)" "$(DESTDIR)$(toolexeclibiodir)" "$(DESTDIR)$(toolexeclibmimedir)" "$(DESTDIR)$(toolexeclibnetdir)" "$(DESTDIR)$(toolexeclibosdir)" "$(DESTDIR)$(toolexeclibrpcdir)" "$(DESTDIR)$(toolexeclibruntimedir)" "$(DESTDIR)$(toolexeclibtestingdir)"; do \
+ for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibgodir)" "$(DESTDIR)$(toolexeclibgoarchivedir)" "$(DESTDIR)$(toolexeclibgocompressdir)" "$(DESTDIR)$(toolexeclibgocontainerdir)" "$(DESTDIR)$(toolexeclibgocryptodir)" "$(DESTDIR)$(toolexeclibgodebugdir)" "$(DESTDIR)$(toolexeclibgoencodingdir)" "$(DESTDIR)$(toolexeclibgoexpdir)" "$(DESTDIR)$(toolexeclibgogodir)" "$(DESTDIR)$(toolexeclibgohashdir)" "$(DESTDIR)$(toolexeclibgohttpdir)" "$(DESTDIR)$(toolexeclibgoimagedir)" "$(DESTDIR)$(toolexeclibgoindexdir)" "$(DESTDIR)$(toolexeclibgoiodir)" "$(DESTDIR)$(toolexeclibgomimedir)" "$(DESTDIR)$(toolexeclibgonetdir)" "$(DESTDIR)$(toolexeclibgoosdir)" "$(DESTDIR)$(toolexeclibgorpcdir)" "$(DESTDIR)$(toolexeclibgoruntimedir)" "$(DESTDIR)$(toolexeclibgotestingdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
@@ -3433,18 +3435,20 @@ install-dvi: install-dvi-recursive
install-dvi-am:
-install-exec-am: install-multi install-toolexeclibDATA \
- install-toolexeclibLIBRARIES install-toolexeclibLTLIBRARIES \
- install-toolexeclibarchiveDATA install-toolexeclibcompressDATA \
- install-toolexeclibcontainerDATA install-toolexeclibcryptoDATA \
- install-toolexeclibdebugDATA install-toolexeclibencodingDATA \
- install-toolexeclibexpDATA install-toolexeclibgoDATA \
- install-toolexeclibhashDATA install-toolexeclibhttpDATA \
- install-toolexeclibimageDATA install-toolexeclibindexDATA \
- install-toolexeclibioDATA install-toolexeclibmimeDATA \
- install-toolexeclibnetDATA install-toolexeclibosDATA \
- install-toolexeclibrpcDATA install-toolexeclibruntimeDATA \
- install-toolexeclibtestingDATA
+install-exec-am: install-multi install-toolexeclibLIBRARIES \
+ install-toolexeclibLTLIBRARIES install-toolexeclibgoDATA \
+ install-toolexeclibgoarchiveDATA \
+ install-toolexeclibgocompressDATA \
+ install-toolexeclibgocontainerDATA \
+ install-toolexeclibgocryptoDATA install-toolexeclibgodebugDATA \
+ install-toolexeclibgoencodingDATA install-toolexeclibgoexpDATA \
+ install-toolexeclibgogoDATA install-toolexeclibgohashDATA \
+ install-toolexeclibgohttpDATA install-toolexeclibgoimageDATA \
+ install-toolexeclibgoindexDATA install-toolexeclibgoioDATA \
+ install-toolexeclibgomimeDATA install-toolexeclibgonetDATA \
+ install-toolexeclibgoosDATA install-toolexeclibgorpcDATA \
+ install-toolexeclibgoruntimeDATA \
+ install-toolexeclibgotestingDATA
install-html: install-html-recursive
@@ -3486,20 +3490,23 @@ ps: ps-recursive
ps-am:
-uninstall-am: uninstall-toolexeclibDATA uninstall-toolexeclibLIBRARIES \
- uninstall-toolexeclibLTLIBRARIES \
- uninstall-toolexeclibarchiveDATA \
- uninstall-toolexeclibcompressDATA \
- uninstall-toolexeclibcontainerDATA \
- uninstall-toolexeclibcryptoDATA uninstall-toolexeclibdebugDATA \
- uninstall-toolexeclibencodingDATA uninstall-toolexeclibexpDATA \
- uninstall-toolexeclibgoDATA uninstall-toolexeclibhashDATA \
- uninstall-toolexeclibhttpDATA uninstall-toolexeclibimageDATA \
- uninstall-toolexeclibindexDATA uninstall-toolexeclibioDATA \
- uninstall-toolexeclibmimeDATA uninstall-toolexeclibnetDATA \
- uninstall-toolexeclibosDATA uninstall-toolexeclibrpcDATA \
- uninstall-toolexeclibruntimeDATA \
- uninstall-toolexeclibtestingDATA
+uninstall-am: uninstall-toolexeclibLIBRARIES \
+ uninstall-toolexeclibLTLIBRARIES uninstall-toolexeclibgoDATA \
+ uninstall-toolexeclibgoarchiveDATA \
+ uninstall-toolexeclibgocompressDATA \
+ uninstall-toolexeclibgocontainerDATA \
+ uninstall-toolexeclibgocryptoDATA \
+ uninstall-toolexeclibgodebugDATA \
+ uninstall-toolexeclibgoencodingDATA \
+ uninstall-toolexeclibgoexpDATA uninstall-toolexeclibgogoDATA \
+ uninstall-toolexeclibgohashDATA \
+ uninstall-toolexeclibgohttpDATA \
+ uninstall-toolexeclibgoimageDATA \
+ uninstall-toolexeclibgoindexDATA uninstall-toolexeclibgoioDATA \
+ uninstall-toolexeclibgomimeDATA uninstall-toolexeclibgonetDATA \
+ uninstall-toolexeclibgoosDATA uninstall-toolexeclibgorpcDATA \
+ uninstall-toolexeclibgoruntimeDATA \
+ uninstall-toolexeclibgotestingDATA
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all all-multi \
clean-multi ctags-recursive distclean-multi install-am \
@@ -3520,37 +3527,41 @@ uninstall-am: uninstall-toolexeclibDATA uninstall-toolexeclibLIBRARIES \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-multi install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
- install-toolexeclibDATA install-toolexeclibLIBRARIES \
- install-toolexeclibLTLIBRARIES install-toolexeclibarchiveDATA \
- install-toolexeclibcompressDATA \
- install-toolexeclibcontainerDATA install-toolexeclibcryptoDATA \
- install-toolexeclibdebugDATA install-toolexeclibencodingDATA \
- install-toolexeclibexpDATA install-toolexeclibgoDATA \
- install-toolexeclibhashDATA install-toolexeclibhttpDATA \
- install-toolexeclibimageDATA install-toolexeclibindexDATA \
- install-toolexeclibioDATA install-toolexeclibmimeDATA \
- install-toolexeclibnetDATA install-toolexeclibosDATA \
- install-toolexeclibrpcDATA install-toolexeclibruntimeDATA \
- install-toolexeclibtestingDATA installcheck installcheck-am \
+ install-toolexeclibLIBRARIES install-toolexeclibLTLIBRARIES \
+ install-toolexeclibgoDATA install-toolexeclibgoarchiveDATA \
+ install-toolexeclibgocompressDATA \
+ install-toolexeclibgocontainerDATA \
+ install-toolexeclibgocryptoDATA install-toolexeclibgodebugDATA \
+ install-toolexeclibgoencodingDATA install-toolexeclibgoexpDATA \
+ install-toolexeclibgogoDATA install-toolexeclibgohashDATA \
+ install-toolexeclibgohttpDATA install-toolexeclibgoimageDATA \
+ install-toolexeclibgoindexDATA install-toolexeclibgoioDATA \
+ install-toolexeclibgomimeDATA install-toolexeclibgonetDATA \
+ install-toolexeclibgoosDATA install-toolexeclibgorpcDATA \
+ install-toolexeclibgoruntimeDATA \
+ install-toolexeclibgotestingDATA installcheck installcheck-am \
installdirs installdirs-am maintainer-clean \
maintainer-clean-generic maintainer-clean-multi mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
mostlyclean-local mostlyclean-multi pdf pdf-am ps ps-am tags \
tags-recursive uninstall uninstall-am \
- uninstall-toolexeclibDATA uninstall-toolexeclibLIBRARIES \
- uninstall-toolexeclibLTLIBRARIES \
- uninstall-toolexeclibarchiveDATA \
- uninstall-toolexeclibcompressDATA \
- uninstall-toolexeclibcontainerDATA \
- uninstall-toolexeclibcryptoDATA uninstall-toolexeclibdebugDATA \
- uninstall-toolexeclibencodingDATA uninstall-toolexeclibexpDATA \
- uninstall-toolexeclibgoDATA uninstall-toolexeclibhashDATA \
- uninstall-toolexeclibhttpDATA uninstall-toolexeclibimageDATA \
- uninstall-toolexeclibindexDATA uninstall-toolexeclibioDATA \
- uninstall-toolexeclibmimeDATA uninstall-toolexeclibnetDATA \
- uninstall-toolexeclibosDATA uninstall-toolexeclibrpcDATA \
- uninstall-toolexeclibruntimeDATA \
- uninstall-toolexeclibtestingDATA
+ uninstall-toolexeclibLIBRARIES \
+ uninstall-toolexeclibLTLIBRARIES uninstall-toolexeclibgoDATA \
+ uninstall-toolexeclibgoarchiveDATA \
+ uninstall-toolexeclibgocompressDATA \
+ uninstall-toolexeclibgocontainerDATA \
+ uninstall-toolexeclibgocryptoDATA \
+ uninstall-toolexeclibgodebugDATA \
+ uninstall-toolexeclibgoencodingDATA \
+ uninstall-toolexeclibgoexpDATA uninstall-toolexeclibgogoDATA \
+ uninstall-toolexeclibgohashDATA \
+ uninstall-toolexeclibgohttpDATA \
+ uninstall-toolexeclibgoimageDATA \
+ uninstall-toolexeclibgoindexDATA uninstall-toolexeclibgoioDATA \
+ uninstall-toolexeclibgomimeDATA uninstall-toolexeclibgonetDATA \
+ uninstall-toolexeclibgoosDATA uninstall-toolexeclibgorpcDATA \
+ uninstall-toolexeclibgoruntimeDATA \
+ uninstall-toolexeclibgotestingDATA
goc2c.$(OBJEXT): runtime/goc2c.c
diff --git a/libgo/PATENTS b/libgo/PATENTS
new file mode 100644
index 00000000000..733099041f8
--- /dev/null
+++ b/libgo/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 2209d5e4471..c391dd81aa5 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * acinclude.m4 (symvers_renaming): Also set if enable_symvers = no.
+ * configure: Regenerate.
+
2010-12-06 Dave Korn <dave.korn.cygwin@gmail.com>
PR target/40125
diff --git a/libgomp/acinclude.m4 b/libgomp/acinclude.m4
index 8d6d0e54a7b..d46d78596ec 100644
--- a/libgomp/acinclude.m4
+++ b/libgomp/acinclude.m4
@@ -358,6 +358,8 @@ if test $enable_symvers != no ; then
[Define to 1 if the target runtime linker supports binding the same symbol to different versions.])
symvers_renaming=yes ;;
esac
+else
+ symvers_renaming=no
fi
AM_CONDITIONAL(LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2, test $symvers_renaming = no)
])
diff --git a/libgomp/configure b/libgomp/configure
index 4dbdc87982e..883dddfbf78 100755
--- a/libgomp/configure
+++ b/libgomp/configure
@@ -16014,6 +16014,8 @@ $as_echo "#define HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1" >>confdefs.h
symvers_renaming=yes ;;
esac
+else
+ symvers_renaming=no
fi
if test $symvers_renaming = no; then
LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE=
diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog
index 772a4f28cd0..23e221696d1 100644
--- a/libquadmath/ChangeLog
+++ b/libquadmath/ChangeLog
@@ -1,3 +1,11 @@
+2010-12-06 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/46817
+ * quadmath-imp.h: Add LGPL header.
+ * quadmath.h: Add LGPL header.
+ * quadmath_io.c: Add LGPL header.
+ * quadmath_weak.h: Add LGPL header.
+
2010-12-06 Dave Korn <dave.korn.cygwin@gmail.com>
PR target/40125
diff --git a/libquadmath/quadmath-imp.h b/libquadmath/quadmath-imp.h
index e46ef8cb6ae..5544fabca19 100644
--- a/libquadmath/quadmath-imp.h
+++ b/libquadmath/quadmath-imp.h
@@ -1,3 +1,23 @@
+/* GCC Quad-Precision Math Library
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Written by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
#ifndef QUADMATH_IMP_H
#define QUADMATH_IMP_H
diff --git a/libquadmath/quadmath.h b/libquadmath/quadmath.h
index 28dbe944703..22683603cab 100644
--- a/libquadmath/quadmath.h
+++ b/libquadmath/quadmath.h
@@ -1,3 +1,23 @@
+/* GCC Quad-Precision Math Library
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Written by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
#ifndef QUADMATH_H
#define QUADMATH_H
diff --git a/libquadmath/quadmath_io.c b/libquadmath/quadmath_io.c
index 82084f245b2..48a8fe75c58 100644
--- a/libquadmath/quadmath_io.c
+++ b/libquadmath/quadmath_io.c
@@ -1,3 +1,23 @@
+/* GCC Quad-Precision Math Library
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Written by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
#include "quadmath.h"
#include <stdio.h>
#include <string.h>
diff --git a/libquadmath/quadmath_weak.h b/libquadmath/quadmath_weak.h
index 9857b586d7b..a14014e1018 100644
--- a/libquadmath/quadmath_weak.h
+++ b/libquadmath/quadmath_weak.h
@@ -1,3 +1,23 @@
+/* GCC Quad-Precision Math Library
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Written by Tobias Burnus <burnus@net-b.de>
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
#ifndef QUADMATH_WEAK_H
#define QUADMATH_WEAK_H
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 7a5b7f76864..19bdd55f175 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,42 @@
+2010-12-06 Paul Pluzhnikov <ppluzhnikov@google.com>
+
+ PR libstdc++/46830
+ * include/ext/sso_string_base.h (__sso_string_base<>::_M_swap):
+ Early return when this == &__rcs.
+
+2010-12-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/shared_ptr.h (shared_ptr<>::shared_ptr(_Tp1*, _Deleter,
+ const _Alloc&), shared_ptr(nullptr_t, _Deleter, const _Alloc&)): Take
+ the allocator by value, per N3225.
+ (shared_ptr<>::shared_ptr(_Sp_make_shared_tag, _Alloc, _Args&&...),
+ allocate_shared(_Alloc, _Args&&...): Viceversa, take the allocator
+ by const lvalue ref.
+ * include/bits/shared_ptr_base.h (__shared_count<>::
+ __shared_count(_Sp_make_shared_tag, _Tp*, _Alloc, _Args&&...),
+ __shared_ptr<>::__shared_ptr(_Sp_make_shared_tag, _Alloc, _Args&&...),
+ __allocate_shared(_Alloc, _Args&&...)): Likewise.
+ (__shared_ptr<>::__shared_ptr(_Tp1*, _Deleter, const _Alloc&),
+ __shared_ptr(nullptr_t, _Deleter, const _Alloc&), reset(_Tp1*,
+ _Deleter, const _Alloc&)): Take the allocator by value.
+ * testsuite/20_util/shared_ptr/cons/43820.cc: Adjust dg-error line
+ numbers.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2010-12-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * acinclude.m4 (symvers_renaming): Also set if enable_symvers = no.
+ * configure: Regenerate.
+
+2010-12-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/46821
+ * include/std/tuple (_Head_base<,, true>::_M_swap_impl):
+ Swap the empty bases.
+ (_Head_base<,, false>::_M_swap_impl): Minor tweak.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+ line number.
+
2010-12-06 Dave Korn <dave.korn.cygwin@gmail.com>
PR target/40125
@@ -54,7 +93,7 @@
* testsuite/23_containers/deque/cons/2.cc: Fix to explicitly invoke
the copy constructor with or without C++0x mode.
* testsuite/23_containers/vector/cons/4.cc: Likewise.
-
+
2010-12-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* scripts/extract_symvers.pl: New file.
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 18f41af5e3f..f8db04e9afb 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -3004,6 +3004,8 @@ if test $enable_symvers != no ; then
[Define to 1 if the target runtime linker supports binding the same symbol to different versions.])
symvers_renaming=yes ;;
esac
+else
+ symvers_renaming=no
fi
GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SOL2, test $symvers_renaming = no)
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 085fb629688..85ac9494e21 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -58461,6 +58461,8 @@ $as_echo "#define HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1" >>confdefs.h
symvers_renaming=yes ;;
esac
+else
+ symvers_renaming=no
fi
diff --git a/libstdc++-v3/include/bits/shared_ptr.h b/libstdc++-v3/include/bits/shared_ptr.h
index 0e6f7a6d0b3..6dc9c9ffa45 100644
--- a/libstdc++-v3/include/bits/shared_ptr.h
+++ b/libstdc++-v3/include/bits/shared_ptr.h
@@ -122,7 +122,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* __shared_ptr will release __p by calling __d(__p)
*/
template<typename _Tp1, typename _Deleter>
- shared_ptr(_Tp1* __p, _Deleter __d) : __shared_ptr<_Tp>(__p, __d) { }
+ shared_ptr(_Tp1* __p, _Deleter __d)
+ : __shared_ptr<_Tp>(__p, __d) { }
/**
* @brief Construct a %shared_ptr that owns a null pointer
@@ -157,8 +158,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* __shared_ptr will release __p by calling __d(__p)
*/
template<typename _Tp1, typename _Deleter, typename _Alloc>
- shared_ptr(_Tp1* __p, _Deleter __d, const _Alloc& __a)
- : __shared_ptr<_Tp>(__p, __d, __a) { }
+ shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a)
+ : __shared_ptr<_Tp>(__p, __d, std::move(__a)) { }
/**
* @brief Construct a %shared_ptr that owns a null pointer
@@ -176,8 +177,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* The last owner will call __d(__p)
*/
template<typename _Deleter, typename _Alloc>
- shared_ptr(nullptr_t __p, _Deleter __d, const _Alloc& __a)
- : __shared_ptr<_Tp>(__p, __d, __a) { }
+ shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
+ : __shared_ptr<_Tp>(__p, __d, std::move(__a)) { }
// Aliasing constructor
@@ -305,13 +306,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
private:
// This constructor is non-standard, it is used by allocate_shared.
template<typename _Alloc, typename... _Args>
- shared_ptr(_Sp_make_shared_tag __tag, _Alloc __a, _Args&&... __args)
+ shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
+ _Args&&... __args)
: __shared_ptr<_Tp>(__tag, __a, std::forward<_Args>(__args)...)
{ }
template<typename _Tp1, typename _Alloc, typename... _Args>
friend shared_ptr<_Tp1>
- allocate_shared(_Alloc __a, _Args&&... __args);
+ allocate_shared(const _Alloc& __a, _Args&&... __args);
};
// 20.8.13.2.7 shared_ptr comparisons
@@ -521,9 +523,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
*/
template<typename _Tp, typename _Alloc, typename... _Args>
inline shared_ptr<_Tp>
- allocate_shared(_Alloc __a, _Args&&... __args)
+ allocate_shared(const _Alloc& __a, _Args&&... __args)
{
- return shared_ptr<_Tp>(_Sp_make_shared_tag(), std::forward<_Alloc>(__a),
+ return shared_ptr<_Tp>(_Sp_make_shared_tag(), __a,
std::forward<_Args>(__args)...);
}
diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index 7e7dd4395b0..da18147db5e 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -331,7 +331,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
_Deleter _M_del; // copy constructor must not throw
_My_Deleter(_Deleter __d, const _Alloc& __a)
- : _My_alloc_type(__a), _M_del(__d) { }
+ : _My_alloc_type(__a), _M_del(__d) { }
};
protected:
@@ -504,7 +504,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
template<typename _Tp, typename _Alloc, typename... _Args>
- __shared_count(_Sp_make_shared_tag, _Tp*, _Alloc __a, _Args&&... __args)
+ __shared_count(_Sp_make_shared_tag, _Tp*, const _Alloc& __a,
+ _Args&&... __args)
: _M_pi(0)
{
typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type;
@@ -774,8 +775,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
template<typename _Tp1, typename _Deleter, typename _Alloc>
- __shared_ptr(_Tp1* __p, _Deleter __d, const _Alloc& __a)
- : _M_ptr(__p), _M_refcount(__p, __d, __a)
+ __shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a)
+ : _M_ptr(__p), _M_refcount(__p, __d, std::move(__a))
{
__glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
// TODO requires _Deleter CopyConstructible and __d(__p) well-formed
@@ -788,8 +789,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ }
template<typename _Deleter, typename _Alloc>
- __shared_ptr(nullptr_t __p, _Deleter __d, const _Alloc& __a)
- : _M_ptr(0), _M_refcount(__p, __d, __a)
+ __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
+ : _M_ptr(0), _M_refcount(__p, __d, std::move(__a))
{ }
template<typename _Tp1>
@@ -924,8 +925,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template<typename _Tp1, typename _Deleter, typename _Alloc>
void
- reset(_Tp1* __p, _Deleter __d, const _Alloc& __a)
- { __shared_ptr(__p, __d, __a).swap(*this); }
+ reset(_Tp1* __p, _Deleter __d, _Alloc __a)
+ { __shared_ptr(__p, __d, std::move(__a)).swap(*this); }
// Allow class instantiation when _Tp is [cv-qual] void.
typename std::add_lvalue_reference<_Tp>::type
@@ -978,7 +979,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
protected:
// This constructor is non-standard, it is used by allocate_shared.
template<typename _Alloc, typename... _Args>
- __shared_ptr(_Sp_make_shared_tag __tag, _Alloc __a, _Args&&... __args)
+ __shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
+ _Args&&... __args)
: _M_ptr(), _M_refcount(__tag, (_Tp*)0, __a,
std::forward<_Args>(__args)...)
{
@@ -1001,7 +1003,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
};
template<typename _Alloc, typename... _Args>
- __shared_ptr(_Sp_make_shared_tag __tag, _Alloc __a, _Args&&... __args)
+ __shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
+ _Args&&... __args)
: _M_ptr(), _M_refcount()
{
typedef typename _Alloc::template rebind<_Tp>::other _Alloc2;
@@ -1025,7 +1028,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template<typename _Tp1, _Lock_policy _Lp1, typename _Alloc,
typename... _Args>
friend __shared_ptr<_Tp1, _Lp1>
- __allocate_shared(_Alloc __a, _Args&&... __args);
+ __allocate_shared(const _Alloc& __a, _Args&&... __args);
private:
void*
@@ -1350,10 +1353,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template<typename _Tp, _Lock_policy _Lp, typename _Alloc, typename... _Args>
inline __shared_ptr<_Tp, _Lp>
- __allocate_shared(_Alloc __a, _Args&&... __args)
+ __allocate_shared(const _Alloc& __a, _Args&&... __args)
{
- return __shared_ptr<_Tp, _Lp>(_Sp_make_shared_tag(),
- std::forward<_Alloc>(__a), std::forward<_Args>(__args)...);
+ return __shared_ptr<_Tp, _Lp>(_Sp_make_shared_tag(), __a,
+ std::forward<_Args>(__args)...);
}
template<typename _Tp, _Lock_policy _Lp, typename... _Args>
diff --git a/libstdc++-v3/include/ext/sso_string_base.h b/libstdc++-v3/include/ext/sso_string_base.h
index 43d44528999..6168631826b 100644
--- a/libstdc++-v3/include/ext/sso_string_base.h
+++ b/libstdc++-v3/include/ext/sso_string_base.h
@@ -1,6 +1,7 @@
// Short-string-optimized versatile string base -*- C++ -*-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// 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
@@ -232,6 +233,9 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
__sso_string_base<_CharT, _Traits, _Alloc>::
_M_swap(__sso_string_base& __rcs)
{
+ if (this == &__rcs)
+ return;
+
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 431. Swapping containers with unequal allocators.
std::__alloc_swap<_CharT_alloc_type>::_S_do_it(_M_get_allocator(),
diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index df9ef1d1694..87dbcb78df6 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -78,7 +78,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
const _Head& _M_head() const { return *this; }
void
- _M_swap_impl(_Head&) { /* no-op */ }
+ _M_swap_impl(_Head& __h)
+ {
+ using std::swap;
+ swap(__h, _M_head());
+ }
};
template<std::size_t _Idx, typename _Head>
@@ -101,7 +105,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_M_swap_impl(_Head& __h)
{
using std::swap;
- swap(__h, _M_head_impl);
+ swap(__h, _M_head());
}
_Head _M_head_impl;
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820.cc
index f30fd35c182..538126f694e 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820.cc
@@ -32,9 +32,9 @@ void test01()
{
X* px = 0;
std::shared_ptr<X> p1(px); // { dg-error "here" }
- // { dg-error "incomplete" "" { target *-*-* } 764 }
+ // { dg-error "incomplete" "" { target *-*-* } 765 }
std::shared_ptr<X> p9(ap()); // { dg-error "here" }
- // { dg-error "incomplete" "" { target *-*-* } 856 }
+ // { dg-error "incomplete" "" { target *-*-* } 857 }
}
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
index 7f5b109b61e..c511751f343 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
@@ -41,10 +41,10 @@ main()
return 0;
}
-// { dg-warning "note" "" { target *-*-* } 350 }
-// { dg-warning "note" "" { target *-*-* } 1082 }
+// { dg-warning "note" "" { target *-*-* } 352 }
+// { dg-warning "note" "" { target *-*-* } 1085 }
// { dg-warning "note" "" { target *-*-* } 465 }
-// { dg-warning "note" "" { target *-*-* } 581 }
+// { dg-warning "note" "" { target *-*-* } 585 }
// { dg-warning "note" "" { target *-*-* } 1027 }
// { dg-warning "note" "" { target *-*-* } 340 }
// { dg-warning "note" "" { target *-*-* } 290 }