Index: configure =================================================================== --- configure (.../tags/gcc_4_5_1_release) (wersja 165515) +++ configure (.../branches/gcc-4_5-branch) (wersja 165515) @@ -3097,7 +3097,7 @@ # Check for target supported by gold. case "${target}" in i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-*) - configdirs="`echo " ${configdirs} " | sed -e 's/ ld / gold /'`" + configdirs=`echo " ${configdirs} " | sed -e 's/ ld / gold /'` ;; esac fi @@ -5457,7 +5457,7 @@ if test "x$with_gmp$with_gmp_include$with_gmp_lib" = x && test -d ${srcdir}/gmp; then gmplibs='-L$$r/$(HOST_SUBDIR)/gmp/'"$lt_cv_objdir $gmplibs" gmpinc='-I$$r/$(HOST_SUBDIR)/gmp -I$$s/gmp '"$gmpinc" - extra_mpfr_configure_flags='--with-gmp-build=$$r/$(HOST_SUBDIR)/gmp' + extra_mpfr_configure_flags='--with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-gmp-lib=$$r/$(HOST_SUBDIR)/gmp/'"$lt_cv_objdir" extra_mpc_gmp_configure_flags='--with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-gmp-lib=$$r/$(HOST_SUBDIR)/gmp/'"$lt_cv_objdir" # Do not test the gmp version. Assume that it is sufficient, since # it is in the source tree, and the library has not been built yet Index: libgcc/config.host =================================================================== --- libgcc/config.host (.../tags/gcc_4_5_1_release) (wersja 165515) +++ libgcc/config.host (.../branches/gcc-4_5-branch) (wersja 165515) @@ -345,6 +345,8 @@ tmake_file="ia64/t-ia64" ;; ia64*-*-freebsd*) + extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o" + tmake_file="ia64/t-ia64" ;; ia64*-*-linux*) extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o" Index: libgcc/ChangeLog =================================================================== --- libgcc/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515) +++ libgcc/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,3 +1,9 @@ +2010-09-12 Gerald Pfeifer + Andrew Pinski + + PR target/40959 + * config.host (ia64*-*-freebsd*): Set extra_parts. Set tmake_file. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: gcc/doc/sourcebuild.texi =================================================================== --- gcc/doc/sourcebuild.texi (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/doc/sourcebuild.texi (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1679,6 +1679,11 @@ @item pthread_h Target has @code{pthread.h}. +@item run_expensive_tests +Expensive testcases (usually those that consume excessive amounts of CPU +time) should be run on this target. This can be enabled by setting the +@env{GCC_TEST_RUN_EXPENSIVE} environment variable to a non-empty string. + @item simulator Test system runs executables on a simulator (i.e. slowly) rather than hardware (i.e. fast). Index: gcc/doc/extend.texi =================================================================== --- gcc/doc/extend.texi (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/doc/extend.texi (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1345,9 +1345,7 @@ @cindex VLAs Variable-length automatic arrays are allowed in ISO C99, and as an -extension GCC accepts them in C90 mode and in C++. (However, GCC's -implementation of variable-length arrays does not yet conform in detail -to the ISO C99 standard.) These arrays are +extension GCC accepts them in C90 mode and in C++. These arrays are declared like any other automatic arrays, but with a length that is not a constant expression. The storage is allocated at the point of declaration and deallocated when the brace-level is exited. For Index: gcc/doc/invoke.texi =================================================================== --- gcc/doc/invoke.texi (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/doc/invoke.texi (.../branches/gcc-4_5-branch) (wersja 165515) @@ -5776,7 +5776,8 @@ Optimize yet more. @option{-O3} turns on all optimizations specified by @option{-O2} and also turns on the @option{-finline-functions}, @option{-funswitch-loops}, @option{-fpredictive-commoning}, -@option{-fgcse-after-reload} and @option{-ftree-vectorize} options. +@option{-fgcse-after-reload}, @option{-ftree-vectorize} and +@option{-fipa-cp-clone} options. @item -O0 @opindex O0 Index: gcc/tree-complex.c =================================================================== --- gcc/tree-complex.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/tree-complex.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -665,12 +665,16 @@ update_complex_assignment (gimple_stmt_iterator *gsi, tree r, tree i) { gimple_stmt_iterator orig_si = *gsi; + gimple stmt; if (gimple_in_ssa_p (cfun)) update_complex_components (gsi, gsi_stmt (*gsi), r, i); gimple_assign_set_rhs_with_ops (&orig_si, COMPLEX_EXPR, r, i); - update_stmt (gsi_stmt (orig_si)); + stmt = gsi_stmt (orig_si); + update_stmt (stmt); + if (maybe_clean_eh_stmt (stmt)) + gimple_purge_dead_eh_edges (gimple_bb (stmt)); } Index: gcc/optabs.c =================================================================== --- gcc/optabs.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/optabs.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -7033,6 +7033,7 @@ if (icode == CODE_FOR_nothing) return NULL_RTX; + do_pending_stack_adjust (); do { start_sequence (); Index: gcc/DATESTAMP =================================================================== --- gcc/DATESTAMP (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/DATESTAMP (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1 +1 @@ -20100731 +20101015 Index: gcc/postreload.c =================================================================== --- gcc/postreload.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/postreload.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -810,7 +810,7 @@ rtx reg = SET_DEST (set); rtx plus = SET_SRC (set); rtx base = XEXP (plus, 1); - rtx prev = prev_nonnote_insn (insn); + rtx prev = prev_nonnote_nondebug_insn (insn); rtx prev_set = prev ? single_set (prev) : NULL_RTX; unsigned int regno = REGNO (reg); rtx index_reg = NULL_RTX; @@ -1323,7 +1323,7 @@ && MODES_OK_FOR_MOVE2ADD (GET_MODE (reg), reg_mode[REGNO (src)])) { - rtx next = next_nonnote_insn (insn); + rtx next = next_nonnote_nondebug_insn (insn); rtx set = NULL_RTX; if (next) set = single_set (next); Index: gcc/rtlanal.c =================================================================== --- gcc/rtlanal.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/rtlanal.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -4755,9 +4755,7 @@ stop if it isn't a single set or if it has a REG_INC note because we don't want to bother dealing with it. */ - do - prev = prev_nonnote_insn (prev); - while (prev && DEBUG_INSN_P (prev)); + prev = prev_nonnote_nondebug_insn (prev); if (prev == 0 || !NONJUMP_INSN_P (prev) Index: gcc/configure =================================================================== --- gcc/configure (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/configure (.../branches/gcc-4_5-branch) (wersja 165515) @@ -25454,27 +25454,58 @@ pluginlibs= + +case "${host}" in + *-*-darwin*) + if test x$build = x$host; then + export_sym_check="nm${exeext} -g" + elif test x$host = x$target; then + export_sym_check="$gcc_cv_nm -g" + else + export_sym_check= + fi + ;; + *) + if test x$build = x$host; then + export_sym_check="objdump${exeext} -T" + elif test x$host = x$target; then + export_sym_check="$gcc_cv_objdump -T" + else + export_sym_check= + fi + ;; +esac + if test x"$enable_plugin" = x"yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exported symbols" >&5 $as_echo_n "checking for exported symbols... " >&6; } - echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c - ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1 - if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then - : # No need to use a flag - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5 + if test "x$export_sym_check" != x; then + echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c + ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1 + if $export_sym_check conftest | grep foobar > /dev/null; then + : # No need to use a flag + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5 $as_echo_n "checking for -rdynamic... " >&6; } - ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1 - if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then - plugin_rdynamic=yes - pluginlibs="-rdynamic" - else - plugin_rdynamic=no - enable_plugin=no + ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1 + if $export_sym_check conftest | grep foobar > /dev/null; then + plugin_rdynamic=yes + pluginlibs="-rdynamic" + else + plugin_rdynamic=no + enable_plugin=no + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_rdynamic" >&5 +$as_echo "$plugin_rdynamic" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_rdynamic" >&5 -$as_echo "$plugin_rdynamic" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unable to check" >&5 +$as_echo "unable to check" >&6; } fi # Check -ldl @@ -25542,7 +25573,14 @@ # Check that we can build shared objects with -fPIC -shared saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -fPIC -shared" + case "${host}" in + *-*-darwin*) + LDFLAGS="$LDFLAGS -fPIC -shared -undefined dynamic_lookup" + ;; + *) + LDFLAGS="$LDFLAGS -fPIC -shared" + ;; + esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fPIC -shared" >&5 $as_echo_n "checking for -fPIC -shared... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext Index: gcc/builtins.c =================================================================== --- gcc/builtins.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/builtins.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -100,9 +100,9 @@ static rtx expand_builtin_mathfn (tree, rtx, rtx); static rtx expand_builtin_mathfn_2 (tree, rtx, rtx); static rtx expand_builtin_mathfn_3 (tree, rtx, rtx); -static rtx expand_builtin_interclass_mathfn (tree, rtx, rtx); +static rtx expand_builtin_interclass_mathfn (tree, rtx); static rtx expand_builtin_sincos (tree); -static rtx expand_builtin_cexpi (tree, rtx, rtx); +static rtx expand_builtin_cexpi (tree, rtx); static rtx expand_builtin_int_roundingfn (tree, rtx); static rtx expand_builtin_int_roundingfn_2 (tree, rtx); static rtx expand_builtin_args_info (tree); @@ -2291,11 +2291,10 @@ isnan, etc). Return 0 if a normal call should be emitted rather than expanding the function in-line. EXP is the expression that is a call to the builtin - function; if convenient, the result should be placed in TARGET. - SUBTARGET may be used as the target for computing one of EXP's operands. */ + function; if convenient, the result should be placed in TARGET. */ static rtx -expand_builtin_interclass_mathfn (tree exp, rtx target, rtx subtarget) +expand_builtin_interclass_mathfn (tree exp, rtx target) { enum insn_code icode = CODE_FOR_nothing; rtx op0; @@ -2328,7 +2327,7 @@ side-effects more the once. */ CALL_EXPR_ARG (exp, 0) = arg = builtin_save_expr (arg); - op0 = expand_expr (arg, subtarget, VOIDmode, EXPAND_NORMAL); + op0 = expand_expr (arg, NULL_RTX, VOIDmode, EXPAND_NORMAL); if (mode != GET_MODE (op0)) op0 = convert_to_mode (mode, op0, 0); @@ -2395,11 +2394,10 @@ /* Expand a call to the internal cexpi builtin to the sincos math function. EXP is the expression that is a call to the builtin function; if convenient, - the result should be placed in TARGET. SUBTARGET may be used as the target - for computing one of EXP's operands. */ + the result should be placed in TARGET. */ static rtx -expand_builtin_cexpi (tree exp, rtx target, rtx subtarget) +expand_builtin_cexpi (tree exp, rtx target) { tree fndecl = get_callee_fndecl (exp); tree arg, type; @@ -2422,7 +2420,7 @@ op1 = gen_reg_rtx (mode); op2 = gen_reg_rtx (mode); - op0 = expand_expr (arg, subtarget, VOIDmode, EXPAND_NORMAL); + op0 = expand_expr (arg, NULL_RTX, VOIDmode, EXPAND_NORMAL); /* Compute into op1 and op2. */ expand_twoval_unop (sincos_optab, op0, op2, op1, 0); @@ -3073,7 +3071,7 @@ function; if convenient, the result should be placed in TARGET. */ static rtx -expand_builtin_powi (tree exp, rtx target, rtx subtarget) +expand_builtin_powi (tree exp, rtx target) { tree arg0, arg1; rtx op0, op1; @@ -3102,7 +3100,7 @@ || (optimize_insn_for_speed_p () && powi_cost (n) <= POWI_MAX_MULTS))) { - op0 = expand_expr (arg0, subtarget, VOIDmode, EXPAND_NORMAL); + op0 = expand_expr (arg0, NULL_RTX, VOIDmode, EXPAND_NORMAL); op0 = force_reg (mode, op0); return expand_powi (op0, mode, n); } @@ -3116,7 +3114,7 @@ if (target == NULL_RTX) target = gen_reg_rtx (mode); - op0 = expand_expr (arg0, subtarget, mode, EXPAND_NORMAL); + op0 = expand_expr (arg0, NULL_RTX, mode, EXPAND_NORMAL); if (GET_MODE (op0) != mode) op0 = convert_to_mode (mode, op0, 0); op1 = expand_expr (arg1, NULL_RTX, mode2, EXPAND_NORMAL); @@ -4885,7 +4883,10 @@ return NULL_RTX; /* Compute the argument. */ - op0 = expand_expr (CALL_EXPR_ARG (exp, 0), subtarget, + op0 = expand_expr (CALL_EXPR_ARG (exp, 0), + (subtarget + && (TYPE_MODE (TREE_TYPE (CALL_EXPR_ARG (exp, 0))) + == GET_MODE (subtarget))) ? subtarget : NULL_RTX, VOIDmode, EXPAND_NORMAL); /* Compute op, into TARGET if possible. Set TARGET to wherever the result comes back. */ @@ -5722,7 +5723,7 @@ CASE_FLT_FN (BUILT_IN_FINITE): case BUILT_IN_ISFINITE: case BUILT_IN_ISNORMAL: - target = expand_builtin_interclass_mathfn (exp, target, subtarget); + target = expand_builtin_interclass_mathfn (exp, target); if (target) return target; break; @@ -5752,7 +5753,7 @@ break; CASE_FLT_FN (BUILT_IN_POWI): - target = expand_builtin_powi (exp, target, subtarget); + target = expand_builtin_powi (exp, target); if (target) return target; break; @@ -5774,7 +5775,7 @@ break; CASE_FLT_FN (BUILT_IN_CEXPI): - target = expand_builtin_cexpi (exp, target, subtarget); + target = expand_builtin_cexpi (exp, target); gcc_assert (target); return target; Index: gcc/fold-const.c =================================================================== --- gcc/fold-const.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fold-const.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -4737,9 +4737,9 @@ n_high = range_binop (MINUS_EXPR, exp_type, build_int_cst (exp_type, 0), 0, low, 0); - low = n_low, high = n_high; - exp = arg0; - continue; + if (n_high != 0 && TREE_OVERFLOW (n_high)) + break; + goto normalize; case BIT_NOT_EXPR: /* ~ X -> -X - 1 */ @@ -4773,6 +4773,7 @@ if (TYPE_OVERFLOW_UNDEFINED (arg0_type)) *strict_overflow_p = true; + normalize: /* Check for an unsigned range which has wrapped around the maximum value thus making n_high < n_low, and normalize it. */ if (n_low && n_high && tree_int_cst_lt (n_high, n_low)) Index: gcc/reorg.c =================================================================== --- gcc/reorg.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/reorg.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -3458,9 +3458,13 @@ We do this by deleting the INSN containing the SEQUENCE, then re-emitting the insns separately, and then deleting the RETURN. This allows the count of the jump target to be properly - decremented. */ + decremented. - /* Clear the from target bit, since these insns are no longer + Note that we need to change the INSN_UID of the re-emitted insns + since it is used to hash the insns for mark_target_live_regs and + the re-emitted insns will no longer be wrapped up in a SEQUENCE. + + Clear the from target bit, since these insns are no longer in delay slots. */ for (i = 0; i < XVECLEN (pat, 0); i++) INSN_FROM_TARGET_P (XVECEXP (pat, 0, i)) = 0; @@ -3468,13 +3472,10 @@ trial = PREV_INSN (insn); delete_related_insns (insn); gcc_assert (GET_CODE (pat) == SEQUENCE); - after = trial; - for (i = 0; i < XVECLEN (pat, 0); i++) - { - rtx this_insn = XVECEXP (pat, 0, i); - add_insn_after (this_insn, after, NULL); - after = this_insn; - } + add_insn_after (delay_insn, trial, NULL); + after = delay_insn; + for (i = 1; i < XVECLEN (pat, 0); i++) + after = emit_copy_of_insn_after (XVECEXP (pat, 0, i), after); delete_scheduled_jump (delay_insn); continue; } @@ -3579,9 +3580,13 @@ We do this by deleting the INSN containing the SEQUENCE, then re-emitting the insns separately, and then deleting the jump. This allows the count of the jump target to be properly - decremented. */ + decremented. - /* Clear the from target bit, since these insns are no longer + Note that we need to change the INSN_UID of the re-emitted insns + since it is used to hash the insns for mark_target_live_regs and + the re-emitted insns will no longer be wrapped up in a SEQUENCE. + + Clear the from target bit, since these insns are no longer in delay slots. */ for (i = 0; i < XVECLEN (pat, 0); i++) INSN_FROM_TARGET_P (XVECEXP (pat, 0, i)) = 0; @@ -3589,13 +3594,10 @@ trial = PREV_INSN (insn); delete_related_insns (insn); gcc_assert (GET_CODE (pat) == SEQUENCE); - after = trial; - for (i = 0; i < XVECLEN (pat, 0); i++) - { - rtx this_insn = XVECEXP (pat, 0, i); - add_insn_after (this_insn, after, NULL); - after = this_insn; - } + add_insn_after (delay_insn, trial, NULL); + after = delay_insn; + for (i = 1; i < XVECLEN (pat, 0); i++) + after = emit_copy_of_insn_after (XVECEXP (pat, 0, i), after); delete_scheduled_jump (delay_insn); continue; } Index: gcc/DEV-PHASE =================================================================== --- gcc/DEV-PHASE (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/DEV-PHASE (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1 @@ +prerelease Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,3 +1,714 @@ +2010-10-15 Joseph Myers + + * doc/extend.texi (Variable Length): Don't refer to VLAs not + conforming to C99. + +2010-10-14 Joseph Myers + + PR c/45969 + * c-typeck.c (build_binary_op): Don't try to compute a semantic + type with excess precision for boolean operations. + +2010-10-13 Richard Guenther + Joern Rennecke + + PR debug/44832 + * tree-ssa-live.c (mark_all_vars_used_1): Set TREE_USED for + LABEL_DECL. + (remove_unused_scope_block_p): Don't drop TREE_USED LABEL_DECLs + unless they have DECL_IGNORED_P set. + +2010-10-13 Richard Guenther + + PR tree-optimization/45982 + * tree-ssa-structalias.c (make_constraints_to): New function. + (make_constraint_to): Implement in terms of make_constraints_to. + (find_func_aliases): Properly make return values of pure/const + functions escape if they assign to sth that is not a pointer. + +2010-10-11 Alexandre Oliva + + PR debug/45656 + * cse.c (cse_extended_basic_block): Preserve cc0 info across + debug isnsn. Skip them when searching for cc0 setter. + (set_live_p): Skip debug insns when searching for cc0 user. + +2010-10-09 Ralf Corsépius + + * config.gcc (bfin*-rtems*): Add newlib-stdint.h. + * config.gcc (lm32*-rtems*): Add newlib-stdint.h. + +2010-10-07 Richard Guenther + + PR middle-end/45869 + * tree-cfg.c (verify_gimple_assign_binary): Allow vector shifts + of pointers. + +2010-10-07 Richard Guenther + + Backport from mainline + 2010-09-07 Richard Guenther + + PR middle-end/45569 + * tree-eh.c (operation_could_trap_helper_p): Neither COMPLEX_EXPR + nor CONSTRUCTOR can trap. + * tree-complex.c (update_complex_assignment): Update EH info. + +2010-10-06 Jack Howarth + + Backport from mainline + 2010-04-26 Jack Howarth + + PR 43715 + * configure.ac: Pass -g for export_sym_check on darwin. + Use "-undefined dynamic_lookup" on darwin. + * configure: Regenerate. + +2010-10-05 Ira Rosen + + PR tree-optimization/45752 + * tree-vect-slp.c (vect_get_mask_element): Remove static + variables, make them function arguments. + (vect_transform_slp_perm_load): Pass new arguments to + vect_get_mask_element. + +2010-10-04 Matthias Klose + + * config/sparc/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the + multilib osdirname if it exists. + * config/s390/t-linux64 (MULTILIB_OSDIRNAMES): Likewise. + +2010-10-03 John David Anglin + + PR target/45820 + * config/pa/pa.c (pa_secondary_reload): Handle symbolic operands + earlier. + +2010-10-01 Richard Guenther + + PR tree-optimization/45854 + * tree-eh.c (cleanup_empty_eh): Avoid degenerate case. + +2010-09-30 Jakub Jelinek + + PR target/45843 + * config/i386/i386.c (ix86_gimplify_va_arg): Use + INTVAL (XEXP (slot, 1)) as prev_size. + +2010-09-29 Kai Tietz + + * config/i386/mingw32.h (TARGET_64BIT): replaced by + TARGET_64BIT_DEFAULT in #if check. + +2010-09-28 Richard Henderson + + * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Output 8 bytes + when 8 bytes are requested. + +2010-09-27 Richard Sandiford + + Backport from mainline: + + 2010-05-19 James E. Wilson + + PR target/43764 + * config/mips/mips.c (mips_call_expr_from_insn): New arg second_call. + Set it. + (mips_annotate_pic_calls): Pass new arg to mips_call_expr_from_insn. + Use it. + +2010-09-27 Richard Sandiford + + PR rtl-optimization/43358 + * ira-lives.c (process_single_reg_class_operands): Adjust the costs + of a single hard register, using simplify_subreg_regno to decide + what that register should be. + +2010-09-25 Eric Botcazou + + * tree-inline.c (copy_bb): Use GSI_CONTINUE_LINKING when inserting new + statements because of the return slot optimization. + +2010-09-24 Jakub Jelinek + + Revert: + 2010-09-17 H.J. Lu + + PR middle-end/45234 + * calls.c (expand_call): Make sure that all variable sized + adjustments are multiple of preferred stack boundary after + stack alignment. + +2010-09-23 Eric Botcazou + + Backport from mainline + 2010-09-02 Olivier Hainque + + PR middle-end/44763 + * ira-color.c (SORTGT): New macro, helper for qsort callbacks. + (allocno_priority_compare_func): Use it instead of a straight + difference computation over priorities. + +2010-09-22 Eric Botcazou + + PR java/44095 + * config/sparc/linux.h (ASM_SPEC): Pass -K PIC if -findirect-dispatch + is specified and the suffix of the file isn't ".c". + * config/sparc/linux64.h (ASM_SPEC): Likewise. + +2010-09-22 Eric Botcazou + + PR target/35664 + * config/sparc/constraints.md ('e'): Return NO_REGS if !TARGET_FPU. + ('f'): Likewise. + +2010-09-21 Hans-Peter Nilsson + + PR rtl-optimization/41085 + Backport from mainline + 2010-07-27 Bernd Schmidt + + PR rtl-optimization/45051 + * reload1.c (delete_output_reload): Use refers_to_regno_p rather + than reg_mentioned_p. + +2010-09-21 Kai Tietz + + PR target/45694 + * config/i386/i386.c (ix86_expand_prologue): Save r10 in case that + static chain-register is used for 64-bit. + +2010-09-21 Jakub Jelinek + + PR middle-end/45678 + * expr.c (expand_expr_real_1) : If + op0 isn't sufficiently aligned and there is movmisalignM + insn for mode, use it to load op0 into a temporary register. + + Backport from mainline + 2010-09-20 Jakub Jelinek + + PR middle-end/45678 + * cfgexpand.c (expand_one_stack_var_at): Limit alignment to + crtl->max_used_stack_slot_alignment. + +2010-09-21 Richard Guenther + + PR middle-end/45704 + * gimplify.c (gimplify_modify_expr_rhs): Preserve volatileness. + +2010-09-20 Jakub Jelinek + + PR rtl-optimization/45728 + * expr.c (expand_expr_real_1): If op0 isn't REG or MEM, try + gen_lowpart_common first and if that fails, force_reg first + before calling gen_lowpart. + + PR rtl-optimization/45695 + * combine.c (try_combine): Don't try to swap the two patterns, if the + chosen order is not possible, just give up. For HAVE_cc0 targets, + check if XVECEXP (newpat, 0, 0) doesn't use REGs or MEMs set by insns + in between i2 and i3. + +2010-09-20 Eric Botcazou + + PR rtl-optimization/42775 + * cfgrtl.c (rest_of_pass_free_cfg): Recompute notes if delay slot + scheduling is enabled. + +2010-09-20 H.J. Lu + + Backport from mainline + 2010-09-17 H.J. Lu + + PR middle-end/45234 + * calls.c (expand_call): Make sure that all variable sized + adjustments are multiple of preferred stack boundary after + stack alignment. + +2010-09-20 Rafael Carre + + PR target/45726 + * arm.md (arm_movtas_ze): Only enable on machine with MOVT. + +2010-09-20 Richard Guenther + + PR tree-optimization/45623 + * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Adjust. + (get_constraint_for_component_ref): If computing a constraint + for the rhs handle type punning through unions. + (get_constraint_for_address_of): Adjust. + (get_constraint_for_1): Likewise. + (get_constraint_for): Likewise. + (get_constraint_for_rhs): New function. + (do_structure_copy): Adjust. + (make_constraint_to): Likewise. + (handle_const_call): Likewise. + (find_func_aliases): Likewise. + +2010-09-18 Richard Guenther + + PR tree-optimization/45709 + * tree-inline.c (copy_phis_for_bb): Delay commit of edge + insertions until after all PHI nodes of the block are processed. + +2010-09-18 H.J. Lu + + Backport from mainline + 2010-04-07 Dodji Seketeli + + PR debug/43628 + * dwarf2out.c (modified_type_die): Ignore artificial typedefs. + +2010-09-18 Richard Guenther + + PR tree-optimization/45709 + * tree-inline.c (copy_phis_for_bb): Fixup new_edge when + we splitted it. + +2010-09-17 Rainer Orth + + Backport from mainline: + 2010-09-08 Rainer Orth + + * doc/sourcebuild.texi (Effective-Target Keywords): Document + run_expensive_tests. + +2010-09-15 Eric Botcazou + + PR rtl-optimization/45593 + * reorg.c (relax_delay_slots): Use emit_copy_of_insn_after to re-emit + insns that were in delay slots as stand-alone insns. + +2010-09-14 Tristan Gingold + + * configure.ac (plugins): Fix typos. + * configure: Regenerate. + +2010-09-14 Jakub Jelinek + + PR middle-end/45567 + * builtins.c (expand_builtin_interclass_mathfn, expand_builtin_cexpi, + expand_builtin_powi): Remove subtarget argument, pass NULL_RTX instead. + (expand_builtin): Adjust caller. + (expand_builtin_unop): Only use subtarget if it has the right mode. + + PR debug/45660 + * dwarf2out.c (gen_decl_die): Call gen_type_die for origin before + gen_type_die for function/method return type. + +2010-09-13 Hans-Peter Nilsson + + PR rtl-optimization/41087 + * ifcvt.c (noce_get_condition): Don't allow conditions with + side-effects. + +2010-09-12 Alexander Monakov + + Backport from mainline + 2010-09-06 Andrey Belevantsev + + PR rtl-optimization/44919 + * sel-sched.c (move_cond_jump): Remove assert, check that + the several blocks case can only happen with mutually exclusive + insns instead. Rewrite the movement code to support moving through + several basic blocks. + +2010-09-10 Jack Howarth + + Backport from mainline + 2010-09-07 H.J. Lu + Jack Howarth + + PR target/36502 + PR target/42313 + PR target/44651 + * config/i386/darwin.h (STACK_BOUNDARY): Redefine as 128 for + profiling or 64-bit MS_ABI and as BITS_PER_WORD otherwise. + (PREFERRED_STACK_BOUNDARY): Replace STACK_BOUNDARY with 128 in + MAX macro. + +2010-09-09 Vladimir Makarov + + PR middle-end/45312 + * reload1.c (merge_assigned_reloads): Remove. + (reload_as_needed): Don't call it. + +2010-09-09 Matthias Klose + + PR bootstrap/43847 + * configure.ac (--enable-plugin): Enhance for cross builds. + * configure: Regenerate. + +2010-09-09 Vladimir Makarov + + PR middle-end/44554 + * ira.c (ira): Switch off sharing spill slots if setjmp is called. + +2010-09-08 Vladimir Makarov + + PR middle-end/40386 + * ira.c (pseudo_for_reload_consideration_p): Don't use + flag_ira_share_spill_slots. + +2010-09-09 Ulrich Weigand + + * config/s390/s390.c (legitimate_reload_constant_p): Accept floating- + point zero operands that fit into a single GPR. + (s390_preferred_reload_class): Ensure we only return general-purpose + register classes. + * config/s390/s390.md ("*mov_64dfp"): Use lghi to load + floating-point zero operands into GPRs. + ("*mov_64"): Likewise. + ("mov"): Likewise using lhi. + +2010-09-09 Ulrich Weigand + + * config/s390/s390.c (s390_symref_operand_p): Return false for + literal pool references. + (s390_check_qrst_address): Update caller. + +2010-09-08 Martin Jambor + + PR other/45443 + * doc/invoke.texi: Add -fipa-cp-clone to list of switches turned on + at -O3. + +2010-09-03 Jakub Jelinek + + PR middle-end/45484 + * dwarf2out.c (flush_queued_reg_saves): Rename to... + (dwarf2out_flush_queued_reg_saves): ... this. No longer static. + (dwarf2out_frame_debug): Adjust callers. + * dwarf2out.h (dwarf2out_flush_queued_reg_saves): New prototype. + * config/i386/i386.c (output_set_got): Call it. + + PR debug/45500 + * dwarf2out.c (rtl_for_decl_init): Give up for all generic vectors, + not just generic vectors with BLKmode. + +2010-09-02 Ian Bolton + + Backport from mainline + 2010-09-01 Ian Bolton + + * Makefile.in (tree-switch-conversion.o): Update dependencies. + + 2010-08-19 Ian Bolton + + PR target/45070 + * config/arm/arm.c (arm_output_epilogue): Ensure that return + value of size 1-3 is handled correctly. + + 2010-08-19 Ian Bolton + + * tree-switch-conversion.c (gen_inbound_check): Ensure that the + type for the conditional has wide enough range. + + 2010-08-07 Marcus Shawcroft + + * config/arm/linux-atomic.c (SUBWORD_VAL_CAS): Instantiate with + 'unsigned short' and 'unsigned char' instead of 'short' and 'char'. + (SUBWORD_BOOL_CAS): Likewise. + (SUBWORD_SYNC_OP): Likewise. + (SUBWORD_TEST_AND_SET): Likewise. + (FETCH_AND_OP_WORD): Parenthesise INF_OP + (SUBWORD_SYNC_OP): Likewise. + (OP_AND_FETCH_WORD): Likewise. + +2010-09-01 Jakub Jelinek + + PR middle-end/45458 + * bb-reorder.c (add_labels_and_missing_jumps): Treat + bbs ending with throwing insns like blocks ending with a call. + (fix_up_fall_thru_edges): Likewise. + +2010-09-01 Eric Botcazou + + * gimplify.c (gimplify_init_constructor): Do not create a temporary for + a volatile LHS if the constructor has only one element. + +2010-08-31 Eric Botcazou + + * tree-nested.c (convert_all_function_calls): Iterate until after the + sum of static chains in the nest doesn't change. + +2010-08-31 Eric Botcazou + + Backport from mainline + 2010-08-20 Jakub Jelinek + + PR rtl-optimization/45353 + * sel-sched-ir.c (sel_bb_head): Return NULL even if next_nonnote_insn + after bb_note is a BARRIER. + +2010-08-30 Jakub Jelinek + + PR middle-end/45423 + * gimplify.c (goa_stabilize_expr): Handle TRUTH_NOT_EXPR + and TRUTH_{AND,OR,XOR}_EXPR. + * c-parser.c (c_parser_omp_atomic): Handle boolean + {PRE,POST}_{INC,DEC}REMENT. + +2010-08-30 Jakub Jelinek + + Backport from mainline + 2010-07-27 Jakub Jelinek + + PR c/45079 + * c-pretty-print.c (pp_c_expression): Handle C_MAYBE_CONST_EXPR. + +2010-08-30 H.J. Lu + + Backport from mainline + 2010-08-25 Richard Guenther + + PR tree-optimization/45393 + * tree-ssa-math-opts.c (execute_cse_sincos_1): Properly transfer + and clean EH info. Avoid SSA update. + (execute_cse_sincos): Cleanup the CFG if it has changed. + +2010-08-28 Eric Botcazou + + * config/ia64/ia64.md (cstorebi4): Fix thinko. + +2010-08-28 Uros Bizjak + + PR target/41484 + * config/i386/sse.md (sse4_1_extendv8qiv8hi2): Also accept memory + operands for operand 1. + (sse4_1_extendv4qiv4si2): Ditto. + (sse4_1_extendv2qiv2di2): Ditto. + (sse4_1_extendv4hiv4si2): Ditto. + (sse4_1_extendv2hiv2di2): Ditto. + (sse4_1_extendv2siv2di2): Ditto. + (sse4_1_zero_extendv8qiv8hi2): Ditto. + (sse4_1_zero_extendv4qiv4si2): Ditto. + (sse4_1_zero_extendv2qiv2di2): Ditto. + (sse4_1_zero_extendv4hiv4si2): Ditto. + (sse4_1_zero_extendv2hiv2di2): Ditto. + (sse4_1_zero_extendv2siv2di2): Ditto. + (*sse4_1_extendv8qiv8hi2): Remove insn pattern. + (*sse4_1_extendv4qiv4si2): Ditto. + (*sse4_1_extendv2qiv2di2): Ditto. + (*sse4_1_extendv4hiv4si2): Ditto. + (*sse4_1_extendv2hiv2di2): Ditto. + (*sse4_1_extendv2siv2di2): Ditto. + (*sse4_1_zero_extendv8qiv8hi2): Ditto. + (*sse4_1_zero_extendv4qiv4si2): Ditto. + (*sse4_1_zero_extendv2qiv2di2): Ditto. + (*sse4_1_zero_extendv4hiv4si2): Ditto. + (*sse4_1_zero_extendv2hiv2di2): Ditto. + (*sse4_1_zero_extendv2siv2di2): Ditto. + +2010-08-25 Jakub Jelinek + + PR rtl-optimization/44858 + * combine.c (try_combine): If recog_for_combine added CLOBBERs to + newi2pat, make sure they don't affect newpat. + + PR rtl-optimization/45400 + * combine.c (simplify_shift_const_1) : Only use + SUBREG_REG if both modes are of MODE_INT class. + +2010-08-20 Changpeng Fang + + PR tree-optimization/45260 + * tree-flow.h (may_be_nonaddressable_p): New definition. Make the + existing static function global. + + * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): This function + is changed to global. + + * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Call + may_be_nonaddressable_p on base, and don't collect this reference + if the address of the base could not be taken. + +2010-08-20 David Edelsohn + + Backport from mainline + 2010-04-22 David Edelsohn + + * config/rs6000/x-aix: Override LDFLAGS for all COMPILERS. + +2010-08-19 Uros Bizjak + + * config/i386/i386.md (*add3_cconly_overflow): Do not use + ix86_binary_operator_ok. + +2010-08-18 Uros Bizjak + + PR target/45327 + * config/i386/i386.md (_3): Do not use + ix86_binary_operator_ok. + +2010-08-18 H.J. Lu + + Backport from mainline + 2010-08-18 Paolo Bonzini + + PR middle-end/45292 + * optabs.c (expand_bool_compare_and_swap): Expand pending + pops before trying the optab. + +2010-08-17 Uros Bizjak + + PR target/45296 + * reginfo.c (globalize_reg): Reject stack registers. + +2010-08-16 Changpeng Fang + + Backport from mainline: + 2010-08-12 Changpeng Fang + + PR tree-optimization/45241 + * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Give + up dot_prod pattern searching if a stmt is outside the loop. + +2010-08-16 John David Anglin + + Backport from mainline: + 2010-08-09 Richard Guenther + + PR middle-end/44632 + * function.c (gimplify_parameters): Do not clear addressable + bit of the original parameter. + +2010-08-14 John David Anglin + + Revert: + 2010-08-08 John David Anglin + + PR boehm-gc/34544 + * gthr-posix.h (__gthread_start): Delete. + (__gthread_active_init): Use pthread_default_stacksize_np instead of + pthread_create to determine if hpux pthreads are active. + * gthr-posix95.h (__gthread_start): Delete. + (__gthread_active_init): Likewise use pthread_default_stacksize_np. + +2010-08-12 Jakub Jelinek + + PR middle-end/45262 + * fold-const.c (make_range) : Punt if + -a overflows. Normalize the range. + + PR debug/45259 + * caller-save.c (save_call_clobbered_regs): Only swap notes with + DEBUG_INSNs if n_regs_saved. + + Backport from mainline + 2010-07-30 Jakub Jelinek + + PR debug/45055 + PR rtl-optimization/45137 + * rtl.h (prev_nonnote_nondebug_insn, next_nonnote_nondebug_insn): New + prototypes. + * emit-rtl.c (prev_nonnote_nondebug_insn, next_nonnote_nondebug_insn): + New functions. + * combine.c (next_nonnote_nondebug_insn): Removed. + * ifcvt.c (noce_process_if_block): Use prev_nonnote_nondebug_insn. + * haifa-sched.c (queue_to_ready): Use next_nonnote_nondebug_insn. + * sched-deps.c (sched_analyze_insn): Likewise. + (fixup_sched_groups, deps_start_bb): Use prev_nonnote_nondebug_insn. + * rtlanal.c (canonicalize_condition): Likewise. + * postreload.c (reload_combine): Likewise. + (reload_cse_move2add): Use next_nonnote_nondebug_insn. + +2010-08-08 John David Anglin + + Backport from mainline. + 2010-07-17 John David Anglin + + PR target/44805 + * config/pa/pa.h (CONSTANT_ALIGNMENT): Align strings to BITS_PER_WORD + on all targets. + +2010-08-08 Richard Guenther + + PR middle-end/45034 + * convert.c (convert_to_integer): Always use an unsigned + type for narrowed negate and bitwise not. + +2010-08-08 Richard Guenther + + PR tree-optimization/45109 + * tree-ssa-structalias.c (get_constraint_for_component_ref): + Explicitly strip handled components and indirect references. + +2010-08-08 John David Anglin + + PR boehm-gc/34544 + * gthr-posix.h (__gthread_start): Delete. + (__gthread_active_init): Use pthread_default_stacksize_np instead of + pthread_create to determine if hpux pthreads are active. + * gthr-posix95.h (__gthread_start): Delete. + (__gthread_active_init): Likewise use pthread_default_stacksize_np. + +2010-08-06 Eric Botcazou + + PR target/44942 + * config/sparc/sparc.c (function_arg_advance): Always take into account + the padding, if any. + +2010-08-06 Uros Bizjak + + * expmed.c (expand_mult_const) : Expand shift into + temporary. Emit move from temporary to accum, so REG_EQUAL note will + be attached to this insn in correct mode. + +2010-08-06 Uros Bizjak + + * config/i386/i386.c (ix86_decompose_address): Check for SI_REG + using REGNO of base_reg directly. + +2010-08-03 Ulrich Weigand + + * config/spu/spu.c (spu_emit_branch_hint): Do not access NOTE_KIND of + non-NOTE insns. + +2010-08-03 Uros Bizjak + + PR target/41089 + * config/alpha/alpha.c (alpha_build_builtin_va_list): Mark __offset + as volatile. + +2010-08-03 Martin Jambor + + PR tree-optimization/44914 + * tree-sra.c (cfg_changed): New variable. + (sra_initialize): Initialize cgf_changed to false. + (scan_function): Set cfg_changed if cfg was changed. + (perform_intra_sra): Return also TODO_cleanup_cfg if cfg was changed. + (ipa_early_sra): Likewise. + +2010-08-02 DJ Delorie + + * config/rx/predicates.md (rx_constshift_operand): New. + * config/rx/rx.md (zs_cond): New. + (cbranchsi4): Remove mode. + (*cbranchsi4_): Likewise. + (*tstbranchsi4_): New. + (*tstbranchsi4r_): New. + (*tstbranchsi4m_eq): New. + (*tstbranchsi4m_ne): New. + (cbranchsf4): Remove mode. + (*cbranchsf4_): Likewise. + +2010-07-31 Richard Guenther + + PR tree-optimization/45052 + * ipa-pure-const.c (check_stmt): Check volatileness. + +2010-07-31 Richard Guenther + + * ipa-prop.c (ipa_modify_formal_parameters): Use + build_distinct_type_copy. + +2010-07-31 Richard Guenther + + * DEV-PHASE: Set back to prerelease. + * BASE-VER: Bump to 4.5.2. + 2010-07-31 Release Manager * GCC 4.5.1 released. @@ -105,8 +816,8 @@ 2010-07-19 Bingfeng Mei * ddg.c (create_ddg): Exclude nodes of debug_insn in counting nodes - of a loop. - * loop-doloop.c (doloop_condition_get): Skip possible debug_insn. + of a loop. + * loop-doloop.c (doloop_condition_get): Skip possible debug_insn. 2010-07-15 Jie Zhang @@ -286,7 +997,7 @@ if old_decl was DECL_ONE_ONLY. 2010-06-21 Jakub Jelinek - + PR target/44575 * config/i386/i386.c (ix86_gimplify_va_arg): When copying va_arg from a set of register save slots into a temporary, @@ -392,24 +1103,24 @@ Backport from mainline 2010-05-17 Martin Jambor - PR middle-end/44133 - * tree-sra.c (create_access_replacement): New parameter rename, mark - the replaement for renaming only when it is true. - (get_access_replacement): Pass true in the rename parameter of - create_access_replacement. - (get_unrenamed_access_replacement): New function. - (replace_uses_with_default_def_ssa_name): New parameter racc, get the - replacement declaration from it. + PR middle-end/44133 + * tree-sra.c (create_access_replacement): New parameter rename, mark + the replaement for renaming only when it is true. + (get_access_replacement): Pass true in the rename parameter of + create_access_replacement. + (get_unrenamed_access_replacement): New function. + (replace_uses_with_default_def_ssa_name): New parameter racc, get the + replacement declaration from it. 2010-06-29 Martin Jambor Backport from mainline 2010-04-13 Martin Jambor - * tree-sra.c (replace_uses_with_default_def_ssa_name): New function. - (sra_modify_assign): Delete stmts loading dead data even if racc has no - children. Call replace_uses_with_default_def_ssa_name to handle - SSA_NAES on lhs. + * tree-sra.c (replace_uses_with_default_def_ssa_name): New function. + (sra_modify_assign): Delete stmts loading dead data even if racc has no + children. Call replace_uses_with_default_def_ssa_name to handle + SSA_NAES on lhs. 2010-06-27 Jan Hubicka @@ -536,7 +1247,7 @@ Backport from mainline: 2010-05-18 Steven Bosscher - * darwin.c (darwin_asm_named_section): Do not add assembler comment + * darwin.c (darwin_asm_named_section): Do not add assembler comment after .section directive; just print it before the directive instead. @@ -1659,7 +2370,7 @@ * tree-tailcall.c (find_tail_calls): Verify the tail call properly. -2010-04-19 Ira Rosen +2010-04-19 Ira Rosen PR tree-optimization/43771 * tree-vect-slp.c (vect_supported_load_permutation_p): Check that @@ -1925,11 +2636,11 @@ * Makefile.in ($(out_object_file)): Depend on gt-$(basename $(notdir $(out_file))).h. -2010-04-01 Ralf Corsépius +2010-04-01 Ralf Corsépius * config.gcc (lm32-*-rtems*): Add t-lm32. -2010-04-01 Joel Sherrill +2010-04-01 Joel Sherrill * config.gcc: Add lm32-*-rtems*. * config/lm32/rtems.h: New file. @@ -1984,8 +2695,8 @@ PR middle-end/43602 Revert - 2010-03-30 Seongbae Park - Jack Howarth + 2010-03-30 Seongbae Park + Jack Howarth * tree-profile.c (tree_init_ic_make_global_vars): Make static variables TLS. @@ -2276,8 +2987,8 @@ * config/s390/s390.c (s390_emit_prologue): Omit issuing a dynamic stack check if the mask would be zero. -2010-03-30 Seongbae Park - Jack Howarth +2010-03-30 Seongbae Park + Jack Howarth * tree-profile.c (tree_init_ic_make_global_vars): Make static variables TLS. @@ -2620,7 +3331,7 @@ instead of callq. 2010-03-22 Janis Johnson - Rainer Orth + Rainer Orth * doc/sourcebuild.texi (Test Directives): Split into six subsections, with most of the current text in new subsections @@ -2775,8 +3486,8 @@ (sparc_file_end): Emit a hidden comdat symbol for the PIC thunk if possible. Output CFI information as needed. -2010-03-18 Francois-Xavier Coudert - Jack Howarth +2010-03-18 Francois-Xavier Coudert + Jack Howarth PR target/36399 * config/i386/i386.h: Fix ABI on darwin x86-32. @@ -2919,7 +3630,7 @@ * graphite-sese-to-poly.c (split_reduction_stmt): Skip debug statements before splitting block. -2010-03-16 Rainer Orth +2010-03-16 Rainer Orth * doc/sourcebuild.texi (Testsuites): Fix markup. Use pathnames relative to gcc/testsuite. @@ -3531,7 +4242,7 @@ * tree-vect-loop.c (vect_transform_loop): Kill out-of-loop debug uses of relevant DEFs that are dead outside the loop too. -2010-03-06 Alexandre Oliva +2010-03-06 Alexandre Oliva * var-tracking.c (dataflow_set_merge): Swap src and src2. Reverted: @@ -4313,7 +5024,7 @@ * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Call lang_hooks.types_compatible_p instead of comptypes. -2010-02-18 Sebastian Huber +2010-02-18 Sebastian Huber * config/arm/lib1funcs.asm (__prefer_thumb__): New define. (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Use Thumb-1 variant @@ -4384,7 +5095,7 @@ statements ... (vrp_visit_phi_node): ... but only for loop PHI nodes. -2010-02-16 Ira Rosen +2010-02-16 Ira Rosen PR tree-optimization/43074 * tree-vectorizer.h (VECTORIZABLE_CYCLE_DEF): New. @@ -4412,8 +5123,8 @@ flag_var_tracking_assignments. * Makefile.in (var-tracking.o): Adjust dependencies. -2010-02-16 Jack Howarth - Jakub Jelinek +2010-02-16 Jack Howarth + Jakub Jelinek PR target/42854 * config/darwin.h (ASM_WEAKEN_DECL): Don't check weak attribute @@ -4511,7 +5222,7 @@ 2010-02-12 Dave Korn Jack Howarth - Iain Sandoe + Iain Sandoe PR target/42982 Partial revert of unintended change in fix for PR41605. @@ -5934,7 +6645,7 @@ (maybe_tidy_empty_bb): Delete prototype. (purge_empty_blocks): Declare. -2010-01-14 Andrey Belevantsev +2010-01-14 Andrey Belevantsev PR rtl-optimization/42249 * sel-sched.c (try_replace_dest_reg): When chosen register Index: gcc/testsuite/gcc.c-torture/execute/pr45034.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr45034.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr45034.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,45 @@ +extern void abort (void); +static void fixnum_neg(signed char x, signed char *py, int *pv) +{ + unsigned char ux, uy; + + ux = (unsigned char)x; + uy = -ux; + *py = (uy <= 127) ? (signed char)uy : (-(signed char)(255 - uy) - 1); + *pv = (x == -128) ? 1 : 0; +} + +void __attribute__((noinline)) foo(int x, int y, int v) +{ + if (y < -128 || y > 127) + abort(); +} + +int test_neg(void) +{ + signed char x, y; + int v, err; + + err = 0; + x = -128; + for (;;) { + fixnum_neg(x, &y, &v); + foo((int)x, (int)y, v); + if ((v && x != -128) || (!v && x == -128)) + ++err; + if (x == 127) + break; + ++x; + } + return err; +} + +int main(void) +{ + if (sizeof (char) != 1) + return 0; + if (test_neg() != 0) + abort(); + return 0; +} + Index: gcc/testsuite/gcc.c-torture/execute/pr45070.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr45070.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr45070.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,52 @@ +/* PR45070 */ +extern void abort(void); + +struct packed_ushort { + unsigned short ucs; +} __attribute__((packed)); + +struct source { + int pos, length; + int flag; +}; + +static void __attribute__((noinline)) fetch(struct source *p) +{ + p->length = 128; +} + +static struct packed_ushort __attribute__((noinline)) next(struct source *p) +{ + struct packed_ushort rv; + + if (p->pos >= p->length) { + if (p->flag) { + p->flag = 0; + fetch(p); + return next(p); + } + p->flag = 1; + rv.ucs = 0xffff; + return rv; + } + rv.ucs = 0; + return rv; +} + +int main(void) +{ + struct source s; + int i; + + s.pos = 0; + s.length = 0; + s.flag = 0; + + for (i = 0; i < 16; i++) { + struct packed_ushort rv = next(&s); + if ((i == 0 && rv.ucs != 0xffff) + || (i > 0 && rv.ucs != 0)) + abort(); + } + return 0; +} Index: gcc/testsuite/gcc.c-torture/execute/pr45695.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr45695.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr45695.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,32 @@ +/* PR rtl-optimization/45695 */ + +extern void abort (void); + +__attribute__((noinline)) void +g (int x) +{ + asm volatile ("" : "+r" (x)); +} + +__attribute__((noinline)) int +f (int a, int b, int d) +{ + int r = -1; + b += d; + if (d == a) + r = b - d; + g (b); + return r; +} + +int +main (void) +{ + int l; + asm ("" : "=r" (l) : "0" (0)); + if (f (l + 0, l + 1, l + 4) != -1) + abort (); + if (f (l + 4, l + 1, l + 4) != 1) + abort (); + return 0; +} Index: gcc/testsuite/gcc.c-torture/execute/pr40386.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr40386.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr40386.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,99 @@ +/* { dg-options "-fno-ira-share-spill-slots" } */ +#define CHAR_BIT 8 + +#define ROR(a,b) (((a) >> (b)) | ((a) << ((sizeof (a) * CHAR_BIT) - (b)))) +#define ROL(a,b) (((a) << (b)) | ((a) >> ((sizeof (a) * CHAR_BIT) - (b)))) + +#define CHAR_VALUE ((char)0xf234) +#define SHORT_VALUE ((short)0xf234) +#define INT_VALUE ((int)0xf234) +#define LONG_VALUE ((long)0xf2345678L) +#define LL_VALUE ((long long)0xf2345678abcdef0LL) + +#define SHIFT1 4 +#define SHIFT2 ((sizeof (long long) * CHAR_BIT) - SHIFT1) + +char c = CHAR_VALUE; +short s = SHORT_VALUE; +int i = INT_VALUE; +long l = LONG_VALUE; +long long ll = LL_VALUE; +int shift1 = SHIFT1; +int shift2 = SHIFT2; + +main () +{ + if (ROR (c, shift1) != ROR (CHAR_VALUE, SHIFT1)) + abort (); + + if (ROR (c, SHIFT1) != ROR (CHAR_VALUE, SHIFT1)) + abort (); + + if (ROR (s, shift1) != ROR (SHORT_VALUE, SHIFT1)) + abort (); + + if (ROR (s, SHIFT1) != ROR (SHORT_VALUE, SHIFT1)) + abort (); + + if (ROR (i, shift1) != ROR (INT_VALUE, SHIFT1)) + abort (); + + if (ROR (i, SHIFT1) != ROR (INT_VALUE, SHIFT1)) + abort (); + + if (ROR (l, shift1) != ROR (LONG_VALUE, SHIFT1)) + abort (); + + if (ROR (l, SHIFT1) != ROR (LONG_VALUE, SHIFT1)) + abort (); + + if (ROR (ll, shift1) != ROR (LL_VALUE, SHIFT1)) + abort (); + + if (ROR (ll, SHIFT1) != ROR (LL_VALUE, SHIFT1)) + abort (); + + if (ROR (ll, shift2) != ROR (LL_VALUE, SHIFT2)) + abort (); + + if (ROR (ll, SHIFT2) != ROR (LL_VALUE, SHIFT2)) + abort (); + + if (ROL (c, shift1) != ROL (CHAR_VALUE, SHIFT1)) + abort (); + + if (ROL (c, SHIFT1) != ROL (CHAR_VALUE, SHIFT1)) + abort (); + + if (ROL (s, shift1) != ROL (SHORT_VALUE, SHIFT1)) + abort (); + + if (ROL (s, SHIFT1) != ROL (SHORT_VALUE, SHIFT1)) + abort (); + + if (ROL (i, shift1) != ROL (INT_VALUE, SHIFT1)) + abort (); + + if (ROL (i, SHIFT1) != ROL (INT_VALUE, SHIFT1)) + abort (); + + if (ROL (l, shift1) != ROL (LONG_VALUE, SHIFT1)) + abort (); + + if (ROL (l, SHIFT1) != ROL (LONG_VALUE, SHIFT1)) + abort (); + + if (ROL (ll, shift1) != ROL (LL_VALUE, SHIFT1)) + abort (); + + if (ROL (ll, SHIFT1) != ROL (LL_VALUE, SHIFT1)) + abort (); + + if (ROL (ll, shift2) != ROL (LL_VALUE, SHIFT2)) + abort (); + + if (ROL (ll, SHIFT2) != ROL (LL_VALUE, SHIFT2)) + abort (); + + exit (0); +} Index: gcc/testsuite/gcc.c-torture/execute/pr40386.x =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr40386.x (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr40386.x (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,2 @@ +set additional_flags "-fno-ira-share-spill-slots" +return 0 Index: gcc/testsuite/gcc.c-torture/execute/pr44858.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr44858.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr44858.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,28 @@ +/* PR rtl-optimization/44858 */ + +extern void abort (void); +int a = 3; +int b = 1; + +__attribute__((noinline)) long long +foo (int x, int y) +{ + return x / y; +} + +__attribute__((noinline)) int +bar (void) +{ + int c = 2; + c &= foo (1, b) > b; + b = (a != 0) | c; + return c; +} + +int +main (void) +{ + if (bar () != 0 || b != 1) + abort (); + return 0; +} Index: gcc/testsuite/gcc.c-torture/execute/pr45262.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr45262.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr45262.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,33 @@ +/* PR middle-end/45262 */ + +extern void abort (void); + +int +foo (unsigned int x) +{ + return ((int) x < 0) || ((int) (-x) < 0); +} + +int +bar (unsigned int x) +{ + return x >> 31 || (-x) >> 31; +} + +int +main (void) +{ + if (foo (1) != 1) + abort (); + if (foo (0) != 0) + abort (); + if (foo (-1) != 1) + abort (); + if (bar (1) != 1) + abort (); + if (bar (0) != 0) + abort (); + if (bar (-1) != 1) + abort (); + return 0; +} Index: gcc/testsuite/gcc.c-torture/compile/pr45728.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr45728.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/compile/pr45728.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,17 @@ +/* PR rtl-optimization/45728 */ + +union U +{ + int *m; + double d; +}; + +int i; +union U u; + +int +foo (void) +{ + union U v = { &i }; + return u.d == v.d; +} Index: gcc/testsuite/gcc.c-torture/compile/pr45109.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr45109.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/compile/pr45109.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,38 @@ +struct o_fsm_t; +struct o_fsm_event_t; + +typedef void (*fn_t) (struct o_fsm_t *, + struct o_fsm_event_t const *); + +struct o_fsm_state_t { + fn_t dispatch; +}; + +struct o_fsm_t { + fn_t dispatch; +}; + +extern struct o_fsm_state_t o_fsm_tran(struct o_fsm_t *fsm, + struct o_fsm_state_t next_state); +static void plist_parser_state_start(struct o_fsm_t *fsm, + struct o_fsm_event_t const *fsm_event); + +struct o_fsm_state_t o_fsm_state(fn_t dispatch_fcn) +{ + return *(struct o_fsm_state_t *)&dispatch_fcn; +} + +typedef struct _o_plist_parser_t { + struct o_fsm_t fsm; +} o_plist_parser_t; + +static void plist_parser_state_start(struct o_fsm_t *fsm, + struct o_fsm_event_t const *fsm_event) +{ +} + +void o_plist_deserialize_xml(int fin) +{ + o_plist_parser_t parser; + o_fsm_tran(&parser.fsm, o_fsm_state(plist_parser_state_start)); +} Index: gcc/testsuite/gcc.c-torture/compile/pr45969-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr45969-1.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/compile/pr45969-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,6 @@ +/* { dg-options "-std=c89" } */ +void crash() { + double l[4]; + if((l[0]+l[2]) && (l[1]+l[3])){ + } +} Index: gcc/testsuite/gcc.c-torture/compile/20100915-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/20100915-1.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/compile/20100915-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,82 @@ +/* PR rtl-optimization/45593 */ +/* Testcase by Arnaud Lacombe */ + +typedef unsigned int __u32; +typedef __u32 __be32; +static inline __attribute__((always_inline)) int __attribute__((__cold__)) printk(const char *s, ...) { return 0; } +typedef struct journal_s journal_t; +typedef struct journal_header_s +{ + __be32 h_magic; + __be32 h_blocktype; + __be32 h_sequence; +} journal_header_t; +typedef struct journal_superblock_s +{ + journal_header_t s_header; + __be32 s_blocksize; + __be32 s_maxlen; +} journal_superblock_t; +struct journal_s +{ + struct buffer_head *j_sb_buffer; + journal_superblock_t *j_superblock; + int j_format_version; + int j_blocksize; + unsigned int j_maxlen; +}; +static void journal_fail_superblock (journal_t *journal) +{ + journal->j_sb_buffer = ((void *)0); +} +static int journal_get_superblock(journal_t *journal) +{ + struct buffer_head *bh; + journal_superblock_t *sb; + int err = -100; + bh = journal->j_sb_buffer; + if (!buffer_uptodate(bh)) { + if (!buffer_uptodate(bh)) { + printk ("JBD: IO error reading journal superblock\n"); + goto out; + } + } + err = -101; + if (sb->s_header.h_magic != (( __be32)(__u32)(0)) || + sb->s_blocksize != (( __be32)(__u32)(journal->j_blocksize))) { + printk("JBD: no valid journal superblock found\n"); + goto out; + } + switch((( __u32)(__be32)(sb->s_header.h_blocktype))) { + case 0: + case 1: + break; + default: + goto out; + } + if ((( __u32)(__be32)(sb->s_maxlen)) < journal->j_maxlen) + journal->j_maxlen = (( __u32)(__be32)(sb->s_maxlen)); + else if ((( __u32)(__be32)(sb->s_maxlen)) > journal->j_maxlen) { + printk ("JBD: journal file too short\n"); + goto out; + } + return 0; +out: + journal_fail_superblock(journal); + return err; +} +static int load_superblock(journal_t *journal) +{ + journal_get_superblock(journal); + return 0; +} +int jbd2_journal_update_format (journal_t *journal) +{ + journal_get_superblock(journal); + return 0; +} +int jbd2_journal_wipe(journal_t *journal, int write) +{ + load_superblock(journal); + return 0; +} Index: gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,4 +1,5 @@ /* { dg-timeout-factor 4.0 } */ +/* { dg-require-effective-target run_expensive_tests } */ #define PAR1 int, int, int, int, int, int, int, int, int, int #define PAR2 PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1 Index: gcc/testsuite/gcc.target/i386/builtin-unreachable.c =================================================================== --- gcc/testsuite/gcc.target/i386/builtin-unreachable.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.target/i386/builtin-unreachable.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -9,5 +9,5 @@ __builtin_unreachable (); return p ? 1 : 0; } -/* { dg-final { scan-assembler-not "%e\[bs\]p" { target { ! *-*-darwin* } } } } */ +/* { dg-final { scan-assembler-not "%e\[bs\]p" } } */ /* { dg-final { scan-assembler-not "\[\\t \]+j" } } */ Index: gcc/testsuite/gcc.target/i386/pr36502.c =================================================================== --- gcc/testsuite/gcc.target/i386/pr36502.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/pr36502.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,7 @@ +/* PR target/36502 */ +/* { dg-do compile { target { *-*-darwin* && ilp32 } } } */ +/* { dg-options "-O -fomit-frame-pointer -fno-pic -S" } */ +int a; +void f() {a++;} +/* { dg-final { scan-assembler-not "esp" } } */ + Index: gcc/testsuite/gcc.target/i386/pr45296.c =================================================================== --- gcc/testsuite/gcc.target/i386/pr45296.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/pr45296.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-options "" } */ + +register long double F80 asm("st"); /* { dg-error "stack register" } */ Index: gcc/testsuite/gcc.target/i386/pr45500.c =================================================================== --- gcc/testsuite/gcc.target/i386/pr45500.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/pr45500.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,6 @@ +/* PR debug/45500 */ +/* { dg-do compile } */ +/* { dg-options "-g -msse" } */ + +typedef char V __attribute__ ((__vector_size__ (16))); +static const V s = { '\n', '\r', '?', '\\' }; Index: gcc/testsuite/gcc.target/i386/pr22076.c =================================================================== --- gcc/testsuite/gcc.target/i386/pr22076.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.target/i386/pr22076.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,4 +1,5 @@ -/* { dg-do compile } */ +/* Fails on 32-bit Solaris 2/x86: PR target/44452 */ +/* { dg-do compile { target { ! { i?86-*-solaris2* && ilp32 } } } } */ /* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx" } */ #include Index: gcc/testsuite/gcc.target/i386/abi-2.c =================================================================== --- gcc/testsuite/gcc.target/i386/abi-2.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.target/i386/abi-2.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -6,4 +6,5 @@ typedef long long __m256i __attribute__ ((__vector_size__ (32))); __m256i foo (void) { return (__m256i){ 1, 2, 3, 4 }; } -/* { dg-final { scan-assembler-times "ymm0" 1 } } */ +/* Fails on 32-bit Solaris 2/x86: PR target/44452 */ +/* { dg-final { scan-assembler-times "ymm0" 1 { xfail { i?86-*-solaris2* && ilp32 } } } } */ Index: gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp =================================================================== --- gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp (.../branches/gcc-4_5-branch) (wersja 165515) @@ -28,9 +28,20 @@ } +# If the linker used understands -M , pass it to clear hardware +# capabilities set by the Sun assembler. +set flags "" +set clearcap_ldflags "-Wl,-M,$srcdir/gcc.target/i386/clearcap.map" + +if [check_no_compiler_messages mapfile executable { + int main (void) { return 0; } + } $clearcap_ldflags ] { + set flags $clearcap_ldflags +} + torture-init set-torture-options $C_TORTURE_OPTIONS -set additional_flags "-W -Wall -mavx" +set additional_flags "-W -Wall -mavx $flags" foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] { if {[runtest_file_p $runtests $src]} { Index: gcc/testsuite/gcc.target/sparc/mnofpu.c =================================================================== --- gcc/testsuite/gcc.target/sparc/mnofpu.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/sparc/mnofpu.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,90 @@ +/* PR target/35664 */ +/* Tetstcase by Mike Stein */ + +/* { dg-do compile } */ +/* { dg-options "-O2 -mno-fpu" } */ + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long long u64; +struct pt_regs { +}; +static inline __attribute__((always_inline)) struct task_struct *__get_current(void) +{ +} +static inline __attribute__((always_inline)) u32 flip_dword (u32 l) +{ + return ((l&0xff)<<24) | (((l>>8)&0xff)<<16) | (((l>>16)&0xff)<<8)| ((l>>24)&0xff); +} +static inline __attribute__((always_inline)) u32 __readl(const volatile void *addr) +{ + return flip_dword(*( volatile u32 *)addr); +} +enum e1e_registers { + E1000_PRC64 = 0x0405C, + E1000_PRC127 = 0x04060, + E1000_PRC255 = 0x04064, + E1000_PTC511 = 0x040E4, + E1000_PTC1023 = 0x040E8, + E1000_PTC1522 = 0x040EC, + E1000_MPTC = 0x040F0, +}; +enum e1000_media_type { + e1000_media_type_copper = 1, +}; +struct e1000_rx_desc { + struct { + } wb; +}; +struct e1000_hw_stats { + u64 prc64; + u64 prc127; + u64 prc255; + u64 ptc511; + u64 ptc1023; + u64 ptc1522; + u64 mptc; +}; +struct e1000_shadow_ram { + u16 value; +}; +struct e1000_dev_spec_ich8lan { + struct e1000_shadow_ram shadow_ram[2048]; +}; +struct e1000_hw { + u8 *hw_addr; + union { + struct e1000_dev_spec_ich8lan ich8lan; + } dev_spec; + enum e1000_media_type media_type; +}; +struct e1000_adapter { + u16 link_speed; + struct e1000_hw hw; + struct e1000_hw_stats stats; + unsigned int flags; +}; +static inline __attribute__((always_inline)) u32 __er32(struct e1000_hw *hw, unsigned long reg) +{ + return __readl(hw->hw_addr + reg); +} +void e1000e_update_stats(struct e1000_adapter *adapter) +{ + struct e1000_hw *hw = &adapter->hw; + u16 phy_tmp; + if (adapter->flags & (1 << 10)) { + adapter->stats.prc64 += __er32(hw, E1000_PRC64); + adapter->stats.prc127 += __er32(hw, E1000_PRC127); + adapter->stats.prc255 += __er32(hw, E1000_PRC255); + adapter->stats.ptc511 += __er32(hw, E1000_PTC511); + adapter->stats.ptc1023 += __er32(hw, E1000_PTC1023); + adapter->stats.ptc1522 += __er32(hw, E1000_PTC1522); + } + adapter->stats.mptc += __er32(hw, E1000_MPTC); + if (hw->media_type == e1000_media_type_copper) { + if ((adapter->link_speed == 1000) && + (!e1e_rphy(hw, 0x0A, &phy_tmp))) { + } + } +} Index: gcc/testsuite/gnat.dg/return2_pkg.ads =================================================================== --- gcc/testsuite/gnat.dg/return2_pkg.ads (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gnat.dg/return2_pkg.ads (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,7 @@ +package Return2_Pkg is + + function F return String; + + function G (Line : String; Index : Positive) return String; + +end Return2_Pkg; Index: gcc/testsuite/gnat.dg/return2.adb =================================================================== --- gcc/testsuite/gnat.dg/return2.adb (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gnat.dg/return2.adb (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,33 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +with Return2_Pkg; use Return2_Pkg; + +package body Return2 is + + function Value_Internal (Image : String) return Result_Internal_T is + begin + return (Member => False); + end; + + type Result_T is array (1 .. 2) of Result_Internal_T; + + function Value (Img : String) return T is + My_F : constant String := F; + Result : Result_T; + Value : T; + begin + for I in Result'Range loop + if G (My_F, I) /= "" then + Result (I) := Value_Internal (G (My_F, I)); + if Result (I).Member then + Value (Result (I).Data) := True; + else + raise Program_Error; + end if; + end if; + end loop; + return Value; + end; + +end Return2; Index: gcc/testsuite/gnat.dg/return2.ads =================================================================== --- gcc/testsuite/gnat.dg/return2.ads (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gnat.dg/return2.ads (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,18 @@ +package Return2 is + + type Kind_T is (One, Two); + + type T is array (Kind_T) of Boolean; + + type Result_Internal_T (Member : Boolean := False) is record + case Member is + when True => + Data : Kind_T := Kind_T'First; + when False => + null; + end case; + end record; + + function Value (Img : String) return T; + +end Return2; Index: gcc/testsuite/gcc.dg/20050330-2.c =================================================================== --- gcc/testsuite/gcc.dg/20050330-2.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/20050330-2.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -19,5 +19,3 @@ x->b[y] = x->b[y + 1]; x->b[x->a] = (void *) 0; } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/nested-func-8.c =================================================================== --- gcc/testsuite/gcc.dg/nested-func-8.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/nested-func-8.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O -fno-inline" } */ + +extern void abort (void); + +/* Return 0 and clobber the static chain. */ + +int +zero (int n) +{ + int + nested (int m) + { + return m - n; + } + + return nested (n); +} + +/* Return the triple of ARG in a convoluted manner. */ + +int +triple (int arg) +{ + int + read_arg (void) + { + return arg; + } + + int + parent (int nested_arg) + { + int + child1 (void) + { + return parent (zero (5)); + } + + int + child2 (void) + { + return nested_arg + read_arg (); + } + + return (nested_arg == 0 ? 0 : child1 ()) + child2 (); + } + + return parent (arg); +} + +int main(void) +{ + if (triple (13) != 3 * 13) + abort (); + return 0; +} Index: gcc/testsuite/gcc.dg/gomp/atomic-14.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/atomic-14.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/gomp/atomic-14.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,43 @@ +/* PR middle-end/45423 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp" } */ + +#ifdef __cplusplus +bool *baz (); +#else +_Bool *baz (); +#endif +int *bar (); + +int +foo (void) +{ + #pragma omp barrier + #pragma omp atomic + (*bar ())++; + #pragma omp barrier + #pragma omp atomic + ++(*bar ()); + #pragma omp barrier + #pragma omp atomic + (*bar ())--; + #pragma omp barrier + #pragma omp atomic + --(*bar ()); + #pragma omp barrier + #pragma omp atomic + (*baz ())++; + #pragma omp barrier + #pragma omp atomic + ++(*baz ()); +#ifndef __cplusplus + #pragma omp barrier + #pragma omp atomic + (*baz ())--; + #pragma omp barrier + #pragma omp atomic + --(*baz ()); + #pragma omp barrier +#endif + return 0; +} Index: gcc/testsuite/gcc.dg/gomp/pr34610.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/pr34610.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/gomp/pr34610.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -26,5 +26,3 @@ for (i = 0; i < 10; ++i) bar (i); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/gomp/atomic-12.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/atomic-12.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/gomp/atomic-12.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,306 @@ +/* PR middle-end/45423 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp -fdump-tree-gimple -g0" } */ +/* atomicvar should never be referenced in between the barrier and + following #pragma omp atomic_load. */ +/* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */ +/* { dg-final { cleanup-tree-dump "gimple" } } */ + +#ifdef __cplusplus +bool atomicvar, c; +#else +_Bool atomicvar, c; +#endif +int i, atomicvar2, c2; + +int +foo (void) +{ + #pragma omp barrier + #pragma omp atomic + atomicvar |= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar |= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar |= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar |= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar |= c; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= c; + #pragma omp barrier + #pragma omp atomic + atomicvar &= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar &= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar &= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar &= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar &= c; + #pragma omp barrier + #pragma omp atomic + atomicvar += -1; + #pragma omp barrier + #pragma omp atomic + atomicvar += 0; + #pragma omp barrier + #pragma omp atomic + atomicvar += 1; + #pragma omp barrier + #pragma omp atomic + atomicvar += 2; + #pragma omp barrier + #pragma omp atomic + atomicvar += c; + #pragma omp barrier + #pragma omp atomic + atomicvar -= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar -= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar -= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar -= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar -= c; + #pragma omp barrier + #pragma omp atomic + atomicvar *= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar *= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar *= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar *= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar *= c; + #pragma omp barrier + #pragma omp atomic + atomicvar /= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar /= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar /= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar /= c; + #pragma omp barrier + #pragma omp atomic + atomicvar <<= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar <<= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar <<= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar <<= i; + #pragma omp barrier + #pragma omp atomic + atomicvar >>= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar >>= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar >>= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar >>= i; + #pragma omp barrier + #pragma omp atomic + atomicvar++; + #pragma omp barrier + #pragma omp atomic + ++atomicvar; + #pragma omp barrier +#ifndef __cplusplus + #pragma omp atomic + atomicvar--; + #pragma omp barrier + #pragma omp atomic + --atomicvar; + #pragma omp barrier +#endif + return 0; +} + +int +bar (void) +{ + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 /= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 /= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 /= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 /= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 <<= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 <<= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 <<= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 <<= i; + #pragma omp barrier + #pragma omp atomic + atomicvar2 >>= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 >>= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 >>= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 >>= i; + #pragma omp barrier + #pragma omp atomic + atomicvar2++; + #pragma omp barrier + #pragma omp atomic + ++atomicvar2; + #pragma omp barrier + #pragma omp atomic + atomicvar2--; + #pragma omp barrier + #pragma omp atomic + --atomicvar2; + #pragma omp barrier + return 0; +} Index: gcc/testsuite/gcc.dg/gomp/pr27573.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/pr27573.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/gomp/pr27573.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -16,5 +16,3 @@ } return 0; } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/gomp/atomic-13.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/atomic-13.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/gomp/atomic-13.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,9 @@ +/* PR middle-end/45423 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp -fdump-tree-gimple -g0 -O2" } */ +/* atomicvar should never be referenced in between the barrier and + following #pragma omp atomic_load. */ +/* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */ +/* { dg-final { cleanup-tree-dump "gimple" } } */ + +#include "atomic-12.c" Index: gcc/testsuite/gcc.dg/pr32773.c =================================================================== --- gcc/testsuite/gcc.dg/pr32773.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/pr32773.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -7,5 +7,3 @@ if (p) *p = 0; } /* { dg-message "note: \[^\n\]*execution counts estimated" } */ - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/20030107-1.c =================================================================== --- gcc/testsuite/gcc.dg/20030107-1.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/20030107-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -3,5 +3,3 @@ extern void bar(void) __attribute__((noreturn)); int foo (void) { bar(); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/20051201-1.c =================================================================== --- gcc/testsuite/gcc.dg/20051201-1.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/20051201-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -24,5 +24,3 @@ res = bar (); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c =================================================================== --- gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2,6 +2,7 @@ text section if nothing went in there. */ /* Origin: Joseph Myers */ /* { dg-do compile } */ +/* { dg-require-effective-target function_sections } */ /* { dg-options "-gdwarf-2 -ffunction-sections -w -dA" } */ /* { dg-final { scan-assembler-not "\\.Letext0-\\.Ltext0" } } */ /* { dg-final { scan-assembler-not "\\.Ltext0\[^\n\r\]*Offset 0x0" } } */ Index: gcc/testsuite/gcc.dg/20030702-1.c =================================================================== --- gcc/testsuite/gcc.dg/20030702-1.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/20030702-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,5 +8,3 @@ { fork (); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/march.c =================================================================== --- gcc/testsuite/gcc.dg/march.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/march.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-march=*" } { "" } } */ /* { dg-options "-march=foo" } */ /* { dg-error "march" "" { target *-*-* } 0 } */ /* { dg-bogus "mtune" "" { target *-*-* } 0 } */ Index: gcc/testsuite/gcc.dg/profile-dir-1.c =================================================================== --- gcc/testsuite/gcc.dg/profile-dir-1.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/profile-dir-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O -fprofile-generate=. -fdump-tree-tree_profile" } */ -/* { dg-require-host-local "" } */ /* { dg-final { scan-tree-dump " ./profile-dir-1.gcda" "tree_profile" } } */ int @@ -9,5 +8,4 @@ return 0; } -/* { dg-final { cleanup-coverage-files } } */ /* { dg-final { cleanup-tree-dump "tree_profile" } } */ Index: gcc/testsuite/gcc.dg/pr24225.c =================================================================== --- gcc/testsuite/gcc.dg/pr24225.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/pr24225.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -13,5 +13,3 @@ return 0; } } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/pr45079.c =================================================================== --- gcc/testsuite/gcc.dg/pr45079.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/pr45079.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,10 @@ +/* PR c/45079 */ +/* { dg-do compile } */ + +void +foo (const char *p, int cond, int a, int b) +{ + p[cond ? a : b] = '\0'; /* { dg-error "assignment of read-only location" } */ +} + +/* { dg-bogus "not supported by" "" { target *-*-* } 0 } */ Index: gcc/testsuite/gcc.dg/graphite/interchange-0.c =================================================================== --- gcc/testsuite/gcc.dg/graphite/interchange-0.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/graphite/interchange-0.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -47,4 +47,4 @@ } /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ -/* { dg -final { cleanup-tree-dump "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */ Index: gcc/testsuite/gcc.dg/pragma-init-fini.c =================================================================== --- gcc/testsuite/gcc.dg/pragma-init-fini.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/pragma-init-fini.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,6 +1,7 @@ /* Tests for #pragma init and #pragma fini. */ /* { dg-do run { target *-*-solaris2.* } } */ +/* { dg-skip-if "no .pushsection/.popsection" { i?86-*-solaris2.8 && { ! gas } } } */ extern void abort (); Index: gcc/testsuite/gcc.dg/pr43058.c =================================================================== --- gcc/testsuite/gcc.dg/pr43058.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/pr43058.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,6 +1,7 @@ /* PR debug/43058 */ /* { dg-do compile } */ /* { dg-options "-g -O2" } */ +/* { dg-timeout-factor 4 } */ extern void *f1 (void *, void *, void *); extern void *f2 (const char *, int, int, int, void *(*) ()); Index: gcc/testsuite/gcc.dg/pr26570.c =================================================================== --- gcc/testsuite/gcc.dg/pr26570.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/pr26570.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -5,5 +5,3 @@ { return a / b; } /* { dg-message "note: \[^\n\]*execution counts estimated" } */ - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/lto/20091216-1_0.c =================================================================== --- gcc/testsuite/gcc.dg/lto/20091216-1_0.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/lto/20091216-1_0.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,6 +1,10 @@ /* { dg-lto-do run } */ +#ifdef __ia64 +asm (".globl start_\nstart_: nop 0"); +#else asm (".globl start_; start_: nop"); +#endif int main () Index: gcc/testsuite/gcc.dg/lto/20090313_0.c =================================================================== --- gcc/testsuite/gcc.dg/lto/20090313_0.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/lto/20090313_0.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,4 +1,5 @@ /* { dg-lto-options "-mcpu=v9" { target sparc*-*-* } } */ +/* { dg-require-effective-target sync_char_short } */ void _cairo_clip_path_reference () { int a; Index: gcc/testsuite/gcc.dg/profile-dir-2.c =================================================================== --- gcc/testsuite/gcc.dg/profile-dir-2.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/profile-dir-2.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O -fprofile-generate -fdump-tree-tree_profile" } */ -/* { dg-require-host-local "" } */ /* { dg-final { scan-tree-dump "/profile-dir-2.gcda" "tree_profile" } } */ int @@ -9,5 +8,4 @@ return 0; } -/* { dg-final { cleanup-coverage-files } } */ /* { dg-final { cleanup-tree-dump "tree_profile" } } */ Index: gcc/testsuite/gcc.dg/torture/pr45982.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr45982.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/torture/pr45982.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,27 @@ +/* { dg-do run } */ + +#include + +extern void abort (void); + +uintptr_t __attribute__((pure,noinline,noclone)) +foo (int *a) +{ + return (uintptr_t) a; +} + +void __attribute__((noinline,noclone)) +bar (uintptr_t a) +{ + int *p = (int *)a; + *p = 1; +} + +int main() +{ + int t = 0; + bar (foo (&t)); + if (t != 1) + abort (); + return 0; +} Index: gcc/testsuite/gcc.dg/torture/pr45678-1.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr45678-1.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/torture/pr45678-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,17 @@ +/* { dg-do run } */ +/* { dg-options "-fno-common" { target { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } } } */ + +typedef float V __attribute__ ((vector_size (16))); +V g; +float d[4] = { 4, 3, 2, 1 }; + +int +main () +{ + V e; + __builtin_memcpy (&e, &d, sizeof (d)); + V f = { 5, 15, 25, 35 }; + e = e * f; + g = e; + return 0; +} Index: gcc/testsuite/gcc.dg/torture/pr39074-2.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr39074-2.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/torture/pr39074-2.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -30,5 +30,5 @@ return 0; } -/* { dg-final { scan-tree-dump "y.._., points-to vars: { i }" "alias" } } */ +/* { dg-final { scan-tree-dump "y.._., points-to non-local, points-to escaped, points-to vars: { i }" "alias" } } */ /* { dg-final { cleanup-tree-dump "alias" } } */ Index: gcc/testsuite/gcc.dg/torture/pr45678-2.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr45678-2.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/torture/pr45678-2.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,17 @@ +/* { dg-do run } */ +/* { dg-options "-fno-common" { target { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } } } */ + +typedef float V __attribute__ ((vector_size (16))); +V g; + +int +main () +{ + float d[4] = { 4, 3, 2, 1 }; + V e; + __builtin_memcpy (&e, &d, sizeof (d)); + V f = { 5, 15, 25, 35 }; + e = e * f; + g = e; + return 0; +} Index: gcc/testsuite/gcc.dg/torture/pr45704.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr45704.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/torture/pr45704.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-fdump-tree-optimized" } */ + +struct st { + int ptr; +}; + +int foo(struct st *st) +{ + int v = *(volatile int *)&st->ptr; + return v & 0xff; +} + +/* { dg-final { scan-tree-dump-times "={v}" 1 "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ Index: gcc/testsuite/gcc.dg/torture/pr45623.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr45623.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/torture/pr45623.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,28 @@ +/* { dg-do run } */ + +#include + +extern void abort (void); + +char *s1 = "foo"; +char *s2 = "bar"; + +char **ss1 = &s1; + +typedef union jsval_layout +{ + uint64_t asBits; + char **ptr; +} jsval_layout; + +int main() +{ + jsval_layout l, m; + l.ptr = ss1; + m.asBits = l.asBits; + char ** data = m.ptr; + *data = s2; + if (s1 != s2) + abort (); + return 0; +} Index: gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c =================================================================== --- gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,6 +1,6 @@ /* PR middle-end/37009 */ /* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */ -/* { dg-options "-m32 -mincoming-stack-boundary=2 -mpreferred-stack-boundary=2" } */ +/* { dg-options "-mincoming-stack-boundary=2 -mpreferred-stack-boundary=2" } */ #include "check.h" Index: gcc/testsuite/gcc.dg/torture/pr45869.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr45869.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/torture/pr45869.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,15 @@ +/* { dg-do compile } */ + +char * +foo (unsigned int count, void **list) +{ + char *minaddr = (char *) list[0]; + unsigned int i; /* NOTE: change of type to "int" eliminates the ICE */ + for (i = 1; i < count; i++) + { + char *addr = (char *) list[i]; + if (addr < minaddr) + minaddr = addr; + } + return minaddr; +} Index: gcc/testsuite/gcc.dg/tree-ssa/pr24287.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/pr24287.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/tree-ssa/pr24287.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -9,11 +9,14 @@ int g(void) { int t = 0, t1 = 2; + /* ??? That's not true. The pointers escape to the integer return + value which we do not track in PTA. */ int t2 = h(&t, &t1); if (t != 0) link_error (); if (t1 != 2) link_error (); + /* ??? And it would finally escape here even if we did. */ g1(t2); if (t != 0) link_error (); @@ -21,5 +24,6 @@ link_error (); return t2 == 2; } -/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" } } */ +/* We are allowed to optimize the first two link_error calls. */ +/* { dg-final { scan-tree-dump-times "link_error" 2 "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */ Index: gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -5,7 +5,7 @@ int *p, *q; }; -int foo (int ***x) __attribute__((pure)); +int *foo (int ***x) __attribute__((pure)); int bar (int b) { @@ -19,7 +19,7 @@ q = &f.p; else q = &f.q; - return foo (&q); + return *foo (&q); } /* { dg-final { scan-tree-dump "CALLUSED = { f.* i q }" "alias" } } */ Index: gcc/testsuite/gcc.dg/tree-ssa/sra-10.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/sra-10.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/tree-ssa/sra-10.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-esra-details" } */ +/* { dg-options "-O1 -fdump-tree-optimized" } */ struct S { Index: gcc/testsuite/gcc.dg/pr45567.c =================================================================== --- gcc/testsuite/gcc.dg/pr45567.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/pr45567.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,9 @@ +/* PR middle-end/45567 */ +/* { dg-do compile } */ +/* { dg-options "-ftree-ter" } */ + +unsigned +foo (char c) +{ + return __builtin_popcountl ((unsigned long) c); +} Index: gcc/testsuite/gcc.dg/pragma-init-fini-2.c =================================================================== --- gcc/testsuite/gcc.dg/pragma-init-fini-2.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/pragma-init-fini-2.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2,6 +2,7 @@ /* { dg-do link { target *-*-solaris2.* } } */ /* { dg-options "-fpic" } */ +/* { dg-xfail-if "no .pushsection/.popsection" { i?86-*-solaris2.8 && { ! gas } } } */ #include Index: gcc/testsuite/gcc.dg/pr45055.c =================================================================== --- gcc/testsuite/gcc.dg/pr45055.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/pr45055.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,41 @@ +/* PR debug/45055 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftracer -fsched-pressure -funroll-loops -fschedule-insns -fcompare-debug" } */ + +int colormap[10]; + +extern int bar (); + +void +foo (int *img, int fp, int y, int *ptr, int depth, int c, int t, int xm) +{ + int x, color, count; + for (; y; y--) + { + if (depth) + { + count = bar (); + for (x = xm; x; x--) + { + if (c != 1) + count = color = -1; + if (count == 0) + color = count = bar (); + if (color) + t = bar (fp); + *ptr++ = colormap[t]; + } + } + switch (*img) + { + case 1: + bar (); + case 3: + case -1: + case -3: + bar (); + case -4: + bar (); + } + } +} Index: gcc/testsuite/gcc.dg/20050325-1.c =================================================================== --- gcc/testsuite/gcc.dg/20050325-1.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/20050325-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -17,5 +17,3 @@ { g (42, ff); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/pr45259.c =================================================================== --- gcc/testsuite/gcc.dg/pr45259.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/pr45259.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,42 @@ +/* PR debug/45259 */ +/* { dg-do compile } */ +/* { dg-options "-g -O2 -fpic -w" { target fpic } } */ + +struct S { void (*bar) (long); }; +struct T { struct S *t; }; +int w; +extern int baz (int); + +void +foo (int x, int u, char *z) +{ + struct T *v; + static void *y[256] = { &&l1, &&l2 }; + for (;;) + switch (x) + { + l2: + x = 9; + case 9: + goto *y[*z++]; + case 10: + case 27: + case 54: + case 99: + case 100: + case 120: + case 122: + case 131: + case 132: + case 134: + case 141: + case 142: + v->t->bar (u); + v->t->bar (u); + case 143: + continue; + l1: + default: + baz (w); + } +} Index: gcc/testsuite/gcc.dg/profile-dir-3.c =================================================================== --- gcc/testsuite/gcc.dg/profile-dir-3.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/profile-dir-3.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O -fprofile-generate -fprofile-dir=. -fdump-tree-tree_profile" } */ -/* { dg-require-host-local "" } */ /* { dg-final { scan-tree-dump " ./profile-dir-3.gcda" "tree_profile" } } */ int @@ -9,5 +8,4 @@ return 0; } -/* { dg-final { cleanup-coverage-files } } */ /* { dg-final { cleanup-tree-dump "tree_profile" } } */ Index: gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c =================================================================== --- gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,20 @@ +/* PR tree-optimization/45241 */ +/* { dg-do compile } */ +/* { dg-options "-fno-tree-vectorize" } */ + +int +foo (short x) +{ + short i, y; + int sum; + + for (i = 0; i < x; i++) + y = x * i; + + for (i = x; i > 0; i--) + sum += y; + + return sum; +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ Index: gcc/testsuite/gcc.dg/vect/pr45752.c =================================================================== --- gcc/testsuite/gcc.dg/vect/pr45752.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/vect/pr45752.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,109 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#include +#include "tree-vect.h" + +#define M00 100 +#define M10 216 +#define M20 23 +#define M30 237 +#define M40 437 + +#define M01 1322 +#define M11 13 +#define M21 27271 +#define M31 2280 +#define M41 284 + +#define M02 74 +#define M12 191 +#define M22 500 +#define M32 111 +#define M42 1114 + +#define M03 134 +#define M13 117 +#define M23 11 +#define M33 771 +#define M43 71 + +#define M04 334 +#define M14 147 +#define M24 115 +#define M34 7716 +#define M44 16 + +#define N 16 + +void foo (unsigned int *__restrict__ pInput, + unsigned int *__restrict__ pOutput, + unsigned int *__restrict__ pInput2, + unsigned int *__restrict__ pOutput2) +{ + unsigned int i, a, b, c, d, e; + + for (i = 0; i < N / 5; i++) + { + a = *pInput++; + b = *pInput++; + c = *pInput++; + d = *pInput++; + e = *pInput++; + + *pOutput++ = M00 * a + M01 * b + M02 * c + M03 * d + M04 * e; + *pOutput++ = M10 * a + M11 * b + M12 * c + M13 * d + M14 * e; + *pOutput++ = M20 * a + M21 * b + M22 * c + M23 * d + M24 * e; + *pOutput++ = M30 * a + M31 * b + M32 * c + M33 * d + M34 * e; + *pOutput++ = M40 * a + M41 * b + M42 * c + M43 * d + M44 * e; + + + a = *pInput2++; + b = *pInput2++; + c = *pInput2++; + d = *pInput2++; + e = *pInput2++; + + *pOutput2++ = M00 * a + M01 * b + M02 * c + M03 * d + M04 * e; + *pOutput2++ = M10 * a + M11 * b + M12 * c + M13 * d + M14 * e; + *pOutput2++ = M20 * a + M21 * b + M22 * c + M23 * d + M24 * e; + *pOutput2++ = M30 * a + M31 * b + M32 * c + M33 * d + M34 * e; + *pOutput2++ = M40 * a + M41 * b + M42 * c + M43 * d + M44 * e; + + } +} + +int main (int argc, const char* argv[]) +{ + unsigned int input[N], output[N], i, input2[N], output2[N]; + unsigned int check_results[N] = {3208, 1334, 28764, 35679, 2789, 13028, + 4754, 168364, 91254, 12399, 22848, 8174, 307964, 146829, 22009, 0}; + unsigned int check_results2[N] = {7136, 2702, 84604, 57909, 6633, 16956, + 6122, 224204, 113484, 16243, 26776, 9542, 363804, 169059, 25853, 0}; + + check_vect (); + + for (i = 0; i < N; i++) + { + input[i] = i%256; + input2[i] = i + 2; + output[i] = 0; + output2[i] = 0; + __asm__ volatile (""); + } + + foo (input, output, input2, output2); + + for (i = 0; i < N; i++) + if (output[i] != check_results[i] + || output2[i] != check_results2[i]) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */ +/* { dg-final { scan-tree-dump-times "permutation requires at least three vectors" 2 "vect" { target vect_perm } } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ + Index: gcc/testsuite/gcc.dg/mtune.c =================================================================== --- gcc/testsuite/gcc.dg/mtune.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/mtune.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-mtune=*" } { "" } } */ /* { dg-options "-mtune=foo" } */ /* { dg-error "mtune" "" { target *-*-* } 0 } */ /* { dg-bogus "march" "" { target *-*-* } 0 } */ Index: gcc/testsuite/gcc.dg/20050309-1.c =================================================================== --- gcc/testsuite/gcc.dg/20050309-1.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gcc.dg/20050309-1.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -34,5 +34,3 @@ error (1, 0, 0, node, "%s", name); return 0; } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/ada/acats/run_acats =================================================================== --- gcc/testsuite/ada/acats/run_acats (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/ada/acats/run_acats (.../branches/gcc-4_5-branch) (wersja 165515) @@ -70,4 +70,4 @@ # Limit the stack to 16MB for stack checking ulimit -s 16384 -exec $SHELL $testdir/run_all.sh ${1+"$@"} +exec $testdir/run_all.sh ${1+"$@"} Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,3 +1,487 @@ +2010-10-14 Joseph Myers + + PR c/45969 + * gcc.c-torture/compile/pr45969-1.c: New test. + +2010-10-13 Richard Guenther + + PR tree-optimization/45982 + * gcc.dg/torture/pr45982.c: New testcase. + * gcc.dg/tree-ssa/pr24287.c: Adjust. + * gcc.dg/tree-ssa/pta-callused.c: Likewise. + * gcc.dg/torture/pr39074-2.c: Likewise. + +2010-10-12 Rainer Orth + + * gcc.dg/pragma-init-fini.c: Skip on i?86-*-solaris2.8 && !gas. + * gcc.dg/pragma-init-fini-2.c: XFAIL on i?86-*-solaris2.8 && !gas. + +2010-10-09 Janus Weil + + PR fortran/45748 + * gfortran.dg/intrinsic_6.f90: New. + +2010-10-07 Richard Guenther + + PR middle-end/45869 + * gcc.dg/torture/pr45869.c: New testcase. + +2010-10-07 Richard Guenther + + Backport from mainline + 2010-09-07 Richard Guenther + + PR middle-end/45569 + * g++.dg/eh/pr45569.C: New testcase. + +2010-10-06 Jerry DeLisle + + Backport from mainline + PR libfortran/45710 + * gfortran.dg/namelist_65.f90: New test. + +2010-10-06 Jack Howarth + + Backport from mainline + 2010-08-18 Iain Sandoe + + PR debug/42487 + * lib/target-supports.exp (check_effective_target_function_sections): New. + * gcc.dg/debug/dwarf2/aranges-fnsec-1.c: Check that the target supports + function sections before proceding. + +2010-10-06 Jack Howarth + + Backport from mainline + 2010-09-10 Jack Howarth + + PR target/42070 + * lib/profopt.exp: Prune warnings on execname2 compile. + * lib/prune.exp: Prune "can't add line info" warnings. + +2010-10-06 Jack Howarth + + Backport from mainline + 2010-04-26 Jack Howarth + + PR 43715 + * lib/plugin-support.exp: Use "-undefined + dynamic_lookup" on darwin. + +2010-10-05 Ira Rosen + + PR tree-optimization/45752 + * gcc.dg/vect/pr45752.c: New test. + +2010-10-03 John David Anglin + + * gcc.dg/torture/pr45678-1.c: Add -fno-common to options on 32-bit + hppa*-*-hpux*. + * gcc.dg/torture/pr45678-2.c: Likewise. + +2010-10-01 Richard Guenther + + PR tree-optimization/45854 + * g++.dg/torture/pr45854.C: New testcase. + +2010-09-30 Jakub Jelinek + + PR target/45843 + * g++.dg/torture/pr45843.C: New test. + +2010-09-30 Eric Botcazou + + * ada/acats/run_acats: Revert revision 157037. + +2010-09-28 Rainer Orth + + PR target/44452 + * gcc.target/i386/abi-2.c: XFAIL on i?86-*-solaris2* && ilp32. + * gcc.target/i386/pr22076.c: Skip on i?86-solaris2* && ilp32. + +2010-09-25 Eric Botcazou + + * gnat.dg/return2.ad[sb]: New test. + * gnat.dg/return2_pkg.ads: New helper. + +2010-09-24 Jakub Jelinek + + PR middle-end/45234 + * gcc.dg/torture/stackalign/alloca-5.c: Remove. + +2010-09-23 Jakub Jelinek + + * gcc.dg/torture/stackalign/alloca-4.c: Remove -m32 from dg-options. + * gcc.dg/torture/stackalign/alloca-5.c: Likewise. Fix up -DDEBUG + build. + +2010-09-22 Jerry DeLisle + + Backport from mainline + PR libfortran/45532 + * gfortran.dg/namelist_64.f90: New test. + +2010-09-22 Eric Botcazou + + * gcc.target/sparc/mnofpu.c: New test. + +2010-09-21 Jakub Jelinek + + Backport from mainline + 2010-09-17 Richard Guenther + H.J. Lu + + PR middle-end/45678 + * gcc.dg/torture/pr45678-1.c: New. + * gcc.dg/torture/pr45678-2.c: Likewise. + +2010-09-21 Richard Guenther + + PR middle-end/45704 + * gcc.dg/torture/pr45704.c: New testcase. + +2010-09-20 Jakub Jelinek + + PR rtl-optimization/45728 + * gcc.c-torture/compile/pr45728.c: New test. + + PR rtl-optimization/45695 + * gcc.c-torture/execute/pr45695.c: New test. + +2010-09-20 Paul Thomas + + PR fortran/45081 + * gfortran.dg/derived_array_intrinsics_1.f90 : New test. + +2010-09-20 H.J. Lu + + Backport from mainline + 2010-09-17 H.J. Lu + + PR middle-end/45234 + * gcc.dg/torture/stackalign/alloca-5.c: New. + +2010-09-20 Richard Guenther + + PR tree-optimization/45623 + * gcc.dg/torture/pr45623.c: New testcase. + +2010-09-18 Richard Guenther + + PR tree-optimization/45709 + * g++.dg/torture/pr45709-2.C: New testcase. + +2010-09-18 Richard Guenther + + PR tree-optimization/45709 + * g++.dg/torture/pr45709.C: New testcase. + +2010-09-18 H.J. Lu + + Backport from mainline + 2010-04-07 Dodji Seketeli + + PR debug/43628 + * g++.dg/debug/dwarf2/typedef2.C: New test. + +2010-09-17 Rainer Orth + + Backport from mainline: + 2010-09-08 Rainer Orth + + * lib/target-supports.exp + (check_effective_target_run_expensive_tests): New proc. + * gcc.c-torture/compile/limits-fnargs.c: Use + dg-require-effective-target run_expensive_tests. + +2010-09-15 Eric Botcazou + + * gcc.c-torture/compile/20100915-1.c: New test. + +2010-09-14 Jakub Jelinek + + PR middle-end/45567 + * gcc.dg/pr45567.c: New test. + + PR debug/45660 + * g++.dg/debug/pr45660.C: New test. + +2010-09-12 Alexander Monakov + + Backport from mainline + 2010-09-06 Alexander Monakov + + PR rtl-optimization/44919 + * g++.dg/opt/pr44919.C: New. + +2010-09-10 Jack Howarth + + Backport from mainline + 2010-09-07 Jack Howarth + + PR target/36502 + * gcc.target/i386/pr36502.c: New test. + + PR target/42313 + PR target/44651 + * gcc.target/i386/builtin-unreachable.c: Don't skip on darwin. + +2010-09-08 Vladimir Makarov + + PR middle-end/40386 + * gcc.c-torture/execute/{pr40386.c,pr40386.x}: New testcase. + +2010-09-08 Jakub Jelinek + + PR fortran/45595 + * gfortran.dg/gomp/pr45595.f90: New test. + +2010-09-06 Dodji Seketeli + + PR c++/45200 + PR c++/45293 + PR c++/45558 + * g++.dg/template/typedef34.C: New test. + * g++.dg/template/typedef35.C: New test. + +2010-09-04 Tobias Burnus + + PR fortran/45530 + * gfortran.dg/namelist_63.f90: New. + +2010-09-04 Tobias Burnus + + PR fortran/45489 + * gfortran.dg/initialization_27.f90: New. + +2010-09-04 Tobias Burnus + + PR fortran/45019 + * gfortran.dg/aliasing_dummy_5.f90: New. + +2010-09-03 Rainer Orth + + Backport from mainline: + 2010-07-23 Rainer Orth + + * gcc.dg/pr43058.c: Use dg-timeout-factor 4. + +2010-09-03 Rainer Orth + + * gcc.target/x86_64/abi/avx/abi-avx.exp: Link with + gcc.target/i386/clearcap.map if supported. + +2010-09-03 Jakub Jelinek + + PR debug/45500 + * gcc.target/i386/pr45500.c: New test. + +2010-09-02 Ian Bolton + + Backport from mainline + 2010-08-19 Ian Bolton + + PR target/45070 + * gcc.c-torture/execute/pr45070.c: New. + + 2010-08-19 Ian Bolton + + * g++.dg/pr44328.C: New test. + + 2010-08-07 Marcus Shawcroft + + * lib/target-supports.exp: (check_effective_target_sync_int_long): + Add arm*-*-linux-gnueabi. + (check_effective_target_sync_char_short): Likewise. + +2010-09-01 Jakub Jelinek + + PR middle-end/45458 + * g++.dg/tree-prof/partition2.C: New test. + +2010-08-31 Eric Botcazou + + * gcc.dg/nested-func-8.c: New test. + +2010-08-30 Jakub Jelinek + + PR middle-end/45423 + * gcc.dg/gomp/atomic-12.c: New test. + * gcc.dg/gomp/atomic-13.c: New test. + * gcc.dg/gomp/atomic-14.c: New test. + * g++.dg/gomp/atomic-11.C: New test. + * g++.dg/gomp/atomic-12.C: New test. + * g++.dg/gomp/atomic-13.C: New test. + * g++.dg/gomp/atomic-14.C: New test. + +2010-08-30 Jakub Jelinek + + Backport from mainline + 2010-07-27 Jakub Jelinek + + PR c/45079 + * gcc.dg/pr45079.c: New test. + +2010-08-29 Jason Merrill + + PR c++/44991 + * g++.dg/parse/defarg15.C: New. + +2010-08-30 H.J. Lu + + Backport from mainline + 2010-08-25 Richard Guenther + + PR tree-optimization/45393 + * g++.dg/torture/pr45393.C: New testcase. + +2010-08-25 Jakub Jelinek + + PR rtl-optimization/44858 + * gcc.c-torture/execute/pr44858.c: New test. + + PR rtl-optimization/45400 + * g++.dg/other/i386-8.C: New test. + +2010-08-19 Jason Merrill + + * g++.dg/init/value8.C: New. + +2010-08-20 Jakub Jelinek + + PR fortran/45344 + Backport from mainline + 2010-05-14 Jakub Jelinek + + * gfortran.dg/gomp/pr44036-1.f90: Adjust. + +2010-08-17 Uros Bizjak + + PR target/45296 + * gcc.target/i386/pr45296.c: New test. + +2010-08-16 Changpeng Fang + + PR tree-optimization/45241 + * gcc.dg/vect/no-tree-pre-pr45241.c: New test. + +2010-08-14 Uros Bizjak + + * g++.dg/cast.C: Change fields of structures to "long" to pass + the test on targets with STRUCTURE_SIZE_BOUNDARY != BITS_PER_UNIT. + * g++.dg/cpp0x/iop.C: Ditto. + * g++.dg/cpp0x/named_refs.C: Ditto. + * g++.dg/cpp0x/rv1p.C: Ditto. + * g++.dg/cpp0x/rv2p.C: Ditto. + * g++.dg/cpp0x/rv3p.C: Ditto. + * g++.dg/cpp0x/rv4p.C: Ditto. + * g++.dg/cpp0x/rv5p.C: Ditto. + * g++.dg/cpp0x/rv6p.C: Ditto. + * g++.dg/cpp0x/rv7p.C: Ditto. + * g++.dg/cpp0x/rv8p.C: Ditto. + * g++.dg/cpp0x/unnamed_refs.C: Ditto. + +2010-08-12 Jakub Jelinek + + PR middle-end/45262 + * gcc.c-torture/execute/pr45262.c: New test. + + PR debug/45259 + * gcc.dg/pr45259.c: New test. + + Backport from mainline + 2010-07-30 Jakub Jelinek + + PR debug/45055 + PR rtl-optimization/45137 + * gcc.dg/pr45055.c: New test. + +2010-08-08 Uros Bizjak + + * gcc.dg/20030107-1.c: Do not call cleanup-coverage-files. + * gcc.dg/20030702-1.c: Ditto. + * gcc.dg/20050309-1.c: Ditto. + * gcc.dg/20050325-1.c: Ditto. + * gcc.dg/20050330-2.c: Ditto. + * gcc.dg/20051201-1.c: Ditto. + * gcc.dg/gomp/pr27573.c: Ditto. + * gcc.dg/gomp/pr34610.c: Ditto. + * gcc.dg/pr24225.c: Ditto. + * gcc.dg/pr26570.c: Ditto. + * gcc.dg/pr32773.c: Ditto. + * g++.dg/gcov/gcov-6.C: Ditto. + * g++.dg/gomp/pr34608.C: Ditto. + * gfortran.dg/gomp/pr27573.f90: Ditto. + + * gcc.dg/profile-dir-1.c: Do not call cleanup-coverage-files. Remove + dg-require-host-local dg directive. + * gcc.dg/profile-dir-2.c: Ditto. + * gcc.dg/profile-dir-3.c: Ditto. + +2010-08-08 Richard Guenther + + PR middle-end/45034 + * gcc.c-torture/execute/pr45034.c: New testcase. + +2010-08-08 Richard Guenther + + PR tree-optimization/45109 + * gcc.c-torture/compile/pr45109.c: New testcase. + +2010-08-08 Uros Bizjak + + * gcc.dg/march.c: Skip if -march defined. + * gcc.dg/mtune.c: Skip if -mtune defined. + + * g++.old-deja/g++.jason/thunk3.C: Skip for targets with + generic thunk support. + + Backport from mainline: + 2010-05-25 Richard Guenther + + * gcc.dg/tree-ssa/sra-10.c: Do not dump esra details. + + Backport from mainline: + 2010-04-22 Uros Bizjak + + * gcc.dg/graphite/interchange-0.c: Fix dg-final directive. + +2010-08-05 Janus Weil + + PR fortran/44929 + * gfortran.dg/allocate_derived_3.f90: New. + +2010-08-04 Uros Bizjak + + Backport from mainline: + 2010-07-20 Bingfeng Mei + + * gcc.dg/lto/20090313_0.c: Use dg-require-effective-target + sync_char_short. + + 2010-06-24 Steve Ellcey + + PR testsuite/43283 + * gcc.dg/lto/20091216-1_0.c: Use newline instead of semicolon + and add argument to nop for IA64. + +2010-08-03 Martin Jambor + + PR tree-optimization/44914 + * g++.dg/tree-ssa/pr44914.C: New test. + +2010-08-02 Uros Bizjak + + * lib/gcc-dg.exp (cleanup-coverage-files): Remove options from + test name. + (cleanup-repo-files): Ditto. + (cleanup-saved-temps): Ditto. + +2010-07-31 Ulrich Weigand + + PR c++/45112 + * testsuite/g++.dg/pr45112.C: New test. + 2010-07-31 Release Manager * GCC 4.5.1 released. @@ -479,15 +963,15 @@ Backport from mainline 2010-05-17 Martin Jambor - PR middle-end/44133 - * gcc.dg/tree-ssa/pr44133.c: New test. + PR middle-end/44133 + * gcc.dg/tree-ssa/pr44133.c: New test. 2010-06-29 Martin Jambor Backport from mainline 2010-04-13 Martin Jambor - * gcc.dg/tree-ssa/sra-9.c: New test. + * gcc.dg/tree-ssa/sra-9.c: New test. 2010-06-28 Rainer Orth @@ -636,7 +1120,7 @@ PR testsuite/44518 * obj-c++.dg/encode-2.mm: XFAIL new test for all targets. * obj-c++.dg/encode-3.mm: Restore XFAIL run for all targets. - + 2010-06-12 Daniel Franke PR fortran/44347 Index: gcc/testsuite/g++.old-deja/g++.jason/thunk3.C =================================================================== --- gcc/testsuite/g++.old-deja/g++.jason/thunk3.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.old-deja/g++.jason/thunk3.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,4 +1,5 @@ -// { dg-do run { xfail rs6000-*-* powerpc-*-eabi v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa*-*-* m32r*-*-* lm32-*-* } } +// { dg-do run } +// { dg-skip-if "fails with generic thunk support" { rs6000-*-* powerpc-*-eabi v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa*-*-* m32r*-*-* lm32-*-* } { "*" } { "" } } // Test that variadic function calls using thunks work right. // Note that this will break on any target that uses the generic thunk // support, because it doesn't support variadic functions. Index: gcc/testsuite/g++.dg/other/i386-8.C =================================================================== --- gcc/testsuite/g++.dg/other/i386-8.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/other/i386-8.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,23 @@ +// PR rtl-optimization/45400 +// { dg-do compile { target i?86-*-* x86_64-*-* } } +// { dg-options "-O2 -msse2" } +// { dg-options "-O2 -msse2 -fpic" { target fpic } } +// { dg-require-effective-target sse2 } + +#include + +static inline unsigned short +bar (unsigned short x) +{ + return ((x << 8) | (x >> 8)); +} + +unsigned int +foo (float *x, short *y) +{ + __m128 a = _mm_set_ps1 (32767.5f); + __m128 b = _mm_mul_ps (_mm_load_ps (x), a); + __m64 c = _mm_cvtps_pi16 (b); + __builtin_memcpy (y, &c, sizeof (short) * 4); + y[0] = bar (y[0]); +} Index: gcc/testsuite/g++.dg/tree-ssa/pr44914.C =================================================================== --- gcc/testsuite/g++.dg/tree-ssa/pr44914.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/tree-ssa/pr44914.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -fipa-sra -fnon-call-exceptions" } */ + +struct A +{ + ~A () { } +}; + +struct B +{ + A a; + int i; + void f (int) { } + B () + { + f (i); + } +}; + +B b; Index: gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C =================================================================== --- gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,11 @@ +// Origin: PR debug/43628 +// { dg-options "-g -dA" } +// { dg-do compile } + +// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE\[^\n\r\]*DW_TAG_formal_parameter\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_type\[\n\r\]{1,2}" 1 } } +class C +{ + public: + typedef void (*t) (C); +}; +C::t f; Index: gcc/testsuite/g++.dg/debug/pr45660.C =================================================================== --- gcc/testsuite/g++.dg/debug/pr45660.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/debug/pr45660.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,16 @@ +// PR debug/45660 +// { dg-do compile } +// { dg-options "-g -fno-inline" } + +void +test () +{ + struct S + { + typedef void (**T) (void); + static T i (void) { return 0; } + }; + S s; + if (s.i ()) + *s.i () = 0; +} Index: gcc/testsuite/g++.dg/pr45112.C =================================================================== --- gcc/testsuite/g++.dg/pr45112.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/pr45112.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,12 @@ +/* { dg-do compile } */ + +struct JSString +{ + unsigned char mLength; + static JSString unitStringTable[]; +}; + +JSString JSString::unitStringTable[] __attribute__ ((aligned (8))) = { 1 }; + +int bug [__alignof__ (JSString::unitStringTable) >= 8 ? 1 : -1]; + Index: gcc/testsuite/g++.dg/opt/pr44919.C =================================================================== --- gcc/testsuite/g++.dg/opt/pr44919.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/opt/pr44919.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,253 @@ +// { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } +// { dg-options "-O3 -fselective-scheduling2" } + +namespace std { + +typedef long unsigned int size_t; + +template class new_allocator { public: typedef size_t size_type; typedef _Tp* pointer; }; +template class allocator: public new_allocator<_Tp> { public: typedef size_t size_type; template struct rebind { typedef allocator<_Tp1> other; }; }; + +class back_insert_iterator { }; +template back_insert_iterator back_inserter(_Container& __x) { }; + +class vector { }; + +struct _List_node_base { }; +struct _List_node : public _List_node_base { }; +template struct _List_iterator { typedef _List_iterator<_Tp> _Self; typedef _Tp& reference; explicit _List_iterator(_List_node_base* __x) : _M_node(__x) { } reference operator*() const { } _Self& operator++() { } bool operator!=(const _Self& __x) const { return _M_node != __x._M_node; } _List_node_base* _M_node; }; +template class _List_base { protected: typedef typename _Alloc::template rebind<_List_node >::other _Node_alloc_type; struct _List_impl : public _Node_alloc_type { _List_node_base _M_node; }; _List_impl _M_impl; }; +template > class list : protected _List_base<_Tp, _Alloc> { public: typedef _Tp value_type; typedef _List_iterator<_Tp> iterator; iterator begin() { } iterator end() { return iterator(&this->_M_impl._M_node); } }; + +namespace tr1 { template struct array { typedef _Tp value_type; typedef const value_type& const_reference; typedef const value_type* const_iterator; typedef size_t size_type; value_type _M_instance[_Nm ? _Nm : 1]; const_iterator begin() const { return const_iterator(&_M_instance[0]); } const_reference operator[](size_type __n) const { return _M_instance[__n]; } }; } +} + +namespace X { + +class Object { }; +struct Has_qrt { }; +template struct qrt_or_not { typedef const typename F::result_type & type; }; +template struct Qualified_result_of : qrt_or_not { }; + +using std::tr1::array; + +template class Point_2 : public R_::Kernel_base::Point_2 { +public: + typedef typename R_::Kernel_base::Point_2 RPoint_2; + typedef RPoint_2 Rep; + const Rep& rep() const { } +}; + +template class Vector_2 : public R_::Kernel_base::Vector_2 { +public: + typedef typename R_::Kernel_base::Vector_2 RVector_2; + typedef RVector_2 Rep; + const Rep& rep() const { return *this; } + typedef R_ R; + typename Qualified_result_of::type x() const { return R().compute_x_2_object()(*this); } + typename Qualified_result_of::type y() const { return R().compute_y_2_object()(*this); } + typename Qualified_result_of::type cartesian(int i) const { return (i==0) ? x() : y(); } + typename Qualified_result_of::type hx() const { return R().compute_hx_2_object()(*this); } + typename Qualified_result_of::type hy() const { return R().compute_hy_2_object()(*this); } + typename Qualified_result_of::type hw() const { return R().compute_hw_2_object()(*this); } + typename Qualified_result_of::type homogeneous(int i) const { return (i==0) ? hx() : (i==1)? hy() : hw(); } +}; + +template class Segment_2 : public R_::Kernel_base::Segment_2 { }; +template class Iso_rectangle_2 : public R_::Kernel_base::Iso_rectangle_2 { }; + +template const T& constant() { static const T t(i); return t; } +template > class Handle_for { struct RefCounted { T t; }; typedef typename Alloc::template rebind::other Allocator; typedef typename Allocator::pointer pointer; pointer ptr_; public: typedef T element_type; const T * Ptr() const { return &(ptr_->t); } }; +template const T& get(const Handle_for &h) { return *(h.Ptr()); } + +template class PointC2 { +public: + typedef typename R_::Vector_2 Vector_2; Vector_2 base; + typedef typename Vector_2::Cartesian_const_iterator Cartesian_const_iterator; Cartesian_const_iterator cartesian_begin() const { return base.cartesian_begin(); } +}; + +template class VectorC2 { +public: + typedef typename R_::FT FT; + typedef array Rep; + typedef typename R_::template Handle::type Base; + Base base; + typedef typename Rep::const_iterator Cartesian_const_iterator; + const FT & x() const { return X::get(base)[0]; } + const FT & y() const { return X::get(base)[1]; } + const FT & hx() const { return x(); } + const FT & hy() const { return y(); } + const FT & hw() const { return constant(); } + Cartesian_const_iterator cartesian_begin() const { return X::get(base).begin(); } +}; + +template class SegmentC2 { }; +template class Iso_rectangleC2 { }; + +namespace internal { + template class Segment_2_Iso_rectangle_2_pair { + public: + enum Intersection_results { NO_INTERSECTION }; + Segment_2_Iso_rectangle_2_pair(typename K::Segment_2 const *seg, typename K::Iso_rectangle_2 const *rect) ; + Intersection_results intersection_type() const; + mutable Intersection_results _result; + typename K::Point_2 _ref_point; + typename K::Vector_2 _dir; + typename K::Point_2 _isomin; + typename K::Point_2 _isomax; + mutable typename K::FT _min, _max; + }; + template Object intersection( const typename K::Segment_2 &seg, const typename K::Iso_rectangle_2 &iso, const K&) { + typedef Segment_2_Iso_rectangle_2_pair is_t; is_t ispair(&seg, &iso); switch (ispair.intersection_type()) { } + } + template typename Segment_2_Iso_rectangle_2_pair::Intersection_results Segment_2_Iso_rectangle_2_pair::intersection_type() const { + typedef typename K::RT RT; + typedef typename K::FT FT; + typename K::Construct_cartesian_const_iterator_2 construct_cccit; + typename K::Cartesian_const_iterator_2 ref_point_it = construct_cccit(_ref_point); + typename K::Cartesian_const_iterator_2 end = construct_cccit(_ref_point, 0); + typename K::Cartesian_const_iterator_2 isomin_it = construct_cccit(_isomin); + typename K::Cartesian_const_iterator_2 isomax_it = construct_cccit(_isomax); + for (unsigned int i=0; ref_point_it != end; ++i, ++ref_point_it, ++isomin_it, ++isomax_it) { + if (_dir.homogeneous(i) == RT(0)) { + if ( *(ref_point_it) <*(isomin_it) ) { + _result = NO_INTERSECTION; + } + if ( *(ref_point_it) > *(isomax_it)) { + _result = NO_INTERSECTION; + } + } else { + FT newmin, newmax; + if (_dir.homogeneous(i) > RT(0)) { + newmin = ( *(isomin_it) - (*ref_point_it)) / _dir.cartesian(i); + newmax = ( *(isomax_it) - (*ref_point_it)) / _dir.cartesian(i); + } else { + newmin = ( (*isomax_it) - (*ref_point_it)) / _dir.cartesian(i); + newmax = ( (*isomin_it) - (*ref_point_it)) / _dir.cartesian(i); + } + if (newmin > _min) _min = newmin; + if (newmax <_max) _max = newmax; + if (_max <_min) { return _result; } + } + } + } +} + +template Object intersection(const Segment_2 &seg, const Iso_rectangle_2 &iso) { typedef typename K::Intersect_2 Intersect; return Intersect()(seg, iso); } + +namespace CommonKernelFunctors { + template class Construct_cartesian_const_iterator_2 { + typedef typename K::Point_2 Point_2; + typedef typename K::Cartesian_const_iterator_2 Cartesian_const_iterator_2; +public: + typedef Cartesian_const_iterator_2 result_type; + Cartesian_const_iterator_2 operator()( const Point_2& p) const { return p.rep().cartesian_begin(); } + Cartesian_const_iterator_2 operator()( const Point_2& p, int) const { } + }; + template class Intersect_2 { + typedef typename K::Object_2 Object_2; + public: + typedef Object_2 result_type; + template Object_2 operator()(const T1& t1, const T2& t2) const { return internal::intersection(t1, t2, K()); } + }; +} + +namespace CartesianKernelFunctors { + using namespace CommonKernelFunctors; + template class Compute_x_2 : Has_qrt { + typedef typename K::FT FT; + typedef typename K::Vector_2 Vector_2; + public: + typedef FT result_type; + const result_type & operator()(const Vector_2& v) const { return v.rep().x(); } + }; + template class Compute_y_2 : Has_qrt { + typedef typename K::FT FT; + typedef typename K::Vector_2 Vector_2; + public: + typedef FT result_type; + const result_type & operator()(const Vector_2& v) const { return v.rep().y(); } + }; + template class Compute_hx_2 : public Has_qrt { + typedef typename K::FT FT; + typedef typename K::Vector_2 Vector_2; + public: + typedef FT result_type; + const result_type & operator()(const Vector_2& v) const { return v.rep().hx(); } + }; + template class Compute_hy_2 : public Has_qrt { + typedef typename K::FT FT; + typedef typename K::Vector_2 Vector_2; + public: + typedef FT result_type; + const result_type & operator()(const Vector_2& v) const { return v.rep().hy(); } + }; + template class Compute_hw_2 : public Has_qrt { + typedef typename K::FT FT; + typedef typename K::Vector_2 Vector_2; + public: + typedef FT result_type; + const result_type & operator()(const Vector_2& v) const { return v.rep().hw(); } + }; +} + +template struct Cartesian_base { + typedef K_ Kernel; + typedef X::Object Object_2; + typedef PointC2 Point_2; + typedef VectorC2 Vector_2; + typedef SegmentC2 Segment_2; + typedef Iso_rectangleC2 Iso_rectangle_2; + typedef typename array::const_iterator Cartesian_const_iterator_2; +}; + +template struct Type_equality_wrapper : public K_base { + typedef K_base Kernel_base; + typedef X::Point_2 Point_2; + typedef X::Vector_2 Vector_2; + typedef X::Segment_2 Segment_2; + typedef X::Iso_rectangle_2 Iso_rectangle_2; +}; + +template struct Cartesian_base_ref_count : public Cartesian_base { + typedef FT_ RT; + typedef FT_ FT; + template struct Handle { typedef Handle_for type; }; + typedef Kernel_ K; + typedef CartesianKernelFunctors::Compute_x_2 Compute_x_2; + Compute_x_2 compute_x_2_object() const { } + typedef CartesianKernelFunctors::Compute_y_2 Compute_y_2; + Compute_y_2 compute_y_2_object() const { } + typedef CartesianKernelFunctors::Compute_hx_2 Compute_hx_2; + Compute_hx_2 compute_hx_2_object() const { } + typedef CartesianKernelFunctors::Compute_hy_2 Compute_hy_2; + Compute_hy_2 compute_hy_2_object() const { } + typedef CartesianKernelFunctors::Compute_hw_2 Compute_hw_2; + Compute_hw_2 compute_hw_2_object() const { } + typedef CartesianKernelFunctors::Construct_cartesian_const_iterator_2 Construct_cartesian_const_iterator_2; + typedef CartesianKernelFunctors::Intersect_2 Intersect_2; +}; + +template struct Cartesian : public Type_equality_wrapper >, Cartesian > { }; + +template class Ipelet_base { +public: + typedef typename X::Point_2 Point_2; + typedef typename Kernel::Segment_2 Segment_2; + typedef typename Kernel::Iso_rectangle_2 Iso_rectangle_2; + + Iso_rectangle_2 read_active_objects () const { } + struct Voronoi_from_tri{ std::list seg_list; }; + + template bool cast_into_seg(const T& obj,const Iso_rectangle_2& bbox,output_iterator out_it) const{ X::intersection(obj,bbox); } + template void cast_into_seg(const iterator first,const iterator end, const Iso_rectangle_2& bbox, output_iterator out_it) const { for (iterator it=first; it!=end; ++it) cast_into_seg(*it,bbox,out_it); } + void draw_dual_(Voronoi_from_tri& v_recup,const Iso_rectangle_2& bbox) const { std::vector seg_cont; cast_into_seg(v_recup.seg_list.begin(),v_recup.seg_list.end(),bbox,std::back_inserter(seg_cont)); } + void draw_dual_in_ipe(const Iso_rectangle_2& bbox) const { Voronoi_from_tri v_recup; draw_dual_(v_recup,bbox); } +}; + +typedef X::Cartesian Kernel; + +class diagrammeIpelet : public X::Ipelet_base { void protected_run(); }; +void diagrammeIpelet::protected_run() { Iso_rectangle_2 bbox = read_active_objects( ); draw_dual_in_ipe(bbox); } + +} Index: gcc/testsuite/g++.dg/tree-prof/partition2.C =================================================================== --- gcc/testsuite/g++.dg/tree-prof/partition2.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/tree-prof/partition2.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,15 @@ +// PR middle-end/45458 +// { dg-require-effective-target freorder } +// { dg-options "-fnon-call-exceptions -freorder-blocks-and-partition" } + +int +main () +{ + try + { + throw 6; + } + catch (...) + { + } +} Index: gcc/testsuite/g++.dg/pr44328.C =================================================================== --- gcc/testsuite/g++.dg/pr44328.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/pr44328.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,39 @@ +/* { dg-do compile } */ +/* { dg-options "-c -O2 -Wextra" } */ +#define O_RDONLY (1<<0) +#define O_WRONLY (1<<1) +#define O_RDWR (O_RDONLY|O_WRONLY) +#define O_CREAT (1<<3) +#define O_TRUNC (1<<6) + +typedef enum { + OM_READ = 0, + OM_WRITE, + OM_READWRITE_NOCREATE, + OM_READWRITE_CREATE +} OpenMode; + +extern int open(const char *name, int mode); + +void open_file(const char *filename, const OpenMode rw) +{ + int mode = 0; + + switch( rw ) + { + case OM_WRITE: + mode = O_WRONLY|O_CREAT|O_TRUNC; + break; + case OM_READ: + mode = O_RDONLY; + break; + case OM_READWRITE_NOCREATE: + mode = O_RDWR; + break; + case OM_READWRITE_CREATE: + mode = O_RDWR|O_CREAT|O_TRUNC; + break; + } + + open( filename, mode ); +} Index: gcc/testsuite/g++.dg/parse/defarg15.C =================================================================== --- gcc/testsuite/g++.dg/parse/defarg15.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/parse/defarg15.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,5 @@ +// PR c++/44991 + +class bar { + void foo(bool a = 3 < 2, bool b = true) {} +}; Index: gcc/testsuite/g++.dg/cpp0x/rv6p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv6p.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/rv6p.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -43,12 +43,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -65,13 +65,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -88,14 +88,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -112,12 +112,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -134,14 +134,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -158,14 +158,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -182,12 +182,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -204,13 +204,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -227,13 +227,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -250,12 +250,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t6; + sa t7; + sa t8; return 0; } @@ -272,13 +272,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -295,14 +295,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -319,14 +319,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -343,13 +343,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -366,12 +366,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -388,13 +388,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -411,14 +411,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -435,14 +435,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -459,13 +459,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -482,12 +482,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -504,14 +504,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -528,12 +528,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -550,13 +550,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -573,13 +573,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -596,12 +596,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -618,12 +618,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -640,14 +640,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -664,14 +664,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv1p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv1p.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/rv1p.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -38,7 +38,7 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; + sa t1; return 0; } @@ -50,10 +50,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -65,8 +65,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; + sa t1; + sa t3; return 0; } @@ -78,10 +78,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; + sa t1; + sa t2; + sa t3; + sa t4; return 0; } @@ -93,7 +93,7 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; + sa t5; return 0; } @@ -105,8 +105,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; + sa t5; + sa t6; return 0; } @@ -118,8 +118,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t7; + sa t5; + sa t7; return 0; } @@ -131,10 +131,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/cast.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/cast.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/cast.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,8 +8,8 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; +struct one {long x[1];}; +struct two {long x[2];}; struct A {}; @@ -19,8 +19,8 @@ int test1() { A a; - sa t1; - sa(a))) == 2> t2; + sa t1; + sa(a))) == 2 * sizeof(long)> t2; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv7p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv7p.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/rv7p.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -44,13 +44,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -68,14 +68,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -93,14 +93,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -118,13 +118,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -142,13 +142,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -166,14 +166,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -191,14 +191,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -216,13 +216,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv2p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv2p.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/rv2p.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -39,10 +39,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -55,8 +55,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; + sa t1; + sa t3; return 0; } @@ -69,10 +69,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; + sa t1; + sa t2; + sa t3; + sa t4; return 0; } @@ -85,8 +85,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; + sa t1; + sa t5; return 0; } @@ -99,9 +99,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; + sa t1; + sa t5; + sa t6; return 0; } @@ -114,9 +114,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t7; + sa t1; + sa t5; + sa t7; return 0; } @@ -129,11 +129,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -146,10 +146,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -162,14 +162,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; -// sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; +// sa t7; +// sa t8; return 0; } @@ -182,10 +182,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -198,10 +198,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -214,11 +214,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -231,12 +231,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -249,14 +249,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; -// sa t5; -// sa t6; -// sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; +// sa t5; +// sa t6; +// sa t7; +// sa t8; return 0; } @@ -269,9 +269,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; + sa t1; + sa t3; + sa t5; return 0; } @@ -284,10 +284,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; + sa t1; + sa t3; + sa t5; + sa t6; return 0; } @@ -300,10 +300,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t7; + sa t1; + sa t3; + sa t5; + sa t7; return 0; } @@ -316,12 +316,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -334,14 +334,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; -// sa t6; -// sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; +// sa t6; +// sa t7; +// sa t8; return 0; } @@ -354,14 +354,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; -// sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; +// sa t7; +// sa t8; return 0; } @@ -374,14 +374,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; -// sa t6; - sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; +// sa t6; + sa t7; +// sa t8; return 0; } @@ -394,14 +394,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -414,8 +414,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; + sa t5; + sa t6; return 0; } @@ -428,8 +428,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t7; + sa t5; + sa t7; return 0; } @@ -442,10 +442,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -458,8 +458,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t6; - sa t7; + sa t6; + sa t7; return 0; } @@ -472,10 +472,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -488,10 +488,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv8p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv8p.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/rv8p.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -45,14 +45,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv3p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv3p.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/rv3p.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -40,11 +40,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -58,12 +58,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -77,10 +77,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -94,10 +94,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -111,11 +111,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -129,12 +129,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -148,10 +148,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; + sa t1; + sa t2; + sa t3; + sa t4; return 0; } @@ -165,9 +165,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; + sa t1; + sa t3; + sa t5; return 0; } @@ -181,10 +181,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; + sa t1; + sa t3; + sa t5; + sa t6; return 0; } @@ -198,10 +198,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t7; + sa t1; + sa t3; + sa t5; + sa t7; return 0; } @@ -215,12 +215,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -234,11 +234,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; return 0; } @@ -252,12 +252,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -271,12 +271,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -290,14 +290,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -311,9 +311,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; + sa t1; + sa t5; + sa t6; return 0; } @@ -327,9 +327,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t7; + sa t1; + sa t5; + sa t7; return 0; } @@ -343,11 +343,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -361,9 +361,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t6; - sa t7; + sa t1; + sa t6; + sa t7; return 0; } @@ -377,11 +377,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -395,11 +395,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -413,11 +413,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -431,10 +431,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -448,10 +448,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -465,11 +465,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -483,12 +483,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -502,12 +502,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -521,12 +521,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -540,13 +540,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -560,14 +560,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -581,10 +581,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -598,11 +598,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -616,12 +616,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -635,10 +635,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t6; - sa t7; + sa t1; + sa t2; + sa t6; + sa t7; return 0; } @@ -652,12 +652,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -671,12 +671,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -690,11 +690,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; return 0; } @@ -708,12 +708,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -727,12 +727,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -746,14 +746,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -767,10 +767,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; + sa t1; + sa t3; + sa t5; + sa t6; return 0; } @@ -784,10 +784,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t7; + sa t1; + sa t3; + sa t5; + sa t7; return 0; } @@ -801,12 +801,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -820,10 +820,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t6; - sa t7; + sa t1; + sa t3; + sa t6; + sa t7; return 0; } @@ -837,12 +837,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -856,12 +856,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -875,12 +875,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -894,12 +894,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -913,14 +913,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -934,12 +934,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -953,14 +953,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -974,14 +974,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -995,9 +995,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; + sa t5; + sa t6; + sa t7; return 0; } @@ -1011,10 +1011,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1028,10 +1028,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1045,9 +1045,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t6; - sa t7; - sa t8; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv4p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv4p.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/rv4p.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -41,12 +41,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -61,11 +61,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -80,11 +80,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -99,12 +99,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -119,13 +119,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -140,12 +140,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -160,12 +160,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -180,13 +180,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -201,14 +201,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -223,10 +223,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -241,11 +241,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -260,12 +260,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -280,10 +280,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t6; - sa t7; + sa t1; + sa t2; + sa t6; + sa t7; return 0; } @@ -298,12 +298,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -318,12 +318,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -338,11 +338,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; return 0; } @@ -357,12 +357,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -377,12 +377,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -397,14 +397,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -419,10 +419,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; + sa t1; + sa t3; + sa t5; + sa t6; return 0; } @@ -437,10 +437,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t7; + sa t1; + sa t3; + sa t5; + sa t7; return 0; } @@ -455,12 +455,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -475,10 +475,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t6; - sa t7; + sa t1; + sa t3; + sa t6; + sa t7; return 0; } @@ -493,12 +493,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -513,12 +513,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -533,12 +533,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -553,12 +553,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -573,14 +573,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -595,12 +595,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -615,14 +615,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -637,14 +637,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -659,10 +659,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; + sa t1; + sa t5; + sa t6; + sa t7; return 0; } @@ -677,11 +677,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -696,11 +696,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -715,10 +715,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t6; - sa t7; - sa t8; + sa t1; + sa t6; + sa t7; + sa t8; return 0; } @@ -733,11 +733,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -752,11 +752,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -771,12 +771,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -791,13 +791,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -812,10 +812,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -830,11 +830,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -849,12 +849,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -869,10 +869,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t6; - sa t7; + sa t2; + sa t3; + sa t6; + sa t7; return 0; } @@ -887,12 +887,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -907,12 +907,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -927,12 +927,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -947,13 +947,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -968,14 +968,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -990,12 +990,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -1010,14 +1010,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1032,14 +1032,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1054,11 +1054,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -1073,12 +1073,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1093,12 +1093,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1113,11 +1113,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t6; + sa t7; + sa t8; return 0; } @@ -1132,12 +1132,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -1152,12 +1152,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -1172,14 +1172,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1194,12 +1194,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -1214,14 +1214,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1236,14 +1236,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1258,11 +1258,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -1277,12 +1277,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1297,12 +1297,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1317,11 +1317,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t6; + sa t7; + sa t8; return 0; } @@ -1336,13 +1336,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -1357,14 +1357,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1379,14 +1379,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1401,13 +1401,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -1422,10 +1422,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/iop.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/iop.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/iop.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -12,8 +12,8 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; +struct one {long x[1];}; +struct two {long x[2];}; struct os { @@ -30,7 +30,7 @@ void test() { os o; - sa t1; // Calls os::operator<<(int) + sa t1; // Calls os::operator<<(int) // Would be ambiguous if the implicit object parameter // was an rvalue reference. } Index: gcc/testsuite/g++.dg/cpp0x/rv5p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv5p.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/rv5p.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -42,12 +42,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -63,12 +63,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -84,13 +84,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -106,14 +106,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -129,11 +129,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -149,12 +149,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -170,13 +170,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -192,11 +192,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t6; + sa t7; return 0; } @@ -212,13 +212,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -234,13 +234,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -256,12 +256,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -277,13 +277,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -299,14 +299,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -322,12 +322,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -343,14 +343,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -366,14 +366,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -389,11 +389,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -409,12 +409,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -430,12 +430,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -451,11 +451,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t6; + sa t7; + sa t8; return 0; } @@ -471,12 +471,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -492,12 +492,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -513,14 +513,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -536,12 +536,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -557,14 +557,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -580,14 +580,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -603,11 +603,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -623,12 +623,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -644,12 +644,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -665,11 +665,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t6; + sa t7; + sa t8; return 0; } @@ -685,13 +685,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -707,14 +707,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -730,14 +730,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -753,13 +753,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -775,11 +775,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -795,11 +795,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -815,12 +815,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -836,13 +836,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -858,11 +858,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -878,13 +878,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -900,13 +900,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -922,11 +922,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -942,12 +942,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -963,12 +963,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -984,11 +984,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t6; + sa t7; + sa t8; return 0; } @@ -1004,13 +1004,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -1026,14 +1026,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1049,14 +1049,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1072,13 +1072,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -1094,12 +1094,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1115,13 +1115,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -1137,14 +1137,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1160,14 +1160,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1183,13 +1183,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -1205,12 +1205,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1226,14 +1226,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/named_refs.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/named_refs.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/named_refs.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,8 +8,8 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; +struct one {long x[1];}; +struct two {long x[2];}; struct A {}; @@ -18,7 +18,7 @@ int test1(A&& a) { - sa t1; + sa t1; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -8,8 +8,8 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; +struct one {long x[1];}; +struct two {long x[2];}; struct A {}; @@ -25,7 +25,7 @@ int test1() { - sa t1; + sa t1; return 0; } Index: gcc/testsuite/g++.dg/eh/pr45569.C =================================================================== --- gcc/testsuite/g++.dg/eh/pr45569.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/eh/pr45569.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,23 @@ +// { dg-do compile } +// { dg-options "-O -fnon-call-exceptions" } + +float f (); +_Complex float g (); + +void +i (_Complex float); + +float j () +{ + _Complex float x = 0; + try + { + x = f (); + } + catch ( ...) + { + x += g (); + } + i (x); +} + Index: gcc/testsuite/g++.dg/gomp/atomic-11.C =================================================================== --- gcc/testsuite/g++.dg/gomp/atomic-11.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/gomp/atomic-11.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,306 @@ +/* PR middle-end/45423 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp -fdump-tree-gimple -g0" } */ +/* atomicvar should never be referenced in between the barrier and + following #pragma omp atomic_load. */ +/* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */ +/* { dg-final { cleanup-tree-dump "gimple" } } */ + +#ifdef __cplusplus +bool atomicvar, c; +#else +_Bool atomicvar, c; +#endif +int i, atomicvar2, c2; + +int +foo (void) +{ + #pragma omp barrier + #pragma omp atomic + atomicvar |= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar |= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar |= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar |= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar |= c; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar ^= c; + #pragma omp barrier + #pragma omp atomic + atomicvar &= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar &= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar &= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar &= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar &= c; + #pragma omp barrier + #pragma omp atomic + atomicvar += -1; + #pragma omp barrier + #pragma omp atomic + atomicvar += 0; + #pragma omp barrier + #pragma omp atomic + atomicvar += 1; + #pragma omp barrier + #pragma omp atomic + atomicvar += 2; + #pragma omp barrier + #pragma omp atomic + atomicvar += c; + #pragma omp barrier + #pragma omp atomic + atomicvar -= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar -= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar -= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar -= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar -= c; + #pragma omp barrier + #pragma omp atomic + atomicvar *= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar *= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar *= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar *= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar *= c; + #pragma omp barrier + #pragma omp atomic + atomicvar /= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar /= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar /= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar /= c; + #pragma omp barrier + #pragma omp atomic + atomicvar <<= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar <<= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar <<= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar <<= i; + #pragma omp barrier + #pragma omp atomic + atomicvar >>= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar >>= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar >>= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar >>= i; + #pragma omp barrier + #pragma omp atomic + atomicvar++; + #pragma omp barrier + #pragma omp atomic + ++atomicvar; + #pragma omp barrier +#ifndef __cplusplus + #pragma omp atomic + atomicvar--; + #pragma omp barrier + #pragma omp atomic + --atomicvar; + #pragma omp barrier +#endif + return 0; +} + +int +bar (void) +{ + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 |= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 ^= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 &= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 += c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 -= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 *= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 /= -1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 /= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 /= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 /= c2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 <<= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 <<= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 <<= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 <<= i; + #pragma omp barrier + #pragma omp atomic + atomicvar2 >>= 0; + #pragma omp barrier + #pragma omp atomic + atomicvar2 >>= 1; + #pragma omp barrier + #pragma omp atomic + atomicvar2 >>= 2; + #pragma omp barrier + #pragma omp atomic + atomicvar2 >>= i; + #pragma omp barrier + #pragma omp atomic + atomicvar2++; + #pragma omp barrier + #pragma omp atomic + ++atomicvar2; + #pragma omp barrier + #pragma omp atomic + atomicvar2--; + #pragma omp barrier + #pragma omp atomic + --atomicvar2; + #pragma omp barrier + return 0; +} Index: gcc/testsuite/g++.dg/gomp/atomic-12.C =================================================================== --- gcc/testsuite/g++.dg/gomp/atomic-12.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/gomp/atomic-12.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,9 @@ +/* PR middle-end/45423 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp -fdump-tree-gimple -g0 -O2" } */ +/* atomicvar should never be referenced in between the barrier and + following #pragma omp atomic_load. */ +/* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */ +/* { dg-final { cleanup-tree-dump "gimple" } } */ + +#include "atomic-11.C" Index: gcc/testsuite/g++.dg/gomp/atomic-13.C =================================================================== --- gcc/testsuite/g++.dg/gomp/atomic-13.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/gomp/atomic-13.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,43 @@ +/* PR middle-end/45423 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp" } */ + +#ifdef __cplusplus +bool *baz (); +#else +_Bool *baz (); +#endif +int *bar (); + +int +foo (void) +{ + #pragma omp barrier + #pragma omp atomic + (*bar ())++; + #pragma omp barrier + #pragma omp atomic + ++(*bar ()); + #pragma omp barrier + #pragma omp atomic + (*bar ())--; + #pragma omp barrier + #pragma omp atomic + --(*bar ()); + #pragma omp barrier + #pragma omp atomic + (*baz ())++; + #pragma omp barrier + #pragma omp atomic + ++(*baz ()); +#ifndef __cplusplus + #pragma omp barrier + #pragma omp atomic + (*baz ())--; + #pragma omp barrier + #pragma omp atomic + --(*baz ()); + #pragma omp barrier +#endif + return 0; +} Index: gcc/testsuite/g++.dg/gomp/atomic-14.C =================================================================== --- gcc/testsuite/g++.dg/gomp/atomic-14.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/gomp/atomic-14.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,19 @@ +// PR middle-end/45423 +// { dg-do compile } +// { dg-options "-fopenmp" } + +bool *baz (), atomicvar; + +int +foo (void) +{ + #pragma omp atomic + (*baz ())--; // { dg-error "invalid use of Boolean" } + #pragma omp atomic + --(*baz ()); // { dg-error "invalid use of Boolean" } + #pragma omp atomic + atomicvar--; // { dg-error "invalid use of Boolean" } + #pragma omp atomic + --atomicvar; // { dg-error "invalid use of Boolean" } + return 0; +} Index: gcc/testsuite/g++.dg/init/value8.C =================================================================== --- gcc/testsuite/g++.dg/init/value8.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/init/value8.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,19 @@ +// PR c++/45315 + +struct A +{ + A (); +}; + +template < int > struct B : A +{ + void foo () + { + new B < 0 > (); + } +}; + +int main() +{ + B<1>().foo(); +} Index: gcc/testsuite/g++.dg/torture/pr45393.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr45393.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/torture/pr45393.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,38 @@ +// { dg-do compile } + +class FloatPoint; +class Path { +public: + ~Path(); + void moveTo(const FloatPoint&); + static void createEllipse(const FloatPoint& center, float rx, float ry); +}; +extern "C" { + extern float cosf (float); + extern float sinf (float); +} +const float piFloat = static_cast(3.14159265358979323846); +class FloatPoint { +public: + FloatPoint(float x, float y) : m_x(x), m_y(y) { } + float x() const; + float y() const; + float m_x, m_y; +}; +void Path::createEllipse(const FloatPoint& center, float rx, float ry) +{ + float cx = center.x(); + float cy = center.y(); + Path path; + float x = cx; + float y = cy; + unsigned step = 0, num = 100; + while (1) { + float angle = static_cast(step) / num * 2.0f * piFloat; + x = cx + cosf(angle) * rx; + y = cy + sinf(angle) * ry; + step++; + if (step == 1) + path.moveTo(FloatPoint(x, y)); + } +} Index: gcc/testsuite/g++.dg/torture/pr45843.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr45843.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/torture/pr45843.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,28 @@ +// PR target/45843 +// { dg-do run } + +#include + +extern "C" void abort (); +struct S { struct T { } a[14]; char b; }; +struct S arg, s; + +void +foo (int z, ...) +{ + char c; + va_list ap; + va_start (ap, z); + c = 'a'; + arg = va_arg (ap, struct S); + if (c != 'a') + abort (); + va_end (ap); +} + +int +main () +{ + foo (1, s); + return 0; +} Index: gcc/testsuite/g++.dg/torture/pr45709-2.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr45709-2.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/torture/pr45709-2.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,20 @@ +// { dg-do compile } + +struct Region { + int storage[4]; + int count; +}; +static inline Region subtract(int lhs) +{ + Region reg; + int* storage = reg.storage; + int* storage2 = reg.storage; + if (lhs > 0) + storage++, storage2--; + reg.count = storage - reg.storage + storage2 - reg.storage; + return reg; +} +void bar(int a) +{ + const Region copyBack(subtract(a)); +} Index: gcc/testsuite/g++.dg/torture/pr45709.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr45709.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/torture/pr45709.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,19 @@ +// { dg-do compile } + +struct Region { + int storage[4]; + int count; +}; +static inline Region subtract(int lhs) +{ + Region reg; + int* storage = reg.storage; + if (lhs > 0) + storage++; + reg.count = storage - reg.storage; + return reg; +} +void bar(int a) +{ + const Region copyBack(subtract(a)); +} Index: gcc/testsuite/g++.dg/torture/pr45854.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr45854.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/torture/pr45854.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,30 @@ +// { dg-do compile } + +template < typename = void > +struct X { } ; +struct Y +{ + Y () ; +} ; +template < typename = X < > > +struct T +{ + void f () + { + f () ; + } +} ; +struct S +{ + S ( X < > = X < > ()) ; + ~S () + { + T < > () . f () ; + } +} ; +struct Z +{ + S s ; + Y y ; +} a ; + Index: gcc/testsuite/g++.dg/template/typedef34.C =================================================================== --- gcc/testsuite/g++.dg/template/typedef34.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/template/typedef34.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,37 @@ +// Origin PR c++/45200 +// { dg-do compile } + +template +struct remove_reference +{ + typedef T type; +}; + +template +struct forward_as_lref +{ +}; + +template +struct apply1 +{ + typedef typename remove_reference::type seq; + typedef forward_as_lref type; //#0 +}; + +template +struct apply +{ + typedef forward_as_lref::type::seq_type> type; //#1 +}; + +struct reverse_view +{ + typedef int seq_type; +}; + +int +main() +{ + apply::type a2; +} Index: gcc/testsuite/g++.dg/template/typedef35.C =================================================================== --- gcc/testsuite/g++.dg/template/typedef35.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/template/typedef35.C (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,41 @@ +// Origin c++/45558 +// { dg-do compile } + +template +struct C +{ + template + struct B + { + template + struct E + { + explicit E(const W &x) : w(x) {} + const W &w; + }; + }; +}; + +struct F; +template +struct D +{ + D() {} +}; + +const D g; +template +struct A +{ + template + struct B : C::template B + { + typedef typename C::template B V; + static const D > > a; + }; +}; + +template +template +const D::template B::template E > > +A::B::a = typename C::template B::template E >(g); Index: gcc/testsuite/lib/profopt.exp =================================================================== --- gcc/testsuite/lib/profopt.exp (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/lib/profopt.exp (.../branches/gcc-4_5-branch) (wersja 165515) @@ -328,6 +328,10 @@ lappend options "additional_flags=$option $extra_flags $feedback_option" set optstr "$option $feedback_option" set comp_output [${tool}_target_compile "$src" "$execname2" "executable" $options] + + # Prune warnings we know are unwanted. + set comp_output [prune_warnings $comp_output] + if ![${tool}_check_compile "$testcase compilation" $optstr $execname2 $comp_output] { unresolved "$testcase execution, $optstr" continue Index: gcc/testsuite/lib/plugin-support.exp =================================================================== --- gcc/testsuite/lib/plugin-support.exp (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/lib/plugin-support.exp (.../branches/gcc-4_5-branch) (wersja 165515) @@ -88,6 +88,10 @@ set optstr "$includes $extra_flags -DIN_GCC -fPIC -shared" + if { [ ishost *-*-darwin* ] } { + set optstr [concat $optstr "-undefined dynamic_lookup"] + } + # Temporarily switch to the environment for the plugin compiler. restore_ld_library_path_env_vars set status [remote_exec build "$PLUGINCC $PLUGINCFLAGS $plugin_src $optstr -o $plugin_lib"] Index: gcc/testsuite/lib/gcc-dg.exp =================================================================== --- gcc/testsuite/lib/gcc-dg.exp (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/lib/gcc-dg.exp (.../branches/gcc-4_5-branch) (wersja 165515) @@ -407,6 +407,8 @@ # that stores the filename of the testcase in a local variable "name". # A cleaner solution would require a new DejaGnu release. upvar 2 name testcase + # The name might include a list of options; extract the file name. + set testcase [lindex $testcase 0]] remove-build-file "[file rootname [file tail $testcase]].gc??" # Clean up coverage files for additional source files. @@ -423,6 +425,8 @@ # that stores the filename of the testcase in a local variable "name". # A cleaner solution would require a new DejaGnu release. upvar 2 name testcase + # The name might include a list of options; extract the file name. + set testcase [lindex $testcase 0]] remove-build-file "[file rootname [file tail $testcase]].o" remove-build-file "[file rootname [file tail $testcase]].rpo" @@ -498,6 +502,8 @@ # that stores the filename of the testcase in a local variable "name". # A cleaner solution would require a new DejaGnu release. upvar 2 name testcase + # The name might include a list of options; extract the file name. + set testcase [lindex $testcase 0]] foreach suffix $suffixes { remove-build-file "[file rootname [file tail $testcase]]$suffix" # -fcompare-debug dumps Index: gcc/testsuite/lib/prune.exp =================================================================== --- gcc/testsuite/lib/prune.exp (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/lib/prune.exp (.../branches/gcc-4_5-branch) (wersja 165515) @@ -48,6 +48,9 @@ regsub -all "(^|\n)\[^\n\]*file path prefix \[^\n\]* never used" $text "" text regsub -all "(^|\n)\[^\n\]*linker input file unused since linking not done" $text "" text + # Ignore harmless warnings from Xcode 3.2.x. + regsub -all "(^|\n)\[^\n\]*ld: warning: can't add line info to anonymous symbol\[^\n\]*" $text "" text + #send_user "After:$text\n" return $text Index: gcc/testsuite/lib/target-supports.exp =================================================================== --- gcc/testsuite/lib/target-supports.exp (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/lib/target-supports.exp (.../branches/gcc-4_5-branch) (wersja 165515) @@ -605,6 +605,20 @@ }] } +# Return 1 if -ffunction-sections is supported, 0 otherwise. + +proc check_effective_target_function_sections {} { + # Darwin has its own scheme and silently accepts -ffunction-sections. + global target_triplet + if { [regexp ".*-.*-darwin.*" $target_triplet] } { + return 0 + } + + return [check_no_compiler_messages functionsections assembly { + void foo (void) { } + } "-ffunction-sections"] +} + # Return 1 if compilation with -fgraphite is error-free for trivial # code, 0 otherwise. @@ -2816,6 +2830,7 @@ || [istarget i?86-*-*] || [istarget x86_64-*-*] || [istarget alpha*-*-*] + || [istarget arm*-*-linux-gnueabi] || [istarget bfin*-*linux*] || [istarget s390*-*-*] || [istarget powerpc*-*-*] @@ -2845,6 +2860,7 @@ || [istarget i?86-*-*] || [istarget x86_64-*-*] || [istarget alpha*-*-*] + || [istarget arm*-*-linux-gnueabi] || [istarget s390*-*-*] || [istarget powerpc*-*-*] || [istarget sparc64-*-*] @@ -3332,3 +3348,12 @@ } return 0 } + +# Return 1 if expensive testcases should be run. + +proc check_effective_target_run_expensive_tests { } { + if { [getenv GCC_TEST_RUN_EXPENSIVE] != "" } { + return 1 + } + return 0 +} Index: gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90 =================================================================== --- gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,55 @@ +! { dg-do run } +! +! PR fortran/45019 +! +! Check that the compiler knows that +! "arg" and "arr" can alias. +! +MODULE m + IMPLICIT NONE + INTEGER, TARGET :: arr(3) +CONTAINS + SUBROUTINE foobar (arg) + INTEGER, TARGET :: arg(:) + arr(2:3) = arg(1:2) + END SUBROUTINE foobar +END MODULE m + +PROGRAM main + USE m + IMPLICIT NONE + arr = (/ 1, 2, 3 /) + CALL bar(arr) + if (any (arr /= (/ 1, 1, 2 /))) call abort() + CALL test() +contains + subroutine bar(x) + INTEGER, TARGET :: x(:) + CALL foobar (x) + end subroutine bar +END PROGRAM main + +MODULE m2 + IMPLICIT NONE + INTEGER, TARGET :: arr(3) +CONTAINS + SUBROUTINE foobar (arg) + INTEGER, TARGET :: arg(:) + arr(1) = 5 + arg(1) = 6 + if (arr(1) == 5) call abort() + END SUBROUTINE foobar +END MODULE m2 +subroutine test + USE m2 + IMPLICIT NONE + arr = (/ 1, 2, 3 /) + CALL bar(arr) +contains + subroutine bar(x) + INTEGER, TARGET :: x(:) + CALL foobar (x) + end subroutine bar +END subroutine test + +! { dg-final { cleanup-modules "m m2" } } Index: gcc/testsuite/gfortran.dg/gomp/pr27573.f90 =================================================================== --- gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -11,5 +11,3 @@ end do !$omp end parallel end - -! { dg-final { cleanup-coverage-files } } Index: gcc/testsuite/gfortran.dg/gomp/pr45595.f90 =================================================================== --- gcc/testsuite/gfortran.dg/gomp/pr45595.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/gomp/pr45595.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,10 @@ +! PR fortran/45595 +! { dg-do compile } +! { dg-options "-fopenmp" } + +subroutine foo(l,u) + integer :: k,l,u + !$omp parallel do shared(l,u) collapse(3) ! { dg-error "not enough DO loops" } + do k = l,u + end do +end subroutine Index: gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 =================================================================== --- gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -12,7 +12,7 @@ x = a(4) !$omp end parallel !$omp parallel default(none) private (x) ! { dg-error "enclosing parallel" } - x = b(5) ! { dg-error "not specified in" "" { target *-*-* } 11 } + x = b(5) ! { dg-error "not specified in" } !$omp end parallel !$omp parallel default(none) private (x) x = c(6) Index: gcc/testsuite/gfortran.dg/intrinsic_6.f90 =================================================================== --- gcc/testsuite/gfortran.dg/intrinsic_6.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/intrinsic_6.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,11 @@ +! { dg-do compile } +! { dg-options "-fimplicit-none" } +! +! PR 45748: [4.5/4.6 Regression] -fimplicit-none failures when using intrinsic MAX +! +! Contributed by Themos Tsikas + +SUBROUTINE BUG(WORK) + INTRINSIC MAX + DOUBLE PRECISION WORK(MAX(2,3)) +END Index: gcc/testsuite/gfortran.dg/namelist_64.f90 =================================================================== --- gcc/testsuite/gfortran.dg/namelist_64.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/namelist_64.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,27 @@ +! { dg-do run } +! PR45532 gfortran namelist read error. +! Derived from the original test case by David Sagan. +program test +implicit none +type line_struct + integer :: width = 10 +end type +type symbol_struct + integer :: typee = 313233 +end type +type curve_struct + type (line_struct) line + type (symbol_struct) symbol +end type +type (curve_struct) curve(10) +namelist / params / curve +! +open (10, status="scratch") +write(10,*) "¶ms" +write(10,*) " curve(1)%symbol%typee = 1234" +write(10,*) "/" +rewind(10) +read (10, nml = params) +if (curve(1)%symbol%typee /= 1234) call abort +close(10) +end program Index: gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90 =================================================================== --- gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,30 @@ +! { dg-do compile } +! { dg-options "-fdump-tree-original" } +! Test the fix for PR45081 in which derived type array valued intrinsics failed +! to simplify, which caused an ICE in trans-array.c +! +! Contributed by Thorsten Ohl +! + module m + implicit none + integer :: i + type t + integer :: i + end type t + type(t), dimension(4), parameter :: t1 = [( t(i), i = 1, 4)] + type(t), dimension(4), parameter :: t2 = [( t(i), i = 8, 11)] + type(t), dimension(2,2), parameter :: a = reshape ( t1, [ 2, 2 ] ) + type(t), dimension(2,2), parameter :: b = transpose (a) + type(t), dimension(4), parameter :: c = reshape ( b, [ 4 ] ) + type(t), dimension(2), parameter :: d = pack ( c, [.false.,.true.,.false.,.true.]) + type(t), dimension(4), parameter :: e = unpack (d, [.false.,.true.,.false.,.true.], t2) + type(t), dimension(4,2), parameter :: f = spread (e, 2, 2) + type(t), dimension(8), parameter :: g = reshape ( f, [ 8 ] ) + integer, parameter :: total = sum(g%i) + end module m + + use m + integer :: j + j = total + end +! { dg-final { scan-tree-dump-times "j = 50" 1 "original" } } Index: gcc/testsuite/gfortran.dg/namelist_63.f90 =================================================================== --- gcc/testsuite/gfortran.dg/namelist_63.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/namelist_63.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,28 @@ +! { dg-do compile } +! +! PR fortran/45530 +! +! Contributed by david.sagan@gmail.com +! +program test +implicit none + +type c_struct + type (g_struct), pointer :: g +end type + +type g_struct + type (p_struct), pointer :: p +end type + +type p_struct + type (region_struct), pointer :: r +end type + +type region_struct + type (p_struct) plot +end type + +type (c_struct) curve(10) +namelist / params / curve ! { dg-error "NAMELIST object .curve. in namelist .params. at .1. cannot have POINTER components" } +end program Index: gcc/testsuite/gfortran.dg/initialization_27.f90 =================================================================== --- gcc/testsuite/gfortran.dg/initialization_27.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/initialization_27.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,39 @@ +! { dg-do run} +! +! PR fortran/45489 +! +! Check that non-referenced variables are default +! initialized if they are INTENT(OUT) or function results. +! Only the latter (i.e. "x=f()") was not working before +! PR 45489 was fixed. +! +program test_init + implicit none + integer, target :: tgt + type A + integer, pointer:: p => null () + integer:: i=3 + end type A + type(A):: x, y(3) + x=f() + if (associated(x%p) .or. x%i /= 3) call abort () + y(1)%p => tgt + y%i = 99 + call sub1(3,y) + if (associated(y(1)%p) .or. any(y(:)%i /= 3)) call abort () + y(1)%p => tgt + y%i = 99 + call sub2(y) + if (associated(y(1)%p) .or. any(y(:)%i /= 3)) call abort () +contains + function f() result (fr) + type(A):: fr + end function f + subroutine sub1(n,x) + integer :: n + type(A), intent(out) :: x(n:n+2) + end subroutine sub1 + subroutine sub2(x) + type(A), intent(out) :: x(:) + end subroutine sub2 +end program test_init Index: gcc/testsuite/gfortran.dg/namelist_65.f90 =================================================================== --- gcc/testsuite/gfortran.dg/namelist_65.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/namelist_65.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,22 @@ +! { dg-do run } +! { dg-options "-std=gnu" } +! PR45710 Adjust format/padding for WRITE of NAMELIST group to internal file +program oneline +real :: a=1,b=2,c=3,d=4 +namelist /nl1/ a,b,c +parameter(ilines=5) +character(len=80) :: out(ilines) + +! fill array out with @ +do i=1,len(out) + out(:)(i:i)='@' +enddo + +write(out,nl1) +if (out(1).ne."&NL1") call abort +if (out(2).ne." A= 1.0000000 ,") call abort +if (out(3).ne." B= 2.0000000 ,") call abort +if (out(4).ne." C= 3.0000000 ,") call abort +if (out(5).ne." /") call abort + +end program oneline Index: gcc/testsuite/gfortran.dg/allocate_derived_3.f90 =================================================================== --- gcc/testsuite/gfortran.dg/allocate_derived_3.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/allocate_derived_3.f90 (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,17 @@ +! { dg-do compile } +! +! PR 44929: [OOP] Parsing error of derived type name starting with 'REAL' +! +! Contributed by Satish.BD + + type :: real_type + end type + class(real_type), allocatable :: obj + real(8), allocatable :: r8 + + allocate(real_type :: obj) + + allocate( real(kind=8) :: r8) + allocate(real(8) :: r8 ) + +end Index: gcc/cp/typeck.c =================================================================== --- gcc/cp/typeck.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/cp/typeck.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1164,7 +1164,7 @@ if (!t1_typedef_variant_p || !t2_typedef_variant_p) /* Either T1 or T2 is not a typedef so we cannot compare the - the template parms of the typedefs of T1 and T2. + template parms of the typedefs of T1 and T2. At this point, if the main variant type of T1 and T2 are equal it means the two types can't be incompatible, from the perspective of this function. */ Index: gcc/cp/init.c =================================================================== --- gcc/cp/init.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/cp/init.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2158,7 +2158,8 @@ { init_expr = cp_build_indirect_ref (data_addr, RO_NULL, complain); - if (TYPE_NEEDS_CONSTRUCTING (type) && !explicit_value_init_p) + if (TYPE_NEEDS_CONSTRUCTING (type) + && (!explicit_value_init_p || processing_template_decl)) { init_expr = build_special_member_call (init_expr, complete_ctor_identifier, @@ -2168,9 +2169,13 @@ } else if (explicit_value_init_p) { - /* Something like `new int()'. */ - init_expr = build2 (INIT_EXPR, type, - init_expr, build_value_init (type)); + if (processing_template_decl) + /* Don't worry about it, we'll handle this properly at + instantiation time. */; + else + /* Something like `new int()'. */ + init_expr = build2 (INIT_EXPR, type, + init_expr, build_value_init (type)); } else { Index: gcc/cp/decl.c =================================================================== --- gcc/cp/decl.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/cp/decl.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2077,6 +2077,10 @@ SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl)); DECL_HAS_INIT_PRIORITY_P (olddecl) = 1; } + /* Likewise for DECL_USER_ALIGN and DECL_PACKED. */ + DECL_USER_ALIGN (olddecl) = DECL_USER_ALIGN (newdecl); + if (TREE_CODE (newdecl) == FIELD_DECL) + DECL_PACKED (olddecl) = DECL_PACKED (newdecl); /* The DECL_LANG_SPECIFIC information in OLDDECL will be replaced with that from NEWDECL below. */ Index: gcc/cp/tree.c =================================================================== --- gcc/cp/tree.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/cp/tree.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1039,6 +1039,11 @@ TYPE_RAISES_EXCEPTIONS (t)); } break; + case TYPENAME_TYPE: + result = make_typename_type (strip_typedefs (TYPE_CONTEXT (t)), + TYPENAME_TYPE_FULLNAME (t), + typename_type, tf_none); + break; default: break; } Index: gcc/cp/ChangeLog =================================================================== --- gcc/cp/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/cp/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,3 +1,33 @@ +2010-09-06 Dodji Seketeli + + PR c++/45200 + PR c++/45293 + PR c++/45558 + * tree.c (strip_typedefs): Strip typedefs from the context of + TYPENAME_TYPEs. + +2010-08-30 Jakub Jelinek + + PR middle-end/45423 + * parser.c (cp_parser_omp_atomic): Handle boolean + {PRE,POST}_INCREMENT. + +2010-08-29 Jason Merrill + + PR c++/44991 + * parser.c (cp_parser_parameter_declaration): Pop parameter decls + after tentative parsing. + +2010-08-19 Jason Merrill + + PR c++/45315 + * init.c (build_new_1): Don't use build_value_init in a template. + +2010-07-31 Ulrich Weigand + + PR c++/45112 + * decl.c (duplicate_decls): Merge DECL_USER_ALIGN and DECL_PACKED. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: gcc/cp/parser.c =================================================================== --- gcc/cp/parser.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/cp/parser.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -15191,6 +15191,7 @@ the default argument; otherwise the default argument continues. */ bool error = false; + tree t; /* Set ITALP so cp_parser_parameter_declaration_list doesn't decide to commit to this parse. */ @@ -15199,7 +15200,11 @@ cp_parser_parse_tentatively (parser); cp_lexer_consume_token (parser->lexer); + begin_scope (sk_function_parms, NULL_TREE); cp_parser_parameter_declaration_list (parser, &error); + for (t = current_binding_level->names; t; t = TREE_CHAIN (t)) + pop_binding (DECL_NAME (t), t); + leave_scope (); if (!cp_parser_error_occurred (parser) && !error) done = true; cp_parser_abort_tentative_parse (parser); @@ -21940,6 +21945,32 @@ rhs = integer_one_node; break; + case COMPOUND_EXPR: + if (TREE_CODE (TREE_OPERAND (lhs, 0)) == SAVE_EXPR + && TREE_CODE (TREE_OPERAND (lhs, 1)) == COMPOUND_EXPR + && TREE_CODE (TREE_OPERAND (TREE_OPERAND (lhs, 1), 0)) == MODIFY_EXPR + && TREE_OPERAND (TREE_OPERAND (lhs, 1), 1) == TREE_OPERAND (lhs, 0) + && TREE_CODE (TREE_TYPE (TREE_OPERAND (TREE_OPERAND + (TREE_OPERAND (lhs, 1), 0), 0))) + == BOOLEAN_TYPE) + /* Undo effects of boolean_increment for post {in,de}crement. */ + lhs = TREE_OPERAND (TREE_OPERAND (lhs, 1), 0); + /* FALLTHRU */ + case MODIFY_EXPR: + if (TREE_CODE (lhs) == MODIFY_EXPR + && TREE_CODE (TREE_TYPE (TREE_OPERAND (lhs, 0))) == BOOLEAN_TYPE) + { + /* Undo effects of boolean_increment. */ + if (integer_onep (TREE_OPERAND (lhs, 1))) + { + /* This is pre or post increment. */ + rhs = TREE_OPERAND (lhs, 1); + lhs = TREE_OPERAND (lhs, 0); + code = NOP_EXPR; + break; + } + } + /* FALLTHRU */ default: switch (cp_lexer_peek_token (parser->lexer)->type) { Index: gcc/haifa-sched.c =================================================================== --- gcc/haifa-sched.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/haifa-sched.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1997,13 +1997,9 @@ q_ptr = NEXT_Q (q_ptr); if (dbg_cnt (sched_insn) == false) - { - /* If debug counter is activated do not requeue insn next after - last_scheduled_insn. */ - skip_insn = next_nonnote_insn (last_scheduled_insn); - while (skip_insn && DEBUG_INSN_P (skip_insn)) - skip_insn = next_nonnote_insn (skip_insn); - } + /* If debug counter is activated do not requeue insn next after + last_scheduled_insn. */ + skip_insn = next_nonnote_nondebug_insn (last_scheduled_insn); else skip_insn = NULL_RTX; Index: gcc/tree-ssa-loop-ivopts.c =================================================================== --- gcc/tree-ssa-loop-ivopts.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/tree-ssa-loop-ivopts.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1557,7 +1557,7 @@ /* Return true if EXPR may be non-addressable. */ -static bool +bool may_be_nonaddressable_p (tree expr) { switch (TREE_CODE (expr)) Index: gcc/caller-save.c =================================================================== --- gcc/caller-save.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/caller-save.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -883,7 +883,10 @@ remain saved. If the last insn in the block is a JUMP_INSN, put the restore before the insn, otherwise, put it after the insn. */ - if (DEBUG_INSN_P (insn) && last && last->block == chain->block) + if (n_regs_saved + && DEBUG_INSN_P (insn) + && last + && last->block == chain->block) { rtx ins, prev; basic_block bb = BLOCK_FOR_INSN (insn); Index: gcc/ipa-pure-const.c =================================================================== --- gcc/ipa-pure-const.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ipa-pure-const.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -416,6 +416,13 @@ print_gimple_stmt (dump_file, stmt, 0, 0); } + if (gimple_has_volatile_ops (stmt)) + { + local->pure_const_state = IPA_NEITHER; + if (dump_file) + fprintf (dump_file, " Volatile stmt is not const/pure\n"); + } + /* Look for loads and stores. */ walk_stmt_load_store_ops (stmt, local, check_load, check_store); Index: gcc/cse.c =================================================================== --- gcc/cse.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/cse.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -6359,29 +6359,31 @@ recorded_label_ref = true; #ifdef HAVE_cc0 - /* If the previous insn set CC0 and this insn no longer - references CC0, delete the previous insn. Here we use - fact that nothing expects CC0 to be valid over an insn, - which is true until the final pass. */ - { - rtx prev_insn, tem; + if (NONDEBUG_INSN_P (insn)) + { + /* If the previous insn sets CC0 and this insn no + longer references CC0, delete the previous insn. + Here we use fact that nothing expects CC0 to be + valid over an insn, which is true until the final + pass. */ + rtx prev_insn, tem; - prev_insn = PREV_INSN (insn); - if (prev_insn && NONJUMP_INSN_P (prev_insn) - && (tem = single_set (prev_insn)) != 0 - && SET_DEST (tem) == cc0_rtx - && ! reg_mentioned_p (cc0_rtx, PATTERN (insn))) - delete_insn (prev_insn); - } + prev_insn = prev_nonnote_nondebug_insn (insn); + if (prev_insn && NONJUMP_INSN_P (prev_insn) + && (tem = single_set (prev_insn)) != NULL_RTX + && SET_DEST (tem) == cc0_rtx + && ! reg_mentioned_p (cc0_rtx, PATTERN (insn))) + delete_insn (prev_insn); - /* If this insn is not the last insn in the basic block, - it will be PREV_INSN(insn) in the next iteration. If - we recorded any CC0-related information for this insn, - remember it. */ - if (insn != BB_END (bb)) - { - prev_insn_cc0 = this_insn_cc0; - prev_insn_cc0_mode = this_insn_cc0_mode; + /* If this insn is not the last insn in the basic + block, it will be PREV_INSN(insn) in the next + iteration. If we recorded any CC0-related + information for this insn, remember it. */ + if (insn != BB_END (bb)) + { + prev_insn_cc0 = this_insn_cc0; + prev_insn_cc0_mode = this_insn_cc0_mode; + } } #endif } @@ -6724,7 +6726,7 @@ #ifdef HAVE_cc0 else if (GET_CODE (SET_DEST (set)) == CC0 && !side_effects_p (SET_SRC (set)) - && ((tem = next_nonnote_insn (insn)) == 0 + && ((tem = next_nonnote_nondebug_insn (insn)) == NULL_RTX || !INSN_P (tem) || !reg_referenced_p (cc0_rtx, PATTERN (tem)))) return false; Index: gcc/ira-color.c =================================================================== --- gcc/ira-color.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ira-color.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -82,6 +82,12 @@ more costly although simpler. */ static VEC(ira_allocno_t,heap) *removed_splay_allocno_vec; +/* Helper for qsort comparison callbacks - return a positive integer if + X > Y, or a negative value otherwise. Use a conditional expression + instead of a difference computation to insulate from possible overflow + issues, e.g. X - Y < 0 for some X > 0 and Y < 0. */ +#define SORTGT(x,y) (((x) > (y)) ? 1 : -1) + /* This page contains functions used to find conflicts using allocno @@ -1744,8 +1750,8 @@ pri1 = allocno_priorities[ALLOCNO_NUM (a1)]; pri2 = allocno_priorities[ALLOCNO_NUM (a2)]; - if (pri2 - pri1) - return pri2 - pri1; + if (pri2 != pri1) + return SORTGT (pri2, pri1); /* If regs are equally good, sort by allocnos, so that the results of qsort leave nothing to chance. */ Index: gcc/tree-ssa-math-opts.c =================================================================== --- gcc/tree-ssa-math-opts.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/tree-ssa-math-opts.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -640,7 +640,7 @@ result of the cexpi call we insert before the use statement that dominates all other candidates. */ -static void +static bool execute_cse_sincos_1 (tree name) { gimple_stmt_iterator gsi; @@ -651,6 +651,7 @@ VEC(gimple, heap) *stmts = NULL; basic_block top_bb = NULL; int i; + bool cfg_changed = false; type = TREE_TYPE (name); FOR_EACH_IMM_USE_STMT (use_stmt, use_iter, name) @@ -682,16 +683,20 @@ if (seen_cos + seen_sin + seen_cexpi <= 1) { VEC_free(gimple, heap, stmts); - return; + return false; } /* Simply insert cexpi at the beginning of top_bb but not earlier than the name def statement. */ fndecl = mathfn_built_in (type, BUILT_IN_CEXPI); if (!fndecl) - return; - res = make_rename_temp (TREE_TYPE (TREE_TYPE (fndecl)), "sincostmp"); + return false; + res = create_tmp_var (TREE_TYPE (TREE_TYPE (fndecl)), "sincostmp"); + if (TREE_CODE (TREE_TYPE (TREE_TYPE (fndecl))) == COMPLEX_TYPE + || TREE_CODE (TREE_TYPE (TREE_TYPE (fndecl))) == VECTOR_TYPE) + DECL_GIMPLE_REG_P (res) = 1; stmt = gimple_build_call (fndecl, 1, name); + res = make_ssa_name (res, stmt); gimple_call_set_lhs (stmt, res); def_stmt = SSA_NAME_DEF_STMT (name); @@ -737,11 +742,14 @@ stmt = gimple_build_assign (gimple_call_lhs (use_stmt), rhs); gsi = gsi_for_stmt (use_stmt); - gsi_insert_after (&gsi, stmt, GSI_SAME_STMT); - gsi_remove (&gsi, true); + gsi_replace (&gsi, stmt, true); + if (gimple_purge_dead_eh_edges (gimple_bb (stmt))) + cfg_changed = true; } VEC_free(gimple, heap, stmts); + + return cfg_changed; } /* Go through all calls to sin, cos and cexpi and call execute_cse_sincos_1 @@ -751,6 +759,7 @@ execute_cse_sincos (void) { basic_block bb; + bool cfg_changed = false; calculate_dominance_info (CDI_DOMINATORS); @@ -777,7 +786,7 @@ CASE_FLT_FN (BUILT_IN_CEXPI): arg = gimple_call_arg (stmt, 0); if (TREE_CODE (arg) == SSA_NAME) - execute_cse_sincos_1 (arg); + cfg_changed |= execute_cse_sincos_1 (arg); break; default:; @@ -787,7 +796,7 @@ } free_dominance_info (CDI_DOMINATORS); - return 0; + return cfg_changed ? TODO_cleanup_cfg : 0; } static bool Index: gcc/sel-sched.c =================================================================== --- gcc/sel-sched.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/sel-sched.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -4878,18 +4878,35 @@ move_cond_jump (rtx insn, bnd_t bnd) { edge ft_edge; - basic_block block_from, block_next, block_new; - rtx next, prev, link; + basic_block block_from, block_next, block_new, block_bnd, bb; + rtx next, prev, link, head; - /* BLOCK_FROM holds basic block of the jump. */ block_from = BLOCK_FOR_INSN (insn); + block_bnd = BLOCK_FOR_INSN (BND_TO (bnd)); + prev = BND_TO (bnd); - /* Moving of jump should not cross any other jumps or - beginnings of new basic blocks. */ - gcc_assert (block_from == BLOCK_FOR_INSN (BND_TO (bnd))); +#ifdef ENABLE_CHECKING + /* Moving of jump should not cross any other jumps or beginnings of new + basic blocks. The only exception is when we move a jump through + mutually exclusive insns along fallthru edges. */ + if (block_from != block_bnd) + { + bb = block_from; + for (link = PREV_INSN (insn); link != PREV_INSN (prev); + link = PREV_INSN (link)) + { + if (INSN_P (link)) + gcc_assert (sched_insns_conditions_mutex_p (insn, link)); + if (BLOCK_FOR_INSN (link) && BLOCK_FOR_INSN (link) != bb) + { + gcc_assert (single_pred (bb) == BLOCK_FOR_INSN (link)); + bb = BLOCK_FOR_INSN (link); + } + } + } +#endif /* Jump is moved to the boundary. */ - prev = BND_TO (bnd); next = PREV_INSN (insn); BND_TO (bnd) = insn; @@ -4904,28 +4921,35 @@ gcc_assert (block_new->next_bb == block_next && block_from->next_bb == block_new); - gcc_assert (BB_END (block_from) == insn); - - /* Move all instructions except INSN from BLOCK_FROM to - BLOCK_NEW. */ - for (link = prev; link != insn; link = NEXT_INSN (link)) + /* Move all instructions except INSN to BLOCK_NEW. */ + bb = block_bnd; + head = BB_HEAD (block_new); + while (bb != block_from->next_bb) { - EXPR_ORIG_BB_INDEX (INSN_EXPR (link)) = block_new->index; - df_insn_change_bb (link, block_new); - } + rtx from, to; + from = bb == block_bnd ? prev : sel_bb_head (bb); + to = bb == block_from ? next : sel_bb_end (bb); - /* Set correct basic block and instructions properties. */ - BB_END (block_new) = PREV_INSN (insn); + /* The jump being moved can be the first insn in the block. + In this case we don't have to move anything in this block. */ + if (NEXT_INSN (to) != from) + { + reorder_insns (from, to, head); - NEXT_INSN (PREV_INSN (prev)) = insn; - PREV_INSN (insn) = PREV_INSN (prev); + for (link = to; link != head; link = PREV_INSN (link)) + EXPR_ORIG_BB_INDEX (INSN_EXPR (link)) = block_new->index; + head = to; + } + /* Cleanup possibly empty blocks left. */ + block_next = bb->next_bb; + if (bb != block_from) + tidy_control_flow (bb, false); + bb = block_next; + } + /* Assert there is no jump to BLOCK_NEW, only fallthrough edge. */ gcc_assert (NOTE_INSN_BASIC_BLOCK_P (BB_HEAD (block_new))); - PREV_INSN (prev) = BB_HEAD (block_new); - NEXT_INSN (next) = NEXT_INSN (BB_HEAD (block_new)); - NEXT_INSN (BB_HEAD (block_new)) = prev; - PREV_INSN (NEXT_INSN (next)) = next; gcc_assert (!sel_bb_empty_p (block_from) && !sel_bb_empty_p (block_new)); Index: gcc/ifcvt.c =================================================================== --- gcc/ifcvt.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ifcvt.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2118,8 +2118,15 @@ /* Otherwise, fall back on canonicalize_condition to do the dirty work of manipulating MODE_CC values and COMPARE rtx codes. */ - return canonicalize_condition (jump, cond, reverse, earliest, - NULL_RTX, false, true); + tmp = canonicalize_condition (jump, cond, reverse, earliest, + NULL_RTX, false, true); + + /* We don't handle side-effects in the condition, like handling + REG_INC notes and making sure no duplicate conditions are emitted. */ + if (tmp != NULL_RTX && side_effects_p (tmp)) + return NULL_RTX; + + return tmp; } /* Return true if OP is ok for if-then-else processing. */ @@ -2285,9 +2292,7 @@ } else { - insn_b = prev_nonnote_insn (if_info->cond_earliest); - while (insn_b && DEBUG_INSN_P (insn_b)) - insn_b = prev_nonnote_insn (insn_b); + insn_b = prev_nonnote_nondebug_insn (if_info->cond_earliest); /* We're going to be moving the evaluation of B down from above COND_EARLIEST to JUMP. Make sure the relevant data is still intact. */ Index: gcc/dwarf2out.c =================================================================== --- gcc/dwarf2out.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/dwarf2out.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -471,7 +471,6 @@ static void output_cfi_directive (dw_cfi_ref); static void output_call_frame_info (int); static void dwarf2out_note_section_used (void); -static void flush_queued_reg_saves (void); static bool clobbers_queued_reg_save (const_rtx); static void dwarf2out_frame_debug_expr (rtx, const char *); @@ -1707,8 +1706,8 @@ /* Output all the entries in QUEUED_REG_SAVES. */ -static void -flush_queued_reg_saves (void) +void +dwarf2out_flush_queued_reg_saves (void) { struct queued_reg_save *q; @@ -2657,7 +2656,7 @@ size_t i; /* Flush any queued register saves. */ - flush_queued_reg_saves (); + dwarf2out_flush_queued_reg_saves (); /* Set up state for generating call frame debug info. */ lookup_cfa (&cfa); @@ -2685,7 +2684,7 @@ } if (!NONJUMP_INSN_P (insn) || clobbers_queued_reg_save (insn)) - flush_queued_reg_saves (); + dwarf2out_flush_queued_reg_saves (); if (!RTX_FRAME_RELATED_P (insn)) { @@ -12158,7 +12157,8 @@ name = qualified_type ? TYPE_NAME (qualified_type) : NULL; /* Handle C typedef types. */ - if (name && TREE_CODE (name) == TYPE_DECL && DECL_ORIGINAL_TYPE (name)) + if (name && TREE_CODE (name) == TYPE_DECL && DECL_ORIGINAL_TYPE (name) + && !DECL_ARTIFICIAL (name)) { tree dtype = TREE_TYPE (name); @@ -15578,7 +15578,8 @@ ; /* Vectors only work if their mode is supported by the target. FIXME: generic vectors ought to work too. */ - else if (TREE_CODE (type) == VECTOR_TYPE && TYPE_MODE (type) == BLKmode) + else if (TREE_CODE (type) == VECTOR_TYPE + && !VECTOR_MODE_P (TYPE_MODE (type))) ; /* If the initializer is something that we know will expand into an immediate RTL constant, expand it now. We must be careful not to @@ -19609,16 +19610,20 @@ else if (debug_info_level > DINFO_LEVEL_TERSE) { /* Before we describe the FUNCTION_DECL itself, make sure that we - have described its return type. */ + have its containing type. */ + if (!origin) + origin = decl_class_context (decl); + if (origin != NULL_TREE) + gen_type_die (origin, context_die); + + /* And its return type. */ gen_type_die (TREE_TYPE (TREE_TYPE (decl)), context_die); /* And its virtual context. */ if (DECL_VINDEX (decl) != NULL_TREE) gen_type_die (DECL_CONTEXT (decl), context_die); - /* And its containing type. */ - if (!origin) - origin = decl_class_context (decl); + /* Make sure we have a member DIE for decl. */ if (origin != NULL_TREE) gen_type_die_for_member (origin, decl, context_die); Index: gcc/expr.c =================================================================== --- gcc/expr.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/expr.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -9344,7 +9344,15 @@ { if (GET_CODE (op0) == SUBREG) op0 = force_reg (GET_MODE (op0), op0); - op0 = gen_lowpart (mode, op0); + temp = gen_lowpart_common (mode, op0); + if (temp) + op0 = temp; + else + { + if (!REG_P (op0) && !MEM_P (op0)) + op0 = force_reg (GET_MODE (op0), op0); + op0 = gen_lowpart (mode, op0); + } } /* If both modes are integral, then we can convert from one to the other. */ @@ -9379,10 +9387,32 @@ results. */ if (MEM_P (op0)) { + enum insn_code icode; op0 = copy_rtx (op0); if (TYPE_ALIGN_OK (type)) set_mem_align (op0, MAX (MEM_ALIGN (op0), TYPE_ALIGN (type))); + else if (mode != BLKmode + && MEM_ALIGN (op0) < GET_MODE_ALIGNMENT (mode) + /* If the target does have special handling for unaligned + loads of mode then use them. */ + && ((icode = optab_handler (movmisalign_optab, + mode)->insn_code) + != CODE_FOR_nothing)) + { + rtx reg, insn; + + op0 = adjust_address (op0, mode, 0); + /* We've already validated the memory, and we're creating a + new pseudo destination. The predicates really can't + fail. */ + reg = gen_reg_rtx (mode); + + /* Nor can the insn generator. */ + insn = GEN_FCN (icode) (reg, op0); + emit_insn (insn); + return reg; + } else if (STRICT_ALIGNMENT && mode != BLKmode && MEM_ALIGN (op0) < GET_MODE_ALIGNMENT (mode)) Index: gcc/dwarf2out.h =================================================================== --- gcc/dwarf2out.h (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/dwarf2out.h (.../branches/gcc-4_5-branch) (wersja 165515) @@ -22,6 +22,7 @@ extern void dwarf2out_frame_debug (rtx, bool); extern void dwarf2out_begin_epilogue (rtx); extern void dwarf2out_frame_debug_restore_state (void); +extern void dwarf2out_flush_queued_reg_saves (void); extern void debug_dwarf (void); struct die_struct; Index: gcc/ada/ChangeLog =================================================================== --- gcc/ada/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ada/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,3 +1,24 @@ +2010-09-19 Eric Botcazou + + * gcc-interface/trans.c (gnat_pushdecl): Do not do anything special + for PARM_DECLs. + (end_subprog_body): If the body is a BIND_EXPR, make its associated + block the top-level one. + (build_function_stub): Build a statement group for the whole function. + * gcc-interface/utils.c (Subprogram_Body_to_gnu): If copy-in/copy-out + is used, create the enclosing block early and process first the OUT + parameters. + +2010-09-19 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Do + not generate debug info for individual enumerators. + +2010-08-30 Eric Botcazou + + * gcc-interface/utils.c (gnat_pushdecl): Remove test for PARM_DECLs. + Attach fake PARM_DECLs to the topmost block of the function. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: gcc/ada/gcc-interface/utils.c =================================================================== --- gcc/ada/gcc-interface/utils.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ada/gcc-interface/utils.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -423,11 +423,8 @@ void gnat_pushdecl (tree decl, Node_Id gnat_node) { - /* If this decl is public external or at toplevel, there is no context. - But PARM_DECLs always go in the level of its function. */ - if (TREE_CODE (decl) != PARM_DECL - && ((DECL_EXTERNAL (decl) && TREE_PUBLIC (decl)) - || global_bindings_p ())) + /* If this decl is public external or at toplevel, there is no context. */ + if ((TREE_PUBLIC (decl) && DECL_EXTERNAL (decl)) || global_bindings_p ()) DECL_CONTEXT (decl) = 0; else { @@ -2085,9 +2082,7 @@ { tree fndecl = current_function_decl; - /* Mark the BLOCK for this level as being for this function and pop the - level. Since the vars in it are the parameters, clear them. */ - BLOCK_VARS (current_binding_level->block) = 0; + /* Attach the BLOCK for this level to the function and pop the level. */ BLOCK_SUPERCONTEXT (current_binding_level->block) = fndecl; DECL_INITIAL (fndecl) = current_binding_level->block; gnat_poplevel (); @@ -2099,6 +2094,13 @@ /* Mark the RESULT_DECL as being in this subprogram. */ DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl; + /* The body should be a BIND_EXPR whose BLOCK is the top-level one. */ + if (TREE_CODE (body) == BIND_EXPR) + { + BLOCK_SUPERCONTEXT (BIND_EXPR_BLOCK (body)) = fndecl; + DECL_INITIAL (fndecl) = BIND_EXPR_BLOCK (body); + } + DECL_SAVED_TREE (fndecl) = body; current_function_decl = DECL_CONTEXT (fndecl); @@ -3471,15 +3473,18 @@ tree gnu_subprog_type, gnu_subprog_addr, gnu_subprog_call; tree gnu_stub_param, gnu_param_list, gnu_arg_types, gnu_param; tree gnu_stub_decl = DECL_FUNCTION_STUB (gnu_subprog); - tree gnu_body; gnu_subprog_type = TREE_TYPE (gnu_subprog); gnu_param_list = NULL_TREE; + /* Initialize the information structure for the function. */ + allocate_struct_function (gnu_stub_decl, false); + set_cfun (NULL); + begin_subprog_body (gnu_stub_decl); - gnat_pushlevel (); start_stmt_group (); + gnat_pushlevel (); /* Loop over the parameters of the stub and translate any of them passed by descriptor into a by reference one. */ @@ -3501,8 +3506,6 @@ gnu_param_list = tree_cons (NULL_TREE, gnu_param, gnu_param_list); } - gnu_body = end_stmt_group (); - /* Invoke the internal subprogram. */ gnu_subprog_addr = build1 (ADDR_EXPR, build_pointer_type (gnu_subprog_type), gnu_subprog); @@ -3512,16 +3515,13 @@ /* Propagate the return value, if any. */ if (VOID_TYPE_P (TREE_TYPE (gnu_subprog_type))) - append_to_statement_list (gnu_subprog_call, &gnu_body); + add_stmt (gnu_subprog_call); else - append_to_statement_list (build_return_expr (DECL_RESULT (gnu_stub_decl), - gnu_subprog_call), - &gnu_body); + add_stmt (build_return_expr (DECL_RESULT (gnu_stub_decl), + gnu_subprog_call)); gnat_poplevel (); - - allocate_struct_function (gnu_stub_decl, false); - end_subprog_body (gnu_body); + end_subprog_body (end_stmt_group ()); } /* Build a type to be used to represent an aliased object whose nominal Index: gcc/ada/gcc-interface/decl.c =================================================================== --- gcc/ada/gcc-interface/decl.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ada/gcc-interface/decl.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1445,7 +1445,8 @@ = create_var_decl (get_entity_name (gnat_literal), NULL_TREE, gnu_type, gnu_value, true, false, false, false, NULL, gnat_literal); - + /* Do not generate debug info for individual enumerators. */ + DECL_IGNORED_P (gnu_literal) = 1; save_gnu_tree (gnat_literal, gnu_literal, false); gnu_literal_list = tree_cons (DECL_NAME (gnu_literal), gnu_value, gnu_literal_list); Index: gcc/ada/gcc-interface/trans.c =================================================================== --- gcc/ada/gcc-interface/trans.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ada/gcc-interface/trans.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2236,41 +2236,49 @@ = GGC_CNEW (struct language_function); begin_subprog_body (gnu_subprog_decl); + + /* If there are In Out or Out parameters, we need to ensure that the return + statement properly copies them out. We do this by making a new block and + converting any return into a goto to a label at the end of the block. */ gnu_cico_list = TYPE_CI_CO_LIST (gnu_subprog_type); + if (gnu_cico_list) + { + push_stack (&gnu_return_label_stack, NULL_TREE, + create_artificial_label (input_location)); - /* If there are Out parameters, we need to ensure that the return statement - properly copies them out. We do this by making a new block and converting - any inner return into a goto to a label at the end of the block. */ - push_stack (&gnu_return_label_stack, NULL_TREE, - gnu_cico_list ? create_artificial_label (input_location) - : NULL_TREE); + start_stmt_group (); + gnat_pushlevel (); + /* See whether there are parameters for which we don't have a GCC tree + yet. These must be Out parameters. Make a VAR_DECL for them and + put it into TYPE_CI_CO_LIST, which must contain an empty entry too. + We can match up the entries because TYPE_CI_CO_LIST is in the order + of the parameters. */ + for (gnat_param = First_Formal_With_Extras (gnat_subprog_id); + Present (gnat_param); + gnat_param = Next_Formal_With_Extras (gnat_param)) + if (!present_gnu_tree (gnat_param)) + { + tree gnu_cico_entry = gnu_cico_list; + + /* Skip any entries that have been already filled in; they must + correspond to In Out parameters. */ + while (gnu_cico_entry && TREE_VALUE (gnu_cico_entry)) + gnu_cico_entry = TREE_CHAIN (gnu_cico_entry); + + /* Do any needed references for padded types. */ + TREE_VALUE (gnu_cico_entry) + = convert (TREE_TYPE (TREE_PURPOSE (gnu_cico_entry)), + gnat_to_gnu_entity (gnat_param, NULL_TREE, 1)); + } + } + else + push_stack (&gnu_return_label_stack, NULL_TREE, NULL_TREE); + /* Get a tree corresponding to the code for the subprogram. */ start_stmt_group (); gnat_pushlevel (); - /* See if there are any parameters for which we don't yet have GCC entities. - These must be for Out parameters for which we will be making VAR_DECL - nodes here. Fill them in to TYPE_CI_CO_LIST, which must contain the empty - entry as well. We can match up the entries because TYPE_CI_CO_LIST is in - the order of the parameters. */ - for (gnat_param = First_Formal_With_Extras (gnat_subprog_id); - Present (gnat_param); - gnat_param = Next_Formal_With_Extras (gnat_param)) - if (!present_gnu_tree (gnat_param)) - { - /* Skip any entries that have been already filled in; they must - correspond to In Out parameters. */ - for (; gnu_cico_list && TREE_VALUE (gnu_cico_list); - gnu_cico_list = TREE_CHAIN (gnu_cico_list)) - ; - - /* Do any needed references for padded types. */ - TREE_VALUE (gnu_cico_list) - = convert (TREE_TYPE (TREE_PURPOSE (gnu_cico_list)), - gnat_to_gnu_entity (gnat_param, NULL_TREE, 1)); - } - /* On VMS, establish our condition handler to possibly turn a condition into the corresponding exception if the subprogram has a foreign convention or is exported. @@ -2295,44 +2303,26 @@ gnat_poplevel (); gnu_result = end_stmt_group (); - /* If we populated the parameter attributes cache, we need to make sure - that the cached expressions are evaluated on all possible paths. */ - cache = DECL_STRUCT_FUNCTION (gnu_subprog_decl)->language->parm_attr_cache; - if (cache) - { - struct parm_attr_d *pa; - int i; + /* If we are dealing with a return from an Ada procedure with parameters + passed by copy-in/copy-out, we need to return a record containing the + final values of these parameters. If the list contains only one entry, + return just that entry though. - start_stmt_group (); + For a full description of the copy-in/copy-out parameter mechanism, see + the part of the gnat_to_gnu_entity routine dealing with the translation + of subprograms. - for (i = 0; VEC_iterate (parm_attr, cache, i, pa); i++) - { - if (pa->first) - add_stmt_with_node (pa->first, gnat_node); - if (pa->last) - add_stmt_with_node (pa->last, gnat_node); - if (pa->length) - add_stmt_with_node (pa->length, gnat_node); - } - - add_stmt (gnu_result); - gnu_result = end_stmt_group (); - } - - /* If we made a special return label, we need to make a block that contains - the definition of that label and the copying to the return value. That - block first contains the function, then the label and copy statement. */ - if (TREE_VALUE (gnu_return_label_stack)) + We need to make a block that contains the definition of that label and + the copying of the return value. It first contains the function, then + the label and copy statement. */ + if (gnu_cico_list) { tree gnu_retval; - start_stmt_group (); - gnat_pushlevel (); add_stmt (gnu_result); add_stmt (build1 (LABEL_EXPR, void_type_node, TREE_VALUE (gnu_return_label_stack))); - gnu_cico_list = TYPE_CI_CO_LIST (gnu_subprog_type); if (list_length (gnu_cico_list) == 1) gnu_retval = TREE_VALUE (gnu_cico_list); else @@ -2351,6 +2341,30 @@ pop_stack (&gnu_return_label_stack); + /* If we populated the parameter attributes cache, we need to make sure + that the cached expressions are evaluated on all possible paths. */ + cache = DECL_STRUCT_FUNCTION (gnu_subprog_decl)->language->parm_attr_cache; + if (cache) + { + struct parm_attr_d *pa; + int i; + + start_stmt_group (); + + for (i = 0; VEC_iterate (parm_attr, cache, i, pa); i++) + { + if (pa->first) + add_stmt_with_node (pa->first, gnat_node); + if (pa->last) + add_stmt_with_node (pa->last, gnat_node); + if (pa->length) + add_stmt_with_node (pa->length, gnat_node); + } + + add_stmt (gnu_result); + gnu_result = end_stmt_group (); + } + /* Set the end location. */ Sloc_to_locus ((Present (End_Label (Handled_Statement_Sequence (gnat_node))) Index: gcc/sel-sched-ir.c =================================================================== --- gcc/sel-sched-ir.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/sel-sched-ir.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -4324,7 +4324,7 @@ note = bb_note (bb); head = next_nonnote_insn (note); - if (head && BLOCK_FOR_INSN (head) != bb) + if (head && (BARRIER_P (head) || BLOCK_FOR_INSN (head) != bb)) head = NULL_RTX; } Index: gcc/tree-eh.c =================================================================== --- gcc/tree-eh.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/tree-eh.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2317,6 +2317,11 @@ return true; return false; + case COMPLEX_EXPR: + case CONSTRUCTOR: + /* Constructing an object cannot trap. */ + return false; + default: /* Any floating arithmetic may trap. */ if (fp_operation && flag_trapping_math) @@ -3720,8 +3725,14 @@ /* If the block is totally empty, look for more unsplitting cases. */ if (gsi_end_p (gsi)) - return cleanup_empty_eh_unsplit (bb, e_out, lp); + { + /* For the degenerate case of an infinite loop bail out. */ + if (e_out->dest == bb) + return false; + return cleanup_empty_eh_unsplit (bb, e_out, lp); + } + /* The block should consist only of a single RESX statement. */ resx = gsi_stmt (gsi); if (!is_gimple_resx (resx)) Index: gcc/fortran/openmp.c =================================================================== --- gcc/fortran/openmp.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/openmp.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1489,7 +1489,8 @@ break; } do_code = do_code->next; - if (do_code->op != EXEC_DO && do_code->op != EXEC_DO_WHILE) + if (do_code == NULL + || (do_code->op != EXEC_DO && do_code->op != EXEC_DO_WHILE)) { gfc_error ("not enough DO loops for collapsed !$OMP DO at %L", &code->loc); Index: gcc/fortran/intrinsic.c =================================================================== --- gcc/fortran/intrinsic.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/intrinsic.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -112,6 +112,8 @@ sym->attr.flavor = FL_PROCEDURE; sym->attr.proc = PROC_INTRINSIC; + gfc_commit_symbol (sym); + return sym; } Index: gcc/fortran/symbol.c =================================================================== --- gcc/fortran/symbol.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/symbol.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2753,6 +2753,17 @@ if (lsym->attr.allocatable && rsym->attr.pointer) return 1; + /* Special case: Argument association, cf. F90 12.4.1.6, F2003 12.4.1.7 + and F2008 12.5.2.13 items 3b and 4b. The pointer case (a) is already + checked above. */ + if (lsym->attr.target && rsym->attr.target + && ((lsym->attr.dummy + && (!lsym->attr.dimension || lsym->as->type == AS_ASSUMED_SHAPE)) + || (rsym->attr.dummy + && (!rsym->attr.dimension + || rsym->as->type == AS_ASSUMED_SHAPE)))) + return 1; + return 0; } @@ -3795,6 +3806,9 @@ formal_arg = gfc_get_formal_arglist (); /* Add arg to list of formal args (the CPTR arg). */ add_formal_arg (head, tail, formal_arg, param_sym); + + /* Validate changes. */ + gfc_commit_symbol (param_sym); } @@ -3840,6 +3854,9 @@ formal_arg = gfc_get_formal_arglist (); /* Add arg to list of formal args. */ add_formal_arg (head, tail, formal_arg, param_sym); + + /* Validate changes. */ + gfc_commit_symbol (param_sym); } @@ -3911,6 +3928,9 @@ formal_arg = gfc_get_formal_arglist (); /* Add arg to list of formal args. */ add_formal_arg (head, tail, formal_arg, param_sym); + + /* Validate changes. */ + gfc_commit_symbol (param_sym); } @@ -3973,6 +3993,9 @@ /* Add arg to list of formal args. */ add_formal_arg (&head, &tail, formal_arg, formal_arg->sym); + + /* Validate changes. */ + gfc_commit_symbol (formal_arg->sym); } /* Add the interface to the symbol. */ @@ -4030,6 +4053,9 @@ /* Add arg to list of formal args. */ add_formal_arg (&head, &tail, formal_arg, formal_arg->sym); + + /* Validate changes. */ + gfc_commit_symbol (formal_arg->sym); } /* Add the interface to the symbol. */ @@ -4083,6 +4109,9 @@ /* Add arg to list of formal args. */ add_formal_arg (&head, &tail, formal_arg, formal_arg->sym); + + /* Validate changes. */ + gfc_commit_symbol (formal_arg->sym); } /* Add the interface to the symbol. */ @@ -4465,6 +4494,7 @@ default: gcc_unreachable (); } + gfc_commit_symbol (tmp_sym); } @@ -4837,10 +4867,12 @@ c->ts.u.derived = vtype; c->initializer->expr_type = EXPR_NULL; } + gfc_commit_symbol (vtype); } vtab->ts.u.derived = vtype; vtab->value = gfc_default_initializer (&vtab->ts); + gfc_commit_symbol (vtab); } } Index: gcc/fortran/gfortran.texi =================================================================== --- gcc/fortran/gfortran.texi (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/gfortran.texi (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2639,9 +2639,6 @@ User-specified alignment rules for structures. @item -Flag to generate @code{Makefile} info. - -@item Automatically extend single precision constants to double. @item Index: gcc/fortran/cpp.c =================================================================== --- gcc/fortran/cpp.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/cpp.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -35,6 +35,7 @@ #include "../../libcpp/internal.h" #include "cpp.h" #include "incpath.h" +#include "mkdeps.h" #ifndef TARGET_OS_CPP_BUILTINS # define TARGET_OS_CPP_BUILTINS() @@ -84,6 +85,12 @@ int no_predefined; /* -undef */ int standard_include_paths; /* -nostdinc */ int verbose; /* -v */ + int deps; /* -M */ + int deps_skip_system; /* -MM */ + const char *deps_filename; /* -M[M]D */ + const char *deps_filename_user; /* -MF */ + int deps_missing_are_generated; /* -MG */ + int deps_phony; /* -MP */ const char *multilib; /* -imultilib */ const char *prefix; /* -iprefix */ @@ -270,6 +277,26 @@ return gfc_cpp_option.preprocess_only; } +bool +gfc_cpp_makedep (void) +{ + return gfc_cpp_option.deps; +} + +void +gfc_cpp_add_dep (const char *name, bool system) +{ + if (!gfc_cpp_option.deps_skip_system || !system) + deps_add_dep (cpp_get_deps (cpp_in), name); +} + +void +gfc_cpp_add_target (const char *name) +{ + deps_add_target (cpp_get_deps (cpp_in), name, 0); +} + + const char * gfc_cpp_temporary_file (void) { @@ -299,6 +326,12 @@ gfc_cpp_option.no_predefined = 0; gfc_cpp_option.standard_include_paths = 1; gfc_cpp_option.verbose = 0; + gfc_cpp_option.deps = 0; + gfc_cpp_option.deps_skip_system = 0; + gfc_cpp_option.deps_phony = 0; + gfc_cpp_option.deps_missing_are_generated = 0; + gfc_cpp_option.deps_filename = NULL; + gfc_cpp_option.deps_filename_user = NULL; gfc_cpp_option.multilib = NULL; gfc_cpp_option.prefix = NULL; @@ -414,6 +447,43 @@ gfc_cpp_option.print_include_names = 1; break; + case OPT_MM: + gfc_cpp_option.deps_skip_system = 1; + /* fall through */ + + case OPT_M: + gfc_cpp_option.deps = 1; + break; + + case OPT_MMD: + gfc_cpp_option.deps_skip_system = 1; + /* fall through */ + + case OPT_MD: + gfc_cpp_option.deps = 1; + gfc_cpp_option.deps_filename = arg; + break; + + case OPT_MF: + /* If specified multiple times, last one wins. */ + gfc_cpp_option.deps_filename_user = arg; + break; + + case OPT_MG: + gfc_cpp_option.deps_missing_are_generated = 1; + break; + + case OPT_MP: + gfc_cpp_option.deps_phony = 1; + break; + + case OPT_MQ: + case OPT_MT: + gfc_cpp_option.deferred_opt[gfc_cpp_option.deferred_opt_count].code = code; + gfc_cpp_option.deferred_opt[gfc_cpp_option.deferred_opt_count].arg = arg; + gfc_cpp_option.deferred_opt_count++; + break; + case OPT_P: gfc_cpp_option.no_line_commands = 1; break; @@ -430,16 +500,17 @@ an error. */ if (!gfc_cpp_enabled () && (gfc_cpp_preprocess_only () - || !gfc_cpp_option.discard_comments - || !gfc_cpp_option.discard_comments_in_macro_exp - || gfc_cpp_option.print_include_names - || gfc_cpp_option.no_line_commands - || gfc_cpp_option.dump_macros - || gfc_cpp_option.dump_includes)) + || gfc_cpp_makedep () + || !gfc_cpp_option.discard_comments + || !gfc_cpp_option.discard_comments_in_macro_exp + || gfc_cpp_option.print_include_names + || gfc_cpp_option.no_line_commands + || gfc_cpp_option.dump_macros + || gfc_cpp_option.dump_includes)) gfc_fatal_error("To enable preprocessing, use -cpp"); cpp_in = cpp_create_reader (CLK_GNUC89, NULL, line_table); - if (!gfc_cpp_enabled()) + if (!gfc_cpp_enabled ()) return; gcc_assert (cpp_in); @@ -462,6 +533,17 @@ cpp_option->print_include_names = gfc_cpp_option.print_include_names; cpp_option->preprocessed = gfc_option.flag_preprocessed; + if (gfc_cpp_makedep ()) + { + cpp_option->deps.style = DEPS_USER; + cpp_option->deps.phony_targets = gfc_cpp_option.deps_phony; + cpp_option->deps.missing_files = gfc_cpp_option.deps_missing_are_generated; + + /* -MF overrides -M[M]D. */ + if (gfc_cpp_option.deps_filename_user) + gfc_cpp_option.deps_filename = gfc_cpp_option.deps_filename_user; + } + if (gfc_cpp_option.working_directory == -1) gfc_cpp_option.working_directory = (debug_info_level != DINFO_LEVEL_NONE); @@ -571,6 +653,9 @@ else cpp_assert (cpp_in, opt->arg); } + else if (opt->code == OPT_MT || opt->code == OPT_MQ) + deps_add_target (cpp_get_deps (cpp_in), + opt->arg, opt->code == OPT_MQ); } if (gfc_cpp_option.working_directory @@ -614,14 +699,27 @@ if (!gfc_cpp_enabled ()) return; - /* TODO: if dependency tracking was enabled, call - cpp_finish() here to write dependencies. + gcc_assert (cpp_in); - Use cpp_get_deps() to access the current source's - dependencies during parsing. Add dependencies using - the mkdeps-interface (defined in libcpp). */ + if (gfc_cpp_makedep ()) + { + if (gfc_cpp_option.deps_filename) + { + FILE *f = fopen (gfc_cpp_option.deps_filename, "w"); + if (f) + { + cpp_finish (cpp_in, f); + fclose (f); + } + else + gfc_fatal_error ("opening output file %s: %s", + gfc_cpp_option.deps_filename, + xstrerror (errno)); + } + else + cpp_finish (cpp_in, stdout); + } - gcc_assert (cpp_in); cpp_undef_all (cpp_in); cpp_clear_file_cache (cpp_in); } Index: gcc/fortran/cpp.h =================================================================== --- gcc/fortran/cpp.h (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/cpp.h (.../branches/gcc-4_5-branch) (wersja 165515) @@ -24,6 +24,12 @@ bool gfc_cpp_preprocess_only (void); +bool gfc_cpp_makedep (void); + +void gfc_cpp_add_dep (const char *name, bool system); + +void gfc_cpp_add_target (const char *name); + const char *gfc_cpp_temporary_file (void); Index: gcc/fortran/gfortran.h =================================================================== --- gcc/fortran/gfortran.h (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/gfortran.h (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1326,7 +1326,7 @@ struct gfc_code *code; /* Points to the equivalences set up in this namespace. */ - struct gfc_equiv *equiv; + struct gfc_equiv *equiv, *old_equiv; /* Points to the equivalence groups produced by trans_common. */ struct gfc_equiv_list *equiv_lists; @@ -2569,6 +2569,7 @@ void gfc_free_alloc_list (gfc_alloc *); void gfc_free_namelist (gfc_namelist *); void gfc_free_equiv (gfc_equiv *); +void gfc_free_equiv_until (gfc_equiv *, gfc_equiv *); void gfc_free_data (gfc_data *); void gfc_free_case_list (gfc_case *); Index: gcc/fortran/lang.opt =================================================================== --- gcc/fortran/lang.opt (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/lang.opt (.../branches/gcc-4_5-branch) (wersja 165515) @@ -56,6 +56,42 @@ Fortran Joined Separate -J Put MODULE files in 'directory' +M +Fortran +; Documented in C + +MD +Fortran Separate +; Documented in C + +MF +Fortran Joined Separate +; Documented in C + +MG +Fortran +; Documented in C + +MM +Fortran +; Documented in C + +MMD +Fortran Separate +; Documented in C + +MP +Fortran +; Documented in C + +MT +Fortran Joined Separate +; Documented in C + +MQ +Fortran Joined Separate +; Documented in C + P Fortran ; Documented in C Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,3 +1,129 @@ +2010-10-09 Janus Weil + + PR fortran/45748 + * resolve.c (resolve_formal_arglist): Avoid setting default type for + formal arguments of intrinsic procedures. + +2010-09-20 Paul Thomas + + PR fortran/45081 + * simplify.c (is_constant_array_expr): Allow structure array + elements as well as constants. + (gfc_simplify_pack, gfc_simplify_reshape, gfc_simplify_spread, + gfc_simplify_transpose, gfc_simplify_unpack): Copy the derived + type of source to the result. + +2010-09-08 Jakub Jelinek + + PR fortran/45595 + * openmp.c (resolve_omp_do): Report not enough do loops for + collapse even if block->next is NULL. + +2010-09-04 Tobias Burnus + + PR fortran/45530 + * resolve.c (resolve_fl_namelist): Change constraint checking + order to prevent endless loop. + +2010-09-04 Tobias Burnus + + PR fortran/45489 + * resolve.c (apply_default_init): Mark symbol as referenced, + if it is initialized. + (resolve_symbol): Change intialized check for BT_DERIVED such + that also function results get initialized. + +2010-09-04 Tobias Burnus + + PR fortran/45019 + * dependency.c (gfc_check_dependency): Add argument alising check. + * symbol.c (gfc_symbols_could_alias): Add argument alising check. + +2010-08-20 Jakub Jelinek + + PR fortran/45344 + Backport from mainline + 2010-05-14 Jakub Jelinek + + * trans.c (trans_code): Set backend locus early. + * trans-decl.c (gfc_get_fake_result_decl): Use source location + of the function instead of current input_location. + +2010-08-17 Jakub Jelinek + + PR fortran/45186 + * trans.c (gfc_annotate_with_location): New function. + (trans_code): Use it. + +2010-08-09 Janus Weil + + * intrinsic.texi: Correct documentation of ASINH, ACOSH and ATANH. + +2010-08-07 Daniel Franke + + 2010-06-13 Daniel Franke + + PR fortran/31588 + PR fortran/43954 + Backport from mainline: + * gfortranspec.c (lang_specific_driver): Removed deprecation + warning for -M. + * lang.opt: Add options -M, -MM, -MD, -MMD, -MF, -MG, -MP, -MT, -MQ. + * lang-specs.h (CPP_FORWARD_OPTIONS): Add -M* options. + * cpp.h (gfc_cpp_makedep): New. + (gfc_cpp_add_dep): New. + (gfc_cpp_add_target): New. + * cpp.c (gfc_cpp_option): Add deps* members. + (gfc_cpp_makedep): New. + (gfc_cpp_add_dep): New. + (gfc_cpp_add_target): New. + (gfc_cpp_init_options): Initialize new options. + (gfc_cpp_handle_option): Handle new options. + (gfc_cpp_post_options): Map new options to libcpp-options. + (gfc_cpp_init): Handle deferred -MQ and -MT options. + (gfc_cpp_done): If requested, write dependencies to file. + * module.c (gfc_dump_module): Add a module filename as target. + * scanner.c (open_included_file): New parameter system; add the + included file as dependency. + (gfc_open_included_file): Add the included file as dependency. + (gfc_open_intrinsic_module): Likewise. + * invoke.texi: Removed deprecation warning for -M. + * gfortran.texi: Removed Makefile-dependencies project. + +2010-08-05 Mikael Morin + + PR fortran/44660 + * gfortran.h (gfc_namespace): New field old_equiv. + (gfc_free_equiv_until): New prototype. + * match.c (gfc_free_equiv_until): New, renamed from gfc_free_equiv with + a parameterized stop condition. + (gfc_free_equiv): Use gfc_free_equiv_until. + * parse.c (next_statement): Save equivalence list. + (reject_statement): Restore equivalence list. + +2010-08-05 Mikael Morin + Janus Weil + + PR fortran/42051 + PR fortran/44064 + PR fortran/45151 + * intrinsic.c (gfc_get_intrinsic_sub_symbol): Commit changed symbol. + * symbol.c (gen_cptr_param, gen_fptr_param, gen_shape_param, + gfc_copy_formal_args, gfc_copy_formal_args_intr, + gfc_copy_formal_args_ppc, generate_isocbinding_symbol): Ditto. + (gfc_find_derived_vtab): Commit newly created symbols. + * parse.c (parse_derived_contains, parse_spec, parse_progunit): + Call reject_statement in case of error. + (match_deferred_characteritics): Call gfc_undo_symbols in case match + fails. + +2010-08-05 Janus Weil + Steven G. Kargl + + PR fortran/44929 + * match.c (match_type_spec): Try to parse derived types before + intrinsic types. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: gcc/fortran/invoke.texi =================================================================== --- gcc/fortran/invoke.texi (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/invoke.texi (.../branches/gcc-4_5-branch) (wersja 165515) @@ -148,8 +148,7 @@ @item Directory Options @xref{Directory Options,,Options for directory search}. -@gccoptlist{-I@var{dir} -J@var{dir} -M@var{dir} @gol --fintrinsic-modules-path @var{dir}} +@gccoptlist{-I@var{dir} -J@var{dir} -fintrinsic-modules-path @var{dir}} @item Link Options @xref{Link Options,,Options for influencing the linking step}. @@ -949,7 +948,6 @@ @option{-I} option. @item -J@var{dir} -@item -M@var{dir} @opindex @code{J}@var{dir} @opindex @code{M}@var{dir} @cindex paths, search @@ -960,8 +958,6 @@ The default is the current directory. -@option{-M} is deprecated to avoid conflicts with existing GCC options. - @item -fintrinsic-modules-path @var{dir} @opindex @code{fintrinsic-modules-path} @var{dir} @cindex paths, search Index: gcc/fortran/module.c =================================================================== --- gcc/fortran/module.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/module.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -73,6 +73,7 @@ #include "match.h" #include "parse.h" /* FIXME */ #include "md5.h" +#include "cpp.h" #define MODULE_EXTENSION ".mod" @@ -5100,6 +5101,9 @@ return; } + if (gfc_cpp_makedep ()) + gfc_cpp_add_target (filename); + /* Write the module to the temporary file. */ module_fp = fopen (filename_tmp, "w"); if (module_fp == NULL) Index: gcc/fortran/trans.c =================================================================== --- gcc/fortran/trans.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/trans.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1041,7 +1041,30 @@ input_location = loc->lb->location; } +/* Annotate statement or statement list T with location LOC. */ +static void +gfc_annotate_with_location (tree t, location_t loc) +{ + if (TREE_CODE (t) == STATEMENT_LIST) + { + tree_stmt_iterator i; + + for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i)) + gfc_annotate_with_location (tsi_stmt (i), loc); + return; + } + if (TREE_CODE (t) == COMPOUND_EXPR) + { + gfc_annotate_with_location (TREE_OPERAND (t, 0), loc); + gfc_annotate_with_location (TREE_OPERAND (t, 1), loc); + } + if (TREE_CODE (t) == LABEL_EXPR || !TREE_SIDE_EFFECTS (t)) + return; + if (CAN_HAVE_LOCATION_P (t) && ! EXPR_HAS_LOCATION (t)) + SET_EXPR_LOCATION (t, loc); +} + /* Translate an executable statement. The tree cond is used by gfc_trans_do. This static function is wrapped by gfc_trans_code_cond and gfc_trans_code. */ @@ -1067,6 +1090,8 @@ gfc_add_expr_to_block (&block, res); } + gfc_set_backend_locus (&code->loc); + switch (code->op) { case EXEC_NOP: @@ -1281,9 +1306,8 @@ if (res != NULL_TREE && ! IS_EMPTY_STMT (res)) { - if (TREE_CODE (res) != STATEMENT_LIST) - SET_EXPR_LOCATION (res, input_location); - + gfc_annotate_with_location (res, input_location); + /* Add the new statement to the block. */ gfc_add_expr_to_block (&block, res); } Index: gcc/fortran/scanner.c =================================================================== --- gcc/fortran/scanner.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/scanner.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -390,7 +390,8 @@ static FILE * -open_included_file (const char *name, gfc_directorylist *list, bool module) +open_included_file (const char *name, gfc_directorylist *list, + bool module, bool system) { char *fullname; gfc_directorylist *p; @@ -407,7 +408,12 @@ f = gfc_open_file (fullname); if (f != NULL) - return f; + { + if (gfc_cpp_makedep ()) + gfc_cpp_add_dep (fullname, system); + + return f; + } } return NULL; @@ -421,28 +427,37 @@ FILE * gfc_open_included_file (const char *name, bool include_cwd, bool module) { - FILE *f; + FILE *f = NULL; - if (IS_ABSOLUTE_PATH (name)) - return gfc_open_file (name); - - if (include_cwd) + if (IS_ABSOLUTE_PATH (name) || include_cwd) { f = gfc_open_file (name); - if (f != NULL) - return f; + if (f && gfc_cpp_makedep ()) + gfc_cpp_add_dep (name, false); } - return open_included_file (name, include_dirs, module); + if (!f) + f = open_included_file (name, include_dirs, module, false); + + return f; } FILE * gfc_open_intrinsic_module (const char *name) { + FILE *f = NULL; + if (IS_ABSOLUTE_PATH (name)) - return gfc_open_file (name); + { + f = gfc_open_file (name); + if (f && gfc_cpp_makedep ()) + gfc_cpp_add_dep (name, true); + } - return open_included_file (name, intrinsic_modules_dirs, true); + if (!f) + f = open_included_file (name, intrinsic_modules_dirs, true, true); + + return f; } Index: gcc/fortran/gfortranspec.c =================================================================== --- gcc/fortran/gfortranspec.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/gfortranspec.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -415,36 +415,6 @@ continue; } - if ((argv[i][0] == '-') && (argv[i][1] == 'M')) - { - char *p; - - fprintf (stderr, _("Warning: Using -M is deprecated, " - "use -J instead\n")); - if (argv[i][2] == '\0') - { - if (i+1 < argc) - { - p = XNEWVEC (char, strlen (argv[i + 1]) + 3); - p[0] = '-'; - p[1] = 'J'; - strcpy (&p[2], argv[i + 1]); - i++; - } - else - fatal ("argument to '%s' missing", argv[i]); - } - else - { - p = XNEWVEC (char, strlen (argv[i]) + 1); - p[0] = '-'; - p[1] = 'J'; - strcpy (&p[2], argv[i] + 2); - } - append_arg (p); - continue; - } - if ((argv[i][0] == '-') && (argv[i][1] != 'l')) { /* Not a filename or library. */ Index: gcc/fortran/lang-specs.h =================================================================== --- gcc/fortran/lang-specs.h (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/lang-specs.h (.../branches/gcc-4_5-branch) (wersja 165515) @@ -28,7 +28,7 @@ %{O*} %{undef}" /* Options that f951 should know about, even if not preprocessing. */ -#define CPP_FORWARD_OPTIONS "%{i*} %{I*}" +#define CPP_FORWARD_OPTIONS "%{i*} %{I*} %{M*}" #define F951_CPP_OPTIONS "%{!nocpp: -cpp %g.f90 %{E} %(cpp_unique_options) \ %{E|M|MM:%(cpp_debug_options) " CPP_ONLY_OPTIONS \ Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/resolve.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -208,11 +208,9 @@ continue; } - if (sym->ts.type == BT_UNKNOWN) - { - if (!sym->attr.function || sym->result == sym) - gfc_set_default_type (sym, 1, sym->ns); - } + if (sym->ts.type == BT_UNKNOWN && !proc->attr.intrinsic + && (!sym->attr.function || sym->result == sym)) + gfc_set_default_type (sym, 1, sym->ns); gfc_resolve_array_spec (sym->as, 0); @@ -8854,6 +8852,7 @@ return; build_init_assign (sym, init); + sym->attr.referenced = 1; } /* Build an initializer for a local integer, real, complex, logical, or @@ -10852,6 +10851,46 @@ gfc_namelist *nl; gfc_symbol *nlsym; + for (nl = sym->namelist; nl; nl = nl->next) + { + /* Reject namelist arrays of assumed shape. */ + if (nl->sym->as && nl->sym->as->type == AS_ASSUMED_SHAPE + && gfc_notify_std (GFC_STD_F2003, "NAMELIST array object '%s' " + "must not have assumed shape in namelist " + "'%s' at %L", nl->sym->name, sym->name, + &sym->declared_at) == FAILURE) + return FAILURE; + + /* Reject namelist arrays that are not constant shape. */ + if (is_non_constant_shape_array (nl->sym)) + { + gfc_error ("NAMELIST array object '%s' must have constant " + "shape in namelist '%s' at %L", nl->sym->name, + sym->name, &sym->declared_at); + return FAILURE; + } + + /* Namelist objects cannot have allocatable or pointer components. */ + if (nl->sym->ts.type != BT_DERIVED) + continue; + + if (nl->sym->ts.u.derived->attr.alloc_comp) + { + gfc_error ("NAMELIST object '%s' in namelist '%s' at %L cannot " + "have ALLOCATABLE components", + nl->sym->name, sym->name, &sym->declared_at); + return FAILURE; + } + + if (nl->sym->ts.u.derived->attr.pointer_comp) + { + gfc_error ("NAMELIST object '%s' in namelist '%s' at %L cannot " + "have POINTER components", + nl->sym->name, sym->name, &sym->declared_at); + return FAILURE; + } + } + /* Reject PRIVATE objects in a PUBLIC namelist. */ if (gfc_check_access(sym->attr.access, sym->ns->default_access)) { @@ -10893,47 +10932,7 @@ } } - for (nl = sym->namelist; nl; nl = nl->next) - { - /* Reject namelist arrays of assumed shape. */ - if (nl->sym->as && nl->sym->as->type == AS_ASSUMED_SHAPE - && gfc_notify_std (GFC_STD_F2003, "NAMELIST array object '%s' " - "must not have assumed shape in namelist " - "'%s' at %L", nl->sym->name, sym->name, - &sym->declared_at) == FAILURE) - return FAILURE; - /* Reject namelist arrays that are not constant shape. */ - if (is_non_constant_shape_array (nl->sym)) - { - gfc_error ("NAMELIST array object '%s' must have constant " - "shape in namelist '%s' at %L", nl->sym->name, - sym->name, &sym->declared_at); - return FAILURE; - } - - /* Namelist objects cannot have allocatable or pointer components. */ - if (nl->sym->ts.type != BT_DERIVED) - continue; - - if (nl->sym->ts.u.derived->attr.alloc_comp) - { - gfc_error ("NAMELIST object '%s' in namelist '%s' at %L cannot " - "have ALLOCATABLE components", - nl->sym->name, sym->name, &sym->declared_at); - return FAILURE; - } - - if (nl->sym->ts.u.derived->attr.pointer_comp) - { - gfc_error ("NAMELIST object '%s' in namelist '%s' at %L cannot " - "have POINTER components", - nl->sym->name, sym->name, &sym->declared_at); - return FAILURE; - } - } - - /* 14.1.2 A module or internal procedure represent local entities of the same type as a namelist member and so are not allowed. */ for (nl = sym->namelist; nl; nl = nl->next) @@ -11445,7 +11444,6 @@ described in 14.7.5, to those variables that have not already been assigned one. */ if (sym->ts.type == BT_DERIVED - && sym->attr.referenced && sym->ns == gfc_current_ns && !sym->value && !sym->attr.allocatable @@ -11455,6 +11453,7 @@ if ((!a->save && !a->dummy && !a->pointer && !a->in_common && !a->use_assoc + && (a->referenced || a->result) && !(a->function && sym != sym->result)) || (a->dummy && a->intent == INTENT_OUT && !a->pointer)) apply_default_init (sym); Index: gcc/fortran/trans-decl.c =================================================================== --- gcc/fortran/trans-decl.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/trans-decl.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2252,11 +2252,11 @@ IDENTIFIER_POINTER (DECL_NAME (this_function_decl))); if (!sym->attr.mixed_entry_master && sym->attr.function) - decl = build_decl (input_location, + decl = build_decl (DECL_SOURCE_LOCATION (this_function_decl), VAR_DECL, get_identifier (name), gfc_sym_type (sym)); else - decl = build_decl (input_location, + decl = build_decl (DECL_SOURCE_LOCATION (this_function_decl), VAR_DECL, get_identifier (name), TREE_TYPE (TREE_TYPE (this_function_decl))); DECL_ARTIFICIAL (decl) = 1; Index: gcc/fortran/match.c =================================================================== --- gcc/fortran/match.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/match.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2303,7 +2303,7 @@ gfc_match_decl_type_spec() from decl.c, with the following exceptions: It only includes the intrinsic types from the Fortran 2003 standard (thus, neither BYTE nor forms like REAL*4 are allowed). Additionally, - the implicit_flag is not needed, so it was removed. Derived types are + the implicit_flag is not needed, so it was removed. Derived types are identified by their name alone. */ static match @@ -2313,8 +2313,30 @@ locus old_locus; gfc_clear_ts (ts); + gfc_gobble_whitespace(); old_locus = gfc_current_locus; + m = match_derived_type_spec (ts); + if (m == MATCH_YES) + { + old_locus = gfc_current_locus; + if (gfc_match (" :: ") != MATCH_YES) + return MATCH_ERROR; + gfc_current_locus = old_locus; + /* Enfore F03:C401. */ + if (ts->u.derived->attr.abstract) + { + gfc_error ("Derived type '%s' at %L may not be ABSTRACT", + ts->u.derived->name, &old_locus); + return MATCH_ERROR; + } + return MATCH_YES; + } + else if (m == MATCH_ERROR && gfc_match (" :: ") == MATCH_YES) + return MATCH_ERROR; + + gfc_current_locus = old_locus; + if (gfc_match ("integer") == MATCH_YES) { ts->type = BT_INTEGER; @@ -2356,25 +2378,6 @@ goto kind_selector; } - m = match_derived_type_spec (ts); - if (m == MATCH_YES) - { - old_locus = gfc_current_locus; - if (gfc_match (" :: ") != MATCH_YES) - return MATCH_ERROR; - gfc_current_locus = old_locus; - /* Enfore F03:C401. */ - if (ts->u.derived->attr.abstract) - { - gfc_error ("Derived type '%s' at %L may not be ABSTRACT", - ts->u.derived->name, &old_locus); - return MATCH_ERROR; - } - return MATCH_YES; - } - else if (m == MATCH_ERROR && gfc_match (" :: ") == MATCH_YES) - return MATCH_ERROR; - /* If a type is not matched, simply return MATCH_NO. */ gfc_current_locus = old_locus; return MATCH_NO; @@ -3580,18 +3583,25 @@ do this. */ void -gfc_free_equiv (gfc_equiv *eq) +gfc_free_equiv_until (gfc_equiv *eq, gfc_equiv *stop) { - if (eq == NULL) + if (eq == stop) return; gfc_free_equiv (eq->eq); - gfc_free_equiv (eq->next); + gfc_free_equiv_until (eq->next, stop); gfc_free_expr (eq->expr); gfc_free (eq); } +void +gfc_free_equiv (gfc_equiv *eq) +{ + gfc_free_equiv_until (eq, NULL); +} + + /* Match an EQUIVALENCE statement. */ match Index: gcc/fortran/parse.c =================================================================== --- gcc/fortran/parse.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/parse.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -876,6 +876,7 @@ gfc_new_block = NULL; gfc_current_ns->old_cl_list = gfc_current_ns->cl_list; + gfc_current_ns->old_equiv = gfc_current_ns->equiv; for (;;) { gfc_statement_label = NULL; @@ -1608,6 +1609,9 @@ gfc_free_charlen (gfc_current_ns->cl_list, gfc_current_ns->old_cl_list); gfc_current_ns->cl_list = gfc_current_ns->old_cl_list; + gfc_free_equiv_until (gfc_current_ns->equiv, gfc_current_ns->old_equiv); + gfc_current_ns->equiv = gfc_current_ns->old_equiv; + gfc_new_block = NULL; gfc_undo_symbols (); gfc_clear_warning (); @@ -1841,13 +1845,12 @@ case ST_DATA_DECL: gfc_error ("Components in TYPE at %C must precede CONTAINS"); - error_flag = true; - break; + goto error; case ST_PROCEDURE: if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Type-bound" " procedure at %C") == FAILURE) - error_flag = true; + goto error; accept_statement (ST_PROCEDURE); seen_comps = true; @@ -1856,7 +1859,7 @@ case ST_GENERIC: if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: GENERIC binding" " at %C") == FAILURE) - error_flag = true; + goto error; accept_statement (ST_GENERIC); seen_comps = true; @@ -1866,7 +1869,7 @@ if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: FINAL procedure declaration" " at %C") == FAILURE) - error_flag = true; + goto error; accept_statement (ST_FINAL); seen_comps = true; @@ -1879,7 +1882,7 @@ && (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Derived type " "definition at %C with empty CONTAINS " "section") == FAILURE)) - error_flag = true; + goto error; /* ST_END_TYPE is accepted by parse_derived after return. */ break; @@ -1889,22 +1892,20 @@ { gfc_error ("PRIVATE statement in TYPE at %C must be inside " "a MODULE"); - error_flag = true; - break; + goto error; } if (seen_comps) { gfc_error ("PRIVATE statement at %C must precede procedure" " bindings"); - error_flag = true; - break; + goto error; } if (seen_private) { gfc_error ("Duplicate PRIVATE statement at %C"); - error_flag = true; + goto error; } accept_statement (ST_PRIVATE); @@ -1914,18 +1915,22 @@ case ST_SEQUENCE: gfc_error ("SEQUENCE statement at %C must precede CONTAINS"); - error_flag = true; - break; + goto error; case ST_CONTAINS: gfc_error ("Already inside a CONTAINS block at %C"); - error_flag = true; - break; + goto error; default: unexpected_statement (st); break; } + + continue; + +error: + error_flag = true; + reject_statement (); } pop_state (); @@ -2361,7 +2366,10 @@ gfc_commit_symbols (); } else - gfc_error_check (); + { + gfc_error_check (); + gfc_undo_symbols (); + } gfc_current_locus =loc; return m; @@ -2433,6 +2441,7 @@ case ST_STATEMENT_FUNCTION: gfc_error ("%s statement is not allowed inside of BLOCK at %C", gfc_ascii_statement (st)); + reject_statement (); break; default: @@ -2519,6 +2528,7 @@ { gfc_error ("%s statement must appear in a MODULE", gfc_ascii_statement (st)); + reject_statement (); break; } @@ -2526,6 +2536,7 @@ { gfc_error ("%s statement at %C follows another accessibility " "specification", gfc_ascii_statement (st)); + reject_statement (); break; } @@ -3822,6 +3833,7 @@ { gfc_error ("CONTAINS statement at %C is already in a contained " "program unit"); + reject_statement (); st = next_statement (); goto loop; } Index: gcc/fortran/dependency.c =================================================================== --- gcc/fortran/dependency.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/dependency.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -805,6 +805,19 @@ return 1; } + else + { + gfc_symbol *sym1 = expr1->symtree->n.sym; + gfc_symbol *sym2 = expr2->symtree->n.sym; + if (sym1->attr.target && sym2->attr.target + && ((sym1->attr.dummy + && (!sym1->attr.dimension + || sym2->as->type == AS_ASSUMED_SHAPE)) + || (sym2->attr.dummy + && (!sym2->attr.dimension + || sym2->as->type == AS_ASSUMED_SHAPE)))) + return 1; + } /* Otherwise distinct symbols have no dependencies. */ return 0; Index: gcc/fortran/intrinsic.texi =================================================================== --- gcc/fortran/intrinsic.texi (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/intrinsic.texi (.../branches/gcc-4_5-branch) (wersja 165515) @@ -44,7 +44,7 @@ * @code{ACCESS}: ACCESS, Checks file access modes * @code{ACHAR}: ACHAR, Character in @acronym{ASCII} collating sequence * @code{ACOS}: ACOS, Arccosine function -* @code{ACOSH}: ACOSH, Hyperbolic arccosine function +* @code{ACOSH}: ACOSH, Inverse hyperbolic cosine function * @code{ADJUSTL}: ADJUSTL, Left adjust a string * @code{ADJUSTR}: ADJUSTR, Right adjust a string * @code{AIMAG}: AIMAG, Imaginary part of complex number @@ -56,11 +56,11 @@ * @code{ANINT}: ANINT, Nearest whole number * @code{ANY}: ANY, Determine if any values are true * @code{ASIN}: ASIN, Arcsine function -* @code{ASINH}: ASINH, Hyperbolic arcsine function +* @code{ASINH}: ASINH, Inverse hyperbolic sine function * @code{ASSOCIATED}: ASSOCIATED, Status of a pointer or pointer/target pair * @code{ATAN}: ATAN, Arctangent function * @code{ATAN2}: ATAN2, Arctangent function -* @code{ATANH}: ATANH, Hyperbolic arctangent function +* @code{ATANH}: ATANH, Inverse hyperbolic tangent function * @code{BESSEL_J0}: BESSEL_J0, Bessel function of the first kind of order 0 * @code{BESSEL_J1}: BESSEL_J1, Bessel function of the first kind of order 1 * @code{BESSEL_JN}: BESSEL_JN, Bessel function of the first kind @@ -572,18 +572,17 @@ @node ACOSH -@section @code{ACOSH} --- Hyperbolic arccosine function +@section @code{ACOSH} --- Inverse hyperbolic cosine function @fnindex ACOSH @fnindex DACOSH @cindex area hyperbolic cosine -@cindex hyperbolic arccosine +@cindex inverse hyperbolic cosine @cindex hyperbolic function, cosine, inverse @cindex cosine, hyperbolic, inverse @table @asis @item @emph{Description}: -@code{ACOSH(X)} computes the hyperbolic arccosine of @var{X} (inverse of -@code{COSH(X)}). +@code{ACOSH(X)} computes the inverse hyperbolic cosine of @var{X}. @item @emph{Standard}: Fortran 2008 and later @@ -1213,17 +1212,17 @@ @node ASINH -@section @code{ASINH} --- Hyperbolic arcsine function +@section @code{ASINH} --- Inverse hyperbolic sine function @fnindex ASINH @fnindex DASINH @cindex area hyperbolic sine -@cindex hyperbolic arcsine +@cindex inverse hyperbolic sine @cindex hyperbolic function, sine, inverse @cindex sine, hyperbolic, inverse @table @asis @item @emph{Description}: -@code{ASINH(X)} computes the hyperbolic arcsine of @var{X} (inverse of @code{SINH(X)}). +@code{ASINH(X)} computes the inverse hyperbolic sine of @var{X}. @item @emph{Standard}: Fortran 2008 and later @@ -1455,18 +1454,17 @@ @node ATANH -@section @code{ATANH} --- Hyperbolic arctangent function -@fnindex ASINH -@fnindex DASINH +@section @code{ATANH} --- Inverse hyperbolic tangent function +@fnindex ATANH +@fnindex DATANH @cindex area hyperbolic tangent -@cindex hyperbolic arctangent +@cindex inverse hyperbolic tangent @cindex hyperbolic function, tangent, inverse @cindex tangent, hyperbolic, inverse @table @asis @item @emph{Description}: -@code{ATANH(X)} computes the hyperbolic arctangent of @var{X} (inverse -of @code{TANH(X)}). +@code{ATANH(X)} computes the inverse hyperbolic tangent of @var{X}. @item @emph{Standard}: Fortran 2008 and later Index: gcc/fortran/simplify.c =================================================================== --- gcc/fortran/simplify.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/fortran/simplify.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -228,7 +228,8 @@ return false; for (c = e->value.constructor; c; c = c->next) - if (c->expr->expr_type != EXPR_CONSTANT) + if (c->expr->expr_type != EXPR_CONSTANT + && c->expr->expr_type != EXPR_STRUCTURE) return false; return true; @@ -4023,6 +4024,8 @@ if (array->ts.type == BT_CHARACTER) result->ts.u.cl = array->ts.u.cl; + else if (array->ts.type == BT_DERIVED) + result->ts.u.derived = array->ts.u.derived; return result; } @@ -4472,6 +4475,11 @@ e->ts = source->ts; e->rank = rank; + if (source->ts.type == BT_CHARACTER) + e->ts.u.cl = source->ts.u.cl; + else if (source->ts.type == BT_DERIVED) + e->ts.u.derived = source->ts.u.derived; + return e; } @@ -5158,6 +5166,8 @@ if (source->ts.type == BT_CHARACTER) result->ts.u.cl = source->ts.u.cl; + else if (source->ts.type == BT_DERIVED) + result->ts.u.derived = source->ts.u.derived; return result; } @@ -5420,6 +5430,8 @@ if (matrix->ts.type == BT_CHARACTER) result->ts.u.cl = matrix->ts.u.cl; + else if (matrix->ts.type == BT_DERIVED) + result->ts.u.derived = matrix->ts.u.derived; matrix_rows = mpz_get_si (matrix->shape[0]); matrix_ctor = matrix->value.constructor; @@ -5503,6 +5515,8 @@ if (vector->ts.type == BT_CHARACTER) result->ts.u.cl = vector->ts.u.cl; + else if (vector->ts.type == BT_DERIVED) + result->ts.u.derived = vector->ts.u.derived; vector_ctor = vector->value.constructor; mask_ctor = mask->value.constructor; Index: gcc/ira-lives.c =================================================================== --- gcc/ira-lives.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ira-lives.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -820,7 +820,7 @@ static void process_single_reg_class_operands (bool in_p, int freq) { - int i, regno, cost; + int i, regno; unsigned int px; enum reg_class cl; rtx operand; @@ -847,32 +847,46 @@ if (REG_P (operand) && (regno = REGNO (operand)) >= FIRST_PSEUDO_REGISTER) { - enum machine_mode mode; enum reg_class cover_class; operand_a = ira_curr_regno_allocno_map[regno]; - mode = ALLOCNO_MODE (operand_a); cover_class = ALLOCNO_COVER_CLASS (operand_a); if (ira_class_subset_p[cl][cover_class] - && ira_class_hard_regs_num[cl] != 0 - && (ira_class_hard_reg_index[cover_class] - [ira_class_hard_regs[cl][0]]) >= 0 - && reg_class_size[cl] <= (unsigned) CLASS_MAX_NREGS (cl, mode)) + && ira_class_hard_regs_num[cl] != 0) { - int i, size; - cost - = (freq - * (in_p - ? ira_get_register_move_cost (mode, cover_class, cl) - : ira_get_register_move_cost (mode, cl, cover_class))); - ira_allocate_and_set_costs - (&ALLOCNO_CONFLICT_HARD_REG_COSTS (operand_a), cover_class, 0); - size = ira_reg_class_nregs[cover_class][mode]; - for (i = 0; i < size; i++) - ALLOCNO_CONFLICT_HARD_REG_COSTS (operand_a) - [ira_class_hard_reg_index - [cover_class][ira_class_hard_regs[cl][i]]] - -= cost; + /* View the desired allocation of OPERAND as: + + (REG:YMODE YREGNO), + + a simplification of: + + (subreg:YMODE (reg:XMODE XREGNO) OFFSET). */ + enum machine_mode ymode, xmode; + int xregno, yregno; + HOST_WIDE_INT offset; + + xmode = recog_data.operand_mode[i]; + xregno = ira_class_hard_regs[cl][0]; + ymode = ALLOCNO_MODE (operand_a); + offset = subreg_lowpart_offset (ymode, xmode); + yregno = simplify_subreg_regno (xregno, xmode, offset, ymode); + if (yregno >= 0 + && ira_class_hard_reg_index[cover_class][yregno] >= 0) + { + int cost; + + ira_allocate_and_set_costs + (&ALLOCNO_CONFLICT_HARD_REG_COSTS (operand_a), + cover_class, 0); + cost + = (freq + * (in_p + ? ira_get_register_move_cost (xmode, cover_class, cl) + : ira_get_register_move_cost (xmode, cl, + cover_class))); + ALLOCNO_CONFLICT_HARD_REG_COSTS (operand_a) + [ira_class_hard_reg_index[cover_class][yregno]] -= cost; + } } } Index: gcc/c-pretty-print.c =================================================================== --- gcc/c-pretty-print.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/c-pretty-print.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -2144,6 +2144,10 @@ pp_string (pp, "({...})"); break; + case C_MAYBE_CONST_EXPR: + pp_c_expression (pp, C_MAYBE_CONST_EXPR_EXPR (e)); + break; + default: pp_unsupported_tree (pp, e); break; Index: gcc/configure.ac =================================================================== --- gcc/configure.ac (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/configure.ac (.../branches/gcc-4_5-branch) (wersja 165515) @@ -4542,24 +4542,52 @@ enable_plugin=yes; default_plugin=yes) pluginlibs= + +case "${host}" in + *-*-darwin*) + if test x$build = x$host; then + export_sym_check="nm${exeext} -g" + elif test x$host = x$target; then + export_sym_check="$gcc_cv_nm -g" + else + export_sym_check= + fi + ;; + *) + if test x$build = x$host; then + export_sym_check="objdump${exeext} -T" + elif test x$host = x$target; then + export_sym_check="$gcc_cv_objdump -T" + else + export_sym_check= + fi + ;; +esac + if test x"$enable_plugin" = x"yes"; then AC_MSG_CHECKING([for exported symbols]) - echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c - ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1 - if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then - : # No need to use a flag - else - AC_MSG_CHECKING([for -rdynamic]) - ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1 - if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then - plugin_rdynamic=yes - pluginlibs="-rdynamic" + if test "x$export_sym_check" != x; then + echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c + ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1 + if $export_sym_check conftest | grep foobar > /dev/null; then + : # No need to use a flag + AC_MSG_RESULT([yes]) else - plugin_rdynamic=no - enable_plugin=no + AC_MSG_RESULT([yes]) + AC_MSG_CHECKING([for -rdynamic]) + ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1 + if $export_sym_check conftest | grep foobar > /dev/null; then + plugin_rdynamic=yes + pluginlibs="-rdynamic" + else + plugin_rdynamic=no + enable_plugin=no + fi + AC_MSG_RESULT([$plugin_rdynamic]) fi - AC_MSG_RESULT([$plugin_rdynamic]) + else + AC_MSG_RESULT([unable to check]) fi # Check -ldl @@ -4572,7 +4600,14 @@ # Check that we can build shared objects with -fPIC -shared saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -fPIC -shared" + case "${host}" in + *-*-darwin*) + LDFLAGS="$LDFLAGS -fPIC -shared -undefined dynamic_lookup" + ;; + *) + LDFLAGS="$LDFLAGS -fPIC -shared" + ;; + esac AC_MSG_CHECKING([for -fPIC -shared]) AC_TRY_LINK( [extern int X;],[return X == 0;], Index: gcc/BASE-VER =================================================================== --- gcc/BASE-VER (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/BASE-VER (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1 +1 @@ -4.5.1 +4.5.2 Index: gcc/function.c =================================================================== --- gcc/function.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/function.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -3423,12 +3423,10 @@ DECL_IGNORED_P (local) = 0; /* If PARM was addressable, move that flag over to the local copy, as its address will be taken, - not the PARMs. */ + not the PARMs. Keep the parms address taken + as we'll query that flag during gimplification. */ if (TREE_ADDRESSABLE (parm)) - { - TREE_ADDRESSABLE (parm) = 0; - TREE_ADDRESSABLE (local) = 1; - } + TREE_ADDRESSABLE (local) = 1; } else { Index: gcc/c-typeck.c =================================================================== --- gcc/c-typeck.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/c-typeck.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -9091,6 +9091,10 @@ precision. */ bool may_need_excess_precision; + /* True means this is a boolean operation that converts both its + operands to truth-values. */ + bool boolean_op = false; + if (location == UNKNOWN_LOCATION) location = input_location; @@ -9318,6 +9322,7 @@ op0 = c_common_truthvalue_conversion (location, op0); op1 = c_common_truthvalue_conversion (location, op1); converted = 1; + boolean_op = true; } if (code == TRUTH_ANDIF_EXPR) { @@ -9828,7 +9833,8 @@ if (build_type == NULL_TREE) { build_type = result_type; - if (type0 != orig_type0 || type1 != orig_type1) + if ((type0 != orig_type0 || type1 != orig_type1) + && !boolean_op) { gcc_assert (may_need_excess_precision && common); semantic_result_type = c_common_type (orig_type0, orig_type1); Index: gcc/gimplify.c =================================================================== --- gcc/gimplify.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/gimplify.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -3776,11 +3776,12 @@ } } - /* If the target is volatile and we have non-zero elements - initialize the target from a temporary. */ + /* If the target is volatile, we have non-zero elements and more than + one field to assign, initialize the target from a temporary. */ if (TREE_THIS_VOLATILE (object) && !TREE_ADDRESSABLE (type) - && num_nonzero_elements > 0) + && num_nonzero_elements > 0 + && VEC_length (constructor_elt, elts) > 1) { tree temp = create_tmp_var (TYPE_MAIN_VARIANT (type), NULL); TREE_OPERAND (*expr_p, 0) = temp; @@ -4147,9 +4148,13 @@ This kind of code arises in C++ when an object is bound to a const reference, and if "x" is a TARGET_EXPR we want to take advantage of the optimization below. */ + bool volatile_p = TREE_THIS_VOLATILE (*from_p); tree t = gimple_fold_indirect_ref_rhs (TREE_OPERAND (*from_p, 0)); - if (t) + if (t + && (TREE_THIS_VOLATILE (t) == volatile_p + || REFERENCE_CLASS_P (t))) { + TREE_THIS_VOLATILE (t) = volatile_p; *from_p = t; ret = GS_OK; changed = true; @@ -6336,8 +6341,12 @@ { case TRUTH_ANDIF_EXPR: case TRUTH_ORIF_EXPR: + case TRUTH_AND_EXPR: + case TRUTH_OR_EXPR: + case TRUTH_XOR_EXPR: saw_lhs |= goa_stabilize_expr (&TREE_OPERAND (expr, 1), pre_p, lhs_addr, lhs_var); + case TRUTH_NOT_EXPR: saw_lhs |= goa_stabilize_expr (&TREE_OPERAND (expr, 0), pre_p, lhs_addr, lhs_var); break; Index: gcc/expmed.c =================================================================== --- gcc/expmed.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/expmed.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -3006,9 +3006,11 @@ switch (alg->op[opno]) { case alg_shift: - accum = expand_shift (LSHIFT_EXPR, mode, accum, - build_int_cst (NULL_TREE, log), - NULL_RTX, 0); + tem = expand_shift (LSHIFT_EXPR, mode, accum, + build_int_cst (NULL_TREE, log), + NULL_RTX, 0); + /* REG_EQUAL note will be attached to the following insn. */ + emit_move_insn (accum, tem); val_so_far <<= log; break; Index: gcc/emit-rtl.c =================================================================== --- gcc/emit-rtl.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/emit-rtl.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -3162,6 +3162,38 @@ return insn; } +/* Return the next insn after INSN that is not a NOTE nor DEBUG_INSN. + This routine does not look inside SEQUENCEs. */ + +rtx +next_nonnote_nondebug_insn (rtx insn) +{ + while (insn) + { + insn = NEXT_INSN (insn); + if (insn == 0 || (!NOTE_P (insn) && !DEBUG_INSN_P (insn))) + break; + } + + return insn; +} + +/* Return the previous insn before INSN that is not a NOTE nor DEBUG_INSN. + This routine does not look inside SEQUENCEs. */ + +rtx +prev_nonnote_nondebug_insn (rtx insn) +{ + while (insn) + { + insn = PREV_INSN (insn); + if (insn == 0 || (!NOTE_P (insn) && !DEBUG_INSN_P (insn))) + break; + } + + return insn; +} + /* Return the next INSN, CALL_INSN or JUMP_INSN after INSN; or 0, if there is none. This routine does not look inside SEQUENCEs. */ Index: gcc/cfgexpand.c =================================================================== --- gcc/cfgexpand.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/cfgexpand.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -705,7 +705,7 @@ expand_one_stack_var_at (tree decl, HOST_WIDE_INT offset) { /* Alignment is unsigned. */ - unsigned HOST_WIDE_INT align; + unsigned HOST_WIDE_INT align, max_align; rtx x; /* If this fails, we've overflowed the stack frame. Error nicely? */ @@ -722,10 +722,9 @@ offset -= frame_phase; align = offset & -offset; align *= BITS_PER_UNIT; - if (align == 0) - align = STACK_BOUNDARY; - else if (align > MAX_SUPPORTED_STACK_ALIGNMENT) - align = MAX_SUPPORTED_STACK_ALIGNMENT; + max_align = crtl->max_used_stack_slot_alignment; + if (align == 0 || align > max_align) + align = max_align; DECL_ALIGN (decl) = align; DECL_USER_ALIGN (decl) = 0; Index: gcc/tree-ssa-live.c =================================================================== --- gcc/tree-ssa-live.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/tree-ssa-live.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -381,6 +381,14 @@ } set_is_used (t); } + /* remove_unused_scope_block_p requires information about labels + which are not DECL_IGNORED_P to tell if they might be used in the IL. */ + if (TREE_CODE (t) == LABEL_DECL) + /* Although the TREE_USED values that the frontend uses would be + acceptable (albeit slightly over-conservative) for our purposes, + init_vars_expansion clears TREE_USED for LABEL_DECLs too, so we + must re-compute it here. */ + TREE_USED (t) = 1; if (IS_TYPE_OR_DECL_P (t)) *walk_subtrees = 0; @@ -460,6 +468,19 @@ else if ((ann = var_ann (*t)) != NULL && ann->used) unused = false; + else if (TREE_CODE (*t) == LABEL_DECL && TREE_USED (*t)) + /* For labels that are still used in the IL, the decision to + preserve them must not depend DEBUG_INFO_LEVEL, otherwise we + risk having different ordering in debug vs. non-debug builds + during inlining or versioning. + A label appearing here (we have already checked DECL_IGNORED_P) + should not be used in the IL unless it has been explicitly used + before, so we use TREE_USED as an approximation. */ + /* In principle, we should do the same here as for the debug case + below, however, when debugging, there might be additional nested + levels that keep an upper level with a label live, so we have to + force this block to be considered used, too. */ + unused = false; /* When we are not doing full debug info, we however can keep around only the used variables for cfgexpand's memory packing saving quite Index: gcc/tree-sra.c =================================================================== --- gcc/tree-sra.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/tree-sra.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -276,6 +276,9 @@ arguments than formal parameters.. */ static bool encountered_unchangable_recursive_call; +/* Set by scan_function when it changes the control flow graph. */ +static bool cfg_changed; + /* This is a table in which for each basic block and parameter there is a distance (offset + size) in that parameter which is dereferenced and accessed in that BB. */ @@ -570,6 +573,7 @@ memset (&sra_stats, 0, sizeof (sra_stats)); encountered_apply_args = false; encountered_unchangable_recursive_call = false; + cfg_changed = false; } /* Hook fed to pointer_map_traverse, deallocate stored vectors. */ @@ -1114,8 +1118,6 @@ FOR_EACH_BB (bb) { - bool bb_changed = false; - if (handle_ssa_defs) for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) ret |= handle_ssa_defs (gsi_stmt (gsi), data); @@ -1220,21 +1222,15 @@ if (!analysis_stage) { - bb_changed = true; update_stmt (stmt); - maybe_clean_eh_stmt (stmt); + if (maybe_clean_eh_stmt (stmt) + && gimple_purge_dead_eh_edges (bb)) + cfg_changed = true; } } - if (deleted) - bb_changed = true; - else - { - gsi_next (&gsi); - ret = true; - } + if (!deleted) + gsi_next (&gsi); } - if (!analysis_stage && bb_changed && sra_mode == SRA_MODE_EARLY_IPA) - gimple_purge_dead_eh_edges (bb); } return ret; @@ -2871,7 +2867,10 @@ statistics_counter_event (cfun, "Separate LHS and RHS handling", sra_stats.separate_lhs_rhs_handling); - ret = TODO_update_ssa; + if (cfg_changed) + ret = TODO_update_ssa | TODO_cleanup_cfg; + else + ret = TODO_update_ssa; out: sra_deinitialize (); @@ -4236,7 +4235,10 @@ modify_function (node, adjustments); VEC_free (ipa_parm_adjustment_t, heap, adjustments); - ret = TODO_update_ssa; + if (cfg_changed) + ret = TODO_update_ssa | TODO_cleanup_cfg; + else + ret = TODO_update_ssa; statistics_counter_event (cfun, "Unused parameters deleted", sra_stats.deleted_unused_parameters); Index: gcc/lto/lto-elf.c =================================================================== --- gcc/lto/lto-elf.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/lto/lto-elf.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -38,7 +38,19 @@ # define EM_SPARC32PLUS 18 #endif +#ifndef ELFOSABI_NONE +# define ELFOSABI_NONE 0 +#endif +#ifndef ELFOSABI_LINUX +# define ELFOSABI_LINUX 3 +#endif + +#ifndef SHN_XINDEX +# define SHN_XINDEX 0xffff +#endif + + /* Handle opening elf files on hosts, such as Windows, that may use text file handling that will break binary access. */ #ifndef O_BINARY @@ -496,7 +508,6 @@ error ("could not read ELF identification information: %s", elf_errmsg (0)); return false; - } if (!cached_file_attrs.initialized) @@ -519,11 +530,32 @@ memcpy (cached_file_attrs.elf_ident, elf_ident, sizeof cached_file_attrs.elf_ident); } + else + { + char elf_ident_buf[EI_NIDENT]; - if (memcmp (elf_ident, cached_file_attrs.elf_ident, - sizeof cached_file_attrs.elf_ident)) - return false; + memcpy (elf_ident_buf, elf_ident, sizeof elf_ident_buf); + if (elf_ident_buf[EI_OSABI] != cached_file_attrs.elf_ident[EI_OSABI]) + { + /* Allow mixing ELFOSABI_NONE with ELFOSABI_LINUX, with the result + ELFOSABI_LINUX. */ + if (elf_ident_buf[EI_OSABI] == ELFOSABI_NONE + && cached_file_attrs.elf_ident[EI_OSABI] == ELFOSABI_LINUX) + elf_ident_buf[EI_OSABI] = cached_file_attrs.elf_ident[EI_OSABI]; + else if (elf_ident_buf[EI_OSABI] == ELFOSABI_LINUX + && cached_file_attrs.elf_ident[EI_OSABI] == ELFOSABI_NONE) + cached_file_attrs.elf_ident[EI_OSABI] = elf_ident_buf[EI_OSABI]; + } + + if (memcmp (elf_ident_buf, cached_file_attrs.elf_ident, + sizeof cached_file_attrs.elf_ident)) + { + error ("incompatible ELF identification"); + return false; + } + } + /* Check that the input file is a relocatable object file with the correct architecture. */ switch (cached_file_attrs.bits) Index: gcc/lto/ChangeLog =================================================================== --- gcc/lto/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/lto/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,3 +1,21 @@ +2010-10-14 Eric Botcazou + + * lto-elf.c (SHN_XINDEX): Define if not already defined. + +2010-09-03 Richard Guenther + + * lto-elf.c (validate_file): Always error if validation fails. + +2010-09-03 Richard Guenther + + PR lto/45496 + Backport from mainline + 2010-07-07 Jakub Jelinek + + * lto-elf.c (ELFOSABI_NONE, ELFOSABI_LINUX): Define if not defined. + (validate_file): Allow merging of ELFOSABI_NONE with ELFOSABI_LINUX + objects. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: gcc/ipa-prop.c =================================================================== --- gcc/ipa-prop.c (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/ipa-prop.c (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1597,7 +1597,7 @@ || (VEC_index (ipa_parm_adjustment_t, adjustments, 0)->copy_param && VEC_index (ipa_parm_adjustment_t, adjustments, 0)->base_index == 0)) { - new_type = copy_node (orig_type); + new_type = build_distinct_type_copy (orig_type); TYPE_ARG_TYPES (new_type) = new_reversed; } else Index: gcc/po/ChangeLog =================================================================== --- gcc/po/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515) +++ gcc/po/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515) @@ -1,3 +1,11 @@ +2010-10-13 Joseph Myers + + * vi.po: Update. + +2010-10-07 Joseph Myers + + * vi.po: New. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: gcc/po/vi.po =================================================================== --- gcc/po/vi.po (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/po/vi.po (.../branches/gcc-4_5-branch) (wersja 165515) @@ -0,0 +1,38037 @@ +# Vietnamese translation for GCC. +# Copyright © 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the gcc package. +# Clytie Siddall , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: gcc 4.5.0\n" +"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" +"POT-Creation-Date: 2010-04-06 14:11+0000\n" +"PO-Revision-Date: 2010-10-13 22:15+1030\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.8\n" + +#: c-decl.c:4573 c-pretty-print.c:403 c-typeck.c:5590 toplev.c:1652 +#: cp/error.c:581 cp/error.c:854 +msgid "" +msgstr "" + +#: c-format.c:363 c-format.c:387 config/i386/msformat-c.c:50 +msgid "' ' flag" +msgstr "cờ « »" + +#: c-format.c:363 c-format.c:387 config/i386/msformat-c.c:50 +msgid "the ' ' printf flag" +msgstr "cờ printf « »" + +#: c-format.c:364 c-format.c:388 c-format.c:422 c-format.c:434 c-format.c:493 +#: config/i386/msformat-c.c:51 +msgid "'+' flag" +msgstr "cờ « + »" + +#: c-format.c:364 c-format.c:388 c-format.c:422 c-format.c:434 +#: config/i386/msformat-c.c:51 +msgid "the '+' printf flag" +msgstr "cờ printf « + »" + +#: c-format.c:365 c-format.c:389 c-format.c:435 c-format.c:469 +#: config/i386/msformat-c.c:52 config/i386/msformat-c.c:87 +msgid "'#' flag" +msgstr "cờ « # »" + +#: c-format.c:365 c-format.c:389 c-format.c:435 config/i386/msformat-c.c:52 +msgid "the '#' printf flag" +msgstr "cờ printf « # »" + +#: c-format.c:366 c-format.c:390 c-format.c:467 config/i386/msformat-c.c:53 +msgid "'0' flag" +msgstr "cờ « 0 »" + +#: c-format.c:366 c-format.c:390 config/i386/msformat-c.c:53 +msgid "the '0' printf flag" +msgstr "cờ printf « 0 »" + +#: c-format.c:367 c-format.c:391 c-format.c:466 c-format.c:496 +#: config/i386/msformat-c.c:54 +msgid "'-' flag" +msgstr "cờ « - »" + +#: c-format.c:367 c-format.c:391 config/i386/msformat-c.c:54 +msgid "the '-' printf flag" +msgstr "cờ printf « - »" + +#: c-format.c:368 c-format.c:449 config/i386/msformat-c.c:55 +#: config/i386/msformat-c.c:75 +msgid "''' flag" +msgstr "cờ « ' »" + +#: c-format.c:368 config/i386/msformat-c.c:55 +msgid "the ''' printf flag" +msgstr "cờ printf « ' »" + +#: c-format.c:369 c-format.c:450 +msgid "'I' flag" +msgstr "cờ « I »" + +#: c-format.c:369 +msgid "the 'I' printf flag" +msgstr "cờ printf « I »" + +#: c-format.c:370 c-format.c:392 c-format.c:447 c-format.c:470 c-format.c:497 +#: c-format.c:1621 config/sol2-c.c:45 config/i386/msformat-c.c:56 +#: config/i386/msformat-c.c:73 +msgid "field width" +msgstr "bề rộng trường" + +#: c-format.c:370 c-format.c:392 config/sol2-c.c:45 +#: config/i386/msformat-c.c:56 +msgid "field width in printf format" +msgstr "chiều rộng của trường theo định dạng printf" + +#: c-format.c:371 c-format.c:393 c-format.c:424 c-format.c:437 +#: config/i386/msformat-c.c:57 +msgid "precision" +msgstr "độ chính xác" + +#: c-format.c:371 c-format.c:393 c-format.c:424 c-format.c:437 +#: config/i386/msformat-c.c:57 +msgid "precision in printf format" +msgstr "độ chính xác theo định dạng printf" + +#: c-format.c:372 c-format.c:394 c-format.c:425 c-format.c:438 c-format.c:448 +#: c-format.c:500 config/sol2-c.c:46 config/i386/msformat-c.c:58 +#: config/i386/msformat-c.c:74 +msgid "length modifier" +msgstr "đồ sửa đổi bề dài" + +#: c-format.c:372 c-format.c:394 c-format.c:425 c-format.c:438 +#: config/sol2-c.c:46 config/i386/msformat-c.c:58 +msgid "length modifier in printf format" +msgstr "đồ sửa đổi chiều dài theo định dạng printf" + +#: c-format.c:423 c-format.c:436 +msgid "'q' flag" +msgstr "cờ « q »" + +#: c-format.c:423 c-format.c:436 +msgid "the 'q' diagnostic flag" +msgstr "cờ chẩn đoán « q »" + +#: c-format.c:444 config/i386/msformat-c.c:71 +msgid "assignment suppression" +msgstr "thu hồi sự gán" + +#: c-format.c:444 config/i386/msformat-c.c:71 +msgid "the assignment suppression scanf feature" +msgstr "tính năng scanf để thu hồi sự gán" + +#: c-format.c:445 config/i386/msformat-c.c:72 +msgid "'a' flag" +msgstr "cờ « a »" + +#: c-format.c:445 config/i386/msformat-c.c:72 +msgid "the 'a' scanf flag" +msgstr "cờ scanf « a »" + +#: c-format.c:446 +msgid "'m' flag" +msgstr "cờ « m »" + +#: c-format.c:446 +msgid "the 'm' scanf flag" +msgstr "cờ scanf « m »" + +#: c-format.c:447 config/i386/msformat-c.c:73 +msgid "field width in scanf format" +msgstr "chiều rộng của trường theo định dạng scanf" + +#: c-format.c:448 config/i386/msformat-c.c:74 +msgid "length modifier in scanf format" +msgstr "đồ sửa đổi chiều dài theo định dạng scanf" + +#: c-format.c:449 config/i386/msformat-c.c:75 +msgid "the ''' scanf flag" +msgstr "cờ scanf « ' »" + +#: c-format.c:450 +msgid "the 'I' scanf flag" +msgstr "cờ scanf « I »" + +#: c-format.c:465 +msgid "'_' flag" +msgstr "cờ « _ »" + +#: c-format.c:465 +msgid "the '_' strftime flag" +msgstr "cờ strftime « _ »" + +#: c-format.c:466 +msgid "the '-' strftime flag" +msgstr "cờ strftime « - »" + +#: c-format.c:467 +msgid "the '0' strftime flag" +msgstr "cờ strftime « 0 »" + +#: c-format.c:468 c-format.c:492 +msgid "'^' flag" +msgstr "cờ « ^ »" + +#: c-format.c:468 +msgid "the '^' strftime flag" +msgstr "cờ strftime « ^ »" + +#: c-format.c:469 config/i386/msformat-c.c:87 +msgid "the '#' strftime flag" +msgstr "cờ strftime « # »" + +#: c-format.c:470 +msgid "field width in strftime format" +msgstr "chiều rộng của trường theo định dạng stfrtime" + +#: c-format.c:471 +msgid "'E' modifier" +msgstr "đồ sửa đổi « E »" + +#: c-format.c:471 +msgid "the 'E' strftime modifier" +msgstr "đồ sửa đổi « E » của strftime" + +#: c-format.c:472 +msgid "'O' modifier" +msgstr "đồ sửa đổi « O »" + +#: c-format.c:472 +msgid "the 'O' strftime modifier" +msgstr "đồ sửa đổi « O » của strftime" + +#: c-format.c:473 +msgid "the 'O' modifier" +msgstr "đồ sửa đổi « O »" + +#: c-format.c:491 +msgid "fill character" +msgstr "ký tự điền vào" + +#: c-format.c:491 +msgid "fill character in strfmon format" +msgstr "ký tự điền vào theo định dạng strftime" + +#: c-format.c:492 +msgid "the '^' strfmon flag" +msgstr "cờ strfmon « ^ »" + +#: c-format.c:493 +msgid "the '+' strfmon flag" +msgstr "cờ strfmon « + »" + +#: c-format.c:494 +msgid "'(' flag" +msgstr "cờ « ( »" + +#: c-format.c:494 +msgid "the '(' strfmon flag" +msgstr "cờ strfmon « ( »" + +#: c-format.c:495 +msgid "'!' flag" +msgstr "cờ « ! »" + +#: c-format.c:495 +msgid "the '!' strfmon flag" +msgstr "cờ strfmon « ! »" + +#: c-format.c:496 +msgid "the '-' strfmon flag" +msgstr "cờ strfmon « - »" + +#: c-format.c:497 +msgid "field width in strfmon format" +msgstr "chiều rộng của trường theo định dạng strfmon" + +#: c-format.c:498 +msgid "left precision" +msgstr "đồ chính xác bên trái" + +#: c-format.c:498 +msgid "left precision in strfmon format" +msgstr "đồ chính xác bên trái theo định dạng strfmon" + +#: c-format.c:499 +msgid "right precision" +msgstr "đồ chính xác bên phải" + +#: c-format.c:499 +msgid "right precision in strfmon format" +msgstr "đồ chính xác bên phải theo định dạng strfmon" + +#: c-format.c:500 +msgid "length modifier in strfmon format" +msgstr "đồ sửa đổi chiều dài theo định dạng strfmon" + +#: c-format.c:1724 +msgid "field precision" +msgstr "ồ chính xác trường" + +#: c-objc-common.c:164 +msgid "({anonymous})" +msgstr "({nặc danh})" + +#: c-opts.c:1501 tree.c:3970 cp/error.c:999 fortran/cpp.c:552 +msgid "" +msgstr "" + +#. Handle deferred options from command-line. +#: c-opts.c:1519 fortran/cpp.c:557 +msgid "" +msgstr "" + +#: c-parser.c:736 +msgid "expected end of line" +msgstr "mong đợi kết thúc dòng" + +#: c-parser.c:1375 c-parser.c:3463 c-parser.c:3897 c-parser.c:4158 +#: c-parser.c:4228 c-parser.c:4239 c-parser.c:4389 c-parser.c:6264 +#: c-parser.c:6298 c-parser.c:6330 c-parser.c:6377 c-parser.c:6513 +#: c-parser.c:7899 c-parser.c:8043 c-parser.c:8081 c-parser.c:1944 +#, gcc-internal-format +msgid "expected %<;%>" +msgstr "mong đợi %<;%>" + +#: c-parser.c:1883 c-parser.c:2147 c-parser.c:2788 c-parser.c:2840 +#: c-parser.c:2845 c-parser.c:3941 c-parser.c:4074 c-parser.c:4189 +#: c-parser.c:4325 c-parser.c:4451 c-parser.c:5492 c-parser.c:5529 +#: c-parser.c:5615 c-parser.c:5653 c-parser.c:5692 c-parser.c:5707 +#: c-parser.c:5731 c-parser.c:6721 c-parser.c:6761 c-parser.c:7253 +#: c-parser.c:7274 c-parser.c:7324 c-parser.c:7434 c-parser.c:7507 +#: c-parser.c:7575 c-parser.c:8006 c-parser.c:7397 +#, gcc-internal-format +msgid "expected %<(%>" +msgstr "mong đợi %<(%>" + +#: c-parser.c:1898 c-parser.c:2182 c-parser.c:2389 c-parser.c:2550 +#: c-parser.c:2610 c-parser.c:2684 c-parser.c:2795 c-parser.c:2962 +#: c-parser.c:2973 c-parser.c:2982 c-parser.c:3944 c-parser.c:4078 +#: c-parser.c:4246 c-parser.c:4383 c-parser.c:4462 c-parser.c:5017 +#: c-parser.c:5203 c-parser.c:5262 c-parser.c:5438 c-parser.c:5455 +#: c-parser.c:5476 c-parser.c:5508 c-parser.c:5609 c-parser.c:5637 +#: c-parser.c:5677 c-parser.c:5700 c-parser.c:5723 c-parser.c:5744 +#: c-parser.c:5884 c-parser.c:6134 c-parser.c:6558 c-parser.c:6578 +#: c-parser.c:6729 c-parser.c:6765 c-parser.c:7256 c-parser.c:7277 +#: c-parser.c:7355 c-parser.c:7440 c-parser.c:7556 c-parser.c:7638 +#: c-parser.c:7935 c-parser.c:8051 c-parser.c:8092 +msgid "expected %<)%>" +msgstr "mong đợi %<)%>" + +#: c-parser.c:2472 c-parser.c:3254 c-parser.c:3286 c-parser.c:4443 +#: c-parser.c:5601 c-parser.c:5764 c-parser.c:5871 +msgid "expected %<]%>" +msgstr "mong đợi %<]%>" + +#: c-parser.c:2654 +msgid "expected %<;%>, %<,%> or %<)%>" +msgstr "mong đợi %<;%>, %<,%> or %<)%>" + +#: c-parser.c:3124 +msgid "expected %<}%>" +msgstr "mong đợi %<}%>" + +#: c-parser.c:3404 c-parser.c:6731 c-parser.c:8335 c-parser.c:1765 +#: c-parser.c:1960 c-parser.c:6441 +#, gcc-internal-format +msgid "expected %<{%>" +msgstr "mong đợi %<{%>" + +#: c-parser.c:3622 c-parser.c:3631 c-parser.c:4347 c-parser.c:4683 +#: c-parser.c:6571 c-parser.c:6871 c-parser.c:6928 c-parser.c:7545 +msgid "expected %<:%>" +msgstr "mong đợi %<:%>" + +#: c-parser.c:4152 +msgid "expected %" +msgstr "mong đợi %" + +#: c-parser.c:5499 c-parser.c:5540 c-parser.c:5622 c-parser.c:5629 +#: c-parser.c:5664 +msgid "expected %<,%>" +msgstr "mong đợi %<,%>" + +#: c-parser.c:6144 c-parser.c:6176 c-parser.c:6390 +msgid "expected %<@end%>" +msgstr "mong đợi %<@end%>" + +#: c-parser.c:6692 +msgid "expected %<>%>" +msgstr "mong đợi %<>%>" + +#: c-parser.c:7642 +msgid "expected %<,%> or %<)%>" +msgstr "mong đợi %<,%> hoặc %<)%>" + +#: c-parser.c:8033 c-parser.c:3309 +#, gcc-internal-format +msgid "expected %<=%>" +msgstr "mong đợi %<=%>" + +#: c-parser.c:8392 c-parser.c:8382 +#, gcc-internal-format +msgid "expected %<#pragma omp section%> or %<}%>" +msgstr "mong đợi %<#pragma omp section%> hoặc %<}%>" + +#: c-pretty-print.c:324 +msgid "" +msgstr "" + +#: c-pretty-print.c:363 +msgid "" +msgstr "" + +#: c-pretty-print.c:398 +msgid "" +msgstr "" + +#: c-pretty-print.c:1142 +msgid "" +msgstr "" + +#: c-pretty-print.c:1146 cp/cxx-pretty-print.c:154 +msgid "" +msgstr "" + +#: c-typeck.c:5707 +msgid "array initialized from parenthesized string constant" +msgstr "mảng bị sơ khởi từ hằng số chuỗi nằm trong ngoặc đơn" + +#: c-typeck.c:5780 c-typeck.c:6651 +msgid "initialization of a flexible array member" +msgstr "đã sơ khởi một bộ phận mảng dẻo" + +#: c-typeck.c:5790 cp/typeck2.c:851 +#, gcc-internal-format +msgid "char-array initialized from wide string" +msgstr "mảng ký tự bị sơ khởi từ chuỗi rộng" + +#: c-typeck.c:5798 +msgid "wide character array initialized from non-wide string" +msgstr "mảng ký tự rộng bị sơ khởi từ chuỗi không phải rộng" + +#: c-typeck.c:5804 +msgid "wide character array initialized from incompatible wide string" +msgstr "mảng ký tự rộng bị sơ khởi từ chuỗi rộng không tương thích" + +#: c-typeck.c:5838 +msgid "array of inappropriate type initialized from string constant" +msgstr "mảng loại không thích hợp bị sơ khởi từ hằng số chuỗi" + +#. ??? This should not be an error when inlining calls to +#. unprototyped functions. +#: c-typeck.c:5906 c-typeck.c:5359 cp/typeck.c:1862 +#, gcc-internal-format +msgid "invalid use of non-lvalue array" +msgstr "sai sử dụng mảng không phải lvalue" + +#: c-typeck.c:5932 +msgid "array initialized from non-constant array expression" +msgstr "mảng bị sơ khởi từ biểu tượng mảng không phải hằng số" + +#: c-typeck.c:5946 c-typeck.c:5949 c-typeck.c:5957 c-typeck.c:5996 +#: c-typeck.c:7450 +msgid "initializer element is not constant" +msgstr "yếu tố sơ khởi không phải hằng số" + +#: c-typeck.c:5962 c-typeck.c:6008 c-typeck.c:7460 +msgid "initializer element is not a constant expression" +msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số" + +#: c-typeck.c:6003 c-typeck.c:7455 +#, gcc-internal-format +msgid "initializer element is not computable at load time" +msgstr "yếu tố sơ khởi không tính được vào lúc nạp" + +#. Although C99 is unclear about whether incomplete arrays +#. of VLAs themselves count as VLAs, it does not make +#. sense to permit them to be initialized given that +#. ordinary VLAs may not be initialized. +#: c-typeck.c:6017 c-decl.c:3954 c-decl.c:3969 +#, gcc-internal-format +msgid "variable-sized object may not be initialized" +msgstr "không thể sơ khởi một đối tượng có kích cỡ biến đổi" + +#: c-typeck.c:6021 +msgid "invalid initializer" +msgstr "bộ sơ khởi sai" + +#: c-typeck.c:6230 +msgid "(anonymous)" +msgstr "(nặc danh)" + +#: c-typeck.c:6508 +msgid "extra brace group at end of initializer" +msgstr "gặp nhóm ngoặc móc thừa tại kết thúc của bộ sơ khởi" + +#: c-typeck.c:6529 +msgid "missing braces around initializer" +msgstr "thiếu ngoặc móc chung quanh bộ sơ khởi" + +#: c-typeck.c:6590 +msgid "braces around scalar initializer" +msgstr "ngoặc chung quanh bộ sơ khởi vô hướng" + +#: c-typeck.c:6648 +msgid "initialization of flexible array member in a nested context" +msgstr "bộ phận mảng dẻo bị sơ khởi trong một ngữ cảnh lồng nhau" + +#: c-typeck.c:6679 +msgid "missing initializer" +msgstr "bộ sơ khởi còn thiếu" + +#: c-typeck.c:6701 +msgid "empty scalar initializer" +msgstr "bộ sơ khởi vô hướng vẫn trống" + +#: c-typeck.c:6706 +msgid "extra elements in scalar initializer" +msgstr "gặp yếu tố thừa trong bộ sơ khởi vô hướng" + +#: c-typeck.c:6814 c-typeck.c:6892 +msgid "array index in non-array initializer" +msgstr "gặp chỉ mục mảng trong bộ sơ khởi không phải mảng" + +#: c-typeck.c:6819 c-typeck.c:6948 +msgid "field name not in record or union initializer" +msgstr "không có tên trường trong bộ sơ khởi hợp hoặc mục ghi" + +#: c-typeck.c:6865 +msgid "array index in initializer not of integer type" +msgstr "bộ sơ khởi chứa một chỉ mục mảng không có loại số nguyên" + +#: c-typeck.c:6874 c-typeck.c:6883 +msgid "array index in initializer is not an integer constant expression" +msgstr "bộ sơ khởi chứa một chỉ mục mảng không phải là một biểu tượng hằng số nguyên" + +#: c-typeck.c:6888 c-typeck.c:6890 +msgid "nonconstant array index in initializer" +msgstr "bộ sơ khởi chứa một chỉ mục mảng không phải hằng số" + +#: c-typeck.c:6894 c-typeck.c:6897 +msgid "array index in initializer exceeds array bounds" +msgstr "bộ sơ khởi chứa một chỉ mục mảng vượt quá giới hạn mảng" + +#: c-typeck.c:6911 +msgid "empty index range in initializer" +msgstr "bộ sơ khởi chứa phạm vi chỉ mục vẫn trống" + +#: c-typeck.c:6920 +msgid "array index range in initializer exceeds array bounds" +msgstr "bộ sơ khởi chứa một phạm vi chỉ mục mảng vượt quá giới hạn mảng" + +#: c-typeck.c:7003 c-typeck.c:7030 c-typeck.c:7549 +msgid "initialized field with side-effects overwritten" +msgstr "trường đã sơ khởi với hiệu ứng khác bị ghi đè" + +#: c-typeck.c:7005 c-typeck.c:7032 c-typeck.c:7551 +msgid "initialized field overwritten" +msgstr "trường đã sơ khởi bị ghi đè" + +#: c-typeck.c:7477 c-typeck.c:4965 +#, gcc-internal-format +msgid "enum conversion in initialization is invalid in C++" +msgstr "chuyển đổi enum trong bộ sơ khởi thì không hợp lệ trong C++" + +#: c-typeck.c:7766 +msgid "excess elements in char array initializer" +msgstr "gặp yếu tố thừa trong bộ sơ khởi mảng ký tự" + +#: c-typeck.c:7773 c-typeck.c:7832 +msgid "excess elements in struct initializer" +msgstr "gặp yếu tố thừa trong bộ sơ khởi cấu trúc" + +#: c-typeck.c:7847 +msgid "non-static initialization of a flexible array member" +msgstr "một bộ phận mảng dẻo bị sơ khởi một cách không phải tĩnh" + +#: c-typeck.c:7917 +msgid "excess elements in union initializer" +msgstr "gặp yếu tố thừa trong bộ sơ khởi hợp" + +#: c-typeck.c:8006 +msgid "excess elements in array initializer" +msgstr "gặp yếu tố thừa trong bộ sơ khởi mảng" + +#: c-typeck.c:8039 +msgid "excess elements in vector initializer" +msgstr "gặp yếu tố thừa trong bộ sơ khởi véc-tơ" + +#: c-typeck.c:8070 +msgid "excess elements in scalar initializer" +msgstr "gặp yếu tố thừa trong bộ sơ khởi vô hướng" + +#: cfgrtl.c:2013 +msgid "flow control insn inside a basic block" +msgstr "gặp lệnh điều khiển luồng bên trong một khối cơ bản" + +#: cfgrtl.c:2144 +msgid "wrong insn in the fallthru edge" +msgstr "gặp lệnh không đúng trong cạnh failthru" + +#: cfgrtl.c:2198 +msgid "insn outside basic block" +msgstr "gặp lệnh bên ngoài khối cơ bản" + +#: cfgrtl.c:2205 +msgid "return not followed by barrier" +msgstr "trả lại không có hàng rào theo sau" + +#: collect2.c:497 gcc.c:7734 +#, c-format +msgid "internal gcc abort in %s, at %s:%d" +msgstr "gcc bị hủy bỏ nội bộ trong %s, vào %s:%d" + +#: collect2.c:950 +#, c-format +msgid "COLLECT_LTO_WRAPPER must be set." +msgstr "COLLECT_LTO_WRAPPER phải được lập." + +#: collect2.c:1092 +#, c-format +msgid "too many lto output files" +msgstr "quá nhiều tập tin kết xuất lto" + +#: collect2.c:1308 +#, c-format +msgid "no arguments" +msgstr "không có đối số nào" + +# Literal: don't translate; Nghĩa chữ : dừng dịch +#: collect2.c:1715 collect2.c:1886 collect2.c:1921 +#, c-format +msgid "fopen %s" +msgstr "fopen %s" + +# Literal: don't translate; Nghĩa chữ : dừng dịch +#: collect2.c:1718 collect2.c:1891 collect2.c:1924 +#, c-format +msgid "fclose %s" +msgstr "fclose %s" + +#: collect2.c:1727 +#, c-format +msgid "collect2 version %s" +msgstr "collect2 phiên bản %s" + +#: collect2.c:1823 +#, c-format +msgid "%d constructor found\n" +msgid_plural "%d constructors found\n" +msgstr[0] "Tìm thấy %d bộ cấu trúc\n" + +#: collect2.c:1827 +#, c-format +msgid "%d destructor found\n" +msgid_plural "%d destructors found\n" +msgstr[0] "Tìm thấy %d bộ hủy cấu trúc\n" + +#: collect2.c:1831 +#, c-format +msgid "%d frame table found\n" +msgid_plural "%d frame tables found\n" +msgstr[0] "Tìm thấy %d bảng khung\n" + +#: collect2.c:1985 lto-wrapper.c:175 +#, c-format +msgid "can't get program status" +msgstr "không thể lấy trạng thái về chương trình" + +#: collect2.c:2054 +#, c-format +msgid "could not open response file %s" +msgstr "không thể mở tập tin đáp ứng %s" + +#: collect2.c:2059 +#, c-format +msgid "could not write to response file %s" +msgstr "không thể ghi vào tập tin đáp ứng %s" + +#: collect2.c:2064 +#, c-format +msgid "could not close response file %s" +msgstr "không thể đóng đáp ứng tập tin %s" + +#: collect2.c:2082 +#, c-format +msgid "[cannot find %s]" +msgstr "[không tìm thấy %s]" + +#: collect2.c:2097 +#, c-format +msgid "cannot find '%s'" +msgstr "không tìm thấy « %s »" + +#: collect2.c:2101 collect2.c:2624 collect2.c:2820 gcc.c:3085 +#: lto-wrapper.c:147 +#, c-format +msgid "pex_init failed" +msgstr "pex_init bị lỗi" + +#: collect2.c:2139 +#, c-format +msgid "[Leaving %s]\n" +msgstr "[Đang rời khỏi %s]\n" + +#: collect2.c:2371 +#, c-format +msgid "" +"\n" +"write_c_file - output name is %s, prefix is %s\n" +msgstr "" +"\n" +"write_c_file - tên kết xuất là %s, tiền tố là %s\n" + +#: collect2.c:2598 +#, c-format +msgid "cannot find 'nm'" +msgstr "không tìm thấy « nm »" + +#: collect2.c:2646 +#, c-format +msgid "can't open nm output" +msgstr "không thể mở kết xuất nm" + +#: collect2.c:2729 +#, c-format +msgid "init function found in object %s" +msgstr "hàm init được tìm trong đối tượng %s" + +#: collect2.c:2739 +#, c-format +msgid "fini function found in object %s" +msgstr "hàm fini được tìm trong đối tượng %s" + +#: collect2.c:2841 +#, c-format +msgid "can't open ldd output" +msgstr "không thể mở kết xuất ldd" + +#: collect2.c:2844 +#, c-format +msgid "" +"\n" +"ldd output with constructors/destructors.\n" +msgstr "" +"\n" +"kết xuất ldd với bộ (hủy) cấu trúc.\n" + +#: collect2.c:2859 +#, c-format +msgid "dynamic dependency %s not found" +msgstr "không tìm thấy quan hệ phụ thuộc năng động %s" + +#: collect2.c:2871 +#, c-format +msgid "unable to open dynamic dependency '%s'" +msgstr "không thể mở quan hệ phụ thuộc năng động « %s »" + +#: collect2.c:3032 +#, c-format +msgid "%s: not a COFF file" +msgstr "%s: không phải là một tập tin COFF" + +#: collect2.c:3162 +#, c-format +msgid "%s: cannot open as COFF file" +msgstr "%s: không thể mở dưới dạng tập tin COFF" + +#: collect2.c:3220 +#, c-format +msgid "library lib%s not found" +msgstr "không tìm thấy thư viện lib%s" + +#: cppspec.c:106 +#, c-format +msgid "\"%s\" is not a valid option to the preprocessor" +msgstr "« %s » không phải là một tuỳ chọn hợp lệ cho bộ tiền xử lý" + +#: cppspec.c:128 +#, c-format +msgid "too many input files" +msgstr "quá nhiều tập tin nhập vào" + +#: diagnostic.c:186 +#, c-format +msgid "compilation terminated due to -Wfatal-errors.\n" +msgstr "tiến trình biên dịch bị chấm dứt do « -Wfatal-errors ».\n" + +#: diagnostic.c:195 +#, c-format +msgid "" +"Please submit a full bug report,\n" +"with preprocessed source if appropriate.\n" +"See %s for instructions.\n" +msgstr "" +"Hãy gửi một báo cáo lỗi đầy đủ,\n" +"gồm có mã nguồn tiền xử lý nếu thích hợp.\n" +"Xem %s để tìm hướng dẫn.\n" + +#: diagnostic.c:204 +#, c-format +msgid "compilation terminated.\n" +msgstr "tiến trình biên dịch bị chấm dứt.\n" + +#: diagnostic.c:382 +#, c-format +msgid "*** WARNING *** there are active plugins, do not report this as a bug unless you can reproduce it without enabling any plugins.\n" +msgstr "*** CẢNH BÁO *** có phần bổ sung vẫn hoạt động: đừng thông báo trường hợp này như là một lỗi nếu bạn có thể tạo nó lần nữa mà không hiệu lực phần bổ sung nào.\n" + +#: diagnostic.c:399 +#, c-format +msgid "%s:%d: confused by earlier errors, bailing out\n" +msgstr "%s:%d: lộn xộn do lỗi trước nên hủy bỏ\n" + +#: diagnostic.c:744 +#, c-format +msgid "Internal compiler error: Error reporting routines re-entered.\n" +msgstr "Lỗi biên dịch nội bộ : đã nhập lại hàm thông báo lỗi.\n" + +#: final.c:1153 +msgid "negative insn length" +msgstr "chiều dài lệnh âm" + +#: final.c:2650 +msgid "could not split insn" +msgstr "không thể chia tách lệnh" + +#: final.c:3084 +msgid "invalid 'asm': " +msgstr "« asm » sai" + +#: final.c:3267 +#, c-format +msgid "nested assembly dialect alternatives" +msgstr "các sự xen kẽ phương ngôn assembly lồng nhau" + +#: final.c:3284 final.c:3296 +#, c-format +msgid "unterminated assembly dialect alternative" +msgstr "sự xen kẽ phương ngôn assembly chưa chấm dứt" + +#: final.c:3343 +#, c-format +msgid "operand number missing after %%-letter" +msgstr "số thứ tự toán hạng còn thiếu đằng sau %%-letter" + +#: final.c:3346 final.c:3387 +#, c-format +msgid "operand number out of range" +msgstr "số thứ tự toán hạng ở ngoại phạm vi" + +#: final.c:3406 +#, c-format +msgid "invalid %%-code" +msgstr "%%-code sai" + +#: final.c:3436 +#, c-format +msgid "'%%l' operand isn't a label" +msgstr "toán hạng « %%l » không phải là một nhãn" + +#. We can't handle floating point constants; +#. PRINT_OPERAND must handle them. +#. We can't handle floating point constants; PRINT_OPERAND must +#. handle them. +#. We can't handle floating point constants; +#. PRINT_OPERAND must handle them. +#: final.c:3582 vmsdbgout.c:496 config/i386/i386.c:10813 +#: config/pdp11/pdp11.c:1682 +#, c-format +msgid "floating constant misused" +msgstr "sai sử dụng hằng số nổi" + +#: final.c:3644 vmsdbgout.c:553 config/i386/i386.c:10900 +#: config/pdp11/pdp11.c:1729 +#, c-format +msgid "invalid expression as operand" +msgstr "sai lập biểu tượng dưới dạng toán hạng" + +#: gcc.c:1799 +#, c-format +msgid "Using built-in specs.\n" +msgstr "Đang sử dụng các đặc tả dựng sẵn.\n" + +#: gcc.c:1984 +#, c-format +msgid "" +"Setting spec %s to '%s'\n" +"\n" +msgstr "" +"Đang lập đặc tả %s thành « %s »\n" +"\n" + +#: gcc.c:2099 +#, c-format +msgid "Reading specs from %s\n" +msgstr "Đang đọc các đặc tả từ %s\n" + +#: gcc.c:2195 gcc.c:2214 +#, c-format +msgid "specs %%include syntax malformed after %ld characters" +msgstr "đặc tả chứa cú pháp %%include dạng sai sau %ld ký tự" + +#: gcc.c:2222 +#, c-format +msgid "could not find specs file %s\n" +msgstr "không tìm thấy tập tin đặc tả %s\n" + +#: gcc.c:2239 gcc.c:2247 gcc.c:2256 gcc.c:2265 +#, c-format +msgid "specs %%rename syntax malformed after %ld characters" +msgstr "đặc tả chứa cú pháp %%rename dạng sai sau %ld ký tự" + +#: gcc.c:2274 +#, c-format +msgid "specs %s spec was not found to be renamed" +msgstr "đặc tả chứa đặc tả %s không có tên mới" + +#: gcc.c:2281 +#, c-format +msgid "%s: attempt to rename spec '%s' to already defined spec '%s'" +msgstr "%s: đã thử thay đổi tên của đặc tả « %s » thành đặc tả đã xác định « %s »" + +#: gcc.c:2286 +#, c-format +msgid "rename spec %s to %s\n" +msgstr "thay đổi tên của đặc tả %s thành %s\n" + +#: gcc.c:2288 +#, c-format +msgid "" +"spec is '%s'\n" +"\n" +msgstr "" +"đặc tả là « %s »\n" +"\n" + +#: gcc.c:2301 +#, c-format +msgid "specs unknown %% command after %ld characters" +msgstr "đặc tả chứa một lệnh %% không rõ sai sau %ld ký tự" + +#: gcc.c:2312 gcc.c:2325 +#, c-format +msgid "specs file malformed after %ld characters" +msgstr "tập tin đặc tả dạng sai sau %ld ký tự" + +#: gcc.c:2377 +#, c-format +msgid "spec file has no spec for linking" +msgstr "tập tin đặc tả không có đặc tả để liên kết" + +#: gcc.c:2705 gcc.c:5280 +#, c-format +msgid "%s\n" +msgstr "%s\n" + +#: gcc.c:2906 +#, c-format +msgid "system path '%s' is not absolute" +msgstr "đường dẫn « %s » không phải tuyệt đối" + +#: gcc.c:2978 +#, c-format +msgid "-pipe not supported" +msgstr "không hỗ trợ « -pipe »" + +#: gcc.c:3040 +#, c-format +msgid "" +"\n" +"Go ahead? (y or n) " +msgstr "" +"\n" +"Tiếp tục ? (c/k)" + +#: gcc.c:3124 +msgid "failed to get exit status" +msgstr "không lấy được trạng thái thoát" + +#: gcc.c:3130 +msgid "failed to get process times" +msgstr "không lấy được thời gian tiến trình" + +#: gcc.c:3156 +#, c-format +msgid "" +"Internal error: %s (program %s)\n" +"Please submit a full bug report.\n" +"See %s for instructions." +msgstr "" +"Gặp lỗi nội bộ : %s (chương trình %s)\n" +"Hãy gửi một báo cáo lỗi đầy đủ.\n" +"Xem %s để tìm hướng dẫn." + +# Variable: don't translate; Biến: đừng dịch +#: gcc.c:3184 +#, c-format +msgid "# %s %.2f %.2f\n" +msgstr "# %s %.2f %.2f\n" + +#: gcc.c:3378 +#, c-format +msgid "Usage: %s [options] file...\n" +msgstr "Sử dụng: %s [tuỳ_chọn] tệp...\n" + +#: gcc.c:3379 +msgid "Options:\n" +msgstr "Tùy chọn:\n" + +#: gcc.c:3381 +msgid " -pass-exit-codes Exit with highest error code from a phase\n" +msgstr " -pass-exit-codes Thoát với mã lỗi cao nhất từ một giai đoạn nào đó\n" + +#: gcc.c:3382 +msgid " --help Display this information\n" +msgstr " --help Hiển thị trợ giúp này\n" + +#: gcc.c:3383 +msgid " --target-help Display target specific command line options\n" +msgstr " --target-help Hiển thị những tuỳ chọn dòng lệnh đặc trưng cho đích\n" + +#: gcc.c:3384 +msgid " --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n" +msgstr "" +" --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n" +"\n" +"help\t\t\t\ttrợ giúp\n" +"optimizers\t\tbộ tối ưu hoá\n" +"warnings\t\t\tcảnh báo\n" +"params\t\t\t(viết tắt parameters) tham số\n" +"joined\t\t\tnối lại\n" +"separate\t\t\tkhông nối lại\n" +"undocumented\t\tkhông có tài liệu diễn tả\n" + +#: gcc.c:3385 +msgid " Display specific types of command line options\n" +msgstr " Hiển thị một số loại tuỳ chọn dòng lệnh nào đó\n" + +#: gcc.c:3387 +msgid " (Use '-v --help' to display command line options of sub-processes)\n" +msgstr " (Hãy sử dụng « -v --help » để hiển thị các tuỳ chọn dòng lệnh của tiến trình con)\n" + +#: gcc.c:3388 +msgid " --version Display compiler version information\n" +msgstr " --version Hiển thị thông tin về phiên bản của bộ biên dịch\n" + +#: gcc.c:3389 +msgid " -dumpspecs Display all of the built in spec strings\n" +msgstr " -dumpspecs Hiển thị tất cả các chuỗi đặc tả dựng sẵn\n" + +#: gcc.c:3390 +msgid " -dumpversion Display the version of the compiler\n" +msgstr " -dumpversion Hiển thị phiên bản của bộ biên dịch\n" + +#: gcc.c:3391 +msgid " -dumpmachine Display the compiler's target processor\n" +msgstr " -dumpmachine Hiển thị bộ xử lý đích của bộ biên dịch\n" + +#: gcc.c:3392 +msgid " -print-search-dirs Display the directories in the compiler's search path\n" +msgstr "" +" -print-search-dirs\n" +" Hiển thị những thư mục nằm trên đường dẫn tìm kiếm của bộ biên dịch\n" + +#: gcc.c:3393 +msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n" +msgstr " -print-libgcc-file-name Hiển thị tên của thư viện bổ trợ của bộ biên dịch\n" + +#: gcc.c:3394 +msgid " -print-file-name= Display the full path to library \n" +msgstr " -print-file-name= Hiển thị đường dẫn đầy đủ đến thư viện này\n" + +#: gcc.c:3395 +msgid " -print-prog-name= Display the full path to compiler component \n" +msgstr "" +" -print-prog-name=\n" +" Hiển thị đường dẫn đầy đủ đến thành phần bộ biên dịch này\n" + +#: gcc.c:3396 +msgid " -print-multi-directory Display the root directory for versions of libgcc\n" +msgstr " -print-multi-directory Hiển thị thư mục gốc cho các phiên bản thư viện libgcc\n" + +#: gcc.c:3397 +msgid "" +" -print-multi-lib Display the mapping between command line options and\n" +" multiple library search directories\n" +msgstr "" +" -print-multi-lib\n" +" Hiển thị sự ánh xạ giữa các tuỳ chọn dòng lệnh và nhiều thư mục tìm kiếm thư viện\n" + +#: gcc.c:3400 +msgid " -print-multi-os-directory Display the relative path to OS libraries\n" +msgstr " -print-multi-os-directory Hiển thị đường dẫn tương đối đến các thư mục HĐH\n" + +#: gcc.c:3401 +msgid " -print-sysroot Display the target libraries directory\n" +msgstr " -print-sysroot Hiển thị thư mục chứa các thư viện đích\n" + +#: gcc.c:3402 +msgid " -print-sysroot-headers-suffix Display the sysroot suffix used to find headers\n" +msgstr " -print-sysroot-headers-suffix Hiển thị hậu tố sysroot dùng để tìm phần đầu\n" + +#: gcc.c:3403 +msgid " -Wa, Pass comma-separated on to the assembler\n" +msgstr "" +" -Wa,\n" +" Gửi cho chương trình dịch mã số các tuỳ chọn này định giới bằng dấu phẩy\n" + +#: gcc.c:3404 +msgid " -Wp, Pass comma-separated on to the preprocessor\n" +msgstr "" +" -Wp,\n" +" Gửi cho bộ tiền xử lý các tuỳ chọn này định giới bằng dấu phẩy\n" + +#: gcc.c:3405 +msgid " -Wl, Pass comma-separated on to the linker\n" +msgstr "" +" -Wl,\n" +" Gửi cho bộ liên kết các tuỳ chọn này định giới bằng dấu phẩy\n" + +#: gcc.c:3406 +msgid " -Xassembler Pass on to the assembler\n" +msgstr " -Xassembler <đối_số> Gửi đối số này cho chương trình dịch mã số\n" + +#: gcc.c:3407 +msgid " -Xpreprocessor Pass on to the preprocessor\n" +msgstr " -Xpreprocessor <đối_số> Gửi đối số này cho bộ tiền xử lý\n" + +#: gcc.c:3408 +msgid " -Xlinker Pass on to the linker\n" +msgstr " -Xlinker <đối_số> Gửi đối số này cho bộ liên kết\n" + +#: gcc.c:3409 +msgid " -combine Pass multiple source files to compiler at once\n" +msgstr " -combine Gửi đồng thời nhiều tập tin nguồn cho bộ biên dịch\n" + +#: gcc.c:3410 +msgid " -save-temps Do not delete intermediate files\n" +msgstr " -save-temps Đừng xoá bỏ tập tin trung gian\n" + +#: gcc.c:3411 +msgid " -save-temps= Do not delete intermediate files\n" +msgstr " -save-temps=<đối_số> Đừng xoá bỏ tập tin trung gian\n" + +#: gcc.c:3412 +msgid "" +" -no-canonical-prefixes Do not canonicalize paths when building relative\n" +" prefixes to other gcc components\n" +msgstr "" +" -no-canonical-prefixes Đừng làm cho đường dẫn theo đúng quy tắc\n" +" khi xây dựng tiền tố tương ứng với thành phần gcc khác\n" + +#: gcc.c:3415 +msgid " -pipe Use pipes rather than intermediate files\n" +msgstr " -pipe Dùng ống dẫn thay cho tập tin trung gian\n" + +#: gcc.c:3416 +msgid " -time Time the execution of each subprocess\n" +msgstr " -time Đếm thời gian chạy mỗi tiến trình con\n" + +#: gcc.c:3417 +msgid " -specs= Override built-in specs with the contents of \n" +msgstr " -specs= Ghi đè lên đặc tả dựng sẵn bằng nội dung của tập tin này\n" + +#: gcc.c:3418 +msgid " -std= Assume that the input sources are for \n" +msgstr " -std= Giả sử là các nguồn đầu vào là theo tiêu chuẩn này\n" + +#: gcc.c:3419 +msgid "" +" --sysroot= Use as the root directory for headers\n" +" and libraries\n" +msgstr "" +" --sysroot=\n" +" Dùng thư mục này làm thư mục gốc cho các phần đầu và thư viện\n" + +#: gcc.c:3422 +msgid " -B Add to the compiler's search paths\n" +msgstr " -B Thêm thư mục này vào các đường dẫn tìm kiếm của bộ biên dịch\n" + +#: gcc.c:3423 +msgid " -b Run gcc for target , if installed\n" +msgstr " -b Chạy gcc cho máy đích này (nếu được cài đặt)\n" + +#: gcc.c:3424 +msgid " -V Run gcc version number , if installed\n" +msgstr " -V Chạy gcc phiên bản này (nếu được cài đặt)\n" + +#: gcc.c:3425 +msgid " -v Display the programs invoked by the compiler\n" +msgstr " -v Hiển thị những chương trình được gọi bởi bộ biên dịch\n" + +#: gcc.c:3426 +msgid " -### Like -v but options quoted and commands not executed\n" +msgstr "" +" -### Giống như « -v » nhưng mà tuỳ chọn nằm trong dấu nháy\n" +" và lệnh không được thực hiện\n" + +#: gcc.c:3427 +msgid " -E Preprocess only; do not compile, assemble or link\n" +msgstr " -E Chỉ tiền xử lý, đừng biên dịch, dịch mã số hoặc liên kết\n" + +#: gcc.c:3428 +msgid " -S Compile only; do not assemble or link\n" +msgstr " -S Chỉ biên dịch, đừng dịch mã số hoặc liên kết\n" + +#: gcc.c:3429 +msgid " -c Compile and assemble, but do not link\n" +msgstr " -c Biên dịch và dịch mã số mà đừng liên kết\n" + +#: gcc.c:3430 +msgid " -o Place the output into \n" +msgstr " -o Để kết xuất vào tập tin này\n" + +#: gcc.c:3431 +msgid "" +" -x Specify the language of the following input files\n" +" Permissible languages include: c c++ assembler none\n" +" 'none' means revert to the default behavior of\n" +" guessing the language based on the file's extension\n" +msgstr "" +" -x Ghi rõ ngôn ngữ của những tập tin nhập vào mà theo sau\n" +" \t\t Các ngôn ngữ có thể sử dụng: c, c++, none\n" +" « none » (không có) = hoàn nguyên về ứng dụng mặc định\n" +" là đoán ngôn ngữ dựa vào phần mở rộng của tập tin\n" + +#: gcc.c:3438 +#, c-format +msgid "" +"\n" +"Options starting with -g, -f, -m, -O, -W, or --param are automatically\n" +" passed on to the various sub-processes invoked by %s. In order to pass\n" +" other options on to these processes the -W options must be used.\n" +msgstr "" +"\n" +"Tuỳ chọn bắt đầu với một của « -g, -f, -m, -O, -W, --param »\n" +"thì được tự động gửi cho những tiến trình con khác nhau được %s gọi.\n" +"Phải sử dụng tuỳ chọn « -W » để gửi thêm tuỳ chọn cho những tiến trình này.\n" + +#: gcc.c:3570 +#, c-format +msgid "'-%c' option must have argument" +msgstr "Tuỳ chọn « -%c » phải có đối số" + +#: gcc.c:3596 +#, c-format +msgid "couldn't run '%s': %s" +msgstr "không thể chạy « %s »: %s" + +#: gcc.c:3598 +#, c-format +msgid "couldn't run '%s': %s: %s" +msgstr "không thể chạy « %s »: %s: %s" + +#: gcc.c:3976 +#, c-format +msgid "argument to '-Xlinker' is missing" +msgstr "đối số tới « -Xlinker » còn thiếu" + +#: gcc.c:3984 +#, c-format +msgid "argument to '-Xpreprocessor' is missing" +msgstr "đối số tới « -Xpreprocessor » còn thiếu" + +#: gcc.c:3991 +#, c-format +msgid "argument to '-Xassembler' is missing" +msgstr "đối số tới « -Xassembler » còn thiếu" + +#: gcc.c:3998 +#, c-format +msgid "argument to '-l' is missing" +msgstr "đối số tới « -l » còn thiếu" + +#: gcc.c:4019 +#, c-format +msgid "'%s' is an unknown -save-temps option" +msgstr "« %s » là một tuỳ chọn « -save-temps » không rõ" + +#: gcc.c:4033 +#, c-format +msgid "argument to '-specs' is missing" +msgstr "đối số tới « -specs » còn thiếu" + +#: gcc.c:4047 +#, c-format +msgid "argument to '-specs=' is missing" +msgstr "đối số tới « -specs= » còn thiếu" + +#: gcc.c:4075 +#, c-format +msgid "argument to '-wrapper' is missing" +msgstr "đối số tới « -wrapper » còn thiếu" + +#: gcc.c:4103 +#, c-format +msgid "'-%c' must come at the start of the command line" +msgstr "« -%c » phải nằm ở đầu của dòng lệnh" + +#: gcc.c:4112 +#, c-format +msgid "argument to '-B' is missing" +msgstr "đối số tới « -B » còn thiếu" + +#: gcc.c:4505 +#, c-format +msgid "argument to '-x' is missing" +msgstr "đối số tới « -x » còn thiếu" + +#: gcc.c:4533 gcc.c:4998 +#, c-format +msgid "argument to '-%s' is missing" +msgstr "đối số tới « -%s » còn thiếu" + +#: gcc.c:4786 +#, c-format +msgid "unable to locate default linker script '%s' in the library search paths" +msgstr "không tìm thấy văn lệnh liên kết mặc định « %s » trong các đường dẫn tìm kiếm thư viện" + +#: gcc.c:4974 +#, c-format +msgid "switch '%s' does not start with '-'" +msgstr "cái chuyển « %s » không bắt đầu bằng « - »" + +#: gcc.c:5090 +#, c-format +msgid "could not open temporary response file %s" +msgstr "không thể mở tập tin đáp ứng tạm thời %s" + +#: gcc.c:5096 +#, c-format +msgid "could not write to temporary response file %s" +msgstr "không thể ghi vào tập tin đáp ứng tạm thời %s" + +#: gcc.c:5102 +#, c-format +msgid "could not close temporary response file %s" +msgstr "không thể đóng tập tin đáp ứng tạm thời %s" + +#: gcc.c:5204 +#, c-format +msgid "spec '%s' invalid" +msgstr "đặc tả « %s » không hợp lệ" + +#: gcc.c:5353 +#, c-format +msgid "spec '%s' has invalid '%%0%c'" +msgstr "đặc tả « %s » có « %%0%c » không hợp lệ" + +#: gcc.c:5662 +#, c-format +msgid "spec '%s' has invalid '%%W%c" +msgstr "đặc tả « %s » có « %%W%c » không hợp lệ" + +#: gcc.c:5682 +#, c-format +msgid "spec '%s' has invalid '%%x%c'" +msgstr "đặc tả « %s » có « %%x%c » không hợp lệ" + +#: gcc.c:5904 +#, c-format +msgid "Processing spec %c%s%c, which is '%s'\n" +msgstr "Đang xử lý đặc tả %c%s%c, mà « %s »\n" + +#: gcc.c:6029 +#, c-format +msgid "unknown spec function '%s'" +msgstr "không rõ hàm đặc tả « %s »" + +#: gcc.c:6049 +#, c-format +msgid "error in args to spec function '%s'" +msgstr "gặp lỗi trong các đối số tới hàm đặc tả « %s »" + +#: gcc.c:6098 +#, c-format +msgid "malformed spec function name" +msgstr "tên hàm đặc tả dạng sai" + +#. ) +#: gcc.c:6101 +#, c-format +msgid "no arguments for spec function" +msgstr "không có đối số tới hàm đặc tả" + +#: gcc.c:6120 +#, c-format +msgid "malformed spec function arguments" +msgstr "đối số hàm đặc tả dạng sai" + +#: gcc.c:6366 +#, c-format +msgid "braced spec '%s' is invalid at '%c'" +msgstr "đặc tả giữa ngoặc móc « %s » không hợp lệ tại « %c »" + +#: gcc.c:6454 +#, c-format +msgid "braced spec body '%s' is invalid" +msgstr "sai lập thân của đặc tả giữa ngoặc móc « %s »" + +#: gcc.c:7154 +#, c-format +msgid "install: %s%s\n" +msgstr "cài đặt: %s%s\n" + +#: gcc.c:7157 +#, c-format +msgid "programs: %s\n" +msgstr "chương trình: %s\n" + +#: gcc.c:7159 +#, c-format +msgid "libraries: %s\n" +msgstr "thư viện: %s\n" + +#. The error status indicates that only one set of fixed +#. headers should be built. +#: gcc.c:7225 +#, c-format +msgid "not configured with sysroot headers suffix" +msgstr "không được cấu hình với hậu số phần đầu sysroot" + +#: gcc.c:7234 +#, c-format +msgid "" +"\n" +"For bug reporting instructions, please see:\n" +msgstr "" +"\n" +"Để tìm hướng dẫn về thông báo lỗi, thăm địa chỉ:\n" + +# Variable: don't translate / Biến: đừng dịch +#: gcc.c:7250 +#, c-format +msgid "%s %s%s\n" +msgstr "%s %s%s\n" + +#: gcc.c:7253 gcov.c:430 fortran/gfortranspec.c:373 java/jcf-dump.c:1170 +msgid "(C)" +msgstr "©" + +#: gcc.c:7254 java/jcf-dump.c:1171 +#, c-format +msgid "" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +"\n" +msgstr "" +"Đây là phần mềm tự do; hãy xem mã nguồn để tìm thấy điều kiện sao chép.\n" +"KHÔNG CÓ BẢO HÀNH GÌ CẢ, THẬM CHÍ KHÔNG CÓ BẢO ĐẢM ĐƯỢC NGỤ Ý\n" +"KHẢ NĂNG BÁN HAY KHẢ NĂNG LÀM ĐƯỢC VIỆC DỨT KHOÁT.\n" +"\n" + +#: gcc.c:7271 +#, c-format +msgid "Target: %s\n" +msgstr "Đích: %s\n" + +#: gcc.c:7272 +#, c-format +msgid "Configured with: %s\n" +msgstr "Cấu hình bằng %s\n" + +#: gcc.c:7286 +#, c-format +msgid "Thread model: %s\n" +msgstr "Mẫu nhánh: %s\n" + +#: gcc.c:7297 +#, c-format +msgid "gcc version %s %s\n" +msgstr "gcc phiên bản %s %s\n" + +#: gcc.c:7299 +#, c-format +msgid "gcc driver version %s %sexecuting gcc version %s\n" +msgstr "Trình điều khiển gcc phiên bản %s %sexecuting gcc phiên bản %s\n" + +#: gcc.c:7307 +#, c-format +msgid "no input files" +msgstr "không có tập tin nhập vào" + +#: gcc.c:7356 +#, c-format +msgid "cannot specify -o with -c, -S or -E with multiple files" +msgstr "không thể ghi rõ nhiều tập tin với tuỳ chọn « -S » hoặc « -E », và hai tuỳ chọn « -o » và « c » loại từ lẫn nhau" + +#: gcc.c:7390 +#, c-format +msgid "spec '%s' is invalid" +msgstr "đặc tả « %s » không hợp lệ" + +#: gcc.c:7581 +#, c-format +msgid "-fuse-linker-plugin, but liblto_plugin.so not found" +msgstr "-fuse-linker-plugin, mà không tìm thấy liblto_plugin.so" + +#: gcc.c:7586 +#, c-format +msgid "could not find libgcc.a" +msgstr "không tìm thấy libgcc.a" + +#: gcc.c:7597 +#, c-format +msgid "" +"\n" +"Linker options\n" +"==============\n" +"\n" +msgstr "" +"\n" +"Tuỳ chọn liên kết\n" +"==============\n" +"\n" + +#: gcc.c:7598 +#, c-format +msgid "" +"Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n" +"\n" +msgstr "" +"Hãy sử dụng « -Wl,tùy_chọn » để gửi tuỳ chọn đó cho bộ liên kết.\n" +"\n" + +#: gcc.c:7950 +#, c-format +msgid "multilib spec '%s' is invalid" +msgstr "đặc tả đa thư viện « %s » không hợp lệ" + +#: gcc.c:8141 +#, c-format +msgid "multilib exclusions '%s' is invalid" +msgstr "sự loại từ đa thư viện « %s » không hợp lệ" + +#: gcc.c:8199 gcc.c:8340 +#, c-format +msgid "multilib select '%s' is invalid" +msgstr "sự lựa chọn đa thư viện « %s » không hợp lệ" + +#: gcc.c:8378 +#, c-format +msgid "multilib exclusion '%s' is invalid" +msgstr "sự loại từ đa thư viện « %s » không hợp lệ" + +#: gcc.c:8584 +#, c-format +msgid "environment variable \"%s\" not defined" +msgstr "chưa xác định biến môi trường « %s »" + +#: gcc.c:8675 gcc.c:8680 +#, c-format +msgid "invalid version number `%s'" +msgstr "số thứ tự phiên bản không hợp lệ « %s »" + +#: gcc.c:8723 +#, c-format +msgid "too few arguments to %%:version-compare" +msgstr "quá ít đối số tới %%:version-compare" + +#: gcc.c:8729 +#, c-format +msgid "too many arguments to %%:version-compare" +msgstr "quá nhiều đối số tới %%:version-compare" + +#: gcc.c:8770 +#, c-format +msgid "unknown operator '%s' in %%:version-compare" +msgstr "không rõ toán tử « %s » trong %%:version-compare" + +#: gcc.c:8804 +#, c-format +msgid "" +"Assembler options\n" +"=================\n" +"\n" +msgstr "" +"Tuỳ chọn dịch mã số\n" +"=================\n" +"\n" + +#: gcc.c:8805 +#, c-format +msgid "" +"Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n" +"\n" +msgstr "" +"Hãy sử dụng « -Wl,tùy_chọn » để gửi tuỳ chọn đó cho chương trình dịch mã số.\n" +"\n" + +#: gcc.c:8851 +#, c-format +msgid "too many arguments to %%:compare-debug-dump-opt" +msgstr "quá nhiều đối số tới %%:compare-debug-dump-opt" + +#: gcc.c:8918 +#, c-format +msgid "too many arguments to %%:compare-debug-self-opt" +msgstr "quá nhiều đối số tới %%:compare-debug-self-opt" + +#: gcc.c:8953 +#, c-format +msgid "too few arguments to %%:compare-debug-auxbase-opt" +msgstr "quá ít đối số tới %%:compare-debug-auxbase-opt" + +#: gcc.c:8956 +#, c-format +msgid "too many arguments to %%:compare-debug-auxbase-opt" +msgstr "quá nhiều đối số tới %%:compare-debug-auxbase-opt" + +#: gcc.c:8963 +#, c-format +msgid "argument to %%:compare-debug-auxbase-opt does not end in .gk" +msgstr "đối số tới %%:compare-debug-auxbase-opt không kết thúc bằng « .gk »" + +#: gcov.c:403 +#, c-format +msgid "" +"Usage: gcov [OPTION]... SOURCEFILE...\n" +"\n" +msgstr "" +"Sử dụng: gcov [TÙY_CHỌN]... TỆP_NGUỒN...\n" +"\n" + +#: gcov.c:404 +#, c-format +msgid "" +"Print code coverage information.\n" +"\n" +msgstr "" +"In ra thông tin về bao quát của mã\n" +"\n" + +#: gcov.c:405 +#, c-format +msgid " -h, --help Print this help, then exit\n" +msgstr " -h, --help Hiển thị trợ giúp này, sau đó thoát.\n" + +#: gcov.c:406 +#, c-format +msgid " -v, --version Print version number, then exit\n" +msgstr " -v, --version Hiển thị số thứ tự phiên bản, sau đó thoát.\n" + +#: gcov.c:407 +#, c-format +msgid " -a, --all-blocks Show information for every basic block\n" +msgstr " -a, --all-blocks Hiển thị thông tin cho mọi khối cơ bản\n" + +#: gcov.c:408 +#, c-format +msgid " -b, --branch-probabilities Include branch probabilities in output\n" +msgstr " -b, --branch-probabilities Bao gồm trong kết xuất các xác xuất nhánh\n" + +#: gcov.c:409 +#, c-format +msgid "" +" -c, --branch-counts Given counts of branches taken\n" +" rather than percentages\n" +msgstr " -c, --branch-counts Đưa ra số đếm các nhánh được theo, thay cho phần trăm\n" + +#: gcov.c:411 +#, c-format +msgid " -n, --no-output Do not create an output file\n" +msgstr " -n, --no-output Đừng tạo tập tin kết xuất\n" + +#: gcov.c:412 +#, c-format +msgid "" +" -l, --long-file-names Use long output file names for included\n" +" source files\n" +msgstr " -l, --long-file-names Dùng tên tập tin kết xuất dài cho tập tin nguồn được bao gồm\n" + +#: gcov.c:414 +#, c-format +msgid " -f, --function-summaries Output summaries for each function\n" +msgstr " -f, --function-summaries Xuất bản tóm tắt cho mỗi hàm\n" + +#: gcov.c:415 +#, c-format +msgid " -o, --object-directory DIR|FILE Search for object files in DIR or called FILE\n" +msgstr "" +" -o, --object-directory TMỤC|TỆP\n" +" Quét thư mục này hoặc tập tin được gọi này tìm tập tin đối tượng\n" + +#: gcov.c:416 +#, c-format +msgid " -p, --preserve-paths Preserve all pathname components\n" +msgstr " -p, --preserve-paths Bảo tồn tất cả các thành phần tên đường dẫn\n" + +#: gcov.c:417 +#, c-format +msgid " -u, --unconditional-branches Show unconditional branch counts too\n" +msgstr " -u, --unconditional-branches Cũng hiển thị số đếm các nhánh không điều khiển\n" + +#: gcov.c:418 +#, c-format +msgid "" +"\n" +"For bug reporting instructions, please see:\n" +"%s.\n" +msgstr "" +"\n" +"Để tìm hướng dẫn về thông báo lỗi, thăm địa chỉ:\n" +"%s.\n" + +# Literal: don't translate; Nghĩa chữ : dừng dịch +#: gcov.c:428 +#, c-format +msgid "gcov %s%s\n" +msgstr "gcov %s%s\n" + +#: gcov.c:432 +#, c-format +msgid "" +"This is free software; see the source for copying conditions.\n" +"There is NO warranty; not even for MERCHANTABILITY or \n" +"FITNESS FOR A PARTICULAR PURPOSE.\n" +"\n" +msgstr "" +"Đây là phần mềm tự do : bạn có quyền sửa đổi và phát hành lại nó.\n" +"KHÔNG CÓ BẢO HÀNH GÌ CẢ, THẬM CHÍ KHÔNG CÓ BẢO ĐẢM ĐƯỢC NGỤ Ý\n" +"KHẢ NĂNG BÁN HAY KHẢ NĂNG LÀM ĐƯỢC VIỆC DỨT KHOÁT.\n" +"\n" + +#: gcov.c:528 +#, c-format +msgid "%s:no functions found\n" +msgstr "%s: không tìm thấy hàm\n" + +#: gcov.c:560 gcov.c:588 +#, c-format +msgid "\n" +msgstr "\n" + +#: gcov.c:575 +#, c-format +msgid "%s:creating '%s'\n" +msgstr "%s: đang tạo « %s »\n" + +#: gcov.c:579 +#, c-format +msgid "%s:error writing output file '%s'\n" +msgstr "%s: gặp lỗi khi ghi tập tin kết xuất « %s »\n" + +#: gcov.c:584 +#, c-format +msgid "%s:could not open output file '%s'\n" +msgstr "%s: không thể mở tập tin kết xuất « %s »\n" + +#: gcov.c:733 +#, c-format +msgid "%s:source file is newer than graph file '%s'\n" +msgstr "%s: tập tin nguồn vẫn mới hơn tập tin đồ thị « %s »\n" + +#: gcov.c:738 +#, c-format +msgid "(the message is only displayed one per source file)\n" +msgstr "(thông điệp này được hiển thị chỉ một lần cho mỗi tập tin nguồn)\n" + +#: gcov.c:762 +#, c-format +msgid "%s:cannot open graph file\n" +msgstr "%s: không thể mở tập tin đồ thị\n" + +#: gcov.c:768 +#, c-format +msgid "%s:not a gcov graph file\n" +msgstr "%s: không phải là một tập tin đồ thị gcov\n" + +#: gcov.c:781 +#, c-format +msgid "%s:version '%.4s', prefer '%.4s'\n" +msgstr "%s: phiên bản « %.4s » mà thích « %.4s » hơn\n" + +#: gcov.c:833 +#, c-format +msgid "%s:already seen blocks for '%s'\n" +msgstr "%s: đã thấy khối cho « %s »\n" + +#: gcov.c:951 +#, c-format +msgid "%s:corrupted\n" +msgstr "%s: bị hỏng\n" + +#: gcov.c:1027 +#, c-format +msgid "%s:cannot open data file, assuming not executed\n" +msgstr "%s: không thể mở tập tin dữ liệu, giả sử là nó chưa thực hiện\n" + +#: gcov.c:1034 +#, c-format +msgid "%s:not a gcov data file\n" +msgstr "%s: không phải là một tập tin dữ liệu gcov\n" + +#: gcov.c:1047 +#, c-format +msgid "%s:version '%.4s', prefer version '%.4s'\n" +msgstr "%s: phiên bản « %.4s » mà thích phiên bản « %.4s » hơn\n" + +#: gcov.c:1053 +#, c-format +msgid "%s:stamp mismatch with graph file\n" +msgstr "%s: dấu hiệu không tương ứng với tập tin đồ thị\n" + +#: gcov.c:1083 +#, c-format +msgid "%s:unknown function '%u'\n" +msgstr "%s: không rõ hàm « %u »\n" + +#: gcov.c:1097 +#, c-format +msgid "%s:profile mismatch for '%s'\n" +msgstr "%s: hồ sơ không tương ứng với « %s »\n" + +#: gcov.c:1116 +#, c-format +msgid "%s:overflowed\n" +msgstr "%s: bị tràn\n" + +#: gcov.c:1140 +#, c-format +msgid "%s:'%s' lacks entry and/or exit blocks\n" +msgstr "%s: « %s » còn thiếu khối đi vào và/hay đi ra\n" + +#: gcov.c:1145 +#, c-format +msgid "%s:'%s' has arcs to entry block\n" +msgstr "%s: « %s » có cung đến khối đi vào\n" + +#: gcov.c:1153 +#, c-format +msgid "%s:'%s' has arcs from exit block\n" +msgstr "%s: « %s » có cung từ khối đi vào\n" + +#: gcov.c:1361 +#, c-format +msgid "%s:graph is unsolvable for '%s'\n" +msgstr "%s: đồ thị không thể giải được cho « %s »\n" + +#: gcov.c:1441 +#, c-format +msgid "%s '%s'\n" +msgstr "%s « %s »\n" + +#: gcov.c:1444 +#, c-format +msgid "Lines executed:%s of %d\n" +msgstr "Dòng được thực hiện: %s trên %d\n" + +#: gcov.c:1448 +#, c-format +msgid "No executable lines\n" +msgstr "Không có dòng thực thị\n" + +#: gcov.c:1454 +#, c-format +msgid "Branches executed:%s of %d\n" +msgstr "Nhánh được thực hiện: %s trên %d\n" + +#: gcov.c:1458 +#, c-format +msgid "Taken at least once:%s of %d\n" +msgstr "Đã lấy ít nhất một lần: %s trên %d\n" + +#: gcov.c:1464 +#, c-format +msgid "No branches\n" +msgstr "Không có nhánh\n" + +#: gcov.c:1466 +#, c-format +msgid "Calls executed:%s of %d\n" +msgstr "Cuộc gọi được thực hiện: %s trên %d\n" + +#: gcov.c:1470 +#, c-format +msgid "No calls\n" +msgstr "Không có cuộc gọi\n" + +#: gcov.c:1630 +#, c-format +msgid "%s:no lines for '%s'\n" +msgstr "%s: không có dòng cho « %s »\n" + +#: gcov.c:1825 +#, c-format +msgid "call %2d returned %s\n" +msgstr "cuộc gọi %2d trả lại %s\n" + +#: gcov.c:1830 +#, c-format +msgid "call %2d never executed\n" +msgstr "cuộc gọi %2d chưa bao giờ thực hiện\n" + +#: gcov.c:1835 +#, c-format +msgid "branch %2d taken %s%s\n" +msgstr "nhánh %2d được lấy %s%s\n" + +#: gcov.c:1839 +#, c-format +msgid "branch %2d never executed\n" +msgstr "nhánh %2d chưa bao giờ thực hiện\n" + +#: gcov.c:1844 +#, c-format +msgid "unconditional %2d taken %s\n" +msgstr "%2d không điều kiện được lấy %s\n" + +#: gcov.c:1847 +#, c-format +msgid "unconditional %2d never executed\n" +msgstr "%2d không điều kiện chưa bao giờ thực hiện\n" + +#: gcov.c:1883 +#, c-format +msgid "%s:cannot open source file\n" +msgstr "%s: không thể mở tập tin nguồn\n" + +#: gcse.c:3952 +msgid "PRE disabled" +msgstr "PRE bị tắt" + +#: gcse.c:4433 +msgid "GCSE disabled" +msgstr "GCSE bị tắt" + +#: gcse.c:4950 +msgid "const/copy propagation disabled" +msgstr "Chức năng lan truyền hằng số / sao chép bị tắt" + +#: incpath.c:76 +#, c-format +msgid "ignoring duplicate directory \"%s\"\n" +msgstr "đang bỏ qua thư mục trùng « %s »\n" + +#: incpath.c:79 +#, c-format +msgid " as it is a non-system directory that duplicates a system directory\n" +msgstr " vì nó là một thư mục không phải hệ thống mà nhân đôi một thư mục hệ thống\n" + +#: incpath.c:83 +#, c-format +msgid "ignoring nonexistent directory \"%s\"\n" +msgstr "đang bỏ qua thư mục không tồn tại « %s »\n" + +#: incpath.c:345 +#, c-format +msgid "#include \"...\" search starts here:\n" +msgstr "#include \"...\" việc tìm kiếm bắt đầu ở đây:\n" + +#: incpath.c:349 +#, c-format +msgid "#include <...> search starts here:\n" +msgstr "#include <...> việc tìm kiếm bắt đầu ở đây:\n" + +#: incpath.c:354 +#, c-format +msgid "End of search list.\n" +msgstr "Kết thúc danh sách tìm kiếm.\n" + +#. Opening quotation mark. +#: intl.c:64 +msgid "`" +msgstr "« " + +#. Closing quotation mark. +#: intl.c:67 +msgid "'" +msgstr " »" + +#: langhooks.c:355 +msgid "At top level:" +msgstr "Ở cấp đầu :" + +#: langhooks.c:375 cp/error.c:2690 +#, c-format +msgid "In member function %qs" +msgstr "Trong hàm bộ phận %qs" + +#: langhooks.c:379 cp/error.c:2693 +#, c-format +msgid "In function %qs" +msgstr "Trong hàm %qs" + +#: langhooks.c:430 cp/error.c:2643 +#, c-format +msgid " inlined from %qs at %s:%d:%d" +msgstr " trực tiếp từ %qs tại %s:%d:%d" + +#: langhooks.c:435 cp/error.c:2648 +#, c-format +msgid " inlined from %qs at %s:%d" +msgstr " trực tiếp từ %qs tại %s:%d" + +#: langhooks.c:441 cp/error.c:2654 +#, c-format +msgid " inlined from %qs" +msgstr " trực tiếp từ %qs" + +#: loop-iv.c:2966 tree-ssa-loop-niter.c:1876 +msgid "assuming that the loop is not infinite" +msgstr "giả sử rằng vòng lặp có giới hạn" + +#: loop-iv.c:2967 tree-ssa-loop-niter.c:1877 +msgid "cannot optimize possibly infinite loops" +msgstr "không thể tối ưu hoá vòng lặp có thể là vô hạn" + +#: loop-iv.c:2975 tree-ssa-loop-niter.c:1881 +msgid "assuming that the loop counter does not overflow" +msgstr "giả sử rằng bộ đếm vòng lặp không bị tràn" + +#: loop-iv.c:2976 tree-ssa-loop-niter.c:1882 +msgid "cannot optimize loop, the loop counter may overflow" +msgstr "không thể tối ưu hoá vòng lặp vì bộ đếm vòng lặp có thể bị tràn" + +#: lto-wrapper.c:184 +#, c-format +msgid "%s terminated with signal %d [%s], core dumped" +msgstr "%s bị chấm dứt với tín hiệu %d [%s], cũng đổ lõi" + +#: lto-wrapper.c:187 +#, c-format +msgid "%s terminated with signal %d [%s]" +msgstr "%s bị chấm dứt với tín hiệu %d [%s]" + +#: lto-wrapper.c:192 collect2.c:2011 +#, gcc-internal-format +msgid "%s returned %d exit status" +msgstr "%s trả lại trạng thái thoát %d" + +#: lto-wrapper.c:207 +#, c-format +msgid "deleting LTRANS file %s" +msgstr "đang xoá bỏ tập tin LTRANS %s" + +#: lto-wrapper.c:229 +#, c-format +msgid "failed to open %s" +msgstr "không mở được %s" + +#: lto-wrapper.c:234 +#, c-format +msgid "could not write to temporary file %s" +msgstr "không thể ghi vào tập tin tạm thời %s" + +#: lto-wrapper.c:296 lto-wrapper.c:377 +#, c-format +msgid "invalid LTO mode" +msgstr "sai lập chế độ LTO" + +# Literal: don't translate; Nghĩa chữ : dừng dịch +#: lto-wrapper.c:368 +#, c-format +msgid "fopen: %s" +msgstr "fopen: %s" + +#. What to print when a switch has no documentation. +#: opts.c:341 +msgid "This switch lacks documentation" +msgstr "Cái chuyển này còn thiếu tài liệu hướng dẫn" + +#: opts.c:1310 +msgid "[enabled]" +msgstr "[đã bật]" + +#: opts.c:1310 +msgid "[disabled]" +msgstr "[bị tắt]" + +#: opts.c:1325 +#, c-format +msgid " No options with the desired characteristics were found\n" +msgstr " Không tìm thấy tuỳ chọn có những đặc điểm đã muốn\n" + +#: opts.c:1334 +#, c-format +msgid " None found. Use --help=%s to show *all* the options supported by the %s front-end\n" +msgstr " Không tìm thấy. Hãy sử dụng « --help=%s » để hiển thị * tất cả * các tuỳ chọn được giao diện %s hỗ trợ\n" + +#: opts.c:1340 +#, c-format +msgid " All options with the desired characteristics have already been displayed\n" +msgstr " Đã hiển thị tất cả các tuỳ chọn có những đặc điểm đã muốn\n" + +#: opts.c:1394 +msgid "The following options are target specific" +msgstr "Theo đây có những tuỳ chọn đặc trưng cho đích" + +#: opts.c:1397 +msgid "The following options control compiler warning messages" +msgstr "Theo đây có những tuỳ chọn điều khiển các thông điệp cảnh báo của bộ biên dịch" + +#: opts.c:1400 +msgid "The following options control optimizations" +msgstr "Theo đây có những tuỳ chọn điều khiển việc tối ưu hoá" + +#: opts.c:1403 opts.c:1442 +msgid "The following options are language-independent" +msgstr "Theo đây có những tuỳ chọn không phụ thuộc vào ngôn ngữ" + +#: opts.c:1406 +msgid "The --param option recognizes the following as parameters" +msgstr "Tuỳ chọn « --param » nhận ra những điều theo đây như là tham số" + +#: opts.c:1412 +msgid "The following options are specific to just the language " +msgstr "Theo đây có những tuỳ chọn đặc trưng cho chỉ ngôn ngữ " + +#: opts.c:1414 +msgid "The following options are supported by the language " +msgstr "Theo đây có những tuỳ chọn được hỗ trợ bởi ngôn ngữ " + +#: opts.c:1425 +msgid "The following options are not documented" +msgstr "Theo đây có những tuỳ chọn không có tài liệu diễn tả" + +#: opts.c:1427 +msgid "The following options take separate arguments" +msgstr "Theo đây có những tuỳ chọn chấp nhận các đối số riêng" + +#: opts.c:1429 +msgid "The following options take joined arguments" +msgstr "Theo đây có những tuỳ chọn chấp nhận các đối số nối lại" + +#: opts.c:1440 +msgid "The following options are language-related" +msgstr "Theo đây có những tuỳ chọn liên quan đến ngôn ngữ" + +#: opts.c:1600 +#, c-format +msgid "warning: --help argument %.*s is ambiguous, please be more specific\n" +msgstr "cảnh báo : đối số « --help » %.*s vẫn mơ hồ, hãy chính xác hơn\n" + +#: opts.c:1608 +#, c-format +msgid "warning: unrecognized argument to --help= option: %.*s\n" +msgstr "cảnh báo : không nhận ra đối số tới tuỳ chọn « --help= »: %.*s\n" + +#: plugin.c:765 +msgid "Event" +msgstr "Dữ kiện" + +#: plugin.c:765 +msgid "Plugins" +msgstr "Phần bổ sung" + +#: reload.c:3821 +msgid "unable to generate reloads for:" +msgstr "không thể tạo ra việc nạp lại cho :" + +#: reload1.c:2158 +msgid "this is the insn:" +msgstr "đây là lệnh:" + +#. It's the compiler's fault. +#: reload1.c:5693 +msgid "could not find a spill register" +msgstr "không tìm thấy một thanh ghi làm tràn" + +#. It's the compiler's fault. +#: reload1.c:7678 +msgid "VOIDmode on an output" +msgstr "Chế độ VOIDmode trên một đầu ra" + +#: reload1.c:8433 +msgid "Failure trying to reload:" +msgstr "Không thành công khi thử nạp lại:" + +#: rtl-error.c:120 +msgid "unrecognizable insn:" +msgstr "không nhận ra lệnh:" + +#: rtl-error.c:122 +msgid "insn does not satisfy its constraints:" +msgstr "lệnh không thỏa những ràng buộc của nó :" + +#: timevar.c:411 +msgid "" +"\n" +"Execution times (seconds)\n" +msgstr "" +"\n" +"Thời gian thực hiện (giây)\n" + +#. Print total time. +#: timevar.c:469 +msgid " TOTAL :" +msgstr " TỔNG :" + +#: timevar.c:502 +#, c-format +msgid "time in %s: %ld.%06ld (%ld%%)\n" +msgstr "thời gian theo %s: %ld.%06ld (%ld%%)\n" + +#: tlink.c:383 +#, c-format +msgid "collect: reading %s\n" +msgstr "tập hợp: đang đọc %s\n" + +#: tlink.c:477 +#, c-format +msgid "removing .rpo file" +msgstr "đang gỡ bỏ tập tin .rpo" + +#: tlink.c:479 +#, c-format +msgid "renaming .rpo file" +msgstr "đang thay tên tập tin .rpo" + +#: tlink.c:533 +#, c-format +msgid "collect: recompiling %s\n" +msgstr "tập hợp: đang biên dịch lại %s\n" + +#: tlink.c:740 +#, c-format +msgid "collect: tweaking %s in %s\n" +msgstr "tập hợp: đang điều chỉnh %s trong %s\n" + +#: tlink.c:790 +#, c-format +msgid "collect: relinking\n" +msgstr "tập hợp: đang liên kết lại\n" + +#: toplev.c:625 +#, c-format +msgid "unrecoverable error" +msgstr "lỗi không thể phục hồi được" + +#: toplev.c:1217 +#, c-format +msgid "" +"%s%s%s %sversion %s (%s)\n" +"%s\tcompiled by GNU C version %s, " +msgstr "" +"%s%s%s %sversion %s (%s)\n" +"%s\tbiên dịch bằng GNU C phiên bản %s, " + +#: toplev.c:1219 +#, c-format +msgid "%s%s%s %sversion %s (%s) compiled by CC, " +msgstr "%s%s%s %sversion %s (%s) biên dịch bằng CC, " + +#: toplev.c:1223 +#, c-format +msgid "GMP version %s, MPFR version %s, MPC version %s\n" +msgstr "GMP phiên bản %s, MPFR phiên bản %s, MPC phiên bản %s\n" + +#: toplev.c:1225 +#, c-format +msgid "%s%swarning: %s header version %s differs from library version %s.\n" +msgstr "%s%swarning: phiên bản phần đầu %s %s vẫn khác với phiên bản thư viện %s.\n" + +#: toplev.c:1227 +#, c-format +msgid "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n" +msgstr "%s%sGGC tìm ra: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n" + +#: toplev.c:1390 +msgid "options passed: " +msgstr "tuỳ chọn được gửi: " + +#: toplev.c:1425 +msgid "options enabled: " +msgstr "tuỳ chọn đã bật: " + +#: toplev.c:1560 +#, c-format +msgid "created and used with differing settings of '%s'" +msgstr "được tạo và sử dụng với thiết lập khác nhau của « %s »" + +#: toplev.c:1562 +msgid "out of memory" +msgstr "không đủ bộ nhớ" + +#: toplev.c:1577 +msgid "created and used with different settings of -fpic" +msgstr "được tạo và sử dụng với thiết lập khác nhau của « -fpic »" + +#: toplev.c:1579 +msgid "created and used with different settings of -fpie" +msgstr "được tạo và sử dụng với thiết lập khác nhau của « -fpie »" + +#: tree-vrp.c:6503 +msgid "assuming signed overflow does not occur when simplifying && or || to & or |" +msgstr "giả sử rằng sự tràn đã ký không xảy ra khi giản dị hoá && hoặc || tới & hoặc |" + +#: tree-vrp.c:6507 +msgid "assuming signed overflow does not occur when simplifying ==, != or ! to identity or ^" +msgstr "giả sử rằng sự tràn đã ký không xảy ra khi giản dị hoá ==, != hoặc ! tới đặc tính hoặc ^" + +#: cif-code.def:39 +msgid "function not considered for inlining" +msgstr "hàm không phải được tính để chèn vào trực tiếp" + +#. Inlining failed owing to unavailable function body. +#: cif-code.def:42 +msgid "function body not available" +msgstr "thân hàm không sẵn sàng" + +#: cif-code.def:45 +msgid "redefined extern inline functions are not considered for inlining" +msgstr "hàm trực tiếp bên ngoài đã xác định lại thì không phải được tính để chèn vào trực tiếp" + +#. Function is not inlinable. +#: cif-code.def:49 +msgid "function not inlinable" +msgstr "hàm không thể chèn vào trực tiếp" + +#. Function is not an inlining candidate. +#: cif-code.def:52 +msgid "function not inline candidate" +msgstr "hàm không phải là ứng xử để chèn vào trực tiếp" + +#: cif-code.def:56 +msgid "--param large-function-growth limit reached" +msgstr "đã tới giới hạn « --param large-function-growth »" + +#: cif-code.def:58 +msgid "--param large-stack-frame-growth limit reached" +msgstr "đã tới giới hạn « --param large-stack-frame-growth »" + +#: cif-code.def:60 +msgid "--param max-inline-insns-single limit reached" +msgstr "đã tới giới hạn « --param max-inline-insns-single »" + +#: cif-code.def:62 +msgid "--param max-inline-insns-auto limit reached" +msgstr "đã tới giới hạn « --param max-inline-insns-auto »" + +#: cif-code.def:64 +msgid "--param inline-unit-growth limit reached" +msgstr "đã tới giới hạn « --param inline-unit-growth »" + +#. Recursive inlining. +#: cif-code.def:67 +msgid "recursive inlining" +msgstr "chèn vào trực tiếp một cách đệ quy" + +#. Call is unlikely. +#: cif-code.def:70 +msgid "call is unlikely and code size would grow" +msgstr "cuộc gọi không chắc, và kích cỡ mã sẽ tăng lại" + +#: cif-code.def:74 +msgid "function not declared inline and code size would grow" +msgstr "hàm không phải được tuyên bố trực tiếp, và kích cỡ mã sẽ tăng lại" + +#: cif-code.def:78 +msgid "optimizing for size and code size would grow" +msgstr "đang tối ưu hoá cho kích cỡ, và kích cỡ mã sẽ tăng lại" + +#. Inlining failed because of mismatched options or arguments. +#: cif-code.def:81 +msgid "target specific option mismatch" +msgstr "tuỳ chọn đặc trưng cho đích vẫn không tương ứng" + +#: cif-code.def:82 +msgid "mismatched arguments" +msgstr "các đối số không tương ứng với nhau" + +#: cif-code.def:86 +msgid "originally indirect function call not considered for inlining" +msgstr "cuộc gọi hàm gián tiếp lần đầu tiên không phải được tính để chèn vào trực tiếp" + +#. The remainder are real diagnostic types. +#: diagnostic.def:33 +msgid "fatal error: " +msgstr "lỗi nghiêm trọng: " + +#: diagnostic.def:34 +msgid "internal compiler error: " +msgstr "lỗi biên dịch nôi bộ : " + +#: diagnostic.def:35 +msgid "error: " +msgstr "lỗi: " + +#: diagnostic.def:36 +msgid "sorry, unimplemented: " +msgstr "tiếc là chưa thực hiện: " + +#: diagnostic.def:37 +msgid "warning: " +msgstr "cảnh báo : " + +#: diagnostic.def:38 +msgid "anachronism: " +msgstr "lỗi thời: " + +#: diagnostic.def:39 +msgid "note: " +msgstr "ghi chú : " + +#: diagnostic.def:40 +msgid "debug: " +msgstr "gỡ rối: " + +# Name: don't translate; Tên: đừng dịch +#. These two would be re-classified as DK_WARNING or DK_ERROR, so the +#. prefix does not matter. +#: diagnostic.def:43 +msgid "pedwarn: " +msgstr "pedwarn: " + +# Name: don't translate; Tên: đừng dịch +#: diagnostic.def:44 +msgid "permerror: " +msgstr "permerror: " + +#: params.def:48 +msgid "The threshold ratio between current and hottest structure counts" +msgstr "Tỷ lệ ngưỡng giữa số đếm cấu trúc hiện thời và nóng nhất" + +#: params.def:55 +msgid "Maximal estimated outcome of branch considered predictable" +msgstr "Kết quả tối đa ước lượng của nhánh được thấy là dự đoán được" + +#: params.def:72 +msgid "The maximum number of instructions in a single function eligible for inlining" +msgstr "Số tối đa các lệnh trong một lệnh riêng lẻ mà thích hợp với việc chèn vào trực tiếp" + +#: params.def:84 +msgid "The maximum number of instructions when automatically inlining" +msgstr "Số tối đa các lệnh khi tự động chèn vào trực tiếp" + +#: params.def:89 +msgid "The maximum number of instructions inline function can grow to via recursive inlining" +msgstr "Số tối đa các lệnh đến đó hàm trực tiếp có thể tới bằng cách chèn vào trực tiếp một cách đệ quy" + +#: params.def:94 +msgid "The maximum number of instructions non-inline function can grow to via recursive inlining" +msgstr "Số tối đa các lệnh đến đó hàm không phải trực tiếp có thể tới bằng cách chèn vào trực tiếp một cách đệ quy" + +#: params.def:99 +msgid "The maximum depth of recursive inlining for inline functions" +msgstr "Độ sâu tối đa của việc chèn vào trực tiếp một cách đệ quy cho hàm trực tiếp" + +#: params.def:104 +msgid "The maximum depth of recursive inlining for non-inline functions" +msgstr "Độ sâu tối đa của việc chèn vào trực tiếp một cách đệ quy cho hàm không phải trực tiếp" + +#: params.def:109 +msgid "Inline recursively only when the probability of call being executed exceeds the parameter" +msgstr "Chèn vào trực tiếp một cách đệ quy chỉ khi xác xuất cuộc gọi được thực hiện cũng vượt quá tham số" + +#: params.def:117 +msgid "The maximum number of nested indirect inlining performed by early inliner" +msgstr "Số tối đa các lần chèn vào trực tiếp loại gián tiếp lồng nhau được làm bởi bộ chèn vào trực tiếp sớm" + +#: params.def:124 +msgid "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling" +msgstr "Dùng « -fvariable-expansion-in-unroller » thì số tối đa các lần mở rộng một biến nào đó trong khi bỏ cuộn vòng lặp" + +#: params.def:130 +msgid "If -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization" +msgstr "Dùng « -ftree-vectorize » thì biên giới vòng lặp tối thiểu của một vòng lặp cần tính để véc-tơ hoá" + +#: params.def:141 +msgid "The maximum number of instructions to consider to fill a delay slot" +msgstr "Số tối đa các lệnh cần tính để điền vào một khe đợi" + +#: params.def:152 +msgid "The maximum number of instructions to consider to find accurate live register information" +msgstr "Số tối đa các lệnh cần tính để tìm thông tin thanh ghi vẫn hiện thời và chính xác" + +#: params.def:162 +msgid "The maximum length of scheduling's pending operations list" +msgstr "Chiều dài tối đa của danh sách các thao tác bị hoãn của tiến trình định thời" + +#: params.def:167 +msgid "The size of function body to be considered large" +msgstr "Kích cỡ thân hàm cần thấy là lớn" + +#: params.def:171 +msgid "Maximal growth due to inlining of large function (in percent)" +msgstr "Độ tăng lên tối đa (theo phần trăm) do chèn hàm lớn vào trực tiếp" + +#: params.def:175 +msgid "The size of translation unit to be considered large" +msgstr "Kích cỡ đơn vị thông dịch cần thấy là lớn" + +#: params.def:179 +msgid "How much can given compilation unit grow because of the inlining (in percent)" +msgstr "Độ tăng lên (theo phần trăm) được phép cho đơn vị biên dịch đưa ra do việc chèn vào trực tiếp" + +#: params.def:183 +msgid "How much can given compilation unit grow because of the interprocedural constant propagation (in percent)" +msgstr "Độ tăng lên (theo phần trăm) được phép cho đơn vị biên dịch đưa ra do sự lan truyền bất biến thuộc liên quá trình" + +#: params.def:187 +msgid "Maximal estimated growth of function body caused by early inlining of single call" +msgstr "Độ tăng lên tối đa ước lượng của thân hàm do chèn vào trực tiếp sớm một cuộc gọi riêng lẻ" + +#: params.def:191 +msgid "The size of stack frame to be considered large" +msgstr "Kích cỡ khung đống nên thấy là lớn" + +#: params.def:195 +msgid "Maximal stack frame growth due to inlining (in percent)" +msgstr "Độ tăng lên khung đống tối đa (theo phần trăm) do chèn vào trực tiếp" + +#: params.def:202 +msgid "The maximum amount of memory to be allocated by GCSE" +msgstr "Vùng nhớ tối đa cho GCSE cấp phát" + +#: params.def:213 +msgid "The threshold ratio for performing partial redundancy elimination after reload" +msgstr "Tỷ lệ ngững để thực hiện việc khử bộ phận sự thửa sau khi nạp lại" + +#: params.def:220 +msgid "The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload" +msgstr "Tỷ lệ ngững của số đếm lần thực hiện cạnh tới hạn cũng cho phép thực hiện việc khử sự thửa sau khi nạp lại" + +#: params.def:231 +msgid "The maximum number of instructions to consider to unroll in a loop" +msgstr "Số tối đa các lệnh cần tính nên bỏ cuộn trong một vòng lặp" + +#: params.def:237 +msgid "The maximum number of instructions to consider to unroll in a loop on average" +msgstr "Số tối đa các lệnh trung bình cần tính nên bỏ cuộn trong một vòng lặp" + +#: params.def:242 +msgid "The maximum number of unrollings of a single loop" +msgstr "Số tối đa các lần bỏ cuộn một vòng lặp riêng lẻ" + +#: params.def:247 +msgid "The maximum number of insns of a peeled loop" +msgstr "Số tối đa các lệnh của một vòng lặp được lột" + +#: params.def:252 +msgid "The maximum number of peelings of a single loop" +msgstr "Số tối đa các lần lột một vòng lặp riêng lẻ" + +#: params.def:257 +msgid "The maximum number of insns of a completely peeled loop" +msgstr "Số tối đa các lệnh của một vòng lặp được lột hoàn toàn" + +#: params.def:262 +msgid "The maximum number of peelings of a single loop that is peeled completely" +msgstr "Số tối đa các lần lột một vòng lặp riêng lẻ được lột hoàn toàn" + +#: params.def:267 +msgid "The maximum number of insns of a peeled loop that rolls only once" +msgstr "Số tối đa các lệnh của một vòng lặp được lột mà cuộn chỉ một lần" + +#: params.def:272 +msgid "The maximum depth of a loop nest we completely peel" +msgstr "Độ sâu tối đa của một bộ vòng lặp xếp lồng vào nhau được chúng ta lột hoàn toàn" + +#: params.def:278 +msgid "The maximum number of insns of an unswitched loop" +msgstr "Số tối đa các lệnh của một vòng lặp chưa chuyển đổi nhánh" + +#: params.def:283 +msgid "The maximum number of unswitchings in a single loop" +msgstr "Số tối đa các lần hủy chuyển đổi nhánh trong một vòng lặp riêng lẻ" + +#: params.def:290 +msgid "Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates" +msgstr "Đóng kết với số các lần lặp lại được ước lượng bởi thuật toán phân tích số sức mạnh vũ phu các lần lặp lại " + +#: params.def:296 +msgid "Bound on the cost of an expression to compute the number of iterations" +msgstr "Đóng kết với giá của một biểu tượng để tính số các lần lặp lại" + +#: params.def:302 +msgid "A factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop" +msgstr "Một hệ số để điều hưởng giới hạn trên được bộ định thời mô-đu-lô swing sử dụng để định thời một vòng lặp" + +#: params.def:306 +msgid "The number of cycles the swing modulo scheduler considers when checking conflicts using DFA" +msgstr "Số các chu kỳ được bộ định thời mô-đu-lô swing tính khi kiểm tra sự xung đột bằng DFA" + +#: params.def:310 +msgid "A threshold on the average loop count considered by the swing modulo scheduler" +msgstr "Một ngưỡng trên số trung bình đếm vòng lặp được bộ định thời mô-đu-lô swing tính" + +#: params.def:315 +msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot" +msgstr "Chọn phân số của số tối đa đếm lần lặp lại khối cơ bản trong chương trình mà cũng quy định rằng khối cơ bản cần phải được thấy là nóng" + +#: params.def:319 +msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot" +msgstr "Chọn phân số của tần số tối đa lần thực hiện khối cơ bản trong hàm mà cũng quy định rằng khối cơ bản cần phải được thấy là nóng" + +#: params.def:324 +msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment" +msgstr "Chọn phân số của tần số tối đa lần thực hiện khối cơ bản trong hàm mà cũng quy định rằng khối cơ bản được xếp hàng" + +#: params.def:329 +msgid "Loops iterating at least selected number of iterations will get loop alignement." +msgstr "Vòng lặp nào lặp lại ít nhất số lần lặp lại được chọn thì được xếp hàng các vòng lặp" + +#: params.def:345 +msgid "The maximum number of loop iterations we predict statically" +msgstr "Số tối đa các lần lặp lại vòng lặp dự đoán một cách tĩnh" + +#: params.def:349 +msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available" +msgstr "Phần trăm hàm (tăng cấp theo tần số thực hiện) mà phải được bao quát bởi việc tạo vết. Được sử dụng khi có sẵn sàng thông tin phản hồi từ hồ sơ" + +#: params.def:353 +msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available" +msgstr "Phần trăm hàm (tăng cấp theo tần số thực hiện) mà phải được bao quát bởi việc tạo vết. Được sử dụng khi không có sẵn sàng thông tin phản hồi từ hồ sơ" + +#: params.def:357 +msgid "Maximal code growth caused by tail duplication (in percent)" +msgstr "Độ tâng lên tối đa (theo phần trăm) do đuôi bị nhân đôi" + +#: params.def:361 +msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent)" +msgstr "Dừng tăng lên ngược nếu xác xuất ngược có cạnh tốt nhất vẫn nhỏ hơn ngưỡng này (theo phần trăm)" + +#: params.def:365 +msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available" +msgstr "Dừng tăng lên tiếp nếu xác xuất có cạnh tốt nhất vẫn nhỏ hơn ngưỡng này (theo phần trăm). Được sử dụng khi có sẵn sàng thông tin phản hồi từ hồ sơ" + +#: params.def:369 +msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available" +msgstr "Dừng tăng lên tiếp nếu xác xuất có cạnh tốt nhất vẫn nhỏ hơn ngưỡng này (theo phần trăm). Được sử dụng khi không có sẵn sàng thông tin phản hồi từ hồ sơ" + +#: params.def:375 +msgid "The maximum number of incoming edges to consider for crossjumping" +msgstr "Số tối đa các cạnh gửi đến cần tính để nhảy chéo" + +#: params.def:381 +msgid "The minimum number of matching instructions to consider for crossjumping" +msgstr "Số tối thiểu các lệnh tương ứng cần tính để nhảy chéo" + +#: params.def:387 +msgid "The maximum expansion factor when copying basic blocks" +msgstr "Hệ số mở rộng tối đa khi sao chép khối cơ bản" + +#: params.def:393 +msgid "The maximum number of insns to duplicate when unfactoring computed gotos" +msgstr "Số tối đa các lệnh cần nhân đôi khi gỡ bỏ hệ số khỏi goto đã tính" + +#: params.def:399 +msgid "The maximum length of path considered in cse" +msgstr "Chiều dài tối đa của đường dẫn được tính trong CSE" + +#: params.def:403 +msgid "The maximum instructions CSE process before flushing" +msgstr "Số tối đa các lệnh được CSE xử lý trước khi chuyển hết ra ngoài" + +#: params.def:410 +msgid "The minimum cost of an expensive expression in the loop invariant motion" +msgstr "Giá tối thiểu của một biểu tượng giá rất cao trong sự chuyển động bất biến vòng lặp" + +#: params.def:419 +msgid "Bound on number of candidates below that all candidates are considered in iv optimizations" +msgstr "Đóng kết với số các điều ứng cử dưới đó tất cả các điều ứng cử được tính trong sự tối ưu hoá iv" + +#: params.def:427 +msgid "Bound on number of iv uses in loop optimized in iv optimizations" +msgstr "Đóng kết với số các lần sử dụng iv trong vòng lặp được tối ưu hoá bằng sự tối ưu hoá iv" + +#: params.def:435 +msgid "If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization" +msgstr "Gặp tập hợp chứa số nhỏ hơn các điều ứng cử thì lúc nào cũng thử gỡ bỏ iv chưa dùng nào trong khi tối ưu hoá nó" + +#: params.def:440 +msgid "Bound on size of expressions used in the scalar evolutions analyzer" +msgstr "Đóng kết với kích cỡ biểu tượng được sử dụng trong bộ phân tích sự khai căn vô hướng" + +#: params.def:445 +msgid "Bound on the number of variables in Omega constraint systems" +msgstr "Đóng kết với số các biến trong hệ thống ràng buộc Omega" + +#: params.def:450 +msgid "Bound on the number of inequalities in Omega constraint systems" +msgstr "Đóng kết với số các bất đẳng thức trong hệ thống ràng buộc Omega" + +#: params.def:455 +msgid "Bound on the number of equalities in Omega constraint systems" +msgstr "Đóng kết với số các đẳng thức trong hệ thống ràng buộc Omega" + +#: params.def:460 +msgid "Bound on the number of wild cards in Omega constraint systems" +msgstr "Đóng kết với số các yếu tố đại diện trong hệ thống ràng buộc Omega" + +#: params.def:465 +msgid "Bound on the size of the hash table in Omega constraint systems" +msgstr "Đóng kết với kích cỡ của bảng chuỗi duy nhất trong hệ thống ràng buộc Omega" + +#: params.def:470 +msgid "Bound on the number of keys in Omega constraint systems" +msgstr "Đóng kết với số các khoá trong hệ thống ràng buộc Omega" + +#: params.def:475 +msgid "When set to 1, use expensive methods to eliminate all redundant constraints" +msgstr "Nếu lập thành 1 thì sử dụng phương pháp giá cao để loại trừ tất cả các ràng buộc thừa" + +#: params.def:480 +msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check" +msgstr "Đóng kết với số các sự kiểm tra lúc chạy được chèn bởi việc kiểm tra phiên bản vòng lặp để xếp hàng của bộ véc-tơ hoá" + +#: params.def:485 +msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check" +msgstr "Đóng kết với số các sự kiểm tra lúc chạy được chèn bởi việc kiểm tra phiên bản vòng lặp cho bí danh của bộ véc-tơ hoá" + +#: params.def:490 +msgid "The maximum memory locations recorded by cselib" +msgstr "Số tối đa các vị trí bộ nhớ được thư viện cselib ghi lưu" + +#: params.def:503 +msgid "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap" +msgstr "Sự mở rộng miền nhớ tối thiểu để gây ra tập hợp rác, theo phần trăm của kích cỡ miền nhớ hoàn toàn" + +#: params.def:508 +msgid "Minimum heap size before we start collecting garbage, in kilobytes" +msgstr "Sự mở rộng miền nhớ tối thiểu (theo kilô-byte) trước khi bắt đầu tập hợp rác" + +#: params.def:516 +msgid "The maximum number of instructions to search backward when looking for equivalent reload" +msgstr "Số tối đa các lệnh cần quét ngược khi tìm một sự nạp lại tương đương" + +#: params.def:521 params.def:531 +msgid "The maximum number of blocks in a region to be considered for interblock scheduling" +msgstr "Số tối đa các khối mỗi vùng cần tính để định thời giữa các khối" + +#: params.def:526 params.def:536 +msgid "The maximum number of insns in a region to be considered for interblock scheduling" +msgstr "Số tối đa các lệnh mỗi vùng cần tính để định thời giữa các khối" + +#: params.def:541 +msgid "The minimum probability of reaching a source block for interblock speculative scheduling" +msgstr "Xác xuất tối thiểu có thể tới một khối nguồn để định thời giữa các khối một cách lý thuyết có tính chất suy đoán" + +#: params.def:546 +msgid "The maximum number of iterations through CFG to extend regions" +msgstr "Số tối đa các lần lặp lại qua CFG để kéo dài vùng" + +#: params.def:551 +msgid "The maximum conflict delay for an insn to be considered for speculative motion" +msgstr "Khoảng đợi xung đột tối đa trước khi một lệnh được tính để di chuyển một cách lý thuyết có tính chất suy đoán" + +#: params.def:556 +msgid "The minimal probability of speculation success (in percents), so that speculative insn will be scheduled." +msgstr "Xác xuất tối thiểu (theo phần trăm) có suy đoán đúng, để định thời lệnh thuộc lý thuyết có tính chất suy đoán" + +#: params.def:561 +msgid "The maximum size of the lookahead window of selective scheduling" +msgstr "Kích cỡ tối đa của cửa sổ nhìn trước của việc định thời lựa chọn" + +#: params.def:566 +msgid "Maximum number of times that an insn could be scheduled" +msgstr "Số tối đa các lần có thể định thời một lệnh nào đó" + +#: params.def:571 +msgid "Maximum number of instructions in the ready list that are considered eligible for renaming" +msgstr "Số tối đa các lệnh trong danh sách sẵn sàng mà được thấy là thích hợp với chức năng thay đổi tên" + +#: params.def:576 +msgid "Minimal distance between possibly conflicting store and load" +msgstr "Khoảng cách tối thiểu giữa vị trí lưu và nạp có thể xung đột với nhau" + +#: params.def:581 +msgid "The maximum number of RTL nodes that can be recorded as combiner's last value" +msgstr "Số tối đa các nút RTL có thể ghi lưu như là giá trị cuối cùng của bộ kết hợp" + +#: params.def:589 +msgid "The upper bound for sharing integer constants" +msgstr "Biên giới trên để chia sẻ hằng số nguyên" + +#: params.def:608 +msgid "Minimum number of virtual mappings to consider switching to full virtual renames" +msgstr "Số tối thiểu các sự ánh xạ ảo cần suy tính nên chuyển đổi sang tên ảo đầy đủ" + +#: params.def:613 +msgid "Ratio between virtual mappings and virtual symbols to do full virtual renames" +msgstr "Tỷ lệ giữa sự ánh xạ ảo và ký hiệu ảo để thực hiện việc thay đổi tên ảo đầy đủ" + +#: params.def:618 +msgid "The lower bound for a buffer to be considered for stack smashing protection" +msgstr "Biên giới dưới của một vùng đệm được tính để bảo vệ chống đống bị đập tan ra" + +#: params.def:636 +msgid "Maximum number of statements allowed in a block that needs to be duplicated when threading jumps" +msgstr "Số tối đa các câu lệnh được phép trong một khối cần được nhân đôi khi sắp xếp bước nhảy theo nhánh" + +#: params.def:645 +msgid "Maximum number of fields in a structure before pointer analysis treats the structure as a single variable" +msgstr "Số tối đa các trường trong một cấu trúc trước khi tiến trình phân tích hàm trỏ thấy cấu trúc đó là một biến riêng lẻ" + +#: params.def:650 +msgid "The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass" +msgstr "Số tối đa các câu lệnh sẵn sàng đưa ra cần được tính bởi bộ định thời trong lần đầu tiên chạy thủ tục định thời" + +#: params.def:660 +msgid "The number of insns executed before prefetch is completed" +msgstr "Số các lệnh được thực hiện trước khi hoàn tất quá trình lấy sẵn (prefetch)" + +#: params.def:667 +msgid "The number of prefetches that can run at the same time" +msgstr "Số các quá trình lấy sẵn có thể chạy đồng thời" + +#: params.def:674 +msgid "The size of L1 cache" +msgstr "Kích cỡ của vùng nhớ tạm cấp 1" + +#: params.def:681 +msgid "The size of L1 cache line" +msgstr "Kích cỡ của đường vùng nhớ tạm cấp 1" + +#: params.def:688 +msgid "The size of L2 cache" +msgstr "Kích cỡ của vùng nhớ tạm cấp 2" + +#: params.def:699 +msgid "Whether to use canonical types" +msgstr "Có nên sử dụng loại hợp nguyên tắc hay không" + +#: params.def:704 +msgid "Maximum length of partial antic set when performing tree pre optimization" +msgstr "Chiều dài tối đa của tập hợp antic bộ phận khi thực hiện sự tối ưu hoá sẵn cây" + +#: params.def:714 +msgid "Maximum size of a SCC before SCCVN stops processing a function" +msgstr "Kích cỡ tối đa của một SCC trước khi SCCVN dừng xử lý một hàm" + +#: params.def:719 +msgid "Max loops number for regional RA" +msgstr "Số tối đa các vòng lặp cho RA thuộc miền" + +#: params.def:724 +msgid "Max size of conflict table in MB" +msgstr "Kích cỡ tối đa (theo MB) của bảng xung đột" + +#: params.def:729 +msgid "The number of registers in each class kept unused by loop invariant motion" +msgstr "Số các thanh ghi mỗi hạng còn lại chưa dùng do chuyển động bất biến vòng lặp" + +#: params.def:737 +msgid "The maximum ratio between array size and switch branches for a switch conversion to take place" +msgstr "Tỷ lệ tối đa giữa kích cỡ mảng và các nhánh chuyển đổi để chuyển đổi nhánh" + +#: params.def:745 +msgid "size of tiles for loop blocking" +msgstr "kích cỡ tile (đơn vị dữ liệu) để chặn vòng lặp" + +#: params.def:752 +msgid "maximum number of parameters in a SCoP" +msgstr "số tối đa các tham số trong một SCoP" + +#: params.def:759 +msgid "maximum number of basic blocks per function to be analyzed by Graphite" +msgstr "số tối đa các khối cơ bản mỗi hàm cần được Graphite phân tích" + +#: params.def:766 +msgid "Max basic blocks number in loop for loop invariant motion" +msgstr "số tối đa các khối cơ bản trong vòng lặp để chuyển động bất biến vòng lặp" + +#: params.def:772 +msgid "Maximum number of instructions in basic block to be considered for SLP vectorization" +msgstr "Số tối đa các lệnh trong khối cơ bản cần tính để véc-tơ hoá SLP" + +#: params.def:777 +msgid "Min. ratio of insns to prefetches to enable prefetching for a loop with an unknown trip count" +msgstr "Tỷ lệ tối thiểu giữa các lệnh và các lần lấy sẵn để hiệu lực lấy sẵn cho một vòng lặp không rõ số đếm lần đi qua" + +#: params.def:783 +msgid "Min. ratio of insns to mem ops to enable prefetching in a loop" +msgstr "Tỷ lệ tối thiểu giữa các lệnh và các thao tác vùng nhớ để hiệu lực lấy sẵn trong một vòng lặp" + +#: params.def:790 +msgid "Max. size of var tracking hash tables" +msgstr "Kích cỡ tối đa của bảng chuỗi duy nhất theo dõi var" + +#: params.def:797 +msgid "The minimum UID to be used for a nondebug insn" +msgstr "UID tối thiểu cần sử dụng cho một lệnh không gỡ rối" + +#: params.def:802 +msgid "Maximum allowed growth of size of new parameters ipa-sra replaces a pointer to an aggregate with" +msgstr "Độ tăng lên tối đa được pháp của kích cỡ tham số mới ipa-sra thì thay thế một hàm trỏ theo một chiều rộng tập hợp" + +#: config/alpha/alpha.c:5135 +#, c-format +msgid "invalid %%H value" +msgstr "giá trị %%H sai" + +#: config/alpha/alpha.c:5156 config/bfin/bfin.c:1683 +#, c-format +msgid "invalid %%J value" +msgstr "giá trị %%J sai" + +#: config/alpha/alpha.c:5186 config/ia64/ia64.c:4975 +#, c-format +msgid "invalid %%r value" +msgstr "giá trị %%r sai" + +#: config/alpha/alpha.c:5196 config/ia64/ia64.c:4929 +#: config/rs6000/rs6000.c:14626 config/xtensa/xtensa.c:2253 +#, c-format +msgid "invalid %%R value" +msgstr "giá trị %%R sai" + +#: config/alpha/alpha.c:5202 config/rs6000/rs6000.c:14545 +#: config/xtensa/xtensa.c:2220 +#, c-format +msgid "invalid %%N value" +msgstr "giá trị %%N sai" + +#: config/alpha/alpha.c:5210 config/rs6000/rs6000.c:14573 +#, c-format +msgid "invalid %%P value" +msgstr "giá trị %%P sai" + +#: config/alpha/alpha.c:5218 +#, c-format +msgid "invalid %%h value" +msgstr "giá trị %%h sai" + +#: config/alpha/alpha.c:5226 config/xtensa/xtensa.c:2246 +#, c-format +msgid "invalid %%L value" +msgstr "giá trị %%L sai" + +#: config/alpha/alpha.c:5265 config/rs6000/rs6000.c:14527 +#, c-format +msgid "invalid %%m value" +msgstr "giá trị %%m sai" + +#: config/alpha/alpha.c:5273 config/rs6000/rs6000.c:14535 +#, c-format +msgid "invalid %%M value" +msgstr "giá trị %%M sai" + +#: config/alpha/alpha.c:5317 +#, c-format +msgid "invalid %%U value" +msgstr "giá trị %%U sai" + +#: config/alpha/alpha.c:5329 config/alpha/alpha.c:5343 +#: config/rs6000/rs6000.c:14634 +#, c-format +msgid "invalid %%s value" +msgstr "giá trị %%s sai" + +#: config/alpha/alpha.c:5366 +#, c-format +msgid "invalid %%C value" +msgstr "giá trị %%C sai" + +#: config/alpha/alpha.c:5403 config/rs6000/rs6000.c:14381 +#, c-format +msgid "invalid %%E value" +msgstr "giá trị %%E sai" + +#: config/alpha/alpha.c:5428 config/alpha/alpha.c:5476 +#, c-format +msgid "unknown relocation unspec" +msgstr "không rõ bỏ ghi rõ bố trí lại" + +#: config/alpha/alpha.c:5437 config/crx/crx.c:1092 +#: config/rs6000/rs6000.c:14988 config/spu/spu.c:1695 +#, c-format +msgid "invalid %%xn code" +msgstr "mã %%xn sai" + +#: config/arc/arc.c:1724 config/m32r/m32r.c:1980 +#, c-format +msgid "invalid operand to %%R code" +msgstr "sai lập toán hạng tới mã %%R" + +#: config/arc/arc.c:1756 config/m32r/m32r.c:2003 +#, c-format +msgid "invalid operand to %%H/%%L code" +msgstr "sai lập toán hạng tới mã %%H/%%L" + +#: config/arc/arc.c:1778 config/m32r/m32r.c:2074 +#, c-format +msgid "invalid operand to %%U code" +msgstr "sai lập toán hạng tới mã %%U" + +#: config/arc/arc.c:1789 +#, c-format +msgid "invalid operand to %%V code" +msgstr "sai lập toán hạng tới mã %%V" + +#. Unknown flag. +#. Undocumented flag. +#: config/arc/arc.c:1796 config/m32r/m32r.c:2101 config/sparc/sparc.c:7164 +#, c-format +msgid "invalid operand output code" +msgstr "sai lập mã kết xuất toán hạng" + +#: config/arm/arm.c:14854 config/arm/arm.c:14872 +#, c-format +msgid "predicated Thumb instruction" +msgstr "lệnh Thumb căn cứ vào" + +#: config/arm/arm.c:14860 +#, c-format +msgid "predicated instruction in conditional sequence" +msgstr "gặp lệnh căn cứ vào trong dãy có điều kiện" + +#: config/arm/arm.c:15030 +#, c-format +msgid "invalid shift operand" +msgstr "sai lập toán hạng dời" + +#: config/arm/arm.c:15077 config/arm/arm.c:15087 config/arm/arm.c:15097 +#: config/arm/arm.c:15107 config/arm/arm.c:15117 config/arm/arm.c:15156 +#: config/arm/arm.c:15174 config/arm/arm.c:15209 config/arm/arm.c:15228 +#: config/arm/arm.c:15243 config/arm/arm.c:15270 config/arm/arm.c:15277 +#: config/arm/arm.c:15295 config/arm/arm.c:15302 config/arm/arm.c:15310 +#: config/arm/arm.c:15331 config/arm/arm.c:15338 config/arm/arm.c:15428 +#: config/arm/arm.c:15435 config/arm/arm.c:15453 config/arm/arm.c:15460 +#: config/bfin/bfin.c:1696 config/bfin/bfin.c:1703 config/bfin/bfin.c:1710 +#: config/bfin/bfin.c:1717 config/bfin/bfin.c:1726 config/bfin/bfin.c:1733 +#: config/bfin/bfin.c:1740 config/bfin/bfin.c:1747 +#, c-format +msgid "invalid operand for code '%c'" +msgstr "sai lập toán hạng cho mã « %c »" + +#: config/arm/arm.c:15169 +#, c-format +msgid "instruction never executed" +msgstr "lệnh chưa bao giờ thực hiện" + +#: config/arm/arm.c:15472 +#, c-format +msgid "missing operand" +msgstr "toán hạng còn thiếu" + +#: config/arm/arm.c:17746 +msgid "function parameters cannot have __fp16 type" +msgstr "tham số hàm không thể có loại « __fp16 »" + +#: config/arm/arm.c:17756 +msgid "functions cannot return __fp16 type" +msgstr "hàm không thể trả lại loại « __fp16 »" + +#: config/avr/avr.c:1069 +#, c-format +msgid "address operand requires constraint for X, Y, or Z register" +msgstr "toán hạng địa chỉ yêu cầu ràng buộc cho thanh ghi X, Y, hay Z" + +#: config/avr/avr.c:1195 +msgid "bad address, not a constant):" +msgstr "địa chỉ sai, không phải là một hằng số):" + +#: config/avr/avr.c:1208 +msgid "bad address, not (reg+disp):" +msgstr "địa chỉ sai, không phải (reg+disp):" + +#: config/avr/avr.c:1215 +msgid "bad address, not post_inc or pre_dec:" +msgstr "địa chỉ sai, không phải post_inc hoặc pre_dec:" + +#: config/avr/avr.c:1226 +msgid "internal compiler error. Bad address:" +msgstr "lỗi biên dịch nội bộ : địa chỉ sai:" + +#: config/avr/avr.c:1251 +msgid "internal compiler error. Unknown mode:" +msgstr "lỗi biên dịch nội bộ : không rõ chế độ :" + +#: config/avr/avr.c:1838 config/avr/avr.c:2526 +msgid "invalid insn:" +msgstr "lệnh sai:" + +#: config/avr/avr.c:1877 config/avr/avr.c:1963 config/avr/avr.c:2012 +#: config/avr/avr.c:2040 config/avr/avr.c:2135 config/avr/avr.c:2304 +#: config/avr/avr.c:2565 config/avr/avr.c:2677 +msgid "incorrect insn:" +msgstr "lệnh không đúng:" + +#: config/avr/avr.c:2059 config/avr/avr.c:2220 config/avr/avr.c:2375 +#: config/avr/avr.c:2743 +msgid "unknown move insn:" +msgstr "không rõ lệnh di chuyển:" + +#: config/avr/avr.c:2973 +msgid "bad shift insn:" +msgstr "lệnh dời sai:" + +#: config/avr/avr.c:3089 config/avr/avr.c:3509 config/avr/avr.c:3867 +msgid "internal compiler error. Incorrect shift:" +msgstr "lỗi biên dịch nội bộ : dời không đúng:" + +#: config/bfin/bfin.c:1645 +#, c-format +msgid "invalid %%j value" +msgstr "giá trị %%j sai" + +#: config/bfin/bfin.c:1838 +#, c-format +msgid "invalid const_double operand" +msgstr "toán hạng const_double sai" + +#: config/cris/cris.c:528 config/moxie/moxie.c:91 c-typeck.c:5656 +#: c-typeck.c:5672 c-typeck.c:5689 final.c:3089 final.c:3091 fold-const.c:990 +#: gcc.c:5266 loop-iv.c:2968 loop-iv.c:2977 rtl-error.c:105 toplev.c:629 +#: tree-ssa-loop-niter.c:1885 tree-vrp.c:5707 cp/typeck.c:5126 java/expr.c:411 +#, gcc-internal-format +msgid "%s" +msgstr "%s" + +#: config/cris/cris.c:579 +msgid "unexpected index-type in cris_print_index" +msgstr "gặp loại chỉ mục (index-type) bất thường trong cris_print_index" + +#: config/cris/cris.c:596 +msgid "unexpected base-type in cris_print_base" +msgstr "gặp loại cơ bản (base-type) bất thường trong cris_print_index" + +#: config/cris/cris.c:712 +msgid "invalid operand for 'b' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « b »" + +#: config/cris/cris.c:729 +msgid "invalid operand for 'o' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « o »" + +#: config/cris/cris.c:748 +msgid "invalid operand for 'O' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « O »" + +#: config/cris/cris.c:781 +msgid "invalid operand for 'p' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « p »" + +#: config/cris/cris.c:820 +msgid "invalid operand for 'z' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « z »" + +#: config/cris/cris.c:884 config/cris/cris.c:918 +msgid "invalid operand for 'H' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « H »" + +#: config/cris/cris.c:894 +msgid "bad register" +msgstr "thanh ghi sai" + +#: config/cris/cris.c:938 +msgid "invalid operand for 'e' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « e »" + +#: config/cris/cris.c:955 +msgid "invalid operand for 'm' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « m »" + +#: config/cris/cris.c:980 +msgid "invalid operand for 'A' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « A »" + +#: config/cris/cris.c:1003 +msgid "invalid operand for 'D' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « D »" + +#: config/cris/cris.c:1017 +msgid "invalid operand for 'T' modifier" +msgstr "sai lập toán hạng cho sự sửa đổi « T »" + +#: config/cris/cris.c:1037 config/moxie/moxie.c:161 +msgid "invalid operand modifier letter" +msgstr "sai lập chữ sửa đổi toán hạng" + +#: config/cris/cris.c:1094 +msgid "unexpected multiplicative operand" +msgstr "gặp toán hạng nhân lên bất thường" + +#: config/cris/cris.c:1114 config/moxie/moxie.c:186 +msgid "unexpected operand" +msgstr "gặp toán hạng bất thường" + +#: config/cris/cris.c:1147 config/cris/cris.c:1157 +msgid "unrecognized address" +msgstr "không nhận ra địa chỉ" + +#: config/cris/cris.c:2265 +msgid "unrecognized supposed constant" +msgstr "không nhận ra điều nên là hằng số" + +#: config/cris/cris.c:2694 config/cris/cris.c:2758 +msgid "unexpected side-effects in address" +msgstr "gặp hiệu ứng khác bất thường trong địa chỉ" + +#. Can't possibly get a GOT-needing-fixup for a function-call, +#. right? +#: config/cris/cris.c:3595 +msgid "Unidentifiable call op" +msgstr "Không thể nhận diện toán tử gọi" + +#: config/cris/cris.c:3647 +#, c-format +msgid "PIC register isn't set up" +msgstr "Chưa thiết lập thanh ghi PIC" + +#: config/fr30/fr30.c:481 +#, c-format +msgid "fr30_print_operand_address: unhandled address" +msgstr "fr30_print_operand_address: địa chỉ chưa quản lý" + +#: config/fr30/fr30.c:505 +#, c-format +msgid "fr30_print_operand: unrecognized %%p code" +msgstr "fr30_print_operand: không nhận ra mã %%p" + +#: config/fr30/fr30.c:525 +#, c-format +msgid "fr30_print_operand: unrecognized %%b code" +msgstr "fr30_print_operand: không nhận ra mã %%b" + +#: config/fr30/fr30.c:546 +#, c-format +msgid "fr30_print_operand: unrecognized %%B code" +msgstr "fr30_print_operand: không nhận ra mã %%B" + +#: config/fr30/fr30.c:554 +#, c-format +msgid "fr30_print_operand: invalid operand to %%A code" +msgstr "fr30_print_operand: không nhận ra mã %%A" + +#: config/fr30/fr30.c:571 +#, c-format +msgid "fr30_print_operand: invalid %%x code" +msgstr "fr30_print_operand: sai lập mã %%x" + +#: config/fr30/fr30.c:578 +#, c-format +msgid "fr30_print_operand: invalid %%F code" +msgstr "fr30_print_operand: sai lập mã %%F" + +#: config/fr30/fr30.c:595 +#, c-format +msgid "fr30_print_operand: unknown code" +msgstr "fr30_print_operand: không rõ mã" + +#: config/fr30/fr30.c:623 config/fr30/fr30.c:632 config/fr30/fr30.c:643 +#: config/fr30/fr30.c:656 +#, c-format +msgid "fr30_print_operand: unhandled MEM" +msgstr "fr30_print_operand: MEM chưa quản lý" + +#: config/frv/frv.c:2601 +msgid "bad insn to frv_print_operand_address:" +msgstr "sai lập lệnh tới frv_print_operand_address:" + +#: config/frv/frv.c:2612 +msgid "bad register to frv_print_operand_memory_reference_reg:" +msgstr "sai lập thanh ghi tới frv_print_operand_memory_reference_reg:" + +#: config/frv/frv.c:2651 config/frv/frv.c:2661 config/frv/frv.c:2670 +#: config/frv/frv.c:2691 config/frv/frv.c:2696 +msgid "bad insn to frv_print_operand_memory_reference:" +msgstr "sai lập lệnh tới frv_print_operand_memory_reference:" + +#: config/frv/frv.c:2782 +#, c-format +msgid "bad condition code" +msgstr "mã điều kiện sai" + +#: config/frv/frv.c:2857 +msgid "bad insn in frv_print_operand, bad const_double" +msgstr "gặp lệnh sai trong frv_print_operand, lập sai const_double" + +#: config/frv/frv.c:2918 +msgid "bad insn to frv_print_operand, 'e' modifier:" +msgstr "lệnh sai tới frv_print_operand, bộ sửa đổi « e »:" + +#: config/frv/frv.c:2926 +msgid "bad insn to frv_print_operand, 'F' modifier:" +msgstr "lệnh sai tới frv_print_operand, bộ sửa đổi « F »:" + +#: config/frv/frv.c:2942 +msgid "bad insn to frv_print_operand, 'f' modifier:" +msgstr "lệnh sai tới frv_print_operand, bộ sửa đổi « f »:" + +#: config/frv/frv.c:2956 +msgid "bad insn to frv_print_operand, 'g' modifier:" +msgstr "lệnh sai tới frv_print_operand, bộ sửa đổi « g »:" + +#: config/frv/frv.c:3004 +msgid "bad insn to frv_print_operand, 'L' modifier:" +msgstr "lệnh sai tới frv_print_operand, bộ sửa đổi « L »:" + +#: config/frv/frv.c:3017 +msgid "bad insn to frv_print_operand, 'M/N' modifier:" +msgstr "lệnh sai tới frv_print_operand, bộ sửa đổi « M/N »:" + +#: config/frv/frv.c:3038 +msgid "bad insn to frv_print_operand, 'O' modifier:" +msgstr "lệnh sai tới frv_print_operand, bộ sửa đổi « O »:" + +#: config/frv/frv.c:3056 +msgid "bad insn to frv_print_operand, P modifier:" +msgstr "lệnh sai tới frv_print_operand, bộ sửa đổi « P »:" + +#: config/frv/frv.c:3076 +msgid "bad insn in frv_print_operand, z case" +msgstr "lệnh sai tới frv_print_operand, trường hợp « z »" + +#: config/frv/frv.c:3107 +msgid "bad insn in frv_print_operand, 0 case" +msgstr "lệnh sai tới frv_print_operand, trường hợp « 0 »" + +#: config/frv/frv.c:3112 +msgid "frv_print_operand: unknown code" +msgstr "frv_print_operand: gặp mã không rõ" + +#: config/frv/frv.c:4494 +msgid "bad output_move_single operand" +msgstr "lập sai toán hạng output_move_single" + +#: config/frv/frv.c:4621 +msgid "bad output_move_double operand" +msgstr "lập sai toán hạng output_move_double" + +#: config/frv/frv.c:4763 +msgid "bad output_condmove_single operand" +msgstr "lập sai toán hạng output_condmove_single" + +# Unsure of meaning; có nghĩa không chắc lắm +#. This macro is a C statement to print on `stderr' a string describing the +#. particular machine description choice. Every machine description should +#. define `TARGET_VERSION'. For example: +#. +#. #ifdef MOTOROLA +#. #define TARGET_VERSION fprintf (stderr, " (68k, Motorola syntax)"); +#. #else +#. #define TARGET_VERSION fprintf (stderr, " (68k, MIT syntax)"); +#. #endif +#: config/frv/frv.h:328 +#, c-format +msgid " (frv)" +msgstr " (frv)" + +#: config/i386/i386.c:10894 +#, c-format +msgid "invalid UNSPEC as operand" +msgstr "lập sai UNSPEC như là toán hạng" + +#: config/i386/i386.c:11440 +#, c-format +msgid "'%%&' used without any local dynamic TLS references" +msgstr "« %%& » bị sử dụng mà không có tham chiếu TLS năng động cục bộ" + +#: config/i386/i386.c:11531 config/i386/i386.c:11606 +#, c-format +msgid "invalid operand size for operand code '%c'" +msgstr "sai lập kích cỡ toán hạng cho mã toán hạng « %c »" + +#: config/i386/i386.c:11601 +#, c-format +msgid "invalid operand type used with operand code '%c'" +msgstr "sử dụng loại toán hạng không hợp lệ với mã toán hạng « %c »" + +#: config/i386/i386.c:11681 config/i386/i386.c:11721 +#, c-format +msgid "operand is not a condition code, invalid operand code 'D'" +msgstr "toán hạng không phải là một mã điều kiện, mã toán hạng sai « D »" + +#: config/i386/i386.c:11747 +#, c-format +msgid "operand is neither a constant nor a condition code, invalid operand code 'C'" +msgstr "toán hạng không phải là hằng số, cũng không phải là một mã điều kiện, mã toán hạng sai « C »" + +#: config/i386/i386.c:11757 +#, c-format +msgid "operand is neither a constant nor a condition code, invalid operand code 'F'" +msgstr "toán hạng không phải là hằng số, cũng không phải là một mã điều kiện, mã toán hạng sai « F »" + +#: config/i386/i386.c:11775 +#, c-format +msgid "operand is neither a constant nor a condition code, invalid operand code 'c'" +msgstr "toán hạng không phải là hằng số, cũng không phải là một mã điều kiện, mã toán hạng sai « c »" + +#: config/i386/i386.c:11785 +#, c-format +msgid "operand is neither a constant nor a condition code, invalid operand code 'f'" +msgstr "toán hạng không phải là hằng số, cũng không phải là một mã điều kiện, mã toán hạng sai « f »" + +#: config/i386/i386.c:11888 +#, c-format +msgid "operand is not a condition code, invalid operand code 'Y'" +msgstr "toán hạng không phải là một mã điều kiện, mã toán hạng sai « Y »" + +#: config/i386/i386.c:11903 +#, c-format +msgid "invalid operand code '%c'" +msgstr "mã toán hạng sai « %c »" + +#: config/i386/i386.c:11953 +#, c-format +msgid "invalid constraints for operand" +msgstr "sai lập ràng buộc cho toán hạng" + +#: config/i386/i386.c:19549 +msgid "unknown insn mode" +msgstr "không rõ chế độ lệnh" + +#. If the environment variable DJDIR is not defined, then DJGPP is not installed correctly and GCC will quickly become confused with the default prefix settings. Report the problem now so the user doesn't receive deceptive "file not found" error messages later. +#. DJDIR is automatically defined by the DJGPP environment config file pointed to by the environment variable DJGPP. Examine DJGPP to try and figure out what's wrong. +#: config/i386/xm-djgpp.h:61 +#, c-format +msgid "environment variable DJGPP not defined" +msgstr "chưa xác định biến môi trường DJGPP" + +#: config/i386/xm-djgpp.h:63 +#, c-format +msgid "environment variable DJGPP points to missing file '%s'" +msgstr "biến môi trường DJGPP chỉ tới tập tin còn thiếu « %s »" + +#: config/i386/xm-djgpp.h:66 +#, c-format +msgid "environment variable DJGPP points to corrupt file '%s'" +msgstr "biến môi trường DJGPP chỉ tới tập tin bị hỏng « %s »" + +#: config/ia64/ia64.c:4857 +#, c-format +msgid "invalid %%G mode" +msgstr "chế độ %%G không hợp lệ" + +#: config/ia64/ia64.c:5027 +#, c-format +msgid "ia64_print_operand: unknown code" +msgstr "ia64_print_operand: gặp mã không hợp lệ" + +#: config/ia64/ia64.c:10572 +msgid "invalid conversion from %<__fpreg%>" +msgstr "sai chuyển đổi từ %<__fpreg%>" + +#: config/ia64/ia64.c:10575 +msgid "invalid conversion to %<__fpreg%>" +msgstr "sai chuyển đổi sang %<__fpreg%>" + +#: config/ia64/ia64.c:10588 config/ia64/ia64.c:10599 +msgid "invalid operation on %<__fpreg%>" +msgstr "thao tác sai %<__fpreg%>" + +#: config/iq2000/iq2000.c:3165 +#, c-format +msgid "invalid %%P operand" +msgstr "gặp toán hạng %%P sai" + +#: config/iq2000/iq2000.c:3173 config/rs6000/rs6000.c:14563 +#, c-format +msgid "invalid %%p value" +msgstr "gặp giá trị %%p sai" + +#: config/iq2000/iq2000.c:3229 +#, c-format +msgid "invalid use of %%d, %%x, or %%X" +msgstr "sai sử dụng %%d, %%x hoặc %%X" + +#: config/lm32/lm32.c:500 +#, c-format +msgid "Only 0.0 can be loaded as an immediate" +msgstr "Chỉ 0.0 nạp được như là một điều ngay lập tức" + +#: config/lm32/lm32.c:570 +msgid "bad operand" +msgstr "toán hạng sai" + +#: config/lm32/lm32.c:582 +msgid "can't use non gp relative absolute address" +msgstr "không cho phép sử dụng địa chỉ tuyệt đối tương đối không phải gp" + +#: config/lm32/lm32.c:586 +msgid "invalid addressing mode" +msgstr "sai lập chế độ đặt địa chỉ" + +#: config/m32r/m32r.c:1950 +#, c-format +msgid "invalid operand to %%s code" +msgstr "sai lập toán hạng tới mã %%s" + +#: config/m32r/m32r.c:1957 +#, c-format +msgid "invalid operand to %%p code" +msgstr "sai lập toán hạng tới mã %%p" + +#: config/m32r/m32r.c:2012 +msgid "bad insn for 'A'" +msgstr "sai lập lệnh cho « A »" + +#: config/m32r/m32r.c:2059 +#, c-format +msgid "invalid operand to %%T/%%B code" +msgstr "sai lập toán hạng tới mã %%T/%%B" + +#: config/m32r/m32r.c:2082 +#, c-format +msgid "invalid operand to %%N code" +msgstr "sai lập toán hạng tới mã %%N" + +#: config/m32r/m32r.c:2115 +msgid "pre-increment address is not a register" +msgstr "địa chỉ tiền gia không phải là một thanh ghi" + +#: config/m32r/m32r.c:2122 +msgid "pre-decrement address is not a register" +msgstr "địa chỉ tiền giảm không phải là một thanh ghi" + +#: config/m32r/m32r.c:2129 +msgid "post-increment address is not a register" +msgstr "địa chỉ hậu gia không phải là một thanh ghi" + +#: config/m32r/m32r.c:2205 config/m32r/m32r.c:2219 +#: config/rs6000/rs6000.c:23777 +msgid "bad address" +msgstr "địa chỉ sai" + +#: config/m32r/m32r.c:2224 +msgid "lo_sum not of register" +msgstr "lo_sum không phải thanh ghi" + +#. !!!! SCz wrong here. +#: config/m68hc11/m68hc11.c:3204 config/m68hc11/m68hc11.c:3582 +msgid "move insn not handled" +msgstr "lệnh di chuyển chưa quản lý" + +#: config/m68hc11/m68hc11.c:3428 config/m68hc11/m68hc11.c:3512 +#: config/m68hc11/m68hc11.c:3785 +msgid "invalid register in the move instruction" +msgstr "gặp thanh ghi sai trong lệnh di chuyển" + +#: config/m68hc11/m68hc11.c:3462 +msgid "invalid operand in the instruction" +msgstr "lệnh chứa một toán hạng sai" + +#: config/m68hc11/m68hc11.c:3759 +msgid "invalid register in the instruction" +msgstr "lệnh chứa một thanh ghi sai" + +#: config/m68hc11/m68hc11.c:3792 +msgid "operand 1 must be a hard register" +msgstr "toán hạng 1 phải là một thanh ghi cứng" + +#: config/m68hc11/m68hc11.c:3806 +msgid "invalid rotate insn" +msgstr "lệnh quay sai" + +#: config/m68hc11/m68hc11.c:4234 +msgid "registers IX, IY and Z used in the same INSN" +msgstr "sử dụng ba thanh ghi IX, IY, Z trong cùng một lệnh" + +#: config/m68hc11/m68hc11.c:4567 config/m68hc11/m68hc11.c:4867 +msgid "cannot do z-register replacement" +msgstr "không thể làm sự thay thế thanh ghi Z" + +#: config/m68hc11/m68hc11.c:4930 +msgid "invalid Z register replacement for insn" +msgstr "lệnh chứa một sự thay thế thanh ghi Z sai" + +#: config/mep/mep.c:3394 +#, c-format +msgid "invalid %%L code" +msgstr "mã %%L sai" + +#: config/mips/mips.c:7424 config/mips/mips.c:7445 config/mips/mips.c:7557 +#, c-format +msgid "'%%%c' is not a valid operand prefix" +msgstr "« %%%c » không phải là một tiền tố toán hạng đúng" + +#: config/mips/mips.c:7494 config/mips/mips.c:7501 config/mips/mips.c:7508 +#: config/mips/mips.c:7515 config/mips/mips.c:7575 config/mips/mips.c:7589 +#: config/mips/mips.c:7602 config/mips/mips.c:7611 +#, c-format +msgid "invalid use of '%%%c'" +msgstr "sai sử dụng « %%%c »" + +#: config/mips/mips.c:7833 +msgid "mips_debugger_offset called with non stack/frame/arg pointer" +msgstr "mips_debugger_offset bị gọi mà không có hàm trỏ tới đống/khung/đối_số" + +#: config/mmix/mmix.c:1494 config/mmix/mmix.c:1624 +msgid "MMIX Internal: Expected a CONST_INT, not this" +msgstr "MMIX nội bộ : mong đợi một CONST_INT, không phải như thế" + +#: config/mmix/mmix.c:1573 +msgid "MMIX Internal: Bad value for 'm', not a CONST_INT" +msgstr "MMIX nội bộ : sai lập giá trị cho « m », không phải là một CONST_INT" + +#: config/mmix/mmix.c:1592 +msgid "MMIX Internal: Expected a register, not this" +msgstr "MMIX nội bộ : mong đợi một thanh ghi, không phải như thế" + +#: config/mmix/mmix.c:1602 +msgid "MMIX Internal: Expected a constant, not this" +msgstr "MMIX nội bộ : mong đợi một rằng buộc, không phải như thế" + +#. We need the original here. +#: config/mmix/mmix.c:1686 +msgid "MMIX Internal: Cannot decode this operand" +msgstr "MMIX nội bộ : không thể giải mã toán hạng này" + +#: config/mmix/mmix.c:1743 +msgid "MMIX Internal: This is not a recognized address" +msgstr "MMIX nội bộ : đây không phải là một địa chỉ nhận ra" + +#: config/mmix/mmix.c:2620 +msgid "MMIX Internal: Trying to output invalidly reversed condition:" +msgstr "MMIX nội bộ : đang thử xuất điều kiện sai đảo ngược:" + +#: config/mmix/mmix.c:2627 +msgid "MMIX Internal: What's the CC of this?" +msgstr "MMIX nội bộ : CC của điều này là gì?" + +#: config/mmix/mmix.c:2631 +msgid "MMIX Internal: What is the CC of this?" +msgstr "MMIX nội bộ : CC của điều này là gì?" + +#: config/mmix/mmix.c:2695 +msgid "MMIX Internal: This is not a constant:" +msgstr "MMIX nội bộ : đây không phải là một hằng số :" + +#: config/picochip/picochip.c:2410 +msgid "picochip_print_memory_address - Operand isn't memory based" +msgstr "picochip_print_memory_address : toán hạng không phải dựa vào vùng nhớ" + +#: config/picochip/picochip.c:2669 +msgid "Unknown mode in print_operand (CONST_DOUBLE) :" +msgstr "Không rõ chế độ trong print_operand (CONST_DOUBLE) :" + +#: config/picochip/picochip.c:2715 config/picochip/picochip.c:2747 +msgid "Bad address, not (reg+disp):" +msgstr "Địa chỉ sai, không phải (reg+disp):" + +#: config/picochip/picochip.c:2761 +msgid "Bad address, not register:" +msgstr "Địa chỉ sai, không phải thanh ghi:" + +#: config/rs6000/host-darwin.c:97 +#, c-format +msgid "Out of stack space.\n" +msgstr "Không đủ sức chứa trong đống.\n" + +#: config/rs6000/host-darwin.c:118 +#, c-format +msgid "Try running '%s' in the shell to raise its limit.\n" +msgstr "Hãy thử chạy « %s » trong trình bao để tăng giới hạn.\n" + +#: config/rs6000/rs6000.c:2419 +msgid "-mvsx requires hardware floating point" +msgstr "« -mvsx » yêu cầu điểm phù động loại phần cứng" + +#: config/rs6000/rs6000.c:2424 +msgid "-mvsx and -mpaired are incompatible" +msgstr "« -mvsx » và « -mpaired » không tương thích với nhau" + +#: config/rs6000/rs6000.c:2429 +msgid "-mvsx used with little endian code" +msgstr "« -mvsx » bị sử dụng với mã về cuối nhỏ" + +#: config/rs6000/rs6000.c:2431 +msgid "-mvsx needs indexed addressing" +msgstr "« -mvsx » yêu cầu đặt địa chỉ một cách phụ lục" + +#: config/rs6000/rs6000.c:2435 +msgid "-mvsx and -mno-altivec are incompatible" +msgstr "« -mvsx » và « -mno-altivec » không tương thích với nhau" + +#: config/rs6000/rs6000.c:2437 +msgid "-mno-altivec disables vsx" +msgstr "« -mno-altivec » thì tắt vsx" + +#: config/rs6000/rs6000.c:6691 +msgid "bad move" +msgstr "sai di chuyển" + +#: config/rs6000/rs6000.c:14362 +#, c-format +msgid "invalid %%c value" +msgstr "giá trị %%c sai" + +#: config/rs6000/rs6000.c:14390 +#, c-format +msgid "invalid %%f value" +msgstr "giá trị %%f sai" + +#: config/rs6000/rs6000.c:14399 +#, c-format +msgid "invalid %%F value" +msgstr "giá trị %%F sai" + +#: config/rs6000/rs6000.c:14408 +#, c-format +msgid "invalid %%G value" +msgstr "giá trị %%G sai" + +#: config/rs6000/rs6000.c:14443 +#, c-format +msgid "invalid %%j code" +msgstr "mã %%j sai" + +#: config/rs6000/rs6000.c:14453 +#, c-format +msgid "invalid %%J code" +msgstr "mã %%J sai" + +#: config/rs6000/rs6000.c:14463 +#, c-format +msgid "invalid %%k value" +msgstr "giá trị %%k sai" + +#: config/rs6000/rs6000.c:14483 config/xtensa/xtensa.c:2239 +#, c-format +msgid "invalid %%K value" +msgstr "giá trị %%K sai" + +#: config/rs6000/rs6000.c:14553 +#, c-format +msgid "invalid %%O value" +msgstr "giá trị %%O sai" + +#: config/rs6000/rs6000.c:14600 +#, c-format +msgid "invalid %%q value" +msgstr "giá trị %%q sai" + +#: config/rs6000/rs6000.c:14644 +#, c-format +msgid "invalid %%S value" +msgstr "giá trị %%S sai" + +#: config/rs6000/rs6000.c:14684 +#, c-format +msgid "invalid %%T value" +msgstr "giá trị %%T sai" + +#: config/rs6000/rs6000.c:14694 +#, c-format +msgid "invalid %%u value" +msgstr "giá trị %%u sai" + +#: config/rs6000/rs6000.c:14703 config/xtensa/xtensa.c:2209 +#, c-format +msgid "invalid %%v value" +msgstr "giá trị %%v sai" + +#: config/rs6000/rs6000.c:14802 config/xtensa/xtensa.c:2260 +#, c-format +msgid "invalid %%x value" +msgstr "giá trị %%x sai" + +#: config/rs6000/rs6000.c:14947 +#, c-format +msgid "invalid %%y value, try using the 'Z' constraint" +msgstr "giá trị %%y sai, hãy thử sử dụng ràng buộc « Z »" + +#: config/rs6000/rs6000.c:25750 +msgid "AltiVec argument passed to unprototyped function" +msgstr "đối số AltiVec bị gửi cho hàm không nguyên mẫu" + +#: config/s390/s390.c:4952 +#, c-format +msgid "cannot decompose address" +msgstr "không thể phân ly địa chỉ" + +#: config/s390/s390.c:5175 +msgid "UNKNOWN in print_operand !?" +msgstr "KHÔNG RÕ trong print_operand !?" + +#: config/score/score3.c:1282 config/score/score3.c:1302 +#: config/score/score7.c:1270 +#, c-format +msgid "invalid operand for code: '%c'" +msgstr "sai lập toán hạng cho mã: « %c »" + +#: config/sh/sh.c:1125 +#, c-format +msgid "invalid operand to %%R" +msgstr "sai lập toán hạng tới %%R" + +#: config/sh/sh.c:1152 +#, c-format +msgid "invalid operand to %%S" +msgstr "sai lập toán hạng tới %%S" + +#: config/sh/sh.c:8968 +msgid "created and used with different architectures / ABIs" +msgstr "tạo và sử dụng với các kiến trúc hoặc ABI khác nhau" + +#: config/sh/sh.c:8970 +msgid "created and used with different ABIs" +msgstr "tạo và sử dụng với các ABI khác nhau" + +#: config/sh/sh.c:8972 +msgid "created and used with different endianness" +msgstr "tạo và sử dụng với các trình trạng cuối khác nhau" + +#: config/sparc/sparc.c:6972 config/sparc/sparc.c:6978 +#, c-format +msgid "invalid %%Y operand" +msgstr "toán hạng %%Y sai" + +#: config/sparc/sparc.c:7048 +#, c-format +msgid "invalid %%A operand" +msgstr "toán hạng %%A sai" + +#: config/sparc/sparc.c:7058 +#, c-format +msgid "invalid %%B operand" +msgstr "toán hạng %%B sai" + +#: config/sparc/sparc.c:7097 +#, c-format +msgid "invalid %%c operand" +msgstr "toán hạng %%c sai" + +#: config/sparc/sparc.c:7119 +#, c-format +msgid "invalid %%d operand" +msgstr "toán hạng %%d sai" + +#: config/sparc/sparc.c:7136 +#, c-format +msgid "invalid %%f operand" +msgstr "toán hạng %%f sai" + +#: config/sparc/sparc.c:7150 +#, c-format +msgid "invalid %%s operand" +msgstr "toán hạng %%s sai" + +#: config/sparc/sparc.c:7204 +#, c-format +msgid "long long constant not a valid immediate operand" +msgstr "hằng số dài dài không phải là một toán hạng ngay lập tức đúng" + +#: config/sparc/sparc.c:7207 +#, c-format +msgid "floating point constant not a valid immediate operand" +msgstr "hằng số điểm phù động không phải là một toán hạng ngay lập tức đúng" + +#: config/stormy16/stormy16.c:1755 config/stormy16/stormy16.c:1826 +#, c-format +msgid "'B' operand is not constant" +msgstr "toán hạng « B » không phải là một hằng số" + +#: config/stormy16/stormy16.c:1782 +#, c-format +msgid "'B' operand has multiple bits set" +msgstr "toán hạng « B » có nhiều bit được lập" + +#: config/stormy16/stormy16.c:1808 +#, c-format +msgid "'o' operand is not constant" +msgstr "toán hạng « o » không phải là một hằng số" + +#: config/stormy16/stormy16.c:1840 +#, c-format +msgid "xstormy16_print_operand: unknown code" +msgstr "xstormy16_print_operand: gặp mã không rõ" + +#: config/v850/v850.c:408 +msgid "const_double_split got a bad insn:" +msgstr "const_double_split nhận một lệnh sai:" + +#: config/v850/v850.c:979 +msgid "output_move_single:" +msgstr "output_move_single:" + +#: config/vax/vax.c:399 +#, c-format +msgid "symbol used with both base and indexed registers" +msgstr "ký hiệu dùng với thanh ghi cả hai loại cơ bản và phụ lục" + +#: config/vax/vax.c:408 +#, c-format +msgid "symbol with offset used in PIC mode" +msgstr "ký hiệu với hiệu số dùng trong chế độ PIC" + +#: config/vax/vax.c:494 +#, c-format +msgid "symbol used as immediate operand" +msgstr "ký hiệu dùng như là toán hạng ngay lập tức" + +#: config/vax/vax.c:1519 +msgid "illegal operand detected" +msgstr "phát hiện toán hạng cấm" + +#: config/xtensa/xtensa.c:705 config/xtensa/xtensa.c:737 +#: config/xtensa/xtensa.c:746 +msgid "bad test" +msgstr "sai kiểm tra" + +#: config/xtensa/xtensa.c:2197 +#, c-format +msgid "invalid %%D value" +msgstr "giá trị %%D sai" + +#: config/xtensa/xtensa.c:2234 +msgid "invalid mask" +msgstr "bộ lọc sai" + +#: config/xtensa/xtensa.c:2267 +#, c-format +msgid "invalid %%d value" +msgstr "giá trị %%d sai" + +#: config/xtensa/xtensa.c:2288 config/xtensa/xtensa.c:2298 +#, c-format +msgid "invalid %%t/%%b value" +msgstr "giá trị %%t/%%b sai" + +#: config/xtensa/xtensa.c:2340 +msgid "invalid address" +msgstr "địa chỉ sai" + +#: config/xtensa/xtensa.c:2365 +msgid "no register in address" +msgstr "địa chỉ không chứa thanh ghi" + +#: config/xtensa/xtensa.c:2373 +msgid "address offset not a constant" +msgstr "hiệu số địa chỉ không phải là một hằng số" + +#: cp/call.c:2779 cp/pt.c:1701 cp/pt.c:16017 +msgid "candidates are:" +msgstr "ứng cử là:" + +#: cp/call.c:2779 cp/pt.c:16017 +msgid "candidate is:" +msgstr "ứng cử là:" + +#: cp/call.c:7360 +msgid "candidate 1:" +msgstr "ứng cử 1:" + +#: cp/call.c:7361 +msgid "candidate 2:" +msgstr "ứng cử 2:" + +#: cp/cxx-pretty-print.c:173 cp/error.c:923 objc/objc-act.c:7141 +msgid "" +msgstr "" + +#: cp/cxx-pretty-print.c:2067 +msgid "template-parameter-" +msgstr "template-parameter-" + +#: cp/decl2.c:721 +msgid "candidates are: %+#D" +msgstr "ứng cử là: %+#D" + +#: cp/decl2.c:723 cp/pt.c:1697 +#, gcc-internal-format +msgid "candidate is: %+#D" +msgstr "ứng cử là: %+#D" + +#: cp/error.c:297 +msgid "" +msgstr "" + +#: cp/error.c:338 +msgid "" +msgstr "" + +#: cp/error.c:340 +msgid "" +msgstr "" + +#: cp/error.c:483 +msgid "" +msgstr "" + +#: cp/error.c:583 +#, c-format +msgid "" +msgstr "<%s nặc danh>" + +# Literal: don't translate; Nghĩa chữ : dừng dịch +#. A lambda's "type" is essentially its signature. +#: cp/error.c:588 +msgid "" +msgstr "" + +#: cp/error.c:825 +#, c-format +msgid "(static initializers for %s)" +msgstr "(bộ sơ khởi tĩnh cho %s)" + +#: cp/error.c:827 +#, c-format +msgid "(static destructors for %s)" +msgstr "(bộ hủy tĩnh cho %s)" + +#: cp/error.c:898 +msgid "vtable for " +msgstr "bảng vtable cho" + +#: cp/error.c:910 +msgid " " +msgstr "" + +#: cp/error.c:1038 +msgid "" +msgstr "" + +#: cp/error.c:1078 +msgid "" +msgstr "" + +#: cp/error.c:1318 +msgid "with" +msgstr "với" + +#: cp/error.c:1481 cp/error.c:1501 +msgid "