diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-12-07 19:02:54 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-12-07 19:02:54 +0000 |
commit | 3b777bfb43410684ccba93c320a88d01456d8db9 (patch) | |
tree | f24e332333fb703a4b36ca697ba2af135e98daca | |
parent | d3e794252245eec7dc5b1e54844ed9109402f807 (diff) | |
download | gcc-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
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 } |