diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-04 09:36:05 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-04 09:36:05 +0000 |
commit | a1f260313dd829a3eea7f0a54f317599dcff89e4 (patch) | |
tree | 62ce374fd47a35b7e696b3f046e16bab895aaef9 | |
parent | f8163223503585626c24d57e165609bae9150744 (diff) | |
download | gcc-a1f260313dd829a3eea7f0a54f317599dcff89e4.tar.gz |
2009-03-04 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r144598
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@144599 138bc75d-0d04-0410-961f-82ee72b054a4
213 files changed, 11186 insertions, 9337 deletions
diff --git a/ChangeLog b/ChangeLog index 1c26979530c..9cf76fbc9e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + Backport from git Libtool: + + 2009-01-19 Robert Millan <rmh@aybabtu.com> + Support GNU/kOpenSolaris. + * libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) + (_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS) + (_LT_LANG_CXX_CONFIG) [kopensolaris*-gnu]: Recognize + GNU/kOpenSolaris. + +2009-02-27 Andreas Schwab <schwab@linux-m68k.org> + + * MAINTAINERS: Update e-mail address. + +2009-02-24 Michael Eager <eager@eagercon.com> + + * MAINTAINERS (Write After Approval): Add self. + 2009-02-18 Bingfeng Mei <bmei@broadcom.com> * MAINTAINERS (Write After Approval): Add myself. diff --git a/ChangeLog.melt b/ChangeLog.melt index 8a3107c5c01..1dac39b28c5 100644 --- a/ChangeLog.melt +++ b/ChangeLog.melt @@ -1,3 +1,6 @@ +2009-03-04 Basile Starynkevitch <basile@starynkevitch.net> + MELT branch merged with trunk r144598 + 2009-02-23 Basile Starynkevitch <basile@starynkevitch.net> MELT branch merged with trunk r144379 diff --git a/MAINTAINERS b/MAINTAINERS index 79201ac54f1..4592f1711f2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -66,7 +66,7 @@ m32c port DJ Delorie dj@redhat.com m32r port Nick Clifton nickc@redhat.com m68hc11 port Stephane Carrez stcarrez@nerim.fr m68k port (?) Jeff Law law@redhat.com -m68k port Andreas Schwab schwab@suse.de +m68k port Andreas Schwab schwab@linux-m68k.org m68k-motorola-sysv port Philippe De Muyter phdm@macqel.be mcore port Nick Clifton nickc@redhat.com mips port Eric Christopher echristo@apple.com @@ -311,6 +311,7 @@ Ian Dall ian@beware.dropbear.id.au David Daney david.daney@caviumnetworks.com Bud Davis jmdavis@link.com Benoit Dupont de Dinechin benoit.dupont-de-dinechin@st.com +Michael Eager eager@eagercon.com Mohan Embar gnustuff@thisiscool.com Revital Eres eres@il.ibm.com Marc Espie espie@cvs.openbsd.org diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index 3ce034a0931..ed6ee543650 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,3 +1,7 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + 2009-02-09 Mark Mitchell <mark@codesourcery.com> * Makefile.am (LTLDFLAGS): New variable. diff --git a/boehm-gc/configure b/boehm-gc/configure index a7760a93066..6d2cf83e4cf 100755 --- a/boehm-gc/configure +++ b/boehm-gc/configure @@ -5079,7 +5079,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -8446,7 +8446,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -9007,7 +9007,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -10571,7 +10571,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -12749,7 +12749,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi inherit_rpath_CXX=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -13577,7 +13577,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -14497,7 +14497,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 4f49364ef3d..4fc801b0ae9 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,7 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * check_warning_flags.sh: Update flag exceptions. + 2008-11-18 Ben Elliston <bje@au.ibm.com> * dg-cmp-results.sh: Do not print usage if either .sum file cannot diff --git a/contrib/check_warning_flags.sh b/contrib/check_warning_flags.sh index fcd0f37e105..eb53832730c 100755 --- a/contrib/check_warning_flags.sh +++ b/contrib/check_warning_flags.sh @@ -3,7 +3,7 @@ # Check that the warning flags documented in invoke.texi match up # with what the compiler accepts. # -# Copyright (C) 2008 Free Software Foundation, Inc. +# Copyright (C) 2008, 2009 Free Software Foundation, Inc. # Written by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>. # # This script is Free Software, and it can be copied, distributed and @@ -39,9 +39,12 @@ stderr=check_warning_flags_stderr$$ remove_problematic_flags=' /-Wlarger-than-/d + /-Wframe-larger-than/d + /-Wdisallowed-function-list/d /-W[alp],/d /-Werror/d /-Wpadded/d + /pedantic-ms-format/d /=/d' # Ensure that indexed warnings are accepted. diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog index ca308109296..cef28bd7d3f 100644 --- a/fixincludes/ChangeLog +++ b/fixincludes/ChangeLog @@ -1,3 +1,11 @@ +2009-03-01 Bruce Korb <bkorb@gnu.org> + Apply a positively ancient patch: + + 2004-10-15 Giovanni Bajo <giovannibajo@libero.it> + + * inclhack.def (alpha_if_semicolon): new fix from long, long ago + * tests/base/net/if.h: Add new test. + 2009-01-06 Andreas Tobler <a.tobler@schweiz.org> * tests/base/locale.h: Add new test. diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index 2c0fa31b738..e2e28db88e5 100644 --- a/fixincludes/fixincl.x +++ b/fixincludes/fixincl.x @@ -2,11 +2,11 @@ * * DO NOT EDIT THIS FILE (fixincl.x) * - * It has been AutoGen-ed Monday January 5, 2009 at 09:53:36 AM PST + * It has been AutoGen-ed Saturday February 28, 2009 at 10:11:41 AM PST * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Jan 5 09:53:36 PST 2009 +/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Feb 28 10:11:41 PST 2009 * * You must regenerate it. Use the ./genfixes script. * @@ -15,7 +15,7 @@ * certain ANSI-incompatible system header files which are fixed to work * correctly with ANSI C and placed in a directory that GNU C will search. * - * This file contains 179 fixup descriptions. + * This file contains 180 fixup descriptions. * * See README for more information. * @@ -918,6 +918,41 @@ static const char* apzAlpha_GetoptPatch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Alpha_If_Semicolon fix + */ +tSCC zAlpha_If_SemicolonName[] = + "alpha_if_semicolon"; + +/* + * File name selection pattern + */ +tSCC zAlpha_If_SemicolonList[] = + "net/if.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAlpha_If_SemicolonMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_If_SemicolonSelect0[] = + "struct[ \t]+sockaddr[ \t]+vmif_paddr[ \t]+/\\*"; + +#define ALPHA_IF_SEMICOLON_TEST_CT 1 +static tTestDesc aAlpha_If_SemicolonTests[] = { + { TT_EGREP, zAlpha_If_SemicolonSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_If_Semicolon + */ +static const char* apzAlpha_If_SemicolonPatch[] = { + "format", + "struct sockaddr vmif_paddr;\t/*", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Alpha_Parens fix */ tSCC zAlpha_ParensName[] = @@ -7273,9 +7308,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 225 +#define REGEX_COUNT 226 #define MACH_LIST_SIZE_LIMIT 181 -#define FIX_COUNT 179 +#define FIX_COUNT 180 /* * Enumerate the fixes @@ -7301,6 +7336,7 @@ typedef enum { ALPHA_ASSERT_FIXIDX, ALPHA_BAD_LVAL_FIXIDX, ALPHA_GETOPT_FIXIDX, + ALPHA_IF_SEMICOLON_FIXIDX, ALPHA_PARENS_FIXIDX, ALPHA_PTHREAD_FIXIDX, ALPHA_PTHREAD_GCC_FIXIDX, @@ -7563,6 +7599,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { ALPHA_GETOPT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aAlpha_GetoptTests, apzAlpha_GetoptPatch, 0 }, + { zAlpha_If_SemicolonName, zAlpha_If_SemicolonList, + apzAlpha_If_SemicolonMachs, + ALPHA_IF_SEMICOLON_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha_If_SemicolonTests, apzAlpha_If_SemicolonPatch, 0 }, + { zAlpha_ParensName, zAlpha_ParensList, apzAlpha_ParensMachs, ALPHA_PARENS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 396d33ea1b2..4a5af1df609 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -563,6 +563,19 @@ fix = { /* + * Fix missing semicolon on Alpha OSF/4 in <net/if.h> + */ +fix = { + hackname = alpha_if_semicolon; + files = net/if.h; + select = "struct[ \t]+sockaddr[ \t]+vmif_paddr[ \t]+/\\*"; + c_fix = format; + c_fix_arg = "struct sockaddr vmif_paddr;\t/*"; + test_text = ' struct sockaddr vmif_paddr /* protocol address */'; +}; + + +/* * Remove erroneous parentheses in sym.h on Alpha OSF/1. */ fix = { diff --git a/fixincludes/tests/base/net/if.h b/fixincludes/tests/base/net/if.h new file mode 100644 index 00000000000..4c25423c522 --- /dev/null +++ b/fixincludes/tests/base/net/if.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/net/if.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( ALPHA_IF_SEMICOLON_CHECK ) + struct sockaddr vmif_paddr; /* protocol address */ +#endif /* ALPHA_IF_SEMICOLON_CHECK */ diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1961e74811c..6eb37db88f2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,352 @@ -2008-02-21 H.J. Lu <hongjiu.lu@intel.com> +2009-03-04 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/39339 + * tree-sra.c (try_instantiate_multiple_fields): Make it + no longer ICE on the above. + +2009-03-03 Joseph Myers <joseph@codesourcery.com> + + * emit-rtl.c (adjust_address_1): Reduce offset to a signed value + that fits within Pmode. + +2009-03-03 Steve Ellcey <sje@cup.hp.com> + + PR middle-end/10109 + * tm.texi (LIBCALL_VALUE): Update description. + +2009-03-03 Steve Ellcey <sje@cup.hp.com> + + PR middle-end/34443 + * doc/extend.texi (section): Update description. + +2009-03-03 H.J. Lu <hongjiu.lu@intel.com> + + PR middle-end/39345 + * tree-inline.c (remapped_type): New. + (can_be_nonlocal): Call remapped_type instead of remap_type. + +2009-03-03 Jakub Jelinek <jakub@redhat.com> + + PR fortran/39354 + * gimplify.c (goa_stabilize_expr): Handle tcc_comparison, + TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR. + +2009-03-03 Richard Guenther <rguenther@suse.de> + + PR middle-end/39272 + * tree.c (tree_nonartificial_location): New function. + * tree.h (tree_nonartificial_location): Declare. + * builtins.c (expand_builtin_memory_chk): Provide location + of the call location for artificial function pieces. + (maybe_emit_chk_warning): Likewise. + (maybe_emit_sprintf_chk_warning): Likewise. + (maybe_emit_free_warning): Likewise. + * expr.c (expand_expr_real_1): Likewise. + +2009-03-03 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/39343 + * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if + COMPONENT_REF t has ARRAY_TYPE. + +2009-03-02 Sebastian Pop <sebastian.pop@amd.com> + + PR middle-end/39335 + * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert + when the type precision of the induction variable should be + larger than the type precision of nit. + (gen_parallel_loop): Update use of canonicalize_loop_ivs. + * graphite.c (graphite_loop_normal_form): Same. + * tree-flow.h (canonicalize_loop_ivs): Update declaration. + +2009-03-02 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386.md (ST?_REG, MM?_REG): New constants. + (*call_1_rex64_ms_sysv): Use named constants instead of magic + numbers to describe clobbbered registers. + (*call_value_0_rex64_ms_sysv): Ditto. + * config/i386/mmx.md (emms): Ditto. + (femms): Ditto. + +2009-03-02 Richard Sandiford <rdsandiford@googlemail.com> + + * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling + of ABI_64. + +2009-03-02 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> + + * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define. + (spu_section_type_flags): New function. + +2009-03-02 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy + reg_class_contents of FLOAT_REGS into a temporary. + +2009-03-02 Richard Guenther <rguenther@suse.de> + Ira Rosen <irar@il.ibm.com> + + PR tree-optimization/39318 + * tree-vect-transform.c (vectorizable_call): Transfer the EH region + information to the vectorized statement. + +2009-03-01 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i" + variable. Use defined names instead of magic constants for REX SSE + registers. + +2009-03-01 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/39331 + * omp-low.c (lower_send_shared_vars): Do not receive new + values for the reference of DECL_BY_REFERENCE parms or results. + +2009-03-01 Jan Hubicka <jh@suse.cz> + + PR debug/39267 + * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS, + BLOCK_NONLOCALIZED_VAR): New macros. + (tree_block): Add nonlocalized_vars. + * dwarf2out.c (gen_formal_parameter_die, gen_variable_die, + gen_decl_die): Add origin argument. Allow generation of die with + origin at hand only. + (gen_member_die, gen_type_die_with_usage, force_decl_die, + declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use + of gen_*. + (gen_block_die): Fix checking for unused blocks. + (process_scope_var): Break out from .... ; work with origins only. + (decls_for_scope) ... here; process nonlocalized list. + (dwarf2out_ignore_block): Look for nonlocalized vars. + * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized + vars. + (dump_scope_block): Dump them. + * tree-inline.c (remap_decls): Handle nonlocalized vars. + (remap_block): Likewise. + (can_be_nonlocal): New predicate. + (copy_bind_expr, copy_gimple_bind): Update use of remap_block. + +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * optc-gen.awk: No need to duplicate option flags twice. + Reuse help texts for duplicate options which do not have + any. + + * gcc.c (display_help): Document --version. + + * gcc.c (main): If print_help_list and verbose_flag, ensure + driver output comes before subprocess output. + + * optc-gen.awk: Assign all remaining fields to help string, + space-separated, for multi-line help in *.opt. + + * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only. + -Wno-pedantic-ms-format is for MinGW targets only. + + * doc/options.texi (Option file format): Fix bad indentation, + restoring dropped sentence. + +2009-02-28 Jan Hubicka <jh@suse.cz> + + * tree-inline.c (tree_function_versioning): Output debug info. + +2009-02-28 Jan Hubicka <jh@suse.cz> + + PR debug/39267 + * tree-inline.c (setup_one_parameter): Do not copy propagate + arguments when not optimizing. + +2009-02-28 H.J. Lu <hongjiu.lu@intel.com> + + PR target/39327 + * config/i386/sse.md (avx_addsubv8sf3): Correct item bits. + (avx_addsubv4df3): Likewise. + (*avx_addsubv4sf3): Likewise. + (sse3_addsubv4sf3): Likewise. + (*avx_addsubv2df3): Likewise. + (sse3_addsubv2df3): Likewise. + (avx_unpckhps256): Correct item selectors. + (avx_unpcklps256): Likewise. + (avx_unpckhpd256): Likewise. + (avx_unpcklpd256): Likewise. + +2009-02-28 Jan Hubicka <jh@suse.cz> + + * tree-inline.c (expand_call_inline): Avoid duplicate declarations of + static vars. + (copy_arguments_for_versioning): If var is declared don't declare it. + (tree_function_versioning): First setup substitutions and then copy + args. + +2009-02-27 Jan Hubicka <jh@suse.cz> + + PR debug/39267 + * cgraph.h (varpool_output_debug_info): Remove. + * cgraphunit.c (varpool_output_debug_info): Remove. + * dwarf2out.c (deferred_locations_struct): New struct + (deferred_locations): New type. + (deferred_locations_list): New static var. + (deffer_location): New function. + (gen_variable_die): Use it. + (decls_for_scope): Output info on local static vars. + (dwarf2out_finish): Process deferred locations. + * varpool.c (varpool_output_debug_info): Remove. + +2009-02-27 Jan Hubicka <jh@suse.cz> + + PR debug/39267 + * tree.h (TREE_PROTECTED): Fix comment. + (BLOCK_HANDLER_BLOCK): Remove. + (struct tree_block): Remove handler_block add body_block. + (inlined_function_outer_scope_p): New. + (is_body_block): Remove. + * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK. + * dwarf2out.c (is_inlined_entry_point): Remove. + (add_high_low_attributes): Use inlined_function_outer_scope_p. + (gen_block_die): Use is_inlined_entry_point check. Remove body block + code. + * langhooks.h (struct lang_hooks): Remove no_bodu_blocks. + * gimplify.c (gimplify_expr): Gimplify body blocks. + * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper + block with multiple subblocks. + (dump_scope_block): Prettier output; dump more flags and info. + (dump_scope_blocks): New. + (remove_unused_locals): Use dump_scope_blocks. + * tree-flow.h (dump_scope_blocks): Declare. + * tree-cfg.c (execute_build_cfg): Dump scope blocks. + * stmt.c (is_body_block): Remove. + * tree-inline.c (remap_block): Copy BODY_BLOCK info. + * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove. + +2009-02-27 Sebastian Pop <sebastian.pop@amd.com> + + PR middle-end/39308 + * graphite.c (graphite_loop_normal_form): Do not call + number_of_iterations_exit from a gcc_assert. + +2009-02-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * gcc/config/s390/s390.c: (s390_swap_cmp): Look for conditional + jumps if COND is NULL. + (find_cond_jump): New function. + (s390_z10_optimize_cmp): Handling for reg-reg compares added. + * gcc/config/s390/s390.md: Remove z10_cobra attribute value. + +2009-02-26 Uros Bizjak <ubizjak@gmail.com> + + * config/alpha/alpha.h (alpha_expand_mov): Return false if + force_const_mem returns NULL_RTX. + +2009-02-26 Jan Hubicka <jh@suse.cz> + + PR debug/39267 + * cgraph.h (varpool_output_debug_info): Remove. + * cgraphunit.c (varpool_output_debug_info): Remove. + * dwarf2out.c (deferred_locations_struct): New struct + (deferred_locations): New type. + (deferred_locations_list): New static var. + (deffer_location): New function. + (gen_variable_die): Use it. + (decls_for_scope): Output info on local static vars. + (dwarf2out_finish): Process deferred locations. + * varpool.c (varpool_output_debug_info): Remove. + +2009-02-25 H.J. Lu <hongjiu.lu@intel.com> + + PR rtl-optimization/39241 + * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls + to subreg_offset_representable_p. + +2009-02-25 Paolo Bonzini <bonzini@gnu.org> + + * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass + execute function prototype. Get f and nregs from max_reg_num + and get_insns. Remove the first backward pass as it's dead, + guard the forward pass by flag_expensive_optimizations. + (rest_of_handle_regmove): Delete. + (pass_regmove): Replace it with regmove_optimize. + +2009-02-25 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/39259 + * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and + alls_alloca function flags. + (copy_bb): Set calls_setjmp and alls_alloca function flags if such + calls are detected. + +2009-02-25 Paolo Bonzini <bonzini@gnu.org> + + * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones, + flags_set_1_rtx, flags_set_1_set): Delete. + (regmove_optimize): Do not call mark_flags_life_zones. + +2009-02-24 Julian Brown <julian@codesourcery.com> + + PR target/35965 + * config/arm/arm.c (require_pic_register): Only set + cfun->machine->pic_reg once per function. + +2009-02-24 Sandra Loosemore <sandra@codesourcery.com> + + * doc/invoke.texi (Link Options): Document an easier way to pass + options that take arguments to the GNU linker using -Xlinker and -Wl. + +2009-02-24 Steve Ellcey <sje@cup.hp.com> + + PR target/33785 + * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description. + +2009-02-24 Richard Guenther <rguenther@suse.de> + + PR debug/39285 + * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs. + +2009-02-24 Richard Guenther <rguenther@suse.de> + Zdenek Dvorak <ook@ucw.cz> + + PR tree-optimization/39233 + * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers + from converting them to a generic type. + +2009-02-23 Sebastian Pop <sebastian.pop@amd.com> + + PR tree-optimization/39260 + * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block + contains a condition with a real type. + (build_scop_conditions_1): Conditions are always last_stmt of a bb. + +2009-02-23 Jason Merrill <jason@redhat.com> + + PR c++/38880 + * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check + narrowing_initializer_constant_valid_p. + (narrowing_initializer_constant_valid_p): Don't return + null_pointer_node for adding a pointer to itself. + +2009-02-23 Jan Hubicka <jh@suse.cz> + + PR c/12245 + * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when + resizing. + +2009-02-23 Jan Hubicka <jh@suse.cz> + + PR tree-optimization/37709 + * tree.c (block_ultimate_origin): Move here from dwarf2out. + * tree.h (block_ultimate_origin): Declare. + * dwarf2out.c (block_ultimate_origin): Move to tree.c + * tree-ssa-live.c (remove_unused_scope_block_p): + Eliminate blocks containig no instructions nor live variables nor + nested blocks. + (dump_scope_block): New function. + (remove_unused_locals): Enable removal of dead blocks by default; + enable dumping at TDF_DETAILS. + +2009-02-21 H.J. Lu <hongjiu.lu@intel.com> * config/i386/i386.c (classify_argument): Don't allow COImode and OImode. @@ -8,7 +356,7 @@ (return_in_memory_32): Likewise. (function_arg_64): Remove OImode comment. -2008-02-21 H.J. Lu <hongjiu.lu@intel.com> +2009-02-21 H.J. Lu <hongjiu.lu@intel.com> PR target/39261 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use @@ -25,7 +373,7 @@ * loop-iv.c: Revert last change. * emit-rtl.c: Likewise. -2008-02-21 H.J. Lu <hongjiu.lu@intel.com> +2009-02-21 H.J. Lu <hongjiu.lu@intel.com> PR target/39256 * config/i386/i386.c (type_natural_mode): Remove an extra @@ -341,7 +689,7 @@ (function_arg_32): Don't warn ABX ABI change here. (function_arg_64): Likewise. -2008-02-13 Bernd Schmidt <bernd.schmidt@analog.com> +2009-02-13 Bernd Schmidt <bernd.schmidt@analog.com> * loop-iv.c (implies_p): In the final case, test that operands 0 of the two comparisons match. @@ -901,12 +1249,12 @@ recompute_dominator to compute the immediate dominator of the basic block just after the loop. -2008-01-29 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> +2009-01-29 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA] (ASM_OUTPUT_DWARF_PCREL): Define. -2008-01-29 Vladimir Makarov <vmakarov@redhat.com> +2009-01-29 Vladimir Makarov <vmakarov@redhat.com> * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description. * doc/passes.texi: Remove entries about regclass, local-alloc, and @@ -1247,7 +1595,7 @@ void *' warning from -Wc++-compat. * Makefile.in (dominance.o-warn): Remove. -2008-01-23 Paolo Bonzini <bonzini@gnu.org> +2009-01-23 Paolo Bonzini <bonzini@gnu.org> PR tree-optimization/38932 * fold-const.c (fold_unary_ignore_overflow): New. @@ -1391,7 +1739,7 @@ * graphite.c (stmt_simple_for_scop_p): Also handle cases when gimple_call_lhs is NULL. -2008-01-20 Paolo Bonzini <bonzini@gnu.org> +2009-01-20 Paolo Bonzini <bonzini@gnu.org> PR target/38868 * emit-rtl.c (adjust_address_1): Make sure memref is never @@ -1774,7 +2122,7 @@ zero guard even if align_bytes != 0 and count is smaller than size_needed. -2008-01-09 Vladimir Makarov <vmakarov@redhat.com> +2009-01-09 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/38495 * ira-emit.c (print_move_list, ira_debug_move_list): New functions. diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b3c4fc4d752..6f61d0a2636 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20090223 +20090304 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index bebcb4af51d..5465899f298 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,41 @@ +2009-03-01 Eric Botcazou <ebotcazou@adacore.com> + + PR ada/39264 + * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Do no + call make_packable_type on fat pointer types. + <E_Array_Subtype>: Likewise. + <E_Record_Subtype>: Call make_packable_type on all record types + except for fat pointer types. + (make_packable_type): Likewise. + (gnat_to_gnu_field): Likewise. + +2009-02-28 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/Makefile.in (cygwin/mingw): Revert accidental + EH_MECHANISM change made on 2007-12-06. + +2009-02-26 Andreas Schwab <schwab@suse.de> + + PR ada/39172 + * Makefile.in (srcdir): Set to @top_srcdir@ instead of @srcdir@. + * gcc-interface/Makefile.in: Change all uses of $(srcdir), + $(fsrcdir) and $(fsrcpfx) to add ada subdir. + (AWK): Substitute. + (target_cpu_default): Substitute. + +2009-02-25 Laurent GUERBY <laurent@guerby.net> + + * a-teioed.adb (Expand): Fix Result overflow. + +2009-02-25 Laurent GUERBY <laurent@guerby.net> + + * gcc-interface/Makefile.in: Fix multilib handling for + sparc64-linux. + +2009-02-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + * s-oscons-tmplt.c [__osf__ && !_SS_MAXSIZE]: Undef AF_UNIX6. + 2009-02-18 H.J. Lu <hongjiu.lu@intel.com> * gcc-interface/misc.c (gnat_post_options): Turn off warn_psabi. @@ -40,7 +78,7 @@ 2009-01-31 Laurent GUERBY <laurent@guerby.net> * gcc-interface/Makefile.in: Fix mipsel linux handling. - + 2009-01-16 Jakub Jelinek <jakub@redhat.com> * gcc-interface/Makefile.in: Fix multilib handling for diff --git a/gcc/ada/Makefile.in b/gcc/ada/Makefile.in index 9f223c4195c..a662b20474f 100644 --- a/gcc/ada/Makefile.in +++ b/gcc/ada/Makefile.in @@ -1,3 +1,5 @@ -srcdir = @srcdir@ +# All makefile fragments assume that $(srcdir) points to the gcc +# directory, not the language subdir +srcdir = @top_srcdir@ -include ./gcc-interface/Makefile -include ../gcc-interface/Makefile diff --git a/gcc/ada/a-teioed.adb b/gcc/ada/a-teioed.adb index a5c2b662e36..081cef6fa06 100644 --- a/gcc/ada/a-teioed.adb +++ b/gcc/ada/a-teioed.adb @@ -84,6 +84,10 @@ package body Ada.Text_IO.Editing is -- character has already been made, so a count of one is a -- no-op, and a count of zero erases a character. + if Result_Index + Count - 2 > Result'Last then + raise Picture_Error; + end if; + for J in 2 .. Count loop Result (Result_Index + J - 2) := Picture (Picture_Index - 1); end loop; @@ -98,6 +102,10 @@ package body Ada.Text_IO.Editing is raise Picture_Error; when others => + if Result_Index > Result'Last then + raise Picture_Error; + end if; + Result (Result_Index) := Picture (Picture_Index); Picture_Index := Picture_Index + 1; Result_Index := Result_Index + 1; diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in index b28f45692bf..c431118608e 100644 --- a/gcc/ada/gcc-interface/Makefile.in +++ b/gcc/ada/gcc-interface/Makefile.in @@ -90,6 +90,7 @@ AR_FLAGS = rc LS = ls RANLIB = @RANLIB@ RANLIB_FLAGS = @ranlib_flags@ +AWK = @AWK@ SHELL = @SHELL@ PWD_COMMAND = $${PWDCMD-pwd} @@ -148,11 +149,12 @@ target=@target@ xmake_file = @xmake_file@ tmake_file = @tmake_file@ host_canonical=@host@ +target_cpu_default=@target_cpu_default@ #version=`sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/' < $(srcdir)/version.c` #mainversion=`sed -e 's/.*\"\([0-9]*\.[0-9]*\).*/\1/' < $(srcdir)/version.c` # Directory where sources are, from where we are. -VPATH = $(srcdir) +VPATH = $(srcdir)/ada fsrcdir := $(shell cd $(srcdir);${PWD_COMMAND}) fsrcpfx := $(shell cd $(srcdir);${PWD_COMMAND})/ @@ -189,19 +191,14 @@ all: all.indirect # This tells GNU Make version 3 not to put all variables in the environment. .NOEXPORT: -# tmake_file and xmake_file expand to lists with entries of the form -# $(srcdir)/config/... but here $(srcdir) is the ada subdirectory so we -# need to adjust the paths. There can't be spaces in the subst arguments -# or we get spurious spaces in the actual list of files to include. - # target overrides ifneq ($(tmake_file),) -include $(subst /config,/../config,$(tmake_file)) +include $(tmake_file) endif # host overrides ifneq ($(xmake_file),) -include $(subst /config,/../config,$(xmake_file)) +include $(xmake_file) endif # Now figure out from those variables how to compile and link. @@ -236,14 +233,14 @@ TOOLS_LIBS = $(EXTRA_GNATTOOLS_OBJS) targext.o link.o $(LIBGNAT) ../../../libibe # Both . and srcdir are used, in that order, # so that tm.h and config.h will be found in the compilation # subdirectory rather than in the source directory. -INCLUDES = -I- -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config \ - -I$(srcdir)/../../include +INCLUDES = -I- -I. -I.. -I$(srcdir)/ada -I$(srcdir) -I$(srcdir)/config \ + -I$(srcdir)/../include -ADA_INCLUDES = -I- -I. -I$(srcdir) +ADA_INCLUDES = -I- -I. -I$(srcdir)/ada -INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir) -I$(fsrcdir)/../config \ - -I$(fsrcdir)/../../include -I$(fsrcdir)/.. -ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir) -I$(fsrcdir)/gcc +INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir)/ada -I$(fsrcdir)/config \ + -I$(fsrcdir)/../include -I$(fsrcdir) +ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir)/ada # Avoid a lot of time thinking about remaking Makefile.in and *.def. .SUFFIXES: .in .def @@ -266,7 +263,7 @@ ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir) -I$(fsrcdir)/gcc $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION) # how to regenerate this file -Makefile: ../config.status $(srcdir)/gcc-interface/Makefile.in $(srcdir)/Makefile.in $(srcdir)/../version.c +Makefile: ../config.status $(srcdir)/ada/gcc-interface/Makefile.in $(srcdir)/ada/Makefile.in $(srcdir)/version.c cd ..; \ LANGUAGES="$(CONFIG_LANGUAGES)" \ CONFIG_HEADERS= \ @@ -392,7 +389,7 @@ DUMMY_SOCKETS_TARGET_PAIRS = \ g-sothco.ads<g-sothco-dummy.ads \ g-sttsne.ads<g-sttsne-dummy.ads -LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(fsrcpfx)gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) +LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(fsrcpfx)ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) # $(filter-out PATTERN...,TEXT) removes all PATTERN words from TEXT. # $(strip STRING) removes leading and trailing spaces from STRING. @@ -1334,7 +1331,7 @@ endif ../../vms_help$(exeext) \ ../../gnat.hlp # This command transforms (YYYYMMDD) into YY,MMDD - GSMATCH_VERSION := $(shell grep "^ *Gnat_Static_Version_String" $(fsrcpfx)gnatvsn.ads | sed -e 's/.*(\(.*\)).*/\1/' -e 's/\(..\)\(..\)\(....\).*/\2,\3/') + GSMATCH_VERSION := $(shell grep "^ *Gnat_Static_Version_String" $(fsrcpfx)ada/gnatvsn.ads | sed -e 's/.*(\(.*\)).*/\1/' -e 's/\(..\)\(..\)\(....\).*/\2,\3/') TOOLS_LIBS_LO := --for-linker=sys\\$$\$$library:trace.exe LIBRARY_VERSION := $(subst .,_,$(LIB_VERSION)) endif @@ -1406,8 +1403,6 @@ ifeq ($(strip $(filter-out cygwin32% mingw32% pe,$(osys))),) # ??? This will be replaced by gnatlib-shared-dual-win32 when GNAT # auto-import support for array/record will be done. GNATLIB_SHARED = gnatlib-shared-win32 - - EH_MECHANISM=-gcc endif TOOLS_TARGET_PAIRS= \ @@ -1540,7 +1535,7 @@ ifeq ($(strip $(filter-out sparc% linux%,$(arch) $(osys))),) LIBGNAT_TARGET_PAIRS_64 = \ system.ads<system-linux-sparcv9.ads - ifeq ($(strip $(MULTISUBDIR)),/64) + ifeq ($(strip $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory)),../lib64) LIBGNAT_TARGET_PAIRS = \ $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64) else @@ -1808,7 +1803,7 @@ LIBGNAT_OBJS = adaint.o argv.o cio.o cstreams.o ctrl_c.o errno.o exit.o env.o \ # GNATRTL_NONTASKING_OBJS and GNATRTL_TASKING_OBJS can be found in # the following include file: -include $(fsrcdir)/Makefile.rtl +include $(fsrcdir)/ada/Makefile.rtl GNATRTL_LINEARALGEBRA_OBJS = a-nlcoar.o a-nllcar.o a-nllrar.o a-nlrear.o \ a-nucoar.o a-nurear.o i-forbla.o i-forlap.o s-gearop.o @@ -1993,14 +1988,14 @@ install-gnatlib: ../stamp-gnatlib-$(RTSDIR) $(CHMOD) u+w $(RTSDIR) # Copy target independent sources $(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \ - $(LN_S) $(fsrcpfx)$(f) $(RTSDIR) ;) true + $(LN_S) $(fsrcpfx)ada/$(f) $(RTSDIR) ;) true # Remove files to be replaced by target dependent sources $(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \ $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)))) $(RM) $(RTSDIR)/*-*-*.ads $(RTSDIR)/*-*-*.adb # Copy new target dependent sources $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \ - $(LN_S) $(fsrcpfx)$(word 2,$(subst <, ,$(PAIR))) \ + $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \ $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));) # Copy generated target dependent sources $(RM) $(RTSDIR)/s-oscons.ads @@ -2372,5 +2367,5 @@ force: $(GNATLINK) -v vms_help -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS) ../../gnat.hlp: ../../vms_help$(exeext) - ../../vms_help$(exeext) $(fsrcdir)/gnat.help_in \ - $(fsrcdir)/vms_data.ads ../../gnat.hlp + ../../vms_help$(exeext) $(fsrcdir)/ada/gnat.help_in \ + $(fsrcdir)/ada/vms_data.ads ../../gnat.hlp diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 34d8b379831..0d722f273ea 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -1958,6 +1958,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) && !Has_Aliased_Components (gnat_entity) && !Strict_Alignment (Component_Type (gnat_entity)) && TREE_CODE (tem) == RECORD_TYPE + && !TYPE_IS_FAT_POINTER_P (tem) && host_integerp (TYPE_SIZE (tem), 1)) tem = make_packable_type (tem, false); @@ -2326,6 +2327,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) && !Has_Aliased_Components (gnat_entity) && !Strict_Alignment (Component_Type (gnat_entity)) && TREE_CODE (gnu_type) == RECORD_TYPE + && !TYPE_IS_FAT_POINTER_P (gnu_type) && host_integerp (TYPE_SIZE (gnu_type), 1)) gnu_type = make_packable_type (gnu_type, false); @@ -3082,8 +3084,8 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) == INTEGER_CST) { gnu_size = DECL_SIZE (gnu_old_field); - if (TYPE_MODE (gnu_field_type) == BLKmode - && TREE_CODE (gnu_field_type) == RECORD_TYPE + if (TREE_CODE (gnu_field_type) == RECORD_TYPE + && !TYPE_IS_FAT_POINTER_P (gnu_field_type) && host_integerp (TYPE_SIZE (gnu_field_type), 1)) gnu_field_type = make_packable_type (gnu_field_type, true); @@ -5697,8 +5699,8 @@ round_up_to_align (unsigned HOST_WIDE_INT t, unsigned int align) as the field type of a packed record if IN_RECORD is true, or as the component type of a packed array if IN_RECORD is false. See if we can rewrite it either as a type that has a non-BLKmode, which we can pack - tighter in the packed record case, or as a smaller type with BLKmode. - If so, return the new type. If not, return the original type. */ + tighter in the packed record case, or as a smaller type. If so, return + the new type. If not, return the original type. */ static tree make_packable_type (tree type, bool in_record) @@ -5760,10 +5762,10 @@ make_packable_type (tree type, bool in_record) tree new_field_type = TREE_TYPE (old_field); tree new_field, new_size; - if (TYPE_MODE (new_field_type) == BLKmode - && (TREE_CODE (new_field_type) == RECORD_TYPE - || TREE_CODE (new_field_type) == UNION_TYPE - || TREE_CODE (new_field_type) == QUAL_UNION_TYPE) + if ((TREE_CODE (new_field_type) == RECORD_TYPE + || TREE_CODE (new_field_type) == UNION_TYPE + || TREE_CODE (new_field_type) == QUAL_UNION_TYPE) + && !TYPE_IS_FAT_POINTER_P (new_field_type) && host_integerp (TYPE_SIZE (new_field_type), 1)) new_field_type = make_packable_type (new_field_type, true); @@ -6207,11 +6209,10 @@ gnat_to_gnu_field (Entity_Id gnat_field, tree gnu_record_type, int packed, gnu_size = NULL_TREE; /* If we have a specified size that's smaller than that of the field type, - or a position is specified, and the field type is also a record that's - BLKmode, see if we can get either an integral mode form of the type or - a smaller BLKmode form. If we can, show a size was specified for the - field if there wasn't one already, so we know to make this a bitfield - and avoid making things wider. + or a position is specified, and the field type is a record, see if we can + get either an integral mode form of the type or a smaller form. If we + can, show a size was specified for the field if there wasn't one already, + so we know to make this a bitfield and avoid making things wider. Doing this is first useful if the record is packed because we may then place the field at a non-byte-aligned position and so achieve tighter @@ -6231,7 +6232,7 @@ gnat_to_gnu_field (Entity_Id gnat_field, tree gnu_record_type, int packed, from a component clause. */ if (TREE_CODE (gnu_field_type) == RECORD_TYPE - && TYPE_MODE (gnu_field_type) == BLKmode + && !TYPE_IS_FAT_POINTER_P (gnu_field_type) && host_integerp (TYPE_SIZE (gnu_field_type), 1) && (packed == 1 || (gnu_size diff --git a/gcc/ada/s-oscons-tmplt.c b/gcc/ada/s-oscons-tmplt.c index 36a6b8eb1bc..8298f7526de 100644 --- a/gcc/ada/s-oscons-tmplt.c +++ b/gcc/ada/s-oscons-tmplt.c @@ -7,7 +7,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2008, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2009, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -837,6 +837,15 @@ CND(AF_INET, "IPv4 address family") # undef AF_INET6 #endif +/** + ** Tru64 UNIX V4.0F defines AF_INET6 without IPv6 support, specificially + ** without struct sockaddr_in6. We use _SS_MAXSIZE (used for the definition + ** of struct sockaddr_storage on Tru64 UNIX V5.1) to detect this. + **/ +#if defined(__osf__) && !defined(_SS_MAXSIZE) +# undef AF_INET6 +#endif + #ifndef AF_INET6 # define AF_INET6 -1 #else diff --git a/gcc/builtins.c b/gcc/builtins.c index 55639cde728..cc9d93e2311 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -11965,8 +11965,9 @@ expand_builtin_memory_chk (tree exp, rtx target, enum machine_mode mode, if (! integer_all_onesp (size) && tree_int_cst_lt (size, len)) { - warning (0, "%Kcall to %D will always overflow destination buffer", - exp, get_callee_fndecl (exp)); + warning_at (tree_nonartificial_location (exp), + 0, "%Kcall to %D will always overflow destination buffer", + exp, get_callee_fndecl (exp)); return NULL_RTX; } @@ -12073,6 +12074,7 @@ maybe_emit_chk_warning (tree exp, enum built_in_function fcode) { int is_strlen = 0; tree len, size; + location_t loc = tree_nonartificial_location (exp); switch (fcode) { @@ -12119,8 +12121,8 @@ maybe_emit_chk_warning (tree exp, enum built_in_function fcode) src = c_strlen (src, 1); if (! src || ! host_integerp (src, 1)) { - warning (0, "%Kcall to %D might overflow destination buffer", - exp, get_callee_fndecl (exp)); + warning_at (loc, 0, "%Kcall to %D might overflow destination buffer", + exp, get_callee_fndecl (exp)); return; } else if (tree_int_cst_lt (src, size)) @@ -12129,8 +12131,8 @@ maybe_emit_chk_warning (tree exp, enum built_in_function fcode) else if (! host_integerp (len, 1) || ! tree_int_cst_lt (size, len)) return; - warning (0, "%Kcall to %D will always overflow destination buffer", - exp, get_callee_fndecl (exp)); + warning_at (loc, 0, "%Kcall to %D will always overflow destination buffer", + exp, get_callee_fndecl (exp)); } /* Emit warning if a buffer overflow is detected at compile time @@ -12187,10 +12189,9 @@ maybe_emit_sprintf_chk_warning (tree exp, enum built_in_function fcode) return; if (! tree_int_cst_lt (len, size)) - { - warning (0, "%Kcall to %D will always overflow destination buffer", - exp, get_callee_fndecl (exp)); - } + warning_at (tree_nonartificial_location (exp), + 0, "%Kcall to %D will always overflow destination buffer", + exp, get_callee_fndecl (exp)); } /* Emit warning if a free is called with address of a variable. */ @@ -12209,9 +12210,11 @@ maybe_emit_free_warning (tree exp) return; if (SSA_VAR_P (arg)) - warning (0, "%Kattempt to free a non-heap object %qD", exp, arg); + warning_at (tree_nonartificial_location (exp), + 0, "%Kattempt to free a non-heap object %qD", exp, arg); else - warning (0, "%Kattempt to free a non-heap object", exp); + warning_at (tree_nonartificial_location (exp), + 0, "%Kattempt to free a non-heap object", exp); } /* Fold a call to __builtin_object_size with arguments PTR and OST, diff --git a/gcc/c-common.c b/gcc/c-common.c index e14402a4fd0..3d1580f726e 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -7777,6 +7777,7 @@ complete_array_type (tree *ptype, tree initial_value, bool do_default) tree curindex; unsigned HOST_WIDE_INT cnt; constructor_elt *ce; + bool fold_p = false; if (VEC_index (constructor_elt, v, 0)->index) maxindex = fold_convert (sizetype, @@ -7788,14 +7789,20 @@ complete_array_type (tree *ptype, tree initial_value, bool do_default) VEC_iterate (constructor_elt, v, cnt, ce); cnt++) { + bool curfold_p = false; if (ce->index) - curindex = fold_convert (sizetype, ce->index); + curindex = ce->index, curfold_p = true; else - curindex = size_binop (PLUS_EXPR, curindex, size_one_node); - + { + if (fold_p) + curindex = fold_convert (sizetype, curindex); + curindex = size_binop (PLUS_EXPR, curindex, size_one_node); + } if (tree_int_cst_lt (maxindex, curindex)) - maxindex = curindex; + maxindex = curindex, fold_p = curfold_p; } + if (fold_p) + maxindex = fold_convert (sizetype, maxindex); } } else diff --git a/gcc/c-objc-common.h b/gcc/c-objc-common.h index b9568c97372..2a981502b84 100644 --- a/gcc/c-objc-common.h +++ b/gcc/c-objc-common.h @@ -53,8 +53,6 @@ extern void c_initialize_diagnostics (diagnostic_context *); #define LANG_HOOKS_FINISH_INCOMPLETE_DECL c_finish_incomplete_decl #undef LANG_HOOKS_STATICP #define LANG_HOOKS_STATICP c_staticp -#undef LANG_HOOKS_NO_BODY_BLOCKS -#define LANG_HOOKS_NO_BODY_BLOCKS true #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl #undef LANG_HOOKS_PRINT_IDENTIFIER diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 782580466dd..57d4772cdd5 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -413,7 +413,6 @@ enum availability cgraph_variable_initializer_availability (struct varpool_node bool varpool_assemble_pending_decls (void); bool varpool_assemble_decl (struct varpool_node *node); bool varpool_analyze_pending_decls (void); -void varpool_output_debug_info (void); void varpool_remove_unreferenced_decls (void); void varpool_empty_needed_queue (void); diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 00a1bc26f1a..07998d4af8c 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -1313,7 +1313,6 @@ cgraph_optimize (void) varpool_assemble_pending_decls (); } - varpool_output_debug_info (); cgraph_process_new_functions (); cgraph_state = CGRAPH_STATE_FINISHED; diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 7bafb0ae84b..0675916a230 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -2124,6 +2124,8 @@ alpha_split_const_mov (enum machine_mode mode, rtx *operands) bool alpha_expand_mov (enum machine_mode mode, rtx *operands) { + rtx tmp; + /* If the output is not a register, the input must be. */ if (GET_CODE (operands[0]) == MEM && ! reg_or_0_operand (operands[1], mode)) @@ -2132,8 +2134,6 @@ alpha_expand_mov (enum machine_mode mode, rtx *operands) /* Allow legitimize_address to perform some simplifications. */ if (mode == Pmode && symbolic_operand (operands[1], mode)) { - rtx tmp; - tmp = alpha_legitimize_address (operands[1], operands[0], mode); if (tmp) { @@ -2158,14 +2158,18 @@ alpha_expand_mov (enum machine_mode mode, rtx *operands) } /* Otherwise we've nothing left but to drop the thing to memory. */ - operands[1] = force_const_mem (mode, operands[1]); + tmp = force_const_mem (mode, operands[1]); + + if (tmp == NULL_RTX) + return false; + if (reload_in_progress) { - emit_move_insn (operands[0], XEXP (operands[1], 0)); - operands[1] = replace_equiv_address (operands[1], operands[0]); + emit_move_insn (operands[0], XEXP (tmp, 0)); + operands[1] = replace_equiv_address (tmp, operands[0]); } else - operands[1] = validize_mem (operands[1]); + operands[1] = validize_mem (tmp); return false; } diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index c25fc29e411..662e7de1e49 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -3563,7 +3563,8 @@ require_pic_register (void) gcc_assert (can_create_pseudo_p ()); if (arm_pic_register != INVALID_REGNUM) { - cfun->machine->pic_reg = gen_rtx_REG (Pmode, arm_pic_register); + if (!cfun->machine->pic_reg) + cfun->machine->pic_reg = gen_rtx_REG (Pmode, arm_pic_register); /* Play games to avoid marking the function as needing pic if we are being called as part of the cost-estimation @@ -3575,7 +3576,8 @@ require_pic_register (void) { rtx seq; - cfun->machine->pic_reg = gen_reg_rtx (Pmode); + if (!cfun->machine->pic_reg) + cfun->machine->pic_reg = gen_reg_rtx (Pmode); /* Play games to avoid marking the function as needing pic if we are being called as part of the cost-estimation diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 7600a4563f3..5bdf379bca0 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -859,7 +859,7 @@ enum target_cpu_default 1, 1, 1, 1, 1, \ /*xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7*/ \ 0, 0, 0, 0, 0, 0, 0, 0, \ -/*mmx0,mmx1,mmx2,mmx3,mmx4,mmx5,mmx6,mmx7*/ \ +/* mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7*/ \ 0, 0, 0, 0, 0, 0, 0, 0, \ /* r8, r9, r10, r11, r12, r13, r14, r15*/ \ 2, 2, 2, 2, 2, 2, 2, 2, \ @@ -887,7 +887,7 @@ enum target_cpu_default 1, 1, 1, 1, 1, \ /*xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7*/ \ 1, 1, 1, 1, 1, 1, 1, 1, \ -/*mmx0,mmx1,mmx2,mmx3,mmx4,mmx5,mmx6,mmx7*/ \ +/* mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7*/ \ 1, 1, 1, 1, 1, 1, 1, 1, \ /* r8, r9, r10, r11, r12, r13, r14, r15*/ \ 1, 1, 1, 1, 2, 2, 2, 2, \ @@ -933,47 +933,32 @@ do { \ } \ j = PIC_OFFSET_TABLE_REGNUM; \ if (j != INVALID_REGNUM) \ - { \ - fixed_regs[j] = 1; \ - call_used_regs[j] = 1; \ - } \ + fixed_regs[j] = call_used_regs[j] = 1; \ if (TARGET_64BIT \ - && ((cfun && cfun->machine->call_abi == MS_ABI) \ - || (!cfun && DEFAULT_ABI == MS_ABI))) \ + && ((cfun && cfun->machine->call_abi == MS_ABI) \ + || (!cfun && DEFAULT_ABI == MS_ABI))) \ { \ - int i; \ - call_used_regs[4 /*RSI*/] = 0; \ - call_used_regs[5 /*RDI*/] = 0; \ - for (i = 0; i < 8; i++) \ - call_used_regs[45+i] = 0; \ - call_used_regs[27] = call_used_regs[28] = 0; \ + call_used_regs[4 /*RSI*/] = 0; \ + call_used_regs[5 /*RDI*/] = 0; \ + call_used_regs[27 /*XMM6*/] = 0; \ + call_used_regs[28 /*XMM7*/] = 0; \ + for (i = FIRST_REX_SSE_REG; i <= LAST_REX_SSE_REG; i++) \ + call_used_regs[i] = 0; \ } \ if (! TARGET_MMX) \ - { \ - int i; \ - for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ - if (TEST_HARD_REG_BIT (reg_class_contents[(int)MMX_REGS], i)) \ - fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = ""; \ - } \ + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ + if (TEST_HARD_REG_BIT (reg_class_contents[(int)MMX_REGS], i)) \ + fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = ""; \ if (! TARGET_SSE) \ - { \ - int i; \ - for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ - if (TEST_HARD_REG_BIT (reg_class_contents[(int)SSE_REGS], i)) \ - fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = ""; \ - } \ - if (! TARGET_80387 && ! TARGET_FLOAT_RETURNS_IN_80387) \ - { \ - int i; \ - HARD_REG_SET x; \ - COPY_HARD_REG_SET (x, reg_class_contents[(int)FLOAT_REGS]); \ - for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ - if (TEST_HARD_REG_BIT (x, i)) \ - fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = ""; \ - } \ + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ + if (TEST_HARD_REG_BIT (reg_class_contents[(int)SSE_REGS], i)) \ + fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = ""; \ + if (! (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387)) \ + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ + if (TEST_HARD_REG_BIT (reg_class_contents[(int)FLOAT_REGS], i)) \ + fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = ""; \ if (! TARGET_64BIT) \ { \ - int i; \ for (i = FIRST_REX_INT_REG; i <= LAST_REX_INT_REG; i++) \ reg_names[i] = ""; \ for (i = FIRST_REX_SSE_REG; i <= LAST_REX_SSE_REG; i++) \ diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 2fbf654a208..9c6ae1c12a6 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -264,6 +264,14 @@ (DI_REG 5) (BP_REG 6) (SP_REG 7) + (ST0_REG 8) + (ST1_REG 9) + (ST2_REG 10) + (ST3_REG 11) + (ST4_REG 12) + (ST5_REG 13) + (ST6_REG 14) + (ST7_REG 15) (FLAGS_REG 17) (FPSR_REG 18) (FPCR_REG 19) @@ -275,6 +283,14 @@ (XMM5_REG 26) (XMM6_REG 27) (XMM7_REG 28) + (MM0_REG 29) + (MM1_REG 30) + (MM2_REG 31) + (MM3_REG 32) + (MM4_REG 33) + (MM5_REG 34) + (MM6_REG 35) + (MM7_REG 36) (R10_REG 39) (R11_REG 40) (R13_REG 42) @@ -15045,16 +15061,16 @@ [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rsm")) (match_operand 1 "" "")) (unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL) - (clobber (reg:TI 27)) - (clobber (reg:TI 28)) - (clobber (reg:TI 45)) - (clobber (reg:TI 46)) - (clobber (reg:TI 47)) - (clobber (reg:TI 48)) - (clobber (reg:TI 49)) - (clobber (reg:TI 50)) - (clobber (reg:TI 51)) - (clobber (reg:TI 52)) + (clobber (reg:TI XMM6_REG)) + (clobber (reg:TI XMM7_REG)) + (clobber (reg:TI XMM8_REG)) + (clobber (reg:TI XMM9_REG)) + (clobber (reg:TI XMM10_REG)) + (clobber (reg:TI XMM11_REG)) + (clobber (reg:TI XMM12_REG)) + (clobber (reg:TI XMM13_REG)) + (clobber (reg:TI XMM14_REG)) + (clobber (reg:TI XMM15_REG)) (clobber (reg:DI SI_REG)) (clobber (reg:DI DI_REG))] "!SIBLING_CALL_P (insn) && TARGET_64BIT" @@ -21505,16 +21521,16 @@ (call (mem:QI (match_operand:DI 1 "constant_call_address_operand" "")) (match_operand:DI 2 "const_int_operand" ""))) (unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL) - (clobber (reg:TI 27)) - (clobber (reg:TI 28)) - (clobber (reg:TI 45)) - (clobber (reg:TI 46)) - (clobber (reg:TI 47)) - (clobber (reg:TI 48)) - (clobber (reg:TI 49)) - (clobber (reg:TI 50)) - (clobber (reg:TI 51)) - (clobber (reg:TI 52)) + (clobber (reg:TI XMM6_REG)) + (clobber (reg:TI XMM7_REG)) + (clobber (reg:TI XMM8_REG)) + (clobber (reg:TI XMM9_REG)) + (clobber (reg:TI XMM10_REG)) + (clobber (reg:TI XMM11_REG)) + (clobber (reg:TI XMM12_REG)) + (clobber (reg:TI XMM13_REG)) + (clobber (reg:TI XMM14_REG)) + (clobber (reg:TI XMM15_REG)) (clobber (reg:DI SI_REG)) (clobber (reg:DI DI_REG))] "!SIBLING_CALL_P (insn) && TARGET_64BIT" diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index 870fc8855e7..5184b1d7f5c 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -1583,22 +1583,22 @@ (define_insn "mmx_emms" [(unspec_volatile [(const_int 0)] UNSPECV_EMMS) - (clobber (reg:XF 8)) - (clobber (reg:XF 9)) - (clobber (reg:XF 10)) - (clobber (reg:XF 11)) - (clobber (reg:XF 12)) - (clobber (reg:XF 13)) - (clobber (reg:XF 14)) - (clobber (reg:XF 15)) - (clobber (reg:DI 29)) - (clobber (reg:DI 30)) - (clobber (reg:DI 31)) - (clobber (reg:DI 32)) - (clobber (reg:DI 33)) - (clobber (reg:DI 34)) - (clobber (reg:DI 35)) - (clobber (reg:DI 36))] + (clobber (reg:XF ST0_REG)) + (clobber (reg:XF ST1_REG)) + (clobber (reg:XF ST2_REG)) + (clobber (reg:XF ST3_REG)) + (clobber (reg:XF ST4_REG)) + (clobber (reg:XF ST5_REG)) + (clobber (reg:XF ST6_REG)) + (clobber (reg:XF ST7_REG)) + (clobber (reg:DI MM0_REG)) + (clobber (reg:DI MM1_REG)) + (clobber (reg:DI MM2_REG)) + (clobber (reg:DI MM3_REG)) + (clobber (reg:DI MM4_REG)) + (clobber (reg:DI MM5_REG)) + (clobber (reg:DI MM6_REG)) + (clobber (reg:DI MM7_REG))] "TARGET_MMX" "emms" [(set_attr "type" "mmx") @@ -1606,22 +1606,22 @@ (define_insn "mmx_femms" [(unspec_volatile [(const_int 0)] UNSPECV_FEMMS) - (clobber (reg:XF 8)) - (clobber (reg:XF 9)) - (clobber (reg:XF 10)) - (clobber (reg:XF 11)) - (clobber (reg:XF 12)) - (clobber (reg:XF 13)) - (clobber (reg:XF 14)) - (clobber (reg:XF 15)) - (clobber (reg:DI 29)) - (clobber (reg:DI 30)) - (clobber (reg:DI 31)) - (clobber (reg:DI 32)) - (clobber (reg:DI 33)) - (clobber (reg:DI 34)) - (clobber (reg:DI 35)) - (clobber (reg:DI 36))] + (clobber (reg:XF ST0_REG)) + (clobber (reg:XF ST1_REG)) + (clobber (reg:XF ST2_REG)) + (clobber (reg:XF ST3_REG)) + (clobber (reg:XF ST4_REG)) + (clobber (reg:XF ST5_REG)) + (clobber (reg:XF ST6_REG)) + (clobber (reg:XF ST7_REG)) + (clobber (reg:DI MM0_REG)) + (clobber (reg:DI MM1_REG)) + (clobber (reg:DI MM2_REG)) + (clobber (reg:DI MM3_REG)) + (clobber (reg:DI MM4_REG)) + (clobber (reg:DI MM5_REG)) + (clobber (reg:DI MM6_REG)) + (clobber (reg:DI MM7_REG))] "TARGET_3DNOW" "femms" [(set_attr "type" "mmx") diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index a54133378b5..db5b64fc3a8 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -1101,7 +1101,7 @@ (match_operand:V8SF 1 "register_operand" "x") (match_operand:V8SF 2 "nonimmediate_operand" "xm")) (minus:V8SF (match_dup 1) (match_dup 2)) - (const_int 85)))] + (const_int 66)))] "TARGET_AVX" "vaddsubps\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseadd") @@ -1115,7 +1115,7 @@ (match_operand:V4DF 1 "register_operand" "x") (match_operand:V4DF 2 "nonimmediate_operand" "xm")) (minus:V4DF (match_dup 1) (match_dup 2)) - (const_int 5)))] + (const_int 6)))] "TARGET_AVX" "vaddsubpd\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseadd") @@ -1129,7 +1129,7 @@ (match_operand:V4SF 1 "register_operand" "x") (match_operand:V4SF 2 "nonimmediate_operand" "xm")) (minus:V4SF (match_dup 1) (match_dup 2)) - (const_int 5)))] + (const_int 6)))] "TARGET_AVX" "vaddsubps\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseadd") @@ -1143,7 +1143,7 @@ (match_operand:V4SF 1 "register_operand" "0") (match_operand:V4SF 2 "nonimmediate_operand" "xm")) (minus:V4SF (match_dup 1) (match_dup 2)) - (const_int 5)))] + (const_int 6)))] "TARGET_SSE3" "addsubps\t{%2, %0|%0, %2}" [(set_attr "type" "sseadd") @@ -1157,7 +1157,7 @@ (match_operand:V2DF 1 "register_operand" "x") (match_operand:V2DF 2 "nonimmediate_operand" "xm")) (minus:V2DF (match_dup 1) (match_dup 2)) - (const_int 1)))] + (const_int 2)))] "TARGET_AVX" "vaddsubpd\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseadd") @@ -1171,7 +1171,7 @@ (match_operand:V2DF 1 "register_operand" "0") (match_operand:V2DF 2 "nonimmediate_operand" "xm")) (minus:V2DF (match_dup 1) (match_dup 2)) - (const_int 1)))] + (const_int 2)))] "TARGET_SSE3" "addsubpd\t{%2, %0|%0, %2}" [(set_attr "type" "sseadd") @@ -3059,10 +3059,10 @@ (vec_concat:V16SF (match_operand:V8SF 1 "register_operand" "x") (match_operand:V8SF 2 "nonimmediate_operand" "xm")) - (parallel [(const_int 2) (const_int 6) - (const_int 3) (const_int 7) - (const_int 10) (const_int 14) - (const_int 11) (const_int 15)])))] + (parallel [(const_int 2) (const_int 10) + (const_int 3) (const_int 11) + (const_int 6) (const_int 14) + (const_int 7) (const_int 15)])))] "TARGET_AVX" "vunpckhps\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sselog") @@ -3102,10 +3102,10 @@ (vec_concat:V16SF (match_operand:V8SF 1 "register_operand" "x") (match_operand:V8SF 2 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) (const_int 4) - (const_int 1) (const_int 5) - (const_int 8) (const_int 12) - (const_int 9) (const_int 13)])))] + (parallel [(const_int 0) (const_int 8) + (const_int 1) (const_int 9) + (const_int 4) (const_int 12) + (const_int 5) (const_int 13)])))] "TARGET_AVX" "vunpcklps\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sselog") @@ -3902,7 +3902,7 @@ (vec_concat:V8DF (match_operand:V4DF 1 "register_operand" "x") (match_operand:V4DF 2 "nonimmediate_operand" "xm")) - (parallel [(const_int 2) (const_int 6) + (parallel [(const_int 1) (const_int 5) (const_int 3) (const_int 7)])))] "TARGET_AVX" "vunpckhpd\t{%2, %1, %0|%0, %1, %2}" @@ -4023,7 +4023,7 @@ (match_operand:V4DF 1 "register_operand" "x") (match_operand:V4DF 2 "nonimmediate_operand" "xm")) (parallel [(const_int 0) (const_int 4) - (const_int 1) (const_int 5)])))] + (const_int 2) (const_int 6)])))] "TARGET_AVX" "vunpcklpd\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sselog") diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 64da58a7f12..f153d137411 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -7782,7 +7782,7 @@ mips_mdebug_abi_name (void) case ABI_N32: return "abiN32"; case ABI_64: - return "abiN64"; + return "abi64"; case ABI_EABI: return TARGET_64BIT ? "eabi64" : "eabi32"; default: diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 7ad230ea3a9..eb08828c29b 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -9589,21 +9589,6 @@ s390_optimize_prologue (void) } } - -/* Exchange the two operands of COND, and swap its mask so that the - semantics does not change. */ -static void -s390_swap_cmp (rtx cond) -{ - enum rtx_code code = swap_condition (GET_CODE (cond)); - rtx tmp = XEXP (cond, 0); - - XEXP (cond, 0) = XEXP (cond, 1); - XEXP (cond, 1) = tmp; - PUT_CODE (cond, code); -} - - /* Returns 1 if INSN reads the value of REG for purposes not related to addressing of memory, and 0 otherwise. */ static int @@ -9613,6 +9598,71 @@ s390_non_addr_reg_read_p (rtx reg, rtx insn) && !reg_used_in_mem_p (REGNO (reg), PATTERN (insn)); } +/* Starting from INSN find_cond_jump looks downwards in the insn + stream for a single jump insn which is the last user of the + condition code set in INSN. */ +static rtx +find_cond_jump (rtx insn) +{ + for (; insn; insn = NEXT_INSN (insn)) + { + rtx ite, cc; + + if (LABEL_P (insn)) + break; + + if (!JUMP_P (insn)) + { + if (reg_mentioned_p (gen_rtx_REG (CCmode, CC_REGNUM), insn)) + break; + continue; + } + + /* This will be triggered by a return. */ + if (GET_CODE (PATTERN (insn)) != SET) + break; + + gcc_assert (SET_DEST (PATTERN (insn)) == pc_rtx); + ite = SET_SRC (PATTERN (insn)); + + if (GET_CODE (ite) != IF_THEN_ELSE) + break; + + cc = XEXP (XEXP (ite, 0), 0); + if (!REG_P (cc) || !CC_REGNO_P (REGNO (cc))) + break; + + if (find_reg_note (insn, REG_DEAD, cc)) + return insn; + break; + } + + return NULL_RTX; +} + +/* Swap the condition in COND and the operands in OP0 and OP1 so that + the semantics does not change. If NULL_RTX is passed as COND the + function tries to find the conditional jump starting with INSN. */ +static void +s390_swap_cmp (rtx cond, rtx *op0, rtx *op1, rtx insn) +{ + rtx tmp = *op0; + + if (cond == NULL_RTX) + { + rtx jump = find_cond_jump (NEXT_INSN (insn)); + jump = jump ? single_set (jump) : NULL_RTX; + + if (jump == NULL_RTX) + return; + + cond = XEXP (XEXP (jump, 1), 0); + } + + *op0 = *op1; + *op1 = tmp; + PUT_CODE (cond, swap_condition (GET_CODE (cond))); +} /* On z10, instructions of the compare-and-branch family have the property to access the register occurring as second operand with @@ -9622,7 +9672,7 @@ s390_non_addr_reg_read_p (rtx reg, rtx insn) pipeline recycles, thereby causing significant performance decline. This function locates such situations and exchanges the two operands of the compare. */ -static void +static void s390_z10_optimize_cmp (void) { rtx insn, prev_insn, next_insn; @@ -9630,54 +9680,79 @@ s390_z10_optimize_cmp (void) for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) { + rtx cond, *op0, *op1; + if (!INSN_P (insn) || INSN_CODE (insn) <= 0) continue; - if (get_attr_z10prop (insn) == Z10PROP_Z10_COBRA) + if (GET_CODE (PATTERN (insn)) == PARALLEL) { - rtx op0, op1, pattern, jump_expr, cond; + /* Handle compare and branch and branch on count + instructions. */ + rtx pattern = single_set (insn); - /* Extract the comparison´s condition and its operands. */ - pattern = single_set (insn); - gcc_assert (GET_CODE (pattern) == SET); - jump_expr = XEXP (pattern, 1); - gcc_assert (GET_CODE (jump_expr) == IF_THEN_ELSE); - cond = XEXP (jump_expr, 0); - op0 = XEXP (cond, 0); - op1 = XEXP (cond, 1); + if (!pattern + || SET_DEST (pattern) != pc_rtx + || GET_CODE (SET_SRC (pattern)) != IF_THEN_ELSE) + continue; - /* Swap the COMPARE´s arguments and its mask if there is a - conflicting access in the previous insn. */ - prev_insn = PREV_INSN (insn); - if (prev_insn != NULL_RTX && INSN_P (prev_insn) - && reg_referenced_p (op1, PATTERN (prev_insn))) - { - s390_swap_cmp (cond); - op0 = XEXP (cond, 0); - op1 = XEXP (cond, 1); - } + cond = XEXP (SET_SRC (pattern), 0); + op0 = &XEXP (cond, 0); + op1 = &XEXP (cond, 1); + } + else if (GET_CODE (PATTERN (insn)) == SET) + { + rtx src, dest; - /* Check if there is a conflict with the next insn. If there - was no conflict with the previous insn, then swap the - COMPARE´s arguments and its mask. If we already swapped - the operands, or if swapping them would cause a conflict - with the previous insn, issue a NOP after the COMPARE in - order to separate the two instuctions. */ - next_insn = NEXT_INSN (insn); - if (next_insn != NULL_RTX && INSN_P (next_insn) - && s390_non_addr_reg_read_p (op1, next_insn)) - { - if (s390_non_addr_reg_read_p (op0, prev_insn)) - { - if (REGNO(op1) == 0) - emit_insn_after (gen_nop1 (), insn); - else - emit_insn_after (gen_nop (), insn); - added_NOPs = 1; - } + /* Handle normal compare instructions. */ + src = SET_SRC (PATTERN (insn)); + dest = SET_DEST (PATTERN (insn)); + + if (!REG_P (dest) + || !CC_REGNO_P (REGNO (dest)) + || GET_CODE (src) != COMPARE) + continue; + + /* s390_swap_cmp will try to find the conditional + jump when passing NULL_RTX as condition. */ + cond = NULL_RTX; + op0 = &XEXP (src, 0); + op1 = &XEXP (src, 1); + } + else + continue; + + if (!REG_P (*op0) || !REG_P (*op1)) + continue; + + /* Swap the COMPARE arguments and its mask if there is a + conflicting access in the previous insn. */ + prev_insn = PREV_INSN (insn); + if (prev_insn != NULL_RTX && INSN_P (prev_insn) + && reg_referenced_p (*op1, PATTERN (prev_insn))) + s390_swap_cmp (cond, op0, op1, insn); + + /* Check if there is a conflict with the next insn. If there + was no conflict with the previous insn, then swap the + COMPARE arguments and its mask. If we already swapped + the operands, or if swapping them would cause a conflict + with the previous insn, issue a NOP after the COMPARE in + order to separate the two instuctions. */ + next_insn = NEXT_INSN (insn); + if (next_insn != NULL_RTX && INSN_P (next_insn) + && s390_non_addr_reg_read_p (*op1, next_insn)) + { + if (prev_insn != NULL_RTX && INSN_P (prev_insn) + && s390_non_addr_reg_read_p (*op0, prev_insn)) + { + if (REGNO (*op1) == 0) + emit_insn_after (gen_nop1 (), insn); else - s390_swap_cmp (cond); + emit_insn_after (gen_nop (), insn); + added_NOPs = 1; } + else + s390_swap_cmp (cond, op0, op1, insn); } } @@ -9799,7 +9874,7 @@ s390_reorg (void) /* Eliminate z10-specific pipeline recycles related to some compare instructions. */ - if (TARGET_Z10) + if (s390_tune == PROCESSOR_2097_Z10) s390_z10_optimize_cmp (); } diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 3d628d81967..7ecc3ccb353 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -235,7 +235,6 @@ ;; can immediately read the new value. ;; z10_fr: union of Z10_fwd and z10_rec. ;; z10_c: second operand of instruction is a register and read with complemented bits. -;; z10_cobra: its a compare and branch instruction ;; ;; An additional suffix A1, A3, or E1 indicates the respective AGI bypass. @@ -245,7 +244,7 @@ z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1, z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, - z10_c, z10_cobra" + z10_c" (const_string "none")) @@ -774,7 +773,7 @@ cy\t%0,%1 #" [(set_attr "op_type" "RR,RI,RIL,RX,RXY,SS") - (set_attr "z10prop" "z10_super,z10_super,z10_super,z10_super,z10_super,*")]) + (set_attr "z10prop" "z10_super_c,z10_super,z10_super,z10_super,z10_super,*")]) ; Compare (signed) instructions @@ -1043,7 +1042,7 @@ } [(set_attr "op_type" "RIE") (set_attr "type" "branch") - (set_attr "z10prop" "z10_cobra,z10_super") + (set_attr "z10prop" "z10_super_c,z10_super") (set (attr "length") (if_then_else (lt (abs (minus (pc) (match_dup 3))) (const_int 60000)) (const_int 6) (const_int 12)))]) ; 8 byte for cr/jg @@ -1071,7 +1070,7 @@ } [(set_attr "op_type" "RIE") (set_attr "type" "branch") - (set_attr "z10prop" "z10_cobra,z10_super") + (set_attr "z10prop" "z10_super_c,z10_super") (set (attr "length") (if_then_else (lt (abs (minus (pc) (match_dup 3))) (const_int 60000)) (const_int 6) (const_int 12)))]) ; 8 byte for clr/jg @@ -7679,7 +7678,7 @@ (const_string "RR") (const_string "RX"))) (set_attr "type" "branch") (set_attr "atype" "agen") - (set_attr "z10prop" "z10_cobra")]) + (set_attr "z10prop" "z10_c")]) (define_insn_and_split "doloop_di" [(set (pc) diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c index a29125269e5..c2fbb331b0a 100644 --- a/gcc/config/spu/spu.c +++ b/gcc/config/spu/spu.c @@ -143,6 +143,7 @@ static bool spu_vector_alignment_reachable (const_tree, bool); static tree spu_builtin_vec_perm (tree, tree *); static int spu_sms_res_mii (struct ddg *g); static void asm_file_start (void); +static unsigned int spu_section_type_flags (tree, const char *, int); extern const char *reg_names[]; rtx spu_compare_op0, spu_compare_op1; @@ -329,6 +330,9 @@ const struct attribute_spec spu_attribute_table[]; #undef TARGET_ASM_FILE_START #define TARGET_ASM_FILE_START asm_file_start +#undef TARGET_SECTION_TYPE_FLAGS +#define TARGET_SECTION_TYPE_FLAGS spu_section_type_flags + struct gcc_target targetm = TARGET_INITIALIZER; void @@ -6285,3 +6289,13 @@ asm_file_start (void) default_file_start (); } +/* Implement targetm.section_type_flags. */ +static unsigned int +spu_section_type_flags (tree decl, const char *name, int reloc) +{ + /* .toe needs to have type @nobits. */ + if (strcmp (name, ".toe") == 0) + return SECTION_BSS; + return default_section_type_flags (decl, name, reloc); +} + diff --git a/gcc/configure b/gcc/configure index f5efd3b79be..bee7f5b9d9b 100755 --- a/gcc/configure +++ b/gcc/configure @@ -15616,7 +15616,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -17787,7 +17787,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -18348,7 +18348,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -19897,7 +19897,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ecc83b43a31..9d1ab5a6211 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,26 @@ +2009-02-26 H.J. Lu <hongjiu.lu@intel.com> + + PR c++/37789 + * parser.c (cp_parser_mem_initializer): Return error_mark_node + if cp_parser_mem_initializer_id returns error_mark_node. + +2009-02-24 Richard Guenther <rguenther@suse.de> + + PR c++/39242 + * pt.c (instantiate_decl): Do not instantiate extern, non-inline + declared functions. + +2009-02-23 H.J. Lu <hongjiu.lu@intel.com> + + PR c++/36411 + * pt.c (coerce_template_template_parms): Return 0 if parameter + is error_mark_node. + +2009-02-23 Jason Merrill <jason@redhat.com> + + * pt.c (unify): Call maybe_adjust_types_for_deduction when + deducing from an initializer list. + 2009-02-20 Jason Merrill <jason@redhat.com> PR c++/39225 @@ -391,6598 +414,3 @@ PR c++/38684 * typeck2.c (digest_init_r): Don't use process_init_constructor for non-aggregate classes. - -2008-12-31 Jakub Jelinek <jakub@redhat.com> - - PR c++/38647 - * parser.c (cp_parser_primary_expression) <case RID_FUNCTION_NAME>: - Return error_mark_node if cp_parser_non_integral_constant_expression - returns true. - - PR c++/38640 - * semantics.c (finish_decltype_type): Handle TEMPLATE_PARM_INDEX. - -2008-12-29 Jakub Jelinek <jakub@redhat.com> - - PR c++/38635 - * parser.c (cp_parser_condition): Use cp_parser_require - instead of cp_lexer_consume_token to consume =. - - PR c++/38637 - * decl.c (start_enum): If enumtype is error_mark_node, exit early. - -2008-12-28 Jakub Jelinek <jakub@redhat.com> - - PR c++/38650 - * semantics.c (finish_omp_for): Don't add CLEANUP_POINT_EXPR - around volatile iteration var in condition and/or increment - expression. - -2008-12-27 Jakub Jelinek <jakub@redhat.com> - - PR c++/38639 - * pt.c (tsubst_omp_for_iterator): RECUR on whole init_expr instead of - just its type. - -2008-12-21 Jason Merrill <jason@redhat.com> - - PR c++/38597 - * name-lookup.c (arg_assoc_type): Handle DECLTYPE_TYPE. - -2008-12-20 Jakub Jelinek <jakub@redhat.com> - Manuel López-Ibáñez <manu@gcc.gnu.org> - - PR c++/36921 - * c-common.c (warn_about_parentheses): Remove ARG_UNUSED from - arg_left. Don't warn about X<=Y<=Z if comparison's type isn't - integral. - -2008-12-19 Jakub Jelinek <jakub@redhat.com> - - PR c++/38577 - * call.c (build_new_method_call): Handle call being COMPOUND_EXPR - or NOP_EXPR. - -2008-12-18 Jakub Jelinek <jakub@redhat.com> - - PR c++/38427 - * init.c (perform_member_init): For value-initialized - references call permerror instead of warning and don't emit any - INIT_EXPR. - -2008-12-18 Jason Merrill <jason@redhat.com> - - PR c++/38485 - * parser.c (cp_parser_token_starts_cast_expression): An EOF - can't start a cast-expression. - -2008-12-17 Jason Merrill <jason@redhat.com> - - * semantics.c (describable_type): New function. - (finish_decltype_type): Use it for dependent exprs. - * cp-tree.h: Declare it. - * mangle.c (write_type) [DECLTYPE_TYPE]: Set skip_evaluation. - (write_expression): If skip_evaluation, use type stubs. - * tree.c (cp_tree_equal): Handle PARM_DECLs from different - declarations of a function. - * init.c (build_new): Do auto deduction if type is describable. - * decl.c (cp_finish_decl): Likewise. - * parser.c (cp_parser_omp_for_loop): Likewise. - -2008-12-10 Jason Merrill <jason@redhat.com> - - PR c++/35319 - * mangle.c (write_builtin_type): Add mangling for decimal floating - point and fixed point types. - (write_type): Pass FIXED_POINT_TYPE along. - -2008-12-09 Mark Mitchell <mark@codesourcery.com> - - PR c++/37971 - * class.c (resolve_address_of_overloaded_function): Check - accessibility of member functions unless FLAGS indicates - otherwise. - * call.c (standard_conversion): Adjust flags passed to - instantiate_type. - (convert_default_arg): Do not perform access checks. - * cp-tree.h (tsubst_flags_t): Add tf_no_access_control. - -2008-12-08 Steve Ellcey <sje@cup.hp.com> - - * decl2.c (mark_used): Remove assemble_external call. - -2008-12-08 Dodji Seketeli <dodji@redhat.com> - - PR debug/38390 - * name-lookup.c (kept_level_p): Don't forget the case of levels - having using directives. - -2008-12-08 Richard Henderson <rth@redhat.com> - - PR 38240 - * class.c (finish_struct_bits): Use SET_TYPE_MODE. - * decl.c (record_unknown_type): Likewise. - (start_enum, finish_enum): Likewise. - -2008-12-05 Jakub Jelinek <jakub@redhat.com> - - PR c++/35336 - * error.c (dump_expr): Handle BIT_FIELD_REF. - -2008-12-05 Sebastian Pop <sebastian.pop@amd.com> - - PR bootstrap/38262 - * Make-lang.in (cc1plus-dummy, cc1plus): Add BACKENDLIBS, - remove GMPLIBS. - -2008-12-04 Jason Merrill <jason@redhat.com> - - PR c++/37906 - * decl.c (grok_special_member_properties): Set TYPE_HAS_COMPLEX_DFLT - here. - * class.c (check_bases_and_members): Rather than assuming any - user-declared default constructor is complex here. - -2008-12-04 Richard Guenther <rguenther@suse.de> - - PR c++/38334 - * typeck.c (get_member_function_from_ptrfunc): Mark the vtbl - pointer access with TREE_NO_WARNING. - -2008-12-03 Jason Merrill <jason@redhat.com> - - PR c++/38232 - * init.c (build_value_init): Do initial zero-initialization - of a class with an implicitly-defined constructor using - build_zero_init rather than in build_value_init. - (build_value_init_1): Fold into build_value_init. - - PR c++/38256 - * parser.c (cp_parser_conversion_type_id): Diagnose - 'operator auto' here. - * decl.c (grokdeclarator): Not here. - - PR c++/38380 - * decl.c (grokdeclarator): Only set DECL_NONCONVERTING_P - on explicit constructors. - * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Propagate - CONSTRUCTOR_IS_DIRECT_INIT. - -2008-12-02 Jason Merrill <jason@redhat.com> - - PR c++/35782, c++/37860 - * call.c (build_user_type_conversion_1): Remember - list-initialization. - (convert_like_real): Likewise. - (build_over_call): Don't require the copy constructor - for copy-list-initialization. - * cp-tree.h (TARGET_EXPR_LIST_INIT_P): New macro. - - PR c++/37234 - * decl.c (cp_finish_decl): Handle =default and =delete for - templates, too. - -2008-12-01 Jakub Jelinek <jakub@redhat.com> - - PR c++/38257 - * parser.c (cp_parser_omp_for_loop): Handle auto. - * pt.c (tsubst_omp_for_iterator): Likewise. - -2008-11-28 Jason Merrill <jason@redhat.com> - - PR c++/38233 - * init.c (perform_member_init): Fix value-initialization. - (build_value_init_1): Add assert to catch cases that will break - in the gimplifier. - (build_default_init): Remove. - * cp-tree.h: Remove its prototype. - * pt.c (tsubst_expr) [DECL_EXPR]: Use build_value_init for - value-initialization. - - PR c++/38278 - * parser.c (cp_parser_class_name): Only call - maybe_note_name_used_in_class if we actually found a class name. - -2008-11-25 Jason Merrill <jason@redhat.com> - - PR c++/28743 - * decl2.c (check_classfn): Error rather than abort on parameter - list mismatch. - -2008-11-20 Jason Merrill <jason@redhat.com> - - PR c++/28513 - * parser.c (cp_parser_class_name): Call maybe_note_name_used_in_class. - - PR c++/37540 - * call.c (build_over_call): Take the address of the function even - in a template. - (build_new_method_call): Remember the type of the called function - in a template. - -2008-11-19 Dodji Seketeli <dodji@redhat.com> - - PR c++/37142 - * pt.c (coerce_template_template_parm): Use the more robust - uses_template_parms instead of dependent_type_p. - -2008-11-19 Dodji Seketeli <dodji@redhat.com> - - PR c++/35405 - * pt.c (lookup_template_class): Check pointers before dereferencing - them. - * error.c (dump_template_decl): Likewise. - -2008-11-19 Jason Merrill <jason@redhat.com> - - PR c++/36410 - * decl2.c (grokfield): Pass ATTR_FLAG_TYPE_IN_PLACE for a typedef - that names a class for linkage purposes. - - PR c++/37563 - * parser.c (cp_parser_pseudo_destructor_name): A pseudo-destructor - name is not a declaration. - - PR c++/37256 - * pt.c (instantiate_decl): Don't require a definition of - a template that is explicitly instantiated 'extern'. - -2008-11-18 Jason Merrill <jason@redhat.com> - Jakub Jelinek <jakub@redhat.com> - - PR c++/37962 - * parser.c (cp_parser_type_id): Complain about auto. - * decl.c (grokdeclarator): Complain about parameters and - conversion functions declared with auto. - - * call.c (standard_conversion): Use CLASS_TYPE_P instead of - MAYBE_CLASS_TYPE_P. - * cp-tree.h (TYPE_NON_AGGREGATE_CLASS): Likewise. - -2008-11-17 Jakub Jelinek <jakub@redhat.com> - - PR c++/36089 - * init.c (constant_value_1): Handle TREE_LIST init. - -2008-11-15 Jakub Jelinek <jakub@redhat.com> - - PR c++/37561 - * typeck.c (cp_build_unary_op): Don't call get_unwidened. Use - argtype instead of result_type. - -2008-11-14 Jason Merrill <jason@redhat.com> - - PR c++/38030 - * semantics.c (finish_call_expr): Don't repeat arg-dep lookup - for a non-dependent call. - - PR c++/37740 - * call.c (build_aggr_conv): Increment i. - -2008-11-13 Jason Merrill <jason@redhat.com> - - PR c++/37932 - * typeck2.c (process_init_constructor_record): Update bitfield - handling. - (check_narrowing): Update bitfield handling, print source type. - -2008-11-12 Jakub Jelinek <jakub@redhat.com> - - PR c++/36478 - Revert: - 2007-05-07 Mike Stump <mrs@apple.com> - * parser.c (check_empty_body): Add. - (cp_parser_iteration_statement): Add call to check_empty_body. - -2008-11-12 Jason Merrill <jason@redhat.com> - - PR c++/38007 - * typeck.c (cp_build_modify_expr): Update bitfield handling. - -2008-11-12 Jakub Jelinek <jakub@redhat.com> - - PR c++/34269 - * parser.c (cp_parser_simple_declaration): Don't commit - to tentative parse if parse errors were seen. - - PR c++/35334 - * error.c (dump_expr): Handle COMPLEX_EXPR. - -2008-11-10 Jakub Jelinek <jakub@redhat.com> - - PR c++/38021 - * parser.c (cp_parser_enum_specifier): After parsing :, - parse definitely. Don't return early if type specifier - is erroneous. - -2008-11-06 David Edelsohn <edelsohn@gnu.org> - - PR target/26397 - * g++spec.c (LIBSTDCXX_STATIC): New. - (lang_spec_driver): Use LIBSTDCXX_STATIC when not - shared_libgcc. - -2008-11-05 Fabien Chene <fabien.chene@gmail.com> - - PR c++/32519 - * cp-tree.h: Fix DECL_NONSTATIC_MEMBER_P to handle member template - functions. - -2008-11-05 Richard Guenther <rguenther@suse.de> - - PR middle-end/37742 - * decl.c (start_preparsed_function): Use the correct type for - building the RESULT_DECL. - -2008-10-31 Jakub Jelinek <jakub@redhat.com> - - PR c++/37967 - * decl.c (grokdeclarator): Diagnose auto function decl without - late return type and late return type function decl where type - is not auto. - - PR c++/37965 - * decl.c (cp_finish_decl): Diagnose type_uses_auto type with - no initializer. - -2008-10-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 11492 - * class.c (check_bitfield_decl): Rename min_precision to - tree_int_cst_min_precision. - * decl.c (finish_enum): Likewise. - -2008-10-29 Manuel López-Ibáñez <manu@gcc.gnu.org> - - PR c++/26997 - * parser.c (cp_parser_token_starts_cast_expression): New. - (cp_parser_cast_expression): Peek the next token to decide whether - this could be a parenthesized constructor or is definitely an - actual cast. - -2008-10-24 Manuel López-Ibáñez <manu@gcc.gnu.org> - - PR c/7543 - * typeck.c (build_x_binary_op): Update call to - warn_about_parentheses. - * parser.c (cp_parser_binary_expression): Add note about passing - the correct code for unary expressions. - -2008-10-24 Jakub Jelinek <jakub@redhat.com> - - * Make-lang.in (check-c++-subtargets): New alias for - check-g++-subtargets. - (lang_checks_parallelized): Add check-g++. - (check_g++_parallelize): New variable. - -2008-10-21 Richard Guenther <rguenther@suse.de> - - * semantics.c (simplify_aggr_init_exprs_r): Remove. - (expand_or_defer_fn): Do not walk the function body to - simplify aggr_init_exprs. - -2008-10-20 Manuel López-Ibáñez <manu@gcc.gnu.org> - - PR c++/37004 - * typeck.c (cp_common_type): New. The same as - type_after_usual_arithmetic_conversions but without promotions. - (type_after_usual_arithmetic_conversions): Do the promotions and - call cp_common_type. - (common_type): Make it behave like the C version of this - function. Do not handle pointer types. - (common_pointer_type): Move handling of pointer types from - common_type to here. - (cp_build_binary_op): Use common_pointer_type instead of - common_type in call to pointer_diff. - Use cp_common_type instead of common_type. - * cp-tree.h (common_pointer_type): Declare. - -2008-10-14 Jakub Jelinek <jakub@redhat.com> - - PR c++/37819 - * cp-gimplify.c (cp_genericize_r): Only fold_convert COND_EXPR - arguments if they don't already have COND_EXPR's type. - -2008-10-14 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/37650 - * pt.c (push_template_decl_real): Check that current_template_parms - is not null. - (process_partial_specialization): Assert current_template_parms not - null. - -2008-10-13 Doug Evans <dje@google.com> - - * cp-tree.h (DECL_MAIN_P): Fix parentheses around expression. - -2008-10-10 Jakub Jelinek <jakub@redhat.com> - - PR c++/37146 - * cp-gimplify.c (cp_genericize_r): Fix up bitfield operands of - COND_EXPR. - -2008-10-09 Jakub Jelinek <jakub@redhat.com> - - PR c++/37568 - * semantics.c (finalize_nrv_r): Clear DECL_INITIAL instead of - setting it to error_mark_node. - -2008-10-07 Steve Ellcey <sje@cup.hp.com> - - * decl.c (start_cleanup_fn): Declare as inline. - -2008-10-06 Jason Merrill <jason@redhat.com> - - PR c++/37376, other mangling issues - * mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling. - (write_member_name): Break out from... - (write_expression): ...here. Handle dependent COMPONENT_REF. - (write_template_arg): Wrap an argument pack in 'I'/'E'. - (write_builtin_type): Update char16/32_t mangling. - (write_nested_name, write_prefix): Don't forget template args - for typename types. - * operators.def: Add ARROW_EXPR, update COMPONENT_REF and - EXPR_PACK_EXPANSION. - -2008-10-06 Aldy Hernandez <aldyh@redhat.com> - - * typeck.c (build_x_indirect_ref): Add location argument. - (cp_build_binary_op): Pass location to warn_for_div_by_zero. - (cp_build_unary_op): Add location argument. - (cp_build_modify_expr): Same. - * class.c (build_base_path): Pass location to build_indirect_ref. - * semantics.c (handle_omp_for_class_iterator): Pass elocus to - build_modify_expr. - -2008-10-05 Dodji Seketeli <dodji@redhat.com> - - PR c++/37410 - * cp-gimplify.c (cp_gimplify_expr): For each USING_STMT - make sure an IMPORTED_DECL node is added to the BLOCK_VARS list - of the innermost containing BLOCK. - -2008-10-03 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/37719 - * error.c (dump_function_decl): Save the exceptions in case of - error about incompatible specifications in a specialization. - -2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com> - - * tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue. - -2008-09-30 H.J. Lu <hongjiu.lu@intel.com> - - PR c++/37683 - * parser.c (cp_parser_selection_statement): Fix uninitialized - variable. - -2008-09-30 Simon Martin <simartin@users.sourceforge.net> - - PR c++/37555 - PR c++/37556 - * decl.c (grokdeclarator): Set the type for typedefs to a - nested-name-specifier to error_mark_node. - -2008-09-30 Paolo Bonzini <bonzini@gnu.org> - - * parser.c (cp_parser_selection_statement): Implement here the - -Wempty-body warning for `if' and `else' statements. - * semantics.c (finish_if_stmt): Do not call empty_body_warning. - -2008-09-25 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/37649 - * name-lookup.c (maybe_process_template_type_declaration): Check - return value of push_template_decl_real for error_mark_node. - -2008-09-24 Aldy Hernandez <aldyh@redhat.com> - - * semantics.c (finish_fname): Pass location to fname_decl. - -2008-09-23 Jakub Jelinek <jakub@redhat.com> - - PR c++/37533 - * semantics.c (finish_omp_for): If processing_template_decl, just build - MODIFY_EXPR for init instead of calling cp_build_modify_expr. - -2008-09-23 Aldy Hernandez <aldyh@redhat.com> - - * typeck.c (build_array_ref): Pass location to cp_build_binary_op. - (get_member_function_from_ptrfunc): Same. - (build_x_binary_op): Same. - (build_binary_op): Same. - (cp_build_binary_op): New location argument. - (pointer_diff): Pass location to cp_build_binary_op. - (cp_truthvalue_conversion): Pass location to build_binary_op. - (convert_ptrmem): Pass location to cp_build_binary_op. - (cp_build_modify_expr): Same. - (build_ptrmemfunc): Same. - * init.c (expand_cleanup_for_base): Pass location to - c_common_truthvalue_conversion. - (build_new_1): Pass location to cp_build_binary_op. - (build_vec_delete_1): Pass location to *build_binary_op, - c_common_truthvalue_conversion. - (build_vec_init): Same. - (build_delete): Same. - * decl.c (compute_array_index_type): Same. - * call.c (build_new_op): Same. - * rtti.c (build_dynamic_cast_1): Same. - * cp-tree.h: Add argument to cp_build_binary_op. - * semantics.c (handle_omp_for_class_iterator): Pass location to - *build_binary_op, c_common_truthvalue_conversion. - * decl2.c (get_guard_cond): Same. - -2008-09-17 Richard Guenther <rguenther@suse.de> - - PR c++/22374 - * rtti.c (build_dynamic_cast_1): Convert the COND_EXPR - result to the correct type. - -2008-09-17 H.J. Lu <hongjiu.lu@intel.com> - - PR c++/37450 - * name-lookup.c (pushdecl_maybe_friend): Don't return the old - parameter for duplicate. - -2008-09-17 Jason Merrill <jason@redhat.com> - - PR c++/37588 - * name-lookup.c (lookup_type_scope): Look through sk_function_parms. - -2008-09-17 Jakub Jelinek <jakub@redhat.com> - - PR c++/37552 - * typeck.c (build_array_ref): Use protected_set_expr_location instead - of SET_EXPR_LOCATION when ret might not be an expression. - -2008-09-17 Jan Hubicka <jh@suse.cz> - - PR c++/18071 - * cp/decl.c (start_method): Set DECL_NO_INLINE_WARNING_P. - -2008-09-16 Jakub Jelinek <jakub@redhat.com> - - PR c++/37531 - * semantics.c (finish_compound_literal): Return error_mark_node if - type is errorneous. - - PR c++/37532 - * lex.c (init_reswords): Don't populate ridpointers for D_CONLY - reserved words. - -2008-09-15 Aldy Hernandez <aldyh@redhat.com> - - * decl.c (duplicate_decls): Call error_at. - (grokfndecl): New location argument. Use location if available. - (grokdeclarator): Pass declarator location to grokfndecl. - * cp-tree.h (struct cp_declarator): Update comment for id_loc. - * decl2.c (check_classfn): Use error_at. - * parser.c (cp_parser_init_declarator): Set function_start_locus - to brace location. - (cp_parser_member_declaration): Set id_loc for function declarators. - -2008-09-09 Jan Hubicka <jh@suse.cz> - - PR middle-end/37500 - * pt.c (tsubst_decl): Do not copy DECL_STRUCT_FUNCTION pointer. - -2008-09-09 Jakub Jelinek <jakub@redhat.com> - - PR c++/37417 - * tree.c (array_type_nelts_top): Add size_one_node instead of - integer_one_node. - -2008-09-09 Jason Merrill <jason@redhat.com> - - PR c++/37439 - * pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has - DECL_CONTEXT set. - -2008-09-09 Jakub Jelinek <jakub@redhat.com> - - PR c++/37389 - * decl.c (build_enumerator): Handle previous value's DECL_INITIAL - being error_operand_p. Don't clear value if it was error_mark_node. - -2008-09-09 Paolo Bonzini <bonzini@gnu.org> - - * cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove. - * cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS. - * semantics.c (anon_aggr_type_p): Remove. - -2008-09-06 Jason Merrill <jason@redhat.com> - - PR c++/37302 - * parser.c (cp_parser_parameter_declaration_list): Process the - PARM_DECLs as we go and push them. Return a TREE_LIST. - (cp_parser_parameter_declaration_clause): Return a TREE_LIST. - (cp_parser_direct_declarator): Create a binding level and - suppress deprecated warnings in the parameter list. - (make_call_declarator): PARMS is now a tree. - * cp-tree.h (struct cp_declarator): Function parms are now a tree. - * decl.h (enum deprecated_states, deprecated_state): Move here. - * decl.c: From here. - (type_is_deprecated): New fn. - (grokparms): PARMLIST is a tree now. Warn about parms that - use deprecated types. - * mangle.c (write_expression): Handle PARM_DECL, CALL_EXPR and - 0-operand cast. - * pt.c (tsubst) [DECLTYPE_TYPE]: Set skip_evaluation. - (tsubst_copy) [PARM_DECL]: Handle a PARM_DECL used outside of a - function. - * name-lookup.c (pushtag): Look through function parameter scopes. - (pushdecl_maybe_friend): Don't set DECL_CONTEXT on a PARM_DECL - when we're parsing a function declarator. - -2008-09-05 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/37342 - * tree.c (cp_build_qualified_type_real): Deal with sharing of - TYPE_LANG_SPECIFIC in the canonical types of pointer-to-method - types. - -2008-09-04 Ian Lance Taylor <iant@google.com> - - * parser.c (check_no_duplicate_clause): Change code parameter to - enum omp_clause_code. - -2008-09-03 Jakub Jelinek <jakub@redhat.com> - - PR c++/37348 - * decl.c (cp_finish_decl): Only set - DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P if decl is VAR_DECL. - - PR c++/37189 - * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New - extern decls. - * decl2.c (mark_used): If defer_mark_used_calls, push decl into - deferred_mark_used_calls vector and exit early. - * decl.c (defer_mark_used_calls, deferred_mark_used_calls): New - variables. - (finish_function): Set defer_mark_used_calls for the duration of the - function. Call mark_used on any queued decls. - -2008-09-02 Jason Merrill <jason@redhat.com> - - PR c++/37208 - * call.c (build_over_call): Make =delete work with SFINAE. - * class.c (resolve_address_of_overloaded_function): Likewise. - - * cp-tree.h (struct lang_decl_flags): Rename threadprivate_p to - threadprivate_or_deleted_p. - (CP_DECL_THREADPRIVATE_P): Adjust. - (DECL_DELETED_FN): Likewise. - (SD_UNINITIALIZED, SD_INITIALIZED, SD_DEFAULTED): New macros. - (SD_DELETED): New macro. - * parser.c (cp_parser_init_declarator): Use them. - * decl.c (start_decl): Use them. - - * decl2.c (mark_used): Give =deleted error even in sizeof. - - * typeck2.c (check_narrowing): Downgrade narrowing error to - permerror. - -2008-09-02 Aldy Hernandez <aldyh@redhat.com> - - * typeck.c (build_array_ref): Use new location argument. - * class.c (build_vtbl_ref_1): Pass location to build_array_ref. - * call.c (build_new_op): Same. - * decl2.c (grok_array_decl): Same. - * cp-tree.h (build_array_ref): Add location argument to prototype. - -2008-09-01 Aldy Hernandez <aldyh@redhat.com> - - * typeck.c (build_x_indirect_ref): Add location argument. - * class.c (build_base_path): Pass location to build_indirect_ref. - * pt.c (tsubst_copy_and_build): Pass location to - finish_label_address_expr. - * parser.c (cp_parser_unary_expression): Same. - -2008-08-31 Jason Merrill <jason@redhat.com> - - Implement late-specified return type using 'auto'. - * cp-tree.h (struct cp_declarator): Add late_return_type field to - function declarator. - * parser.c (cp_parser_late_return_type_opt): New fn. - (cp_parser_direct_declarator): Use it. - (make_call_declarator): Put it in the declarator. - * decl.c (grokdeclarator): Splice in late-specified return type. - * pt.c (splice_late_return_type): New fn. - -2008-08-29 Michael Meissner <gnu@the-meissners.org> - - * decl.c (builtin_function_1): Take a bool argument to decide - whether to use pushdecl or pushdecl_top_level. - (duplicate_decls): Copy function specific target and optimization - options on duplicate declarations. - (cxx_builtin_function): Update builtin_function_1 call. - (cxx_builtin_function_ext_scope): New function, guarantee that the - declaration is done at global scope. - - * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New - macro, define builtin function hook for delayed machine specific - builtins. - - * cp-tree.h (cxx_builtin_function_ext_scope): Add declaration. - -2008-08-30 Jason Merrill <jason@redhat.com> - - PR c++/37288 - * pt.c (dependent_type_p): Don't abort on auto outside of a template. - -2008-08-29 Jason Merrill <jason@redhat.com> - - Implement C++0x 'auto' semantics. - * decl.c (start_decl_1): Don't complain about auto being incomplete. - (cp_finish_decl): Deduce auto. - * init.c (build_new): Handle 'new auto'. - * typeck2.c (cxx_incomplete_type_diagnostic): Give a different - message for auto than for normal template type parms. - * pt.c (type_dependent_expression_p): Handle { }. - (make_auto): New function. - (listify_autos): New function. - (do_auto_deduction): New function. - (is_auto): New function. - (type_uses_auto): New function. - * cp-tree.h: Declare them. - * parser.c (cp_parser_decl_specifier_seq): In C++0x mode, don't - treat auto as a declspec. - (cp_parser_simple_type_specifier): It's a type-specifier. - -2008-08-29 Mark Mitchell <mark@codesourcery.com> - - * mangle.c (write_type): Add target-specific manglings for - non-fundamental types to the substitution table. - gcc/testsuite/ - -2008-08-29 Jakub Jelinek <jakub@redhat.com> - - PR fortran/29635 - PR fortran/23057 - * name-lookup.c (do_using_directive, cp_emit_debug_info_for_using): - Adjust debug_hooks->imported_module_or_decl callers. - -2008-08-29 Jan Hubicka <jh@suse.cz> - - * cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic. - -2008-08-28 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/37260 - * decl.c (reshape_init_r): Check init for error_mark_node. - -2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/17880 - * semantics.c (maybe_convert_cond): Call verify_sequence_points. - (finish_return_stmt): Likewise. - (finish_switch_condition): Likewise. - -2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * cp-tree.h: Fix #error directive. - -2008-08-26 Douglas Gregor <doug.gregor@gmail.com> - - * typeck.c (type_after_usual_arithmetic_conversions): Don't do the - usual arithmetic conversions on scoped enumeration types. - (common_type): Ditto. - (default_conversion): Don't perform integral promotions on scoped - enumeration types. - (build_array_ref): Scoped enumeration types can't be used as - subscripts. - * decl.c (start_enum): If building a C++0x scoped enumeration, - enter its scope. If provided with an underlying type, check that - underlying type and set up the enumeration type accordingly. - (finish_enum): Only compute an underlying type if the underlying - type isn't already fixed, and only convert the enumerator values - now if we've just computed the underlying type. Finish the scope - of C++0x scoped enumerations. - (build_enumerator): For enumerations with a fixed underlying type, - check the enumerator values when the enumerator is defined. - (lookup_enumerator): New. - * call.c (standard_conversion): Don't allow assignment from - integers to scoped enumeration types, even with -fpermissive. - Don't convert from scoped enumerations to bool or any arithmetic - types. - (build_conditional_expr): Don't per the usual arithmetic - conversions for scoped enumeration types. - (convert_like_real): Check complain to see if we should - produce warnings. - * error.c (class_key_or_enum_as_string): Print scoped enums. - * cp-tree.h (MAYBE_CLASS_TYPE_P): Check CLASS_TYPE_P, not - TYPE_LANG_FLAG_5. - (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P): New. - (SCOPED_ENUM_P): New. - (UNSCOPED_ENUM_P): New. - (SET_SCOPED_ENUM_P): New. - (ENUM_UNDERLYING_TYPE): New. - * pt.c (lookup_template_class): Update the instantiation of enum - types to deal with C++0x scoped enumerations and underlying - types. - * name-lookup.c (begin_scope): Deal with scoped enumeration - scopes. - (lookup_qualified_name): Deal with lookup into enumeration types. - * name-lookup.h (enum scope_kind): Add sk_scoped_enum. - * parser.c (cp_parser_class_or_namespace_name): Rename to... - (cp_parser_qualifying_entity): ... this. Also, in C++0x mode, - parse a type-name that can be an enumeration type. - (cp_parser_nested_name_specifier_opt): Update with C++0x grammar. - (cp_parser_elaborated_type_specifier): Parse the - optional `struct' or `class' following enum (in C++0x). - (cp_parser_enum_specifier): Parse C++0x scoped enumerations and - enum-base clauses. - -2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * typeck.c: Update all calls to pedwarn. - * decl.c: Likewise. - * call.c: Likewise. - * error.c: Likewise. - * pt.c: Likewise. - * name-lookup.c: Likewise. - * parser.c: Likewise. - -2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/35158 - * parser.c (cp_parser_omp_for_loop): Handle parenthesized - initializers. - -2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * parser.c: Update all calls to inform. - * typeck.c: Likewise. - * init.c: Likewise. - * class.c: Likewise. - * call.c: Likewise. - * method.c: Likewise. - * friend.c: Likewise. - * typeck2.c: Likewise. - * pt.c: Likewise. - * name-lookup.c: Likewise. - * lex.c: Likewise. - -2008-08-19 Jakub Jelinek <jakub@redhat.com> - - PR debug/37156 - * error.c (cp_print_error_function): Deal with recursive BLOCK trees. - -2008-08-18 Tomas Bily <tbily@suse.cz> - - * tree.c (cp_tree_equal): Use CONVERT_EXPR_CODE_P. - -2008-08-18 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * typeck.c: Update all callers of permerror. - * init.c: Likewise. - * class.c: Likewise. - * decl.c: Likewise. - * call.c: Likewise. - * except.c: Likewise. - * cvt.c: Likewise. - * typeck2.c: Likewise. - * pt.c: Likewise. - * semantics.c: Likewise. - * name-lookup.c: Likewise. - * lex.c: Likewise. - * decl2.c: Likewise. - * parser.c: Likewise. - -2008-08-14 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/34485 - * pt.c (check_template_shadow): Change to return a bool. - * name-lookup.c (push_class_level_binding): Early return if - check_template_shadow returns false. - * cp-tree.h (check_template_shadow): Adjust declaration. - -2008-08-14 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/34600 - * decl.c (grokdeclarator): In case of extern and initializer, return - error_mark_node after the error. - -2008-08-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 30551 - * decl.c (grokfndecl): Call check_main_parameters_type only if - -Wmain. - -2008-08-12 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/37087 - * parser.c (cp_parser_class_head): Early return error_mark_node in - case of global qualification of class name or qualified name that - does not name a class. - -2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/12242 - * cvt.c (ocp_convert): Warn for out-of-range conversions to enum. - -2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 36901 - * cp-tree.h (struct diagnostic_context, struct diagnostic_info): - Delete forward declarations. Check that toplev.h has not been - included before this file. Include toplev.h and diagnostic.h. - * error.c (cp_cpp_error): Use DK_PEDWARN. - (cxx_incomplete_type_diagnostic): Update declaration. - (cxx_incomplete_type_error): Use DK_ERROR. - * typeck2.c (cxx_incomplete_type_diagnostic): Take a diagnostic_t - as argument. Use emit_diagnostic. - (cxx_incomplete_type_error): Use DK_ERROR. - (add_exception_specifier): Use diagnostic_t instead of custom - codes. - * typeck.c (complete_type_or_else): Update call to - cxx_incomplete_type_diagnostic. - * init.c (build_delete): Likewise. - * call.c (diagnostic_fn_t): Remove unused typedef. - (build_temp): Pass a pointer to diagnostic_t. - (convert_like_real): Use emit_diagnostic. - (joust): Check return value of warning before giving informative - note. - * friend.c (do_friend): Check return value of warning - before giving informative note. - * parser.c (cp_parser_template_id): Likewise. - -2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 7651 - * class.c (check_bases_and_members): Warn with -Wuninitialized - instead of -Wextra. - -2008-08-08 Volker Reichelt <v.reichelt@netcologne.de> - - PR c++/35985 - * decl.c (xref_basetypes): Check base for MAYBE_CLASS_TYPE_P, - and make sure it is not a union. - -2008-08-07 H.J. Lu <hongjiu.lu@intel.com> - - * semantics.c (finish_decltype_type): Initialize type. - -2008-08-07 Douglas Gregor <doug.gregor@gmail.com> - - * semantics.c (finish_decltype_type): Handle calls to function - pointers and references to functions properly. - -2008-08-06 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/36460 - * parser.c (cp_parser_template_argument): Don't assume that '>>' - following a type-id is an error when in C++0x mode. - -2008-08-06 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 26785 - * decl.c (grokdeclarator): Use explicit location with permerror_at. - -2008-08-06 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 8715 - * typeck.c (cp_build_binary_op): Move code to c-common.c. - -2008-08-05 Jason Merrill <jason@redhat.com> - - PR c++/37016 - * decl.c (build_ptrmemfunc_type): Don't require structural - comparison of PMF types. - * tree.c (cp_build_qualified_type_real): Don't clear - a valid TYPE_PTRMEMFUNC_TYPE. - * typeck.c (cp_build_unary_op): Still do build_ptrmemfunc in - templates. - -2008-08-04 Jason Merrill <jason@redhat.com> - - PR c++/36963 - * typeck2.c (check_narrowing): Allow narrowing conversion - from an explicit floating-point constant. - - PR c++/37006 - * pt.c (tsubst_decl): Leave DECL_INITIAL set on deleted - instantiations. - -2008-08-04 Simon Baldwin <simonb@google.com> - - PR c++/36999 - * parser.c (cp_parser_elaborated_type_specifier): Warn only when - the declaration's id is followed by a semicolon. - -2008-07-31 Jakub Jelinek <jakub@redhat.com> - - PR c++/36405 - * rtti.c (get_tinfo_decl_dynamic, get_typeid): Call - complete_type_or_else even for UNKNOWN_TYPE to get diagnostics. - -2008-07-31 Jason Merrill <jason@redhat.com> - - PR c++/36633 - * init.c (build_new_1): Don't convert pointer to the data type - until we're actually going to treat it as that type. - - PR c++/11309 - * tree.c (build_aggr_init_expr): Split out... - (build_cplus_new): ...from here. - (stabilize_init): Don't mess with AGGR_INIT_EXPR either. - * init.c (build_new_1): new T() means value-initialization, - not default-initialization. - (build_vec_init): Likewise. - (build_value_init_1): Use build_aggr_init_expr. - -2008-07-30 Dodji Seketeli <dseketel@redhat.com> - - PR c++/36767 - * decl2.c (fix_temporary_vars_context_r): New function. - (one_static_initialization_or_destruction): Make sure temporary - variables part of the initialiser have their DECL_CONTEXT() - properly set. - -2008-07-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 34389 - * typeck.c (build_binary_op): Encapsulate code into - shorten_binary_op. - -2008-07-29 Jakub Jelinek <jakub@redhat.com> - - PR c++/36852 - * tree.c (cplus_array_hash, build_cplus_array_type_1): Hash on - TYPE_UID instead of pointers. - -2008-07-29 Jan Hubicka <jh@suse.cz> - - * optimize.c (maybe_clone_body): Remove DECL_INLINE. - * decl.c (duplicate_decls): Likewise. - (grokfndecl): Likewise. - (start_method): Likewise. - * method.c (make_thunk, make_alias_for, implicitly_declare_fn): - Likewise. - * pt.c (register_specialization, regenerate_decl_from_template): - Likewise. - * decl2.c (grokfield): Likewise. - -2008-07-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 34985 - * decl.c (duplicate_decls): Merge USED flags. - -2008-07-27 Jason Merrill <jason@redhat.com> - - PR c++/36943 - * decl.c (reshape_init_r): Allow C++0x initializer lists. - -2008-07-28 Richard Guenther <rguenther@suse.de> - - Merge from gimple-tuples-branch. - - 2008-07-22 Aldy Hernandez <aldyh@redhat.com> - - * cp-gimplify.c (gimplify_if_stmt): Set location on newly created - COND_EXPR. - - 2008-07-18 Jakub Jelinek <jakub@redhat.com> - - * decl.c (finish_function): Call gimple_body after cp_genericize. - - 2008-07-18 Aldy Hernandez <aldyh@redhat.com> - - * optimize.c: Include gimple.h instead of tree-gimple.h. - * Make-lang.in (cp-gimplify.o): Depend on tree-iterator.h. - * cp-gimplify.c: Rename tree-gimple.h to gimple.h. Include - tree-iterator.h. - - 2008-07-16 Jakub Jelinek <jakub@redhat.com> - - * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE for the clone. - - 2008-07-14 Jakub Jelinek <jakub@redhat.com> - - * cp-gimplify.c (cp_gimplify_expr): Update comment. - - 2008-07-14 Aldy Hernandez <aldyh@redhat.com> - - * cp-tree.h (union lang_tree_node): Rename GENERIC_NEXT to - TREE_CHAIN. - * cp-gimplify.c (cxx_omp_clause_apply_fn): Rename - GIMPLE_MODIFY_STMT to MODIFY_EXPR. - (cxx_omp_clause_copy_ctor): Same. - (cxx_omp_clause_assign_op): Same. - - 2008-05-28 Jakub Jelinek <jakub@redhat.com> - - * cp-gimplify.c (cp_gimplify_omp_for): Add pre_p argument. Tuplify. - (cp_gimplify_expr): Adjust caller. - - 2008-05-11 Doug Kwan <dougkwan@google.com> - - * init.c (build_vec_delete): Add type conversion for argument - 0 of POINTER_PLUS_EXPR. - - 2008-04-29 Doug Kwan <dougkwan@google.com> - - * decl2 (File): Include "gimple.h" - (cp_write_global_declarations): Use gimple_body instead of - DECL_SAVED_TREE. - * Make-lang.in (cp/decl2.o): Add $(GIMPLE_H) - - 2008-04-10 Diego Novillo <dnovillo@google.com> - - http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00913.html - - * optimize.c (maybe_clone_body): Re-enable call to - clone_body. - * cp-gimplify.c (cp_gimplify_omp_for): Mark disabled - code with call to gimple_unreachable. - (cp_genericize): Fix handling of clone bodies. - - 2008-04-04 Diego Novillo <dnovillo@google.com> - - http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00413.html - - * optimize.c (maybe_clone_body): Re-enable. - - 2008-02-19 Diego Novillo <dnovillo@google.com> - Oleg Ryjkov <olegr@google.com> - - http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html - - * cp-gimplify.c (gimplify_for_stmt): Change gimple_seq - argument to gimple_seq *. Update all users. - (gimplify_must_not_throw_expr): Likewise. - - 2008-02-04 Oleg Ryjkov <olegr@google.com> - - * except.c: Include gimple.h - (cp_protect_cleanup_actions): Convert to tuples. - * Make-lang.in (cp/except.o): Add dependency on gimple.h - - 2007-11-10 Aldy Hernandez <aldyh@redhat.com> - - * cp-gimplify.c (gimplify_cp_loop): Call tree_annotate_all_with_locus - instead of annotating each block manually. - - 2007-10-30 Aldy Hernandez <aldyh@redhat.com> - - * cp-gimplify.c (gimplify_cp_loop): Tuplify. - (gimplify_for_stmt): Same. - (gimplify_switch_stmt): Same. - (cp_gimplify_expr): [FOR_STMT]: Do not call gimplify_for_stmt. Return - GS_OK. - [WHILE_STMT]: Return GS_OK. - [SWITCH_STMT]: Same. - [CONTINUE_STMT]: Same. - [BREAK_STMT]: Same. - (cp_genericize): Set gimple_body() of cloned functions when needed. - - 2007-10-29 Aldy Hernandez <aldy@quesejoda.com> - - * cp-gimplify.c: Move build_gimple_eh_filter_tree here. - (cp_gimplify_init_expr): Convert to tuples. - (gimplify_must_not_throw_expr): Make function return a - gimplify_status and convert to tuples. - - 2007-10-18 Aldy Hernandez <aldy@quesejoda.com> - - * cp-gimplify.c (genericize_try_block): Enable and do not call - gimplify_stmt. - (genericize_catch_block): Same. - (genericize_eh_spec_block): Same. - Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree. - (cp_gimplify_expr): Enable TRY_BLOCK, HANDLER, and EH_SPEC_BLOCK. - - 2007-10-16 Aldy Hernandez <aldy@quesejoda.com> - - * optimize.c (maybe_clone_body): Comment out call to clone_body. - * decl.c (finish_function): Use gimple_body instead of - DECL_SAVED_TREE. - * cp-tree.h (cp_gimplify_expr): Last 2 arguments are sequences. - * cp-gimplify.c (genericize_try_block): Comment out. - (genericize_catch_block): Same. - (genericize_eh_spec_block): Same. - (gimplify_cp_loop): Comment out calls to gimplify_stmt. - (gimplify_for_stmt): Comment out. - (gimplify_switch_stmt): Comment out call to gimplify_stmt. - (cp_gimplify_omp_for): Same. - (gimplify_must_not_throw_expr): Argument pre_p is a sequence. - Comment out call to gimplify_stmt and append_to_statement_list. - Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree. - (cp_gimplify_init_expr): Arguments pre_p and post_p are sequences. - (cp_gimplify_expr): Same. - Comment out calls to genericize_*_block. Comment out call to - gimplify_for_stmt. - -2008-07-27 H.J. Lu <hongjiu.lu@intel.com> - - PR c++/36944 - * class.c (type_has_user_provided_default_constructor): Handle - default parameters. - -2008-07-27 Paolo Carlini <paolo.carlini@oracle.com> - - * decl.c (push_library_fn): Add a parameter for the exceptions that - the function may throw. - (push_void_library_fn, push_throw_library_fn, expand_static_init): - Adjust. - (build_library_fn): Change to static. - * cp-tree.h: Adjust declarations. - * except.c (declare_nothrow_library_fn): New. - (do_get_exception_ptr, do_begin_catch, do_free_exception, - do_allocate_exception): Use the latter, adjust the declarations - (ie, add empty exception-specification), consistently with the - actual implementation in libsupc++. - -2008-07-25 Jan Hubicka <jh@suse.cz> - - * typeck.c (inline_conversion): Remove. - (cp_build_function_call): Do not use inline_conversion. - * decl.c (duplicate_decls): Do not insist on inline being declared - early. - (start_cleanup_fn): Do not assume that INLINE flags prevent function - from being output. We now remove static functions always. - (finish_function): Do return warning on all static functions. - * call.c (build_over_call): Do not use inline_conversion. - * cp-tree.h (possibly_inlined_p): Declare. - (inline_conversion): Remove. - * pt.c (instantiate_decl): Use possibly_inlined_p predicate. - * decl2.c (cp_write_global_declarations): Likewise. - (mark_used): Likewise. - (possibly_inlined_p): New functions. - -2008-07-25 Jason Merrill <jason@redhat.com> - - * class.c (type_has_user_provided_default_constructor): Handle - templates. - -2008-07-23 Jan Hubicka <jh@suse.cz> - - * decl.c (duplicate_decls): Update comment and unit-at-a-time. - (grogfndecl): Drop flag_inline_trees code. - * pt.c (instantiate_decl): Drop flag_iline_trees code. - * lex.c (cxx_init): Do not set unit-at-a-time. - -2008-07-23 Jason Merrill <jason@redhat.com> - - * mangle.c (write_unqualified_name): Avoid infinite recursion when - trying to mangle a decl with no name. - - Implement defaulted/deleted functions as per N2346 - * cp-tree.h (struct lang_decl_flags): Add defaulted_p bitfield. - (DECL_DELETED_FN): New macro. - (DECL_DEFAULTED_FN): New macro. - * class.c (user_provided_p): New fn. - (defaultable_fn_p): New fn. - (type_has_user_provided_constructor): New fn. - (type_has_user_provided_default_constructor): New fn. - (check_methods): A defaulted fn is still trivial. - (check_bases_and_members): Likewise. - * decl.c (grok_special_member_properties): Likewise. - (duplicate_decls): Complain about redeclaring a function as deleted. - (start_decl): initialized==2 means deleted. - (cp_finish_decl): Handle deleted/defaulted semantics. - * decl2.c (grokfield): Likewise. - (mark_used): Check DECL_DEFAULTED_FN instead of DECL_ARTIFICIAL. - Complain about using a deleted fn. - * init.c (build_value_init_1): Use type_has_user_provided_constructor. - (perform_member_init): Check for a user-provided default constructor - even if TYPE_NEEDS_CONSTRUCTING. - (build_new_1): Likewise. - * call.c (build_over_call): Don't call mark_used twice. - * method.c (implicitly_declare_fn): Set DECL_DEFAULTED_FN. - * search.c (check_final_overrider): Check for deleted mismatch. - * parser.c (cp_parser_init_declarator): Tell start_decl about =delete. - (cp_parser_pure_specifier): Handle =default and =delete. - - * error.c (maybe_warn_cpp0x): Suggest -std=gnu++0x as well. - -2008-07-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 35058 - * typeck.c: All calls to pedwarn changed. - * decl.c: All calls to pedwarn changed. - * call.c: All calls to pedwarn changed. - * error.c: All calls to pedwarn changed. - * typeck2.c: All calls to pedwarn changed. - * pt.c: All calls to pedwarn changed. - * name-lookup.c: All calls to pedwarn changed. - * parser.c: All calls to pedwarn changed. - -2008-07-21 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * call.c: Fix comment typos. - * class.c: Likewise. - * cp-tree.h: Likewise. - * cxx-pretty-print.c: Likewise. - * decl.c: Likewise. - * init.c: Likewise. - * name-lookup.c: Likewise. - * operators.def: Likewise. - * parser.c: Likewise. - * pt.c: Likewise. - * tree.c: Likewise. - * typeck.c: Likewise. - -2008-07-21 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/36871 - PR c++/36872 - * semantics.c (classtype_has_nothrow_assign_or_copy_p): Only check - copy constructors and copy assignment operators proper. - -2008-07-21 Rafael Ãvila de EspÃndola <espindola@google.com> - - * parser.c (cp_token): Remove in_system_header. - (eof_token): Remove in_system_header. - (cp_lexer_get_preprocessor_token): Don't set in_system_header. - (cp_lexer_set_source_position_from_token): Don't set in_system_header. - (cp_parser_member_declaration): Use in_system_header_at. - * pt.c (lookup_template_class): Don't set DECL_IN_SYSTEM_HEADER. - (pop_tinst_level): Don't set in_system_header. - (instantiate_class_template): Don't set in_system_header. - (instantiate_decl): Don't set in_system_header. - (instantiate_pending_templates): Don't set in_system_header. - -2008-07-21 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/36870 - * semantics.c (classtype_has_nothrow_assign_or_copy_p): Use - TYPE_NOTHROW_P, not TREE_NOTHROW. - (trait_expr_value): Likewise. - -2008-07-18 Dodji Seketeli <dseketel@redhat.com> - - PR c++/36407 - * call.c (convert_like_real): Don't take the error code path - when a rvalue or base conversion has the bad_p field set. - -2008-07-18 Kris Van Hees <kris.van.hees@oracle.com> - - * rtti.c (emit_support_tinfos): Add char16_type_node and - char32_type_node. - * typeck2.c (digest_init): Support char16_t and char32_t. - -2008-07-18 Kavih R. Ghazi <ghazi@caip.rutgers.edu> - - * cvt.c (convert_to_void): Avoid C++ keywords. - * decl.c (walk_namespaces_r, wrapup_globals_for_namespace): - Likewise. - * friend.c (is_friend): Likewise. - * init.c (perform_member_init): Likewise. - * mangle.c (write_template_prefix, write_template_template_param): - Likewise. - * name-lookup.c (do_namespace_alias, do_using_directive, - parse_using_directive, ambiguous_decl, arg_assoc): Likewise. - * parser.c (cp_parser_template_id, cp_parser_namespace_definition, - cp_parser_objc_typename, cp_parser_objc_method_keyword_params): - Likewise. - * pt.c (is_specialization_of_friend, lookup_template_class, - push_tinst_level, instantiate_class_template, - tsubst_copy_and_build): Likewise. - * tree.c (add_stmt_to_compound): Likewise. - * typeck.c (finish_class_member_access_expr): Likewise. - -2008-07-17 Julian Brown <julian@codesourcery.com> - Mark Mitchell <mark@codesourcery.com> - - * decl2.c (determine_visibility): Allow target to override - visibility of class data. - -2008-07-17 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/36855 - * semantics.c (trait_expr_value): Update __has_trivial_destructor - semantics to the current WP (N2691). - -2008-07-16 Dodji Seketeli <dseketel@redhat.com> - - PR c++/13699 - * name-lookup.c (lookup_extern_c_fun_binding_in_all_ns): New function. - (pushdecl_maybe_friend): Check if a redeclaration of extern C function - complies with exception specification constraints. - -2008-07-14 Jason Merrill <jason@redhat.com> - - * lex.c (init_reswords): Always set D_OBJC. - -2008-07-11 Tom Tromey <tromey@redhat.com> - Ian Lance Taylor <iant@google.com> - - * lex.c (struct resword, reswords): Don't define. - (D_EXT, D_ASM, D_OBJC, D_CXX0X): Don't define. - (init_reswords): Clarify mask code. Use c_common_reswords rather - than reswords. - -2008-07-11 Dodji Seketeli <dseketel@redhat.com> - - PR c++/13101 - * decl.c (grokdeclarator): Warn about initializing variables - of storage class 'extern' only after the type of the declarator - has been properly computed. - -2008-07-11 Dodji Seketeli <dseketel@redhat.com> - - PR c++/31754 - * cp-tree.h (struct cp_decl_specifier_seq): Add a location field. It - carries the location of the primary type. - * parser.c (cp_parser_check_type_definition): Update documentation. - (cp_parser_check_for_definition_in_return_type, - cp_parser_check_for_invalid_template_id, - cp_parser_set_decl_spec_type, - cp_parser_check_for_definition_in_return_type, - cp_parser_diagnose_invalid_type_name, - cp_parser_new_expression, cp_parser_explicit_instantiation, - cp_parser_type_specifier, cp_parser_simple_type_specifier, - cp_parser_omp_for_loop, cp_parser_pragma): Use location in error - messages. - -2008-07-11 Dodji Seketeli <dseketel@redhat.com> - - PR c++/31754 - * pt.c, semantic.c: - * semantic.c (qualified_name_lookup_error, finish_id_expression): - Add a location_t parameter so that - error message can have a more accurate location. - * cp-tree.h: Updated prototype - * pt.c (tsubst_qualified_id): Use location in error messages. - * parser.c (cp_parser_postfix_expression, - cp_parser_objc_statement, cp_parser_trait_expr, - cp_parser_token_is_class_key, - cp_parser_uncommitted_to_tentative_parse_p, - cp_parser_check_for_invalid_template_id, cp_parser_is_string_literal, - cp_parser_error, cp_parser_name_lookup_error, - cp_parser_simulate_error, cp_parser_check_decl_spec, - cp_parser_check_decl_spec, cp_parser_non_integral_constant_expression, - cp_parser_diagnose_invalid_type_name, - cp_parser_parse_and_diagnose_invalid_type_name, - cp_parser_require_pragma_eol, cp_parser_make_typename_type, - cp_parser_string_literal, cp_parser_primary_expression, - cp_parser_primary_expression, cp_parser_unqualified_id, - cp_parser_nested_name_specifier_opt, cp_parser_postfix_expression, - cp_parser_postfix_dot_deref_expression, cp_parser_new_expression, - cp_parser_direct_new_declarator, cp_parser_builtin_offsetof, - cp_parser_label_for_labeled_statement, cp_parser_statement_seq_opt, - cp_parser_jump_statement, cp_parser_block_declaration, - cp_parser_simple_declaration, cp_parser_decl_specifier_seq, - cp_parser_function_specifier_opt, cp_parser_decltype, - cp_parser_mem_initializer_list, cp_parser_mem_initializer, - cp_parser_mem_initializer_id, cp_parser_template_parameter, - cp_parser_type_parameter, cp_parser_template_id, - cp_parser_template_name, cp_parser_template_argument): Likewise. - -2008-07-09 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/36760 - * pt.c (tsubst_function_type): Remove warning for type qualifiers - on function return type. - -2008-07-09 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/36760 - * pt.c (tsubst_function_type): Don't warn for type qualifiers - on function return type in case of system header. - -2008-07-09 Raksit Ashok <raksit@google.com> - - * parser.c (cp_parser_postfix_expression): New warning based on flag - warn_disallowed_functions. - -2008-07-08 Simon Martin <simartin@users.sourceforge.net> - - PR c++/34963 - * decl.c (grokdeclarator): Reset storage_class and staticp for friend - functions declared with a storage class qualifier. - -2008-07-03 Richard Guenther <rguenther@suse.de> - - PR c++/36128 - * typeck.c (cp_build_function_call): Move code to verify - builtin function arguments ... - * call.c (build_cxx_call): ... here. - -2008-07-02 Jason Merrill <jason@redhat.com> - - * Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency. - - Implement WG21 N2672, Initializer List proposed wording - * cp-tree.h (enum cp_tree_index): Add CPTI_INIT_LIST_TYPE. - (struct lang_type_class): Add has_list_ctor bitfield. - (TYPE_HAS_LIST_CTOR): New macro. - (BRACE_ENCLOSED_INITIALIZER_P): Expect init_list_type_node. - (CONSTRUCTOR_IS_DIRECT_INIT): New macro. - (LOOKUP_NO_NARROWING): New macro. - (LOOKUP_NO_COPY_CTOR_CONVERSION): New macro. - * parser.c (cp_parse_braced_list): Split out from... - (cp_parser_initializer_clause): ...here. - (cp_parser_postfix_expression): Build up CONSTRUCTOR for compound - literal here. - (cp_lexer_next_token_is_not_keyword): New fn. - (cp_parser_parenthesized_expression_list): Handle { }. - (cp_parser_new_expression, cp_parser_new_initializer): Likewise. - (cp_parser_assignment_expression, cp_parser_condition): Likewise. - (cp_parser_jump_statement, cp_parser_simple_declaration): Likewise. - (cp_parser_mem_initializer, cp_parser_init_declarator): Likewise. - (cp_parser_initializer, cp_parser_functional_cast): Likewise. - (cp_parser_omp_for_loop, cp_parser_cache_group): Likewise. - (cp_parser_save_member_function_body): Likewise. - * call.c (conversion_kind): Add ck_list, ck_aggr. - (struct conversion): Add check_narrowing bitfield, conversion list. - (build_list_conv): New fn. - (build_aggr_conv): New fn. - (implicit_conversion): Call them. - (standard_conversion): Set check_narrowing if appropriate. - (add_function_candidate): Handle LOOKUP_NO_COPY_CTOR_CONVERSION. - (build_user_type_conversion_1): When converting from an init list, - we allow additional conversions except when calling a copy ctor. - (convert_like_real): Calling an explicit ctor for an init list is - ill-formed. Handle ck_list and ck_addr. Check narrowing. - (build_new_method_call): If CONSTRUCTOR_IS_DIRECT_INIT is set and - class doesn't have a list ctor, break the {} into a TREE_LIST. - (compare_ics): ck_list is better than other UDCs. - (set_up_extended_ref_temp): Split out from initialize_reference. - (is_std_init_list): New fn. - (is_list_ctor): New fn. - * decl.c (cxx_init_decl_processing): Create init_list_type_node. - (reshape_init_array_1): Pass it to build_constructor. - (reshape_init_class): Ditto. - (initialize_artificial_var): Pass the appropriate type. - (build_aggr_init_full_exprs): Split out from... - (check_initializer): ...here. Handle new semantics. - (build_init_list_var_init): New subroutine of check_initializer. - (grokdeclarator): Converting constructors can have more than one parm. - (grok_special_member_properties): Set TYPE_HAS_LIST_CTOR. - * init.c (expand_default_init): Only do digest_init for aggregates. - * rtti.c (tinfo_base_init): Pass init_list_type_node to - build_constructor_from_list. - (generic_initializer, ptr_initializer): Ditto. - (ptm_initializer, class_initializer): Ditto. - (get_pseudo_ti_init): Ditto. - * error.c (dump_type): Handle init_list_type_node. - (maybe_warn_cpp0x): New fn. - (maybe_varn_variadic_templates): Call it. - * cvt.c (ocp_convert): Handle conversion from { }. - * tree.c (build_array_of_n_type): New fn. - * typeck2.c (store_init_value): Use init_list_type_node. - (digest_init): Likewise. - (check_narrowing): New fn. - * semantics.c: (finish_compound_literal): Take CONSTRUCTOR instead - of vector of constructor elts. Handle non-aggregate types. Make - constant literals static. - * pt.c: (tsubst_copy_and_build): Adjust. - (unify): Handle { }. - * name-lookup.c (arg_assoc_type): Handle init_list_type_node. - -2008-07-01 Daniel Jacobowitz <dan@codesourcery.com> - - * typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p. - (comp_ptr_ttypes_const): Likewise. - -2008-07-01 Andrew Haley <aph@redhat.com> - - * decl.c (finish_constructor_body): Don't set the return value of - the constructor if the constructor is that of a Java type. - -2008-06-30 Jakub Jelinek <jakub@redhat.com> - - PR c++/36662 - * decl2.c (is_late_template_attribute): If the first attribute - argument is IDENTIFIER_NODE, don't consider it when checking - if arguments are value or type dependent. - -2008-06-29 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/36655 - * pt.c (do_type_instantiation): In c++0x mode do not warn for - extern template. - -2008-06-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - * Make-lang.in (cp-warn): Delete $(CXX_COMPAT_WARN). - -2008-06-28 Jakub Jelinek <jakub@redhat.com> - - PR c++/36364 - * repo.c (repo_emit_p): Put const static data members initialized - by const expr into *.rpo file, just return 2 if IDENTIFIER_REPO_CHOSEN - for it is 0. - -2008-06-27 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/36655 - * pt.c (do_decl_instantiation): In c++0x mode do not warn for - extern template. - -2008-06-24 Jonathan Wakely <jwakely.gcc@gmail.com> - - PR c++/23194 - * typeck.c (cp_build_function_call): Show example syntax in - diagnostic. - -2008-06-21 Jonathan Wakely <jwakely.gcc@gmail.com> - - * typeck.c (composite_pointer_type_r, cxx_sizeof_expr, - cxx_alignof_expr, check_template_keyword, cp_build_binary_op, - pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list, - build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change - pedwarn to permerror. - * init.c (perform_member_init, build_new_1, build_new): Likewise. - * decl.c (warn_extern_redeclared_static, duplicate_decls, - * identify_goto, check_previous_goto_1, check_goto, define_label, - check_tag_decl, start_decl, check_class_member_definition_namespace, - grokfndecl, grokdeclarator): Likewise. - * except.c (check_handlers): Likewise. - * typeck2.c (digest_init): Likewise. - * pt.c (check_specialization_namespace, - check_explicit_instantiation_namespace, - maybe_process_partial_specialization, check_explicit_specialization, - convert_template_argument, do_decl_instantiation, - do_type_instantiation, instantiate_decl): Likewise. - * semantics.c (finish_template_type_parm): Likewise. - * name-lookup.c (pushdecl_maybe_friend, - check_for_out_of_scope_variable): Likewise. - * decl2.c (finish_static_data_member_decl, build_anon_union_vars, - coerce_new_type): Likewise. - * parser.c (cp_parser_nested_name_specifier_opt, - cp_parser_mem_initializer, cp_parser_elaborated_type_specifier, - cp_parser_class_head, cp_parser_check_class_key): Likewise. - (cp_parser_parameter_declaration): Check flag_permissive instead of - flag_pedantic_errors. - * call.c (joust): Change pedwarn to warning. - * friend.c (make_friend_class): Likewise. - -2008-06-16 Jan Hubicka <jh@suse.cz> - - * method.c: Include cgraph.h. - (use_thunk): Use cgraph_add_new_function instead of calling backend - directly. - -2008-06-15 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * parser.c: Fix comment typo. - -2008-06-14 Simon Martin <simartin@users.sourceforge.net> - - PR c++/35320 - * decl2.c (grokbitfield): Receive the list of attributes, pass it to - grokdeclarator and apply it to the created declaration. - * cp-tree.h (grokbitfield): Update prototype. - * parser.c (cp_parser_member_declaration): Don't apply the attributes - since they are now applied in grokbitfield. Adjusted the call to - grokbitfield. - (cp_parser_objc_class_ivars): Likewise. - -2008-06-14 Simon Martin <simartin@users.sourceforge.net> - - PR c++/35317 - * class.c (type_requires_array_cookie): Do not consider delete[] - operators with an ellipsis as second argument. - -2008-06-09 Jakub Jelinek <jakub@redhat.com> - - PR c++/36408 - * semantics.c (stmt_expr_value_expr): Don't crash on empty - STATEMENT_LIST. - -2008-06-08 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/35242 - * pt.c (maybe_process_partial_specialization): Check the tree - returned by push_template_decl for error_mark_node. - * parser.c (cp_parser_class_head): Likewise, check the tree - returned by the latter. - -2008-06-07 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/35327 - * decl.c (grokdeclarator): In case of wrong return type return - immediately error_mark_node. - -2008-06-06 Jakub Jelinek <jakub@redhat.com> - - * cp-tree.h (cxx_omp_finish_clause, cxx_omp_create_clause_info, - dependent_omp_for_p, begin_omp_task, finish_omp_task, - finish_omp_taskwait): New prototypes. - (cxx_omp_clause_default_ctor): Add outer argument. - (finish_omp_for): Add new clauses argument. - * cp-gimplify.c (cxx_omp_finish_clause): New function. - (cxx_omp_predetermined_sharing): Moved from semantics.c, rewritten. - (cxx_omp_clause_default_ctor): Add outer argument. - (cp_genericize_r): Walk OMP_CLAUSE_LASTPRIVATE_STMT. - * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define. - * parser.c (cp_parser_omp_for_loop): Parse collapsed for loops. - Add par_clauses argument. If decl is present in parallel's - lastprivate clause, change that clause to shared and add - a lastprivate clause for decl to OMP_FOR_CLAUSES. - Fix wording of error messages. Adjust finish_omp_for caller. - Add clauses argument. Parse loops with random access iterators. - (cp_parser_omp_clause_collapse, cp_parser_omp_clause_untied): New - functions. - (cp_parser_omp_for, cp_parser_omp_parallel): Adjust - cp_parser_omp_for_loop callers. - (cp_parser_omp_for_cond, cp_parser_omp_for_incr): New helper - functions. - (cp_parser_omp_clause_name): Handle collapse and untied - clauses. - (cp_parser_omp_clause_schedule): Handle auto schedule. - (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE - and PRAGMA_OMP_CLAUSE_UNTIED. - (OMP_FOR_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_COLLAPSE. - (OMP_TASK_CLAUSE_MASK): Define. - (cp_parser_omp_task, cp_parser_omp_taskwait): New functions. - (cp_parser_omp_construct): Handle PRAGMA_OMP_TASK. - (cp_parser_pragma): Handle PRAGMA_OMP_TASK and - PRAGMA_OMP_TASKWAIT. - * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and - OMP_CLAUSE_UNTIED. Handle OMP_CLAUSE_LASTPRIVATE_STMT. - (tsubst_omp_for_iterator): New function. - (dependent_omp_for_p): New function. - (tsubst_expr) <case OMP_FOR>: Use it. Handle collapsed OMP_FOR - loops. Adjust finish_omp_for caller. Handle loops with random - access iterators. Adjust for OMP_FOR_{INIT,COND,INCR} changes. - (tsubst_expr): Handle OMP_TASK. - * semantics.c (cxx_omp_create_clause_info): New function. - (finish_omp_clauses): Call it. Handle OMP_CLAUSE_UNTIED and - OMP_CLAUSE_COLLAPSE. - (cxx_omp_predetermined_sharing): Removed. - * semantics.c (finish_omp_for): Allow pointer iterators. Use - handle_omp_for_class_iterator and dependent_omp_for_p. Handle - collapsed for loops. Adjust c_finish_omp_for caller. Add new - clauses argument. Fix check for type dependent cond or incr. - Set OMP_FOR_CLAUSES to clauses. Use cp_convert instead of - fold_convert to convert incr amount to difference_type. Only - fold if not in template. If decl is mentioned in lastprivate - clause, set OMP_CLAUSE_LASTPRIVATE_STMT. Handle loops with random - access iterators. Adjust for OMP_FOR_{INIT,COND,INCR} - changes. - (finish_omp_threadprivate): Allow static class members of the - current class. - (handle_omp_for_class_iterator, begin_omp_task, finish_omp_task, - finish_omp_taskwait): New functions. - - * parser.c (cp_parser_binary_expression): Add prec argument. - (cp_parser_assignment_expression): Adjust caller. - * cp-tree.h (outer_curly_brace_block): New prototype. - * decl.c (outer_curly_brace_block): No longer static. - -2008-06-02 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/36404 - * pt.c (push_template_decl_real): Consistently return error_mark_node - on error. - -2008-06-02 Tomas Bily <tbily@suse.cz> - - * typeck.c (is_bitfield_expr_with_lowered_type): Use CASE_CONVERT. - (cp_build_unary_op): Likewise. - (cp_build_indirect_ref): Use CONVERT_EXPR_P. - (maybe_warn_about_returning_address_of_local): Likewise. - -2008-05-29 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/35243 - * pt.c (tsubst_initializer_list): Consistently check the tree - returned by tsubst_pack_expansion for error_mark_node. - -2008-05-27 Michael Matz <matz@suse.de> - - PR c++/27975 - * call.c (build_new_op): Make warning conditional on - OPT_Wenum_compare. - -2008-05-27 Alexandre Oliva <aoliva@redhat.com> - - PR c++/35909 - * call.c (convert_like_real): Convert bitfield to desired type - before creating temporary. - -2008-05-26 Daniel Franke <franke.daniel@gmail.com> - - * Makefile.in: Adjusted dependencies on c-incpath.o. - -2008-05-23 Jakub Jelinek <jakub@redhat.com> - - PR c++/36237 - * cp-gimplify.c (cxx_omp_clause_apply_fn): Call - fold_build_cleanup_point_expr on build_call_a results. - - PR c++/36308 - * semantics.c (omp_clause_info_fndecl): New function. - (finish_omp_clauses): Use it. - -2008-05-21 Jakub Jelinek <jakub@redhat.com> - - PR c++/36023 - * cp-tree.h (check_array_initializer): New prototype. - * decl.c (check_array_initializer): New function. - (check_initializer): Call it. - * semantics.c (finish_compound_literal): Call it for ARRAY_TYPEs. - -2008-05-21 Tom Tromey <tromey@redhat.com> - - * mangle.c (save_partially_mangled_name): Remove. - (restore_partially_mangled_name): Likewise. - (write_encoding): Update. - (write_unqualified_name): Likewise. - (start_mangling): Always use name_obstack. Remove 'ident_p' - argument. - (get_identifier_nocopy): Remove. - (finish_mangling_internal): Rename from finish_mangling. - (finish_mangling): New function. - (finish_mangling_get_identifier): Likewise. - (partially_mangled_name, partially_mangled_name_len): Remove. - (mangle_decl_string): Change return type. Update. - (mangle_decl, mangle_type_string, mangle_special_for_type, - mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable, - mangle_ref_init_variable): Update. - -2008-05-12 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/35331 - * semantics.c (begin_class_definition): Extend checks on the first - argument. - -2008-05-12 Tomas Bily <tbily@suse.cz> - - * typeck2.c (digest_init): Use CONVERT_EXPR_P. - * call.c (build_over_call): Likewise. - * error.c (dump_expr): Use CASE_CONVERT. - * class.c (fixed_type_or_null): Likewise. - -2008-05-11 Volker Reichelt <v.reichelt@netcologne.de> - - * parser.c (cp_parser_omp_clause_reduction): Add missing "expected" - in error message. - (cp_parser_omp_clause_schedule): Remove superfluous "expected" - in error message. - -2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com> - - * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY, - DECL_LOOPING_CONST_OR_PURE_P attributes. - * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to - DECL_PURE_P. - -2008-05-02 Simon Baldwin <simonb@google.com> - - PR bootstrap/36108 - * typeck.c (build_array_ref): Remove warn_array_subscript_range. - -2008-05-01 Simon Baldwin <simonb@google.com> - - * typeck.c (build_array_ref): Call warn_array_subscript_range. - -2008-04-30 Jakub Jelinek <jakub@redhat.com> - - PR c++/35986 - * pt.c (more_specialized_fn): Stop the loop even if there are no - arguments before ellipsis. - -2008-04-29 Jakub Jelinek <jakub@redhat.com> - - PR c++/35650 - * parser.c (cp_parser_lookup_name): Look through single function - OVERLOAD. - - PR c++/35987 - * typeck.c (cp_build_modify_expr) <case PREINCREMENT_EXPR>: Don't build - COMPOUND_EXPR if the second argument would be error_mark_node. - -2008-04-28 Jason Merrill <jason@redhat.com> - Liu Guanwei <liu_gw@163.com> - - PR c++/57 - * parser.c (cp_parser_parameter_declaration): Handle < ambiguity - in default arguments. - -2008-04-25 Jan Hubicka <jh@suse.cz> - - * typeck.c (check_return_expr): Update. - * decl.c (start_preparsed_function): Update. - * method.c (use_thunk): Update. - -2008-04-24 Jakub Jelinek <jakub@redhat.com> - - PR c++/35758 - * cp-tree.h (cp_reconstruct_complex_type): New prototype. - * cp-objcp-common.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define. - * decl2.c (is_late_template_attribute): Only make vector_size - late tmpl attribute if argument is type or value dependent. - (cp_reconstruct_complex_type): New function. - -2008-04-24 Richard Guenther <rguenther@suse.de> - - * typeck.c (cp_build_function_call): Call - check_builtin_function_arguments. - -2008-04-23 Paolo Bonzini <bonzini@gnu.org> - - * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT. - (build_ptrmemfunc1): Don't set TREE_INVARIANT. - * init.c (build_zero_init): Don't set TREE_INVARIANT. - * class.c (build_base_path): Don't set TREE_INVARIANT. - (build_vtbl_ref_1): Don't set TREE_INVARIANT. - (build_vtbl_initializer): Don't set TREE_INVARIANT. - * decl.c (build_enumerator): Don't set TREE_INVARIANT. - * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT. - (generic_initializer): Don't set TREE_INVARIANT. - (ptr_initializer): Don't set TREE_INVARIANT. - (ptm_initializer): Don't set TREE_INVARIANT. - (class_initializer): Don't set TREE_INVARIANT. - * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT. - * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT. - (build_template_parm_index): Don't set TREE_INVARIANT. - (reduce_template_parm_level): Don't set TREE_INVARIANT. - (process_template_parm): Don't set TREE_INVARIANT. - -2008-04-22 Jason Merrill <jason@redhat.com> - - PR c++/35316 - * semantics.c (finish_decltype_type): Check DECL_BIT_FIELD_TYPE - to see if DECL_BIT_FIELD_TYPE should be used, not some other flag. - * typeck.c (is_bitfield_expr_with_lowered_type): Likewise. - -2008-04-22 Jakub Jelinek <jakub@redhat.com> - - PR c++/35747 - * semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt - expression is errorneous. - -2008-04-21 Jason Merrill <jason@redhat.com> - - PR c++/35325 - * tree.c (cp_tree_equal): Handle FIXED_CST. - - PR c++/35678 - * pt.c (template_template_parm_bindings_ok_p): Set - processing_template_decl while in this function. - -2008-04-18 Kris Van Hees <kris.van.hees@oracle.com> - - * cvt.c (type_promotes_to): Support char16_t and char32_t. - * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on - char16_t and char32_t. - * lex.c (reswords): Add char16_t and char32_t (for c++0x). - * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor - extended builtin type "u8char{16,32}_t". - * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support - RID_CHAR{16,32}. - (cp_lexer_print_token): Support CPP_STRING{16,32}. - (cp_parser_is_string_literal): Idem. - (cp_parser_string_literal): Idem. - (cp_parser_primary_expression): Support CPP_CHAR{16,32} and - CPP_STRING{16,32}. - (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}. - * tree.c (char_type_p): Support char16_t and char32_t as char types. - * typeck.c (string_conv_p): Support char16_t and char32_t. - -2008-04-17 Jason Merrill <jason@redhat.com> - - PR c++/35773 - * call.c (build_user_type_conversion_1): Represent second step of - copy-init with an rvalue conversion. - (convert_like_real) [ck_user]: Don't implicitly add it here. - -2008-04-15 Jakub Jelinek <jakub@redhat.com> - - PR c/35751 - * decl.c (layout_var_decl): If extern or static var has variable - size, set TREE_TYPE (decl) to error_mark_node. - -2008-04-16 Danny Smith <dannysmith@users.sourceforge.net> - - PR target/35921 - * optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag - to clone. - -2008-04-09 Jason Merrill <jason@redhat.com> - - PR c++/35708 - * semantics.c (finish_compound_literal): Return a TARGET_EXPR, - not a pushed variable. - -2008-04-09 Volker Reichelt <v.reichelt@netcologne.de> - - * call.c (build_op_delete_call): Fix quotation in warning message. - * decl.c (grokdeclarator): Quote keyword in error message. - * pt.c (check_for_bare_parameter_packs): Fix quotation in error - message. - - * parser.c (cp_parser_check_type_definition): Print error string - directly rather than using "%s". - (cp_parser_postfix_expression): Fix quotation. - (cp_parser_decltype): Likewise. - (cp_parser_sizeof_operand): Fix quotation. Simplify. - - * parser.c (cp_parser_non_integral_constant_expression): Build error - message with CONCAT rather than using "%s". - (cp_parser_primary_expression): Fix quotation. - (cp_parser_postfix_expression): Likewise. - (cp_parser_postfix_dot_deref_expression): Likewise. - (cp_parser_unary_expression): Likewise. - (cp_parser_new_expression): Likewise. - (cp_parser_delete_expression): Likewise. - - * parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN - as `)', not as `('. Fix quotation. - (cp_parser_consume_semicolon_at_end_of_statement): Fix quotation. - (cp_parser_primary_expression): Likewise. - (cp_parser_nested_name_specifier_opt): Likewise. - (cp_parser_postfix_expression): Likewise. - (cp_parser_postfix_open_square_expression): Likewise. - (cp_parser_parenthesized_expression_list): Likewise. - (cp_parser_pseudo_destructor_name): Likewise. - (cp_parser_new_expression): Likewise. - (cp_parser_direct_new_declarator): Likewise. - (cp_parser_delete_expression): Likewise. - (cp_parser_cast_expression): Likewise. - (cp_parser_question_colon_clause): Likewise. - (cp_parser_builtin_offsetof): Likewise. - (cp_parser_trait_expr): Likewise. - (cp_parser_label_for_labeled_statement): Likewise. - (cp_parser_compound_statement): Likewise. - (cp_parser_selection_statement): Likewise. - (cp_parser_condition): Likewise. - (cp_parser_iteration_statement): Likewise. - (cp_parser_already_scoped_statement): Likewise. - (cp_parser_simple_declaration): Likewise. - (cp_parser_linkage_specification): Likewise. - (cp_parser_static_assert): Likewise. - (cp_parser_decltype): Likewise. - (cp_parser_conversion_function_id): Likewise. - (cp_parser_operator_function_id): Likewise. - (cp_parser_operator): Likewise. - (cp_parser_type_parameter): Likewise. - (cp_parser_template_id): Likewise. - (cp_parser_explicit_instantiation): Likewise. - (cp_parser_explicit_specialization): Likewise. - (cp_parser_enum_specifier): Likewise. - (cp_parser_namespace_definition): Likewise. - (cp_parser_namespace_alias_definition): Likewise. - (cp_parser_using_declaration): Likewise. - (cp_parser_using_directive): Likewise. - (cp_parser_asm_definition): Likewise. - (cp_parser_direct_declarator): Likewise. - (cp_parser_ptr_operator): Likewise. - (cp_parser_parameter_declaration_clause): Likewise. - (cp_parser_initializer_clause): Likewise. - (cp_parser_class_specifier): Likewise. - (cp_parser_member_specification_opt): Likewise. - (cp_parser_member_declaration): Likewise. - (cp_parser_pure_specifier): Likewise. - (cp_parser_constant_initializer): Likewise. - (cp_parser_base_clause): Likewise. - (cp_parser_exception_specification_opt): Likewise. - (cp_parser_try_block): Likewise. - (cp_parser_function_try_block): Likewise. - (cp_parser_handler): Likewise. - (cp_parser_throw_expression): Likewise. - (cp_parser_asm_operand_list): Likewise. - (cp_parser_attributes_opt): Likewise. - (cp_parser_label_declaration): Likewise. - (cp_parser_constructor_declarator_p): Likewise. - (cp_parser_template_declaration_after_export): Likewise. - (cp_parser_single_declaration): Likewise. - (cp_parser_objc_message_expression): Likewise. - (cp_parser_objc_message_args): Likewise. - (cp_parser_objc_encode_expression): Likewise. - (cp_parser_objc_defs_expression): Likewise. - (cp_parser_objc_protocol_expression): Likewise. - (cp_parser_objc_selector_expression): Likewise. - (cp_parser_objc_protocol_refs_opt): Likewise. - (cp_parser_objc_typename): Likewise. - (cp_parser_objc_method_keyword_params): Likewise. - (cp_parser_objc_superclass_or_category): Likewise. - (cp_parser_objc_try_catch_finally_statement): Likewise. - (cp_parser_objc_synchronized_statement): Likewise. - (cp_parser_objc_throw_statement): Likewise. - (cp_parser_omp_var_list_no_open): Likewise. - (cp_parser_omp_clause_default): Likewise. - (cp_parser_omp_clause_if): Likewise. - (cp_parser_omp_clause_num_threads): Likewise. - (cp_parser_omp_clause_reduction): Likewise. - (cp_parser_omp_clause_schedule): Likewise. - (cp_parser_omp_critical): Likewise. - (cp_parser_omp_for_loop): Likewise. - (cp_parser_omp_sections_scope): Likewise. - - * parser.c (cp_parser_template_parameter_list): Simplify. - -2008-04-07 James E. Wilson <wilson@tuliptree.org> - - * pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len. - -2008-04-07 Jason Merrill <jason@redhat.com> - - PR c++/35734 - * class.c (type_has_user_nondefault_constructor): A template - counts as a nondefault constructor. - -2008-04-04 Paolo Bonzini <bonzini@gnu.org> - - * decl.c (cxx_push_function_context): Delete. - (cxx_pop_function_context): Delete. - (start_preparsed_function): Merge cxx_push_function_context (!f->decl - code only). - * cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT, - LANG_HOOKS_FUNCTION_FINAL): Delete. - (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to - LANG_HOOKS_MISSING_NORETURN_OK_P. - * cp-tree.h (cxx_push_function_context, cxx_pop_function_context): - Delete prototype. - * semantics.c (current_stmt_tree): Fix comment. - -2008-04-03 Jakub Jelinek <jakub@redhat.com> - - PR c++/35741 - * semantics.c (finish_offsetof): Undo effect of convert_from_reference - before calling fold_offsetof. - -2008-04-03 Tom Tromey <tromey@redhat.com> - - * Make-lang.in (c++_OBJS): New variable. - -2008-04-03 Paolo Bonzini <bonzini@gnu.org> - - * optimize.c (clone_body): New, from tree-inline.c. - -2008-04-03 Paolo Bonzini <bonzini@gnu.org> - - * method.c (synthesize_method): Use {push,pop}_function_context. - * name-lookup.c (push_to_top_level): Likewise. - * parser.c (cp_parser_late_parsing_for_member): Likewise. - -2008-03-30 Volker Reichelt <v.reichelt@netcologne.de> - - PR c++/35578 - * parser.c (cp_parser_decl_specifier_seq): Add location to error - message. - -2008-03-27 Tom Tromey <tromey@redhat.com> - - * Make-lang.in: Revert automatic dependency patch. - -2008-03-27 Douglas Gregor <doug.gregor@gmail.com> - - PR obj-c++/35704 - * typeck.c (build_x_compound_expr): Use cp_build_compound_expr. - (build_compound_expr): New, for compatibility with C - build_compound_expr. - (cp_build_compound_expr): Renamed from build_compound_expr. - (build_c_cast): New, for compatibility with C build_c_cast. - (cp_build_c_cast): Renamed from build_c_cast. - * init.c (build_vec_delete_1): Fix calls to build_compound_expr. - * decl.c (cxx_maybe_build_cleanup): Ditto. - * cp-tree.h (build_compound_expr): Add C-compatibile prototype. - (cp_build_compound_expr): Renamed from build_compound_expr. - (build_c_cast): Add C-compatible prototype. - (cp_build_c_cast): Renamed from build_c_cast. - * typeck2.c (build_functional_cast): Use cp_build_c_cast. - * parser.c (cp_parser_cast_expression): Fix call to build_c_cast. - -2008-03-27 Douglas Gregor <doug.gregor@gmail.com> - - * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with - tsubst_pack_expansion returning a pack expansion, or a TREE_VEC - ending in a pack expansion, both of which can occur when - substituting into a nested template. - (tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're - instantiating the sizeof...(X) form, make tsubst_copy do the work. - * parser.c (cp_parser_template_parameter): Deal with unnamed - non-type template parameter packs identified by pack expansions in - the parameter type. - -2008-03-26 Jakub Jelinek <jakub@redhat.com> - - PR c++/35546 - * pt.c (apply_late_template_attributes): Don't call tsubst on - first attribute argument if it is IDENTIFIER_NODE. - - PR c++/35332 - * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR - and LTGT_EXPR to pp_expression. - -2008-03-26 Douglas Gregor <doug.gregor@gmail.com> - - * pt.c (coerce_template_template_parm): Moved the body of the loop - of coerce_template_template_parms here, to make iteration over a - template argument pack simpler. - Also, allow matching of a template parameter pack in the template - template parameter to a template parameter in the template - template argument. - (coerce_template_template_parms): Deal with variadic template - template parameters. Use coerce_template_template_parm. - (unify): Make sure we coerce the template template argument's - template arguments to the template template parameter's template - parameters, not the other way around. - -2008-03-25 Tom Tromey <tromey@redhat.com> - - * Make-lang.in: Remove .o targets. - (cp/g++spec.o): Moved to cp/. Reduce to variable setting. - (GXX_OBJS): Update. - (c++_OBJS): New variable. - (CXX_TREE_H, CXX_PRETTY_PRINT_H): Remove. - -2008-03-25 Douglas Gregor <doug.gregor@gmail.com> - - * typeck.c (composite_pointer_type_r): Add SFINAE support. - (composite_pointer_type): Ditto. - (common_type): Fix call to composite_pointer_type. - (cxx_sizeof_nowarn): New; used to be a macro. - (cxx_sizeof_expr): Add SFINAE support. - (cxx_alignof_expr): Ditto. - (decay_conversion): Fix calls for SFINAE support. - (rationalize_conditional_expr): Add SFINAE support. - (build_class_member_access_expr): Ditto. - (finish_class_member_access_expr): Ditto. - (build_x_indirect_ref): Ditto. - (build_indirect_ref): Original version renamed to - cp_build_indirect_ref; new version provides a bridge from - c-common. - (cp_build_indirect_ref): Was build_indirect_ref; added SFINAE - support. - (get_member_function_from_ptrfunc): Fix calls for SFINAE support. - (build_function_call): Original version renamed to - cp_build_function_call; new version provides a bridge from - c-common. - (cp_build_function_call): Was build_function_call; added SFINAE - support. - (convert_arguments): Add SFINAE support. - (build_x_binary_op): Ditto. - (build_binary_op): Original version renamed to cp_build_binary_op; - new version provides a bridge from c-common. - (cp_build_binary_op): Was build_binary_op; added SFINAE support. - (pointer_diff): Fix calls for SFINAE. - (build_x_unary_op): Add SFINAE support. - (condition_conversion): Fix calls for SFINAE. - (build_unary_op): Original version renamed to cp_build_unary_op; - new version provides a bridge from c-common. - (cp_build_unary_op): Was build_unary_op; added SFINAE support. - (unary_complex_lvalue): Fix calls for SFINAE. - (build_x_conditional_expr): Add SFINAE support. - (build_x_compound_expr_from_list): Fix calls for SFINAE. - (build_x_compound_expr): Add SFINAE support. - (convert_ptrmem): Fix calls for SFINAE. - (build_static_cast_1): Add SFINAE support. - (build_static_cast): Ditto. - (build_reinterpret_cast_1): Ditto. - (build_reinterpret_cast): Ditto. - (build_const_cast_1): Ditto. - (build_const_cast): Ditto. - (build_c_cast): Ditto. - (build_modify_expr): Original version renamed to - cp_build_modify_expr; new version provides a bridge from c-common. - (cp_build_modify_expr): Was build_modify_expr; added SFINAE - support. - (build_x_modify_expr): Add SFINAE support. - (build_ptrmemfunc): Fix calls for SFINAE. - (convert_for_assignment): Add SFINAE support. - (convert_for_initialization): Ditto. - (check_return_expr): Fix calls for SFINAE. - (lvalue_or_else): Add SFINAE support. - * init.c (perform_member_init): Fix calls for SFINAE. - (emit_mem_initializers): Ditto. - (expand_virtual_init): Ditto. - (expand_cleanup_for_base): Ditto. - (build_aggr_init): Add SFINAE support. - (expand_default_init): Ditto. - (expand_aggr_init_1): Fix calls for SFINAE. - (build_offset_ref): Ditto. - (build_new_1): Add SFINAE support. - (build_new): Ditto. - (build_vec_delete_1): Fix calls for SFINAE. - (get_temp_regvar): Ditto. - (build_vec_init): Add SFINAE support. - (build_dtor_call): Fix calls for SFINAE. - (build_delete): Ditto. - (push_base_cleanups): Ditto. - (build_vec_delete_1): Ditto. - * class.c (build_base_path): Fix calls for SFINAE. - (build_simple_base_path): Ditto. - (convert_to_base_statically): Ditto. - (build_vfn_ref): Ditto. - (resolve_address_of_overloaded_function): Ditto. - * decl.c (check_initializer): Fix calls for SFINAE. - (register_dtor_fn): Ditto. - (compute_array_index_type): Ditto. - (finish_enum): Ditto. - (start_preparsed_function): Ditto. - (cxx_maybe_build_cleanup): Ditto. - * call.c (convert_like): Add COMPLAIN argument. - (convert_like_with_context): Ditto. - (build_this): Fix calls for SFINAE. - (build_user_type_conversion): Ditto. - (resolve_args): Ditto. - (build_new_function_call): Add SFINAE support. - (build_operator_new_call): Fix calls for SFINAE. - (build_object_call): Add SFINAE support. - (build_conditional_expr): Ditto. - (build_new_op): Ditto. - (build_op_delete_call): Fix calls for SFINAE. - (build_temp): Ditto. - (convert_like_real): Add SFINAE support. - (build_x_va_arg): Fix calls for SFINAE. - (convert_default_arg): Ditto. - (build_over_call): Add SFINAE support. - (build_java_interface_fn_ref): Fix calls for SFINAE. - (build_special_member_call): Add SFINAE support. - (build_new_method_call): Ditto. - (perform_implicit_conversion): Ditto. - (perform_direct_initialization_if_possible): Ditto. - (initialize_reference): Fix calls for SFINAE. - * method.c (do_build_assign_ref): Fix calls for SFINAE. - * rtti.c (build_headof): Fix calls for SFINAE. - (get_tinfo_decl_dynamic): Ditto. - (get_typeid): Ditto. - (build_dynamic_cast_1): Add SFINAE support. - (build_dynamic_cast): Ditto. - (tinfo_base_init): Fix calls for SFINAE. - * except.c (do_get_exception_ptr): Fix calls for SFINAE. - (do_end_catch): Ditto. - (initialize_handler_parm): Ditto. - (expand_start_catch_block): Ditto. - (do_allocate_exception): Ditto. - (do_free_exception): Ditto. - (build_throw): Ditto. - * cvt.c (build_up_reference): Fix calls for SFINAE. - (convert_to_reference): Ditto. - (ocp_convert): Ditto. - (convert_to_void): Add SFINAE support. - * tree.c (build_dummy_object): Fix calls for SFINAE. - (stabilize_expr): Ditto. - * cp-tree.h (build_conditional_expr): Add tsubst_flags_t - parameter. - (build_new_method_call): Ditto. - (build_special_member_call): Ditto. - (build_new_op): Ditto. - (perform_implicit_conversion): Ditto. - (perform_direct_initialization_if_possible): Ditto. - (convert_to_void): Ditto. - (build_aggr_init): Ditto. - (build_new): Ditto. - (build_vec_init): Ditto. - (build_dynamic_cast): Ditto. - (finish_call_expr): Ditto - (cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter. - (cxx_sizeof_nowarn): Remove macro; add function declaration. - (build_class_member_access_expr): Add tsubst_flags_t parameter. - (finish_class_member_access_expr): Ditto. - (build_x_indirect_ref): Ditto. - (cp_build_indirect_ref): New. - (cp_build_function_call): Add tsubst_flags_t parameter. - (build_x_unary_op): Ditto. - (cp_build_unary_op): New. - (build_x_conditional_expr): Add tsubst_flags_t parameter. - (build_x_compound_expr): Ditto. - (build_compound_expr): Ditto. - (build_static_cast): Ditto. - (build_reinterpret_cast): Ditto. - (build_const_cast): Ditto. - (build_c_cast): Ditto. - (build_x_modify_expr): Ditto. - (cp_build_modify_expr): New. - (convert_for_initialization): Add tsubst_flags_t parameter. - (cp_build_binary_op): Remove macro; add function declaration. - (invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter. - (lvalue_or_else): Ditto. - (build_functional_cast): Ditto. - * typeck2.c (digest_init): Fix calls for SFINAE. - (process_init_constructor_array): Ditto. - (process_init_constructor_record): Ditto. - (build_x_arrow): Ditto. - (build_m_component_ref): Ditto. - (build_functional_cast): Add SFINAE support. - * pt.c (tsubst_copy_and_build): Add (more) SFINAE support. - * semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE. - (finish_expr_stmt): Ditto. - (finish_for_expr): Ditto. - (finish_asm_stmt): Ditto. - (finish_non_static_data_member): Ditto. - (finish_qualified_id_expr): Ditto. - (finish_call_expr): Add SFINAE support. - (finish_increment_expr): Fix calls for SFINAE. - (finish_unary_op_expr): Ditto. - (simplify_aggr_init_expr): Ditto. - (finish_omp_clauses): Ditto. - (finish_omp_for): Ditto. - (finish_omp_barrier): Ditto. - (finish_omo_flush): Ditto. - * decl2.c (grok_array_decl): Fix calls or SFINAE. - (build_anon_union_vars): Ditto. - (get_guard_cond): Ditto. - (set_guard): Ditto. - (one_static_initialization_or_destruction): Ditto. - (do_static_initialization_or_destruction): Ditto. - (generate_ctor_or_dtor_function): Ditto. - (build_offset_ref_call_from_tree): Ditto. - * parser.c (cp_parser_postfix_expression): Fix calls for SFINAE. - (cp_parser_postfix_dot_deref_expression): Ditto. - (cp_parser_unary_expression): Ditto. - (cp_parser_new_expression): Ditto. - (cp_parser_cast_expression): Ditto. - (cp_parser_binary_expression): Ditto. - (cp_parser_question_colon_clause): Ditto. - (cp_parser_assignment_expression): Ditto. - (cp_parser_expression): Ditto. - (cp_parser_builtin_offsetof): Ditto. - (cp_parser_template_argument): Ditto. - (cp_parser_functional_cast): Ditto. - -2008-03-24 Tom Tromey <tromey@redhat.com> - - * lex.c (handle_pragma_interface): Don't copy the filename. - (handle_pragma_implementation): Copy filename using xstrdup. - -2008-03-21 Paolo Carlini <pcarlini@suse.de> - - * cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P. - (SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P. - (IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P. - (PROMOTES_TO_AGGR_TYPE): Remove. - (CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust. - * typeck.c (unary_complex_lvalue, build_modify_expr, - convert_for_initialization): Adjust. - * init.c (is_aggr_type): Remove. - (is_class_type): Add. - (build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init, - build_delete): Adjust. - * lex.c (make_aggr_type): Remove. - (make_class_type): Add. - (cxx_make_type): Adjust. - * class.c (finish_struct_1, fixed_type_or_null, is_empty_class): - Adjust. - * decl.c (build_typename_type, make_typename_type, - make_unbound_class_template, cxx_init_decl_processing, - check_tag_decl, groktypename, start_decl_1, layout_var_decl, - check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms, - grok_op_properties, xref_tag, check_function_type): Adjust. - * call.c (check_dtor_name, standard_conversion, implicit_conversion, - add_builtin_candidate, add_builtin_candidates, - build_user_type_conversion_1, convert_like_real, build_cxx_call, - is_subseq, compare_ics): Adjust. - * method.c (use_thunk): Adjust. - * rtti.c (build_dynamic_cast_1, create_pseudo_type_info, - create_tinfo_types): Adjust. - * cvt.c (cp_convert_to_pointer, convert_to_pointer_force, - build_up_reference, convert_to_reference, convert_from_reference, - ocp_convert, build_expr_type_conversion): Adjust. - * tree.c (bind_template_template_parm, error_type): Adjust. - * dump.c (cp_dump_tree): Adjust. - * search.c (lookup_member): Adjust. - * friend.c (make_friend_class, do_friend): Adjust. - * typeck2.c (store_init_value, process_init_constructor_array, - process_init_constructor_record, build_x_arrow, build_m_component_ref, - build_functional_cast): Adjust. - * pt.c (finish_member_template_decl, process_template_parm, - lookup_template_class, tsubst_function_type, tsubst, - tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc): - Adjust. - * semantics.c (begin_class_definition, finish_base_specifier, - finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type): - Adjust. - * name-lookup.c (constructor_name_p, push_overloaded_decl, - do_class_using_decl, lookup_qualified_name, - maybe_process_template_type_declaration): Adjust. - * decl2.c (grok_array_decl, check_member_template, - constrain_class_visibility): Adjust. - * parser.c (cp_parser_class_name): Adjust. - -2008-03-18 Paolo Bonzini <bonzini@gnu.org> - - * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete. - -2008-03-17 Jason Merrill <jason@redhat.com> - - PR c++/35548 - * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding - a temp directly to a reference as per DR391. - -2008-03-12 Richard Guenther <rguenther@suse.de> - - PR c++/35469 - Revert: - 2008-02-04 Richard Guenther <rguenther@suse.de> - - PR java/35035 - * decl.c (record_builtin_java_type): Make jboolean a - integer type again where its mode doesn't match that of bool. - - 2008-01-25 Richard Guenther <rguenther@suse.de> - - PR c++/33887 - * decl.c (record_builtin_java_type): Make __java_boolean - a variant of bool. - * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check - after TYPE_MAIN_VARIANT check. - -2008-03-10 Jakub Jelinek <jakub@redhat.com> - - PR c++/35328 - * semantics.c (finish_omp_clauses): Look through NOP_EXPR even - if errorcount. - - PR c++/35337 - * semantics.c (finish_omp_clauses): Use %qD instead of %qE for - DECL_P in not a variable and appears more than once error messages. - -2008-03-07 Paolo Bonzini <bonzini@gnu.org> - - Revert: - - 2008-02-06 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/35049 - PR c++/35096 - * typeck.c (structural_comptypes): Call cp_comptypes. - (comptypes): New; called from the C/C++ common bits to perform - strict checks. - (cp_comptypes): Renamed from comptypes, which is already used, - with a different signature, by the C++ front end. - (build_reinterpret_cast_1): Call cp_comptypes. - (ptr_reasonably_similar): Ditto. - * decl.c (decls_match): Ditto. - * cvt.c (convert_to_reference): Ditto. - * cp-tree.h (same_type_p): Ditto. - (same_or_base_type_p): Ditto. - (comptypes): Rename to cp_comptypes. - * pt.c (canonical_type_parameter): Call cp_comptypes. - -2008-03-07 Paolo Bonzini <bonzini@gnu.org> - - * cp-objcp-common.c (cxx_types_compatible_p): Remove obsolete - test for equivalence between pointer and references. - -2008-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 24924 - * class.c (finish_struct_anon): Use permerror instead of pedwarn. - (check_field_decls): Likewise. - (note_name_declared_in_class): Likewise. - * call.c (build_new_op): Likewise. - (convert_like_real): Likewise. - (build_over_call): Likewise. - * lex.c (unqualified_fn_lookup_error): Likewise. - * parser.c (cp_parser_template_id): Likewise. - * cvt.c (warn_ref_binding): Likewise. - (convert_to_reference): Likewise. - (ocp_convert): Likewise. - (convert_to_void): Use error instead of pedwarn. - * error.c (cp_cpp_error): Use pedantic_warning_kind. - * decl.c (compute_array_index_type): Use constant_expression_error. - -2008-03-01 Douglas Gregor <doug.gregor@gmail.com> - - * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Note - that auto is either a storage class or a simple type specifier, - depending on the dialect. - (cp_parser_decl_specifier_seq): Complain about `auto' as a storage - specifier in C++98 mode, error in C++0x mode (since we don't - support auto as a type specifier, yet). - (cp_parser_storage_class_specifier_opt): Don't treat `auto' as a - storage specifier in C++0x mode. - (cp_parser_simple_type_specifier): Parse `auto' as a - simple-type-specifier, but error because we don't support it yet. - -2008-02-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * parser.c (cp_parser_nonclass_name): New. - (cp_parser_pseudo_destructor_name): Use it instead of - cp_parser_type_name. - (cp_parser_type_name): Move code to cp_parser_nonclass_name. - -2008-02-29 Tom Tromey <tromey@redhat.com> - - * parser.c (struct cp_token) <input_file_stack_index>: Remove. - (cp_lexer_get_preprocessor_token): Update. - (cp_lexer_set_source_position_from_token): Don't call - restore_input_file_stack. - * lex.c (cxx_init): Don't use push_srcloc or pop_srcloc. - -2008-02-28 Richard Guenther <rguenther@suse.de> - - Revert: - 2008-02-26 Richard Guenther <rguenther@suse.de> - - * decl.c (duplicate_decls): Remove decl from global mapping - before ggc_freeing it. - -2008-02-27 Jakub Jelinek <jakub@redhat.com> - - PR c++/35368 - * rtti.c: Include c-pragma.h. - (push_abi_namespace, pop_abi_namespace): New functions. - (build_dynamic_cast_1, tinfo_base_init, get_pseudo_ti_index, - create_tinfo_types, emit_support_tinfos): Use them. - * Make-lang.in (cp/rtti.o): Depend on $(C_PRAGMA_H). - -2008-02-26 Jason Merrill <jason@redhat.com> - - PR c++/35315 - * decl.c (grokdeclarator): Allow a typedef of an unnamed struct - to name the struct for linkage purposes even if it has attributes. - (start_decl): In that case, set ATTR_FLAG_TYPE_IN_PLACE. - -2008-02-26 Tom Tromey <tromey@redhat.com> - - * parser.c (eof_token): Remove old location code. - (check_empty_body): Remove test of USE_MAPPED_LOCATION. - * decl2.c (generate_ctor_or_dtor_function): Remove old location - code. - (cp_write_global_declarations): Likewise. - * lex.c (cxx_init): Remove old location code. - (handle_pragma_implementation): Remove test of - USE_MAPPED_LOCATION. - * pt.c (tsubst): Remove old location code. - * error.c (cp_print_error_function): Remove test of - USE_MAPPED_LOCATION. - * decl.c (pop_label): Remove old location code. - (finish_function): Likewise. - -2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR 26264 - * call.c (magic_varargs_p): Remove BUILT_IN_STDARG_START. - -2008-02-26 Richard Guenther <rguenther@suse.de> - - * decl.c (duplicate_decls): Remove decl from global mapping - before ggc_freeing it. - -2008-02-26 Paolo Carlini <pcarlini@suse.de> - - PR c++/35323 - * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE. - -2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * typeck.c (build_class_member_access_expr): Add appropriate - OPT_W* parameter to warning. - (build_reinterpret_cast_1): Likewise. - * name-lookup.c (push_overloaded_decl): Likewise. - -2008-02-25 Paolo Carlini <pcarlini@suse.de> - - PR c++/35333 - * error.c (dump_expr): Handle CONJ_EXPR. - -2008-02-25 Paolo Carlini <pcarlini@suse.de> - - PR c++/35338 - * error.c (dump_type): Handle FIXED_POINT_TYPE. - (dump_expr): Handle FIXED_CST. - -2008-02-24 Jason Merrill <jason@redhat.com> - - * parser.c (cp_parser_declaration): Handle "inline namespace". - (cp_parser_namespace_definition): Likewise. - - PR c++/33486 - * name-lookup.c (arg_assoc_namespace): Look down into inline - namespaces, too. - -2008-02-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * typeck.c (check_for_casting_away_constness): Use 1 single - argument, the type of cast, to decide what diagnostics generate. - (build_static_cast_1): Remove unused code. Update call to - check_for_casting_away_constness. - (build_reinterpret_cast_1): Update call to - check_for_casting_away_constness. - (build_const_cast_1): Likewise. - -2008-02-24 Paolo Carlini <pcarlini@suse.de> - - * error.c (dump_expr): Don't deal directly with NEW_EXPR (and - VEC_NEW_EXPR), forward to pp_expression. - * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME. - -2008-02-24 Danny Smith <dannysmith@users.sourceforge.net> - - PR c++/34749 - * friend.c (do_friend): Call cplus_decl_attributes earlier. - -2008-02-22 Andrew Pinski <andrew_pinski@playstation.sony.com> - - PR C++/34715 - * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for - template decls' function decl. - -2008-02-22 Paolo Carlini <pcarlini@suse.de> - - PR c++/35282 - Revert: - 2008-02-14 Paolo Carlini <pcarlini@suse.de> - - PR c++/28743 - * pt.c (determine_specialization): In case of function templates, - when the type of DECL does not match FN there is no match. - -2008-02-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - PR c/19999 - * typeck.c (build_binary_op): Warn about floating point - comparisons if FLOAT_TYPE_P, not only for REAL_TYPE. - -2008-02-19 Jason Merrill <jason@redhat.com> - - PR c++/34950 - * pt.c (resolve_overloaded_unification): Set processing_template_decl - while we look for possible bindings. - -2008-02-19 Jakub Jelinek <jakub@redhat.com> - - PR c++/35028 - * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors. - - PR c++/34964 - PR c++/35244 - * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p - vars. Afterwards ensure v is VAR_DECL. - - PR c++/35078 - * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't - call cp_finish_decl. - * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type - early. - -2008-02-15 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/35023 - PR c++/35024 - PR c++/35026 - * pt.c (finish_member_template_decl): If the type in a TYPE_DECL - is error_mark_node, return an error early. - (find_parameter_packs_r): Pass the pointer set along to recursive - calls of cp_walk_subtrees; don't try to manage the pointer set - ourselves. - (uses_parameter_packs): Pass the pointer set to cp_walk_tree. - (make_pack_expansion): Ditto. - (check_for_bare_parameter_packs): Ditto. Also, don't bother taking - a second pass through the tree with find_parameter_packs_r; that - second pass no longer does anything. - (push_template_decl_real): If we have an erroneous declaration, - set its type to error_mark_node before returning an error. - -2008-02-14 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/34050 - * pt.c (tsubst_initializer_list): Deal with the use of - VOID_TYPE_NODE to indicate value-initialization of the bases. - -2008-02-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - Jason Merrill <jason@redhat.com> - - PR c++/5645 - PR c++/11159 - * class.c (type_has_user_nondefault_constructor): New fn. - * cp-tree.h: Declare it. - * init.c (emit_mem_initializers): Use it for -W warning about - missing base initializer. - -2008-02-14 Paolo Carlini <pcarlini@suse.de> - - PR c++/28743 - * pt.c (determine_specialization): In case of function templates, - when the type of DECL does not match FN there is no match. - -2008-02-13 Jakub Jelinek <jakub@redhat.com> - Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/35138 - * parser.c (cp_parser_pseudo_destructor_name): If next tokens - are not identifier :: ~, return before calling cp_parser_type_name. - -2008-02-13 Jason Merrill <jason@redhat.com> - - PR c++/34962, c++/34937, c++/34939 - * decl2.c (is_late_template_attribute): Always defer attributes - vector_size and weak. - - PR c++/34774 - * pt.c (value_dependent_expression_p): Look into DECL_INITIAL - of enumerators, too. - -2008-02-12 Jason Merrill <jason@redhat.com> - - PR c++/34824 - * call.c (convert_like_real): Pass LOOKUP_NO_CONVERSION to build_temp - if we're doing conversions to call a user-defined conversion function. - -2008-02-12 Steven Bosscher <steven@gcc.gnu.org> - - PR c++/29048 - * semantics.c (finish_qualified_id_expr): Avoid duplicate access - check here, too. - -2008-02-12 Jakub Jelinek <jakub@redhat.com> - - PR c++/34862 - * init.c (build_new_1): Don't create placement_expr before - constructing alloc_call. Verify that the pointer is passed by - value to operator new. - -2008-02-11 Jason Merrill <jason@redhat.com> - - PR c++/35097 - * pt.c (tsubst): Don't look up a template typedef in an explicit - specialization. - -2008-02-11 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/35113 - * tree.c (cp_build_qualified_type_real): When building a - cv-qualified array type, build it as a unique type with - build_cplus_array_type_1 and then adopt the unqualified type's - main variant. - -2008-02-11 Paolo Carlini <pcarlini@suse.de> - - PR c++/35077 - * decl.c (groktypename): Check grokdeclarator return. - -2008-02-10 Jason Merrill <jason@redhat.com> - - PR c++/34094 - * decl2.c (cp_write_global_declarations): Don't write out static - data members with DECL_IN_AGGR_P set. - -2008-02-08 Jason Merrill <jason@redhat.com> - - PR c++/35116 - * tree.c (build_target_expr_with_type): Handle void initializer. - (bot_manip): Remap slot before recursing. - -2008-02-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - PR other/35107 - * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS). - -2008-02-06 Alexandre Oliva <aoliva@redhat.com> - - PR c++/35056 - * tree.c: Include tree-flow.h. - (build_target_expr): Check type compatibility. - * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H). - * call.c (convert_like_real): Convert bitfield to expected type. - -2008-02-06 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/35049 - PR c++/35096 - * typeck.c (structural_comptypes): Call cp_comptypes. - (comptypes): New; called from the C/C++ common bits to perform - strict checks. - (cp_comptypes): Renamed from comptypes, which is already used, - with a different signature, by the C++ front end. - (build_reinterpret_cast_1): Call cp_comptypes. - (ptr_reasonably_similar): Ditto. - * decl.c (decls_match): Ditto. - * cvt.c (convert_to_reference): Ditto. - * cp-tree.h (same_type_p): Ditto. - (same_or_base_type_p): Ditto. - (comptypes): Rename to cp_comptypes. - * pt.c (canonical_type_parameter): Call cp_comptypes. - -2008-02-05 Jakub Jelinek <jakub@redhat.com> - - PR c++/33553 - * pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is - value dependent expression. - -2008-02-05 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/35074 - * decl2.c (save_template_attributes): When we're modifying the - TYPE_MAIN_VARIANT to add new attributes, be sure to also modify - all of the other variants to add those same attributes. Otherwise, - the main variant will be inconsistent with those other variants. - -2008-02-04 Richard Guenther <rguenther@suse.de> - - PR java/35035 - * decl.c (record_builtin_java_type): Make jboolean a - integer type again where its mode doesn't match that of bool. - -2008-02-02 Jason Merrill <jason@redhat.com> - Mark Mitchell <mark@codesourcery.com> - - PR c++/33916 - * init.c (build_value_init_1): New function. - (build_value_init): New function. - * typeck2.c (build_functional_cast): Call it. - * cp-gimplify.c (cp_gimplify_init_expr): Handle its output. - - * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from - TYPE_HAS_CONSTRUCTOR. - * class.c (finish_struct_bits, maybe_warn_about_overly_private_class, - add_implicitly_declared_members): Adjust. - (check_field_decls): Adjust. Remove warnings about reference/const - in class without constructor. - (check_bases_and_members): Adjust. Give those warnings here instead. - * decl.c (fixup_anonymous_aggr): Adjust. - (check_initializer): Adjust, clarify logic slightly. - (grok_special_member_properties): Adjust, only set if user-provided. - * rtti.c (create_tinfo_types): Don't set. - * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al. - Use same_type_ignoring_top_level_qualifiers_p. - * pt.c (check_explicit_specialization): Adjust. - (instantiate_class_template): Adjust. - -2008-01-31 Douglas Gregor <doug.gregor@gmail.com> - Jakub Jelinek <jakub@redhat.com> - - PR c++/34935 - PR c++/34936 - * typeck.c (structural_comptypes): Handle comparisons of - VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and - REAL_TYPE nodes. - * mangle.c (write_builtin_type): Map down to the canonical type, - which will be one of the predefined type nodes. - -2008-01-29 Michael Meissner <michael.meissner@amd.com> - - PR 35004 - * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16 - bits to allow for expansion of the number of middle end tree - codes. - -2008-01-29 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/34055 - PR c++/34103 - PR c++/34219 - PR c++/34606 - PR c++/34753 - PR c++/34754 - PR c++/34755 - PR c++/34919 - PR c++/34961 - * typeck.c (check_return_expr): Tweak call to - check_for_bare_parameter_packs. - * class.c (add_method): Be careful with error_mark_nodes. - * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from - signature. - * pt.c (struct find_parameter_pack_data): Remove - SET_PACKS_TO_ERROR. - (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR. - (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR. - (make_pack_expansion): Ditto. - (check_for_bare_parameter_packs): Parameter is now a tree, not a - tree*. - (process_template_parm): Tweak call to - check_for_bare_parameter_packs. - (push_template_decl_real): Tweak calls to - check_for_bare_parameter_packs. If bare parameter packs are found - in the list of exceptions, clear out that list after giving an - error. - * semantics.c (finish_cond): Tweak call to - check_for_bare_parameter_packs. - (finish_expr_stmt): Ditto. - (finish_for_expr): Ditto. - (finish_switch_cond): Ditto. - (finish_mem_initializers): Ditto. - (finish_member_declaration): Ditto. - (finish_static_assert): Check for bare parameter packs in the - condition. - * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the - attributes of a declaration. - * parser.c (cp_parser_using_declaration): Tweak call to - check_for_bare_parameter_packs. - (cp_parser_base_clause): Ditto. - -2008-01-28 Jason Merrill <jason@redhat.com> - - PR c++/35007 - * class.c (build_base_path): Fix !want_pointer case. - -2008-01-27 Jason Merrill <jason@redhat.com> - - PR c++/27177 - * class.c (build_base_path): Fix previous change. - -2008-01-26 Jakub Jelinek <jakub@redhat.com> - - PR c++/34965 - * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR - and TRUTH_XOR_EXPR. - -2008-01-26 Richard Guenther <rguenther@suse.de> - - PR c++/34235 - * typeck.c (build_binary_op): Remove code to shorten compares. - -2008-01-25 Richard Guenther <rguenther@suse.de> - - PR c++/33887 - * decl.c (record_builtin_java_type): Make __java_boolean - a variant of bool. - * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check - after TYPE_MAIN_VARIANT check. - -2008-01-25 Jason Merrill <jason@redhat.com> - - PR c++/27177 - * class.c (build_base_path): Don't mess with virtual access if - skip_evaluation. - * call.c (standard_conversion): Don't check whether source type - is complete. - - * decl2.c (is_late_template_attribute): Don't defer attribute - visibility just because the type is dependent. - -2008-01-25 Jason Merrill <jason@redhat.com> - Mark Mitchell <mark@codesourcery.com> - - PR c++/31780 - * call.c (standard_conversion): Allow conversion from integer/real - to complex. - (compare_ics): Such a conversion is worse than a normal arithmetic - conversion. - -2008-01-25 Richard Guenther <rguenther@suse.de> - - PR c++/33887 - * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define - to true. - -2008-01-24 Paolo Carlini <pcarlini@suse.de> - - PR c++/34603 - * pt.c (push_template_decl_real): Return error_mark_node in case - of template definition of non-template. - -2008-01-24 Jason Merrill <jason@redhat.com> - - PR c++/34913 - * decl2.c (is_late_template_attribute): Defer any attribute with - dependent args. Also defer type attributes if the type is dependent. - -2008-01-22 Jakub Jelinek <jakub@redhat.com> - Alexandre Oliva <aoliva@redhat.com> - - PR c++/33984 - * call.c (reference_binding): For bitfields use the declared bitfield - type. - (add_builtin_candidates): Likewise. - * class.c (layout_class_type): For bitfields copy over the - original type quals. - -2008-01-22 Jason Merrill <jason@redhat.com> - - PR c++/28560 - * decl.c (groktypename): Also ignore attributes on dependent - possibly-class types. - - PR c++/34912 - * friend.c (do_friend): Check for prior declaration of a friend - function of a local class. - * name-lookup.c (lookup_name_innermost_nonclass_level): - No longer static. - * name-lookup.h: Declare it. - -2008-01-22 Tom Tromey <tromey@redhat.com> - - PR c++/34829: - * init.c (build_new_1): Only disallow Java aggregates. - -2008-01-22 Jakub Jelinek <jakub@redhat.com> - - PR c++/34607 - * semantics.c (finish_omp_for): Don't call c_finish_omp_for - if decl or init is error_mark_node. - - PR c++/34918 - * error.c (dump_expr): Handle VECTOR_CST. - -2008-01-21 Jason Merrill <jason@redhat.com> - - PR c++/33959 - * pt.c (tsubst_aggr_type): Make sure our context is complete. - - PR c++/34573 - * pt.c (retrieve_local_specialization): Robustify. - (tsubst_pack_expansion, tsubst_decl): Remove redundant checks. - - PR c++/34846 - * pt.c (tsubst): Only call retrieve_local_specialization if the - original typedef was in a function template. - - PR c++/34196 - * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP. - -2008-01-21 Richard Guenther <rguenther@suse.de> - - PR c++/34850 - * error.c (cp_print_error_function): Deal with recursive - BLOCK trees. - -2008-01-20 Paolo Carlini <pcarlini@suse.de> - - PR c++/34891 - * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR. - -2008-01-20 Paolo Carlini <pcarlini@suse.de> - - PR c++/34776 - PR c++/34486 - * name-lookup.c (do_class_using_decl): Do not call constructor_name_p - on non-IS_AGGR_TYPE scope. - (constructor_name_p): Assert IS_AGGR_TYPE. - -2008-01-18 Ian Lance Taylor <iant@google.com> - - PR c++/33407 - * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag. - (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set - DECL_IS_OPERATOR_NEW flag. - -2008-01-16 Richard Guenther <rguenther@suse.de> - - PR c++/33819 - * typeck.c (is_bitfield_expr_with_lowered_type): Recurse - for conversions to type variants. - -2008-01-15 Andreas Tobler <a.tobler@schweiz.org> - - * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing - declaration and code. Update copyright year. - -2008-01-15 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/34399 - * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we - know we have a class type. - -2008-01-15 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/34751 - * pt.c (coerce_template_parameter_pack): When substituting into - the type of a non-type template parameter pack. use the - deduced/substituted arguments. - * parser.c (declarator_can_be_parameter_pack): A pointer-to-member - can be a parameter pack with the ellipsis following it. When we - have an erroneous declaration, allow it to be a parameter pack. - (cp_parser_template_parameter): Complain about default - arguments on non-type template parameter packs, and parse them - using the new cp_parser_default_argument. - (cp_parser_parameter_declaration): Complain about parameter packs - with default arguments. Move parsing of default arguments into a - new function, cp_parser_default_argument. - (cp_parser_default_argument): New; extracted from - cp_parser_parameter_declaration. - -2008-01-15 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/34051 - PR c++/34055 - PR c++/34102 - PR c++/34103 - * typeck.c (check_return_expr): If there are bare parameter packs - in the return value, set it to error_mark_node. - * tree.c (cp_walk_subtrees): Walk USING_DECL nodes. - * pt.c (find_parameter_packs_r): Look at the type of - IDENTIFIER_NODEs (e.g., for user-defined conversions). - (check_for_bare_parameter_packs): Flip the result: now returns - TRUE when there were bare parameter packs, FALSE otherwise. - (push_template_decl_real): Deal with flipped result of - check_for_bare_parameter_packs. - * semantics.c (finish_cond): If there are bare parameter packs in - the conditional, set it to error_mark_node. - (finish_expr_stmt): If there are bare parameter packs in the - expression, set it to error_mark_node. - (finish_for_expr): Ditto. - (finish_switch_cond): If there are bare parameter packs in - the conditional, set it to error_mark_node. - (finish_mem_initializers): If there are bare parameter packs in - the member initializer, set it to error_mark_node. - (finish_member_declaration): Check the attributes of the - declaration for bare parameter packs, and remove the attributes if - any have bare parameter packs. - * parser.c (cp_parser_using_declaration): Check the using - declaration for bare parameter packs. - (cp_parser_base_clause): If there are bare parameter packs in a - base specifier, don't add it to the chain. - -2008-01-15 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/34314 - * error.c (dump_simple_decl): Display ellipsis for template - non-type parameter packs. - (dump_decl): Display ellipsis for template type parameter packs. - (dump_template_decl): Display ellipsis for template template - parameter packs. - * pt.c (redeclare_class_template): When redeclaring a class - template, check for collisions between template parameters and - template parameter packs. - -2008-01-15 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33964 - * pt.c (process_partial_specialization): Don't mark template - parameters that occur in non-deduced contexts. - (struct pair_fn_data): Add include_nondeduced_p. - (for_each_template_parm_r): Only visit non-deduced contexts if - include_nondeduced_p is set. - (for_each_template_parm): Added parameter include_nondeduced_p, - which states whether template parameters found in non-deduced - contexts should be visited. - (uses_template_parms): Visit all template parameters, even those - in non-deduced contexts. - -2008-01-15 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/34052 - * pt.c (check_default_tmpl_args): Check for parameter packs that - aren't at the end of a primary template. - (push_template_decl_real): Remove check for parameter packs that - aren't at the end of a primary template; that now happens in - check_default_tmpl_args. - * semantics.c (finish_template_template_parm): Use - check_default_tmpl_args to check for errors in the template - parameter list. - -2008-01-12 Doug Kwan <dougkwan@google.com> - - * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers - instead of OPT_Wreturn_type in warning due to ignored return type - qualifiers. - * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers - instead of OPT_Wreturn_type in warning due to ignored return type - qualifiers. - -2008-01-08 Jakub Jelinek <jakub@redhat.com> - - PR c++/33890 - * semantics.c (finish_omp_for): Don't call - fold_build_cleanup_point_expr if processing_template_decl. - -2008-01-04 Paolo Carlini <pcarlini@suse.de> - Jakub Jelinek <jakub@redhat.com> - - PR c++/34611 - * error.c (dump_template_argument): Deal with TREE_LIST. - -2008-01-01 Douglas Gregor <doug.gregor@gmail.com> - - * parser.c (cp_parser_check_decl_spec): Don't warn about "long - long" in C++0x mode; change the warning to note that "long long" - is only unsupported in C++98 mode. - -2007-12-20 Jason Merrill <jason@redhat.com> - - PR c++/34111 - * call.c (standard_conversion): Derived-to-base is considered a - standard conversion. - -2007-12-19 Jakub Jelinek <jakub@redhat.com> - - PR c++/34513 - * parser.c (cp_parser_omp_parallel): For non-combined parallel - call cp_parser_statement rather than - cp_parser_already_scoped_statement. - -2007-12-18 Jason Merrill <jason@redhat.com> - - PR c++/34206 - * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't - use template parms. - (dependent_type_p_r): Handle the domain of an array. - -2007-12-18 Douglas Gregor <doug.gregor@gmail.com> - Jakub Jelinek <jakub@redhat.com> - - PR c++/32565 - PR c++/33943 - PR c++/33965 - * pt.c (template_template_parm_bindings_ok_p): New; verifies - bindings of template template parameters after all template - arguments have been deduced. - (coerce_template_parms): Don't complain when COMPLAIN doesn't - include tf_error. - (fn_type_unification): Use template_template_parm_bindings_ok_p. - (unify): Deal with variadic, bound template template parameters. - (get_class_bindings): Use template_template_parm_bindings_ok_p. - -2007-12-18 Jakub Jelinek <jakub@redhat.com> - - PR c++/34488 - * decl.c (grokdeclarator): Reject friend sfk_constructor - FUNCTION_TYPE. - -2007-12-17 Jakub Jelinek <jakub@redhat.com> - - PR c/34506 - * parser.c (cp_parser_omp_all_clauses): Accept optional comma - in between clauses. - -2007-12-15 Alexandre Oliva <aoliva@redhat.com> - - PR debug/7081 - * cp-lang.c (cp_classify_record): New. - (LANG_HOOKS_CLASSIFY_RECORD): Override. - -2007-12-11 Jakub Jelinek <jakub@redhat.com> - - PR c++/34238 - * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change. - - PR c++/34364 - * rtti.c (build_dynamic_cast): Call convert_from_reference even for - dynamic_cast in a template. - -2007-12-10 Simon Martin <simartin@users.sourceforge.net> - - PR c++/34059 - * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from - MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO. - -2007-12-10 Jakub Jelinek <jakub@redhat.com> - - PR c++/34395 - * error.c (dump_type_prefix, dump_type_suffix): Handle - TYPE_PACK_EXPANSION. - - PR c++/34394 - * error.c (dump_expr): Handle ABS_EXPR. - -2007-12-09 Jakub Jelinek <jakub@redhat.com> - - PR c++/34178 - PR c++/34340 - * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P - in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. - Return 2 also if DECL_EXPLICIT_INSTANTIATION. - * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when - flag_use_repository and repo_emit_p returned 2. - -2007-12-06 Jakub Jelinek <jakub@redhat.com> - - PR c++/34336 - * tree.c (stabilize_call, stabilize_init): Do nothing if - processing_template_decl. - -2007-12-05 Jakub Jelinek <jakub@redhat.com> - - PR c++/34271 - * semantics.c (finish_decltype_type): For SCOPE_REF issue an - error instead of assertion failure. - * parser.c (cp_parser_decltype): If closing paren is not found, - return error_mark_node. - -2007-12-04 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/34101 - * name-lookup.c (arg_assoc_template_arg): Recurse on argument - packs. - (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here, - since arg_assoc_template_arg will deal with them (better). - -2007-12-04 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33509 - * pt.c (tsubst_exception_specification): Handle substitutions into - member templates, where tsubst_pack_expansion returns a - TYPE_PACK_EXPANSION. - -2007-12-04 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33091 - * pt.c (unify_pack_expansion): If we didn't deduce any actual - bindings for the template parameter pack, don't try to keep the - empty deduced arguments. - (unify): If a parameter is a template-id whose template argument - list contains a pack expansion that is not at the end, then we - cannot unify against that template-id. - -2007-12-02 Paolo Carlini <pcarlini@suse.de> - - PR c++/34061 - * pt.c (current_template_args): Use error_operand_p. - -2007-12-02 Paolo Carlini <pcarlini@suse.de> - - PR c++/34273 - * error.c (dump_decl): Handle TREE_BINFO. - -2007-12-01 Ollie Wild <aaw@google.com> - - PR c++/8171 - * typeck.c (build_binary_op): Add conversion of pointers to function - members appearing as operands to the equality operators. - -2007-11-30 Jakub Jelinek <jakub@redhat.com> - - PR c++/34275 - * error.c (dump_expr): Handle OBJ_TYPE_REF. - -2007-11-29 Jakub Jelinek <jakub@redhat.com> - - PR c++/34270 - * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y - in templates. - * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>: - Likewise. - - PR c++/34267 - PR c++/34268 - * parser.c (cp_parser_decltype): Don't call finish_id_expression - on ~type. - * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs - and ~type early. - -2007-11-27 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/34181 - * method.c (use_thunk): Don't inline the call in the thunk. - - PR c++/34213 - * tree.c (decl_linkage): Static data members and static member - functions in anonymous ns classes are lk_external. - -2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com> - - PR c++/34081 - * decl.c (start_preparsed_function): Pass - processing_template_decl for the new allocate_struct_function - parameter. - -2007-11-25 Richard Guenther <rguenther@suse.de> - - * decl.c (poplevel): Use BLOCK_CHAIN. - -2007-11-24 Ollie Wild <aaw@google.com> - - * typeck.c (delta_from_ptrmemfunc): New function. - (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc. - (build_binary_op): Call delta_from_ptrmemfunc. - -2007-11-23 Jakub Jelinek <jakub@redhat.com> - - PR c++/30293 - PR c++/30294 - * decl.c (cp_finish_decl): Disallow variable or field - definitions if extern "Java" aggregates. - (grokparms): Disallow parameters with extern "Java" - aggregates. - (check_function_type): Disallow function return values - with extern "Java" aggregates. - * init.c (build_new_1): Disallow placement new with - extern "Java" aggregates. - -2007-11-23 Mark Mitchell <mark@codesourcery.com> - Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/5310 - * call.c (convert_like_real): Build a zero constant when __null is - converted to an integer type. - -2007-11-22 Jakub Jelinek <jakub@redhat.com> - - PR c++/34094 - * decl2.c (cp_write_global_declarations): Issue error about static - data members in anonymous namespace which are declared and used, - but not defined. - -2007-11-20 Jakub Jelinek <jakub@redhat.com> - - PR c++/34089 - * parser.c (cp_parser_class_head): Reject function template ids. - - PR c++/28879 - * tree.c (build_cplus_array_type_1): Don't pass any VLA types - when processing_template_decl to build_array_type. - - PR c++/33962 - * pt.c (more_specialized_fn): Don't segfault if one or - both argument list end with ellipsis. - -2007-11-18 Jakub Jelinek <jakub@redhat.com> - - PR c++/30988 - * semantics.c (finish_call_expr): Set - current_function_returns_abnormally if fn is noreturn FUNCTION_DECL - or OVERLOAD with all noreturn functions. - -2007-11-16 Jakub Jelinek <jakub@redhat.com> - - PR c++/34100 - * pt.c (apply_late_template_attributes): Do nothing if decl's type is - error_mark_node. - -2007-11-13 Jakub Jelinek <jakub@redhat.com> - - PR c++/34054 - PR c++/34056 - PR c++/34057 - PR c++/34058 - PR c++/34060 - * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error, - set to error_mark_node the outermost POINTER_TYPE to the pack if - it is seen in a POINTER_TYPE. - (push_template_decl_real): If check_for_bare_parameter_packs - fails for function return type, set the return type to - integer_type_node. If check_for_bare_parameter_packs failed - for non-function, return error_mark_node. - - PR c++/29225 - * call.c (build_new_op): Call resolve_args before calling - build_over_call. - -2007-11-11 Tom Tromey <tromey@redhat.com> - - PR c++/17577: - * lex.c (handle_pragma_implementation): Use cpp_included_before. - -2007-11-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/8570 - * pt.c (redeclare_class_template): Update error message. Use a - note to show the previous declaration. - (tsubst_friend_class): Use the location of the friend template as - the input location before calling redeclare_class_template. - -2007-11-11 Jakub Jelinek <jakub@redhat.com> - - PR c++/34068 - * semantics.c (finish_pseudo_destructor_expr): Handle - object == error_mark_node. - -2007-11-10 Jakub Jelinek <jakub@redhat.com> - - PR c++/32241 - * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type - is not scalar type, let finish_class_member_access_expr handle - diagnostics. Pass BIT_NOT_EXPR argument to - finish_pseudo_destructor_expr. Handle SCOPE_REF properly. - -2007-11-09 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33510 - * decl.c (cp_complete_array_type): If any of the initializer - elements are pack expansions, don't compute the array size yet. - -2007-11-08 Andrew Pinski <pinskia@gmail.com> - - PR c++/30297: - * tree.c (decl_linkage): Fields have no linkage. - -2007-11-08 Daniel Jacobowitz <dan@codesourcery.com> - - * class.c (build_ctor_vtbl_group): Lay out the new type and decl. - -2007-11-07 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33045 - PR c++/33837 - PR c++/33838 - * semantics.c (finish_decltype_type): See through INDIRECT_REFs. - Be careful with ERROR_MARK_NODEs. - * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL - argument. - -2007-11-07 Jakub Jelinek <jakub@redhat.com> - - PR c++/33501 - * call.c (build_over_call): Don't check TREE_ADDRESSABLE - on incomplete type. - -2007-11-06 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33977 - PR c++/33886 - * tree.c (c_build_qualified_type): Define bridge to - cp_build_qualified_type. - -2007-11-06 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/31439 - PR c++/32114 - PR c++/32115 - PR c++/32125 - PR c++/32126 - PR c++/32127 - PR c++/32128 - PR c++/32253 - PR c++/32566 - * typeck.c (check_return_expr): Pass address of retval to - check_for_bare_parameter_packs. - * class.c (build_base_field): Tolerate bases that have no layout - due to errors. - (end_of_base): Ditto. - * tree.c (canonical_type_variant): Be careful with - ERROR_MARK_NODE. - * cp-tree.h (check_for_bare_parameter_packs): Now accepts a - tree*. - * pt.c (find_parameter_pack_data): Add set_packs_to_error field, - which states whether parameter packs should be replaced with - ERROR_MARK_NODE. - (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever - possible. If set_packs_to_error is set true, replace the parameter - pack with ERROR_MARK_NODE. Manage our own pointer sets. - (uses_parameter_packs): Don't set parameter packs to - ERROR_MARK_NODE. - (check_for_bare_parameter_packs): Now takes a pointer to a tree, - which may be modified (if it is a parameter pack). Instructs - find_parameter_packs_r to replace parameter packs with - ERROR_MARK_NODE (so that they won't cause errors later on). - (process_template_parm): Pass pointer to - check_for_bare_parameter_packs. - (process_partial_specialization): Replace pack expansions before - the end of the template argument list with ERROR_MARK_NODE. - (push_template_decl_real): Pass pointer to - check_for_bare_parameter_packs. Replace parameter packs not at the - end of the template parameter list with ERROR_MARK_NODE. - (convert_template_argument): Be more careful about using DECL_NAME - on only declarations. - (unify): Can't unify against ERROR_MARK_NODE. - * semantics.c (finish_cond): Pass pointer to - check_for_bare_parameter_packs. - (finish_expr_stmt): Ditto. - (finish_for_expr): Ditto. - (finish_switch_cond): Pass pointer to - check_for_bare_parameter_packs, and call it before we put the - condition into the statement. - (finish_mem_initializers): Pass pointer to - check_for_bare_parameter_packs. - (finish_member_declaration): Ditto. - * parser.c (cp_parser_base_clause): Ditto. - -2007-11-06 Jakub Jelinek <jakub@redhat.com> - - PR target/33168 - * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already - with the final TREE_READONLY flag in place. processing_template_decl - is known to be 0 in this part of function. - - PR c++/33894 - * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not - OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC. - * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P. - * semantics.c (finish_omp_atomic): Revert most of the - 2007-02-05 changes, just keep the new representation of - OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC. - -2007-11-05 H.J. Lu <hongjiu.lu@intel.com> - - PR c++/33871 - * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked - local. - -2007-11-05 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33996 - PR c++/33235 - PR c++/33930 - * typeck.c (merge_types): Don't lose rvalue references when - merging types. - * call.c (build_over_call): Don't elide move constructors just - because the copy constructor is trivial (!). - (compare_ics): If comparing cv-qualifiers fails, we can still order - based on binding lvalues vs. rvalues. - -2007-11-05 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33939 - * pt.c (unify_pack_expansion): bring handling of function call - arguments into line with type_unification_real. - -2007-11-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * typeck.c (build_binary_op): Use pedwarn instead of error for - consistency. - -2007-11-05 Jakub Jelinek <jakub@redhat.com> - - PR c++/33836 - * parser.c (cp_parser_unary_expression): For &&label call - cp_parser_non_integral_constant_expression and return error_mark_node - if it returned true. - - PR c++/33969 - * decl.c (grokdeclarator): Don't call build_memfn_type if type - is neither FUNCTION_TYPE nor METHOD_TYPE. - -2007-11-02 Jakub Jelinek <jakub@redhat.com> - - PR c++/33516 - * parser.c (cp_parser_nested_name_specifier_opt): Use - TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete - typedef of currently open class. - -2007-11-02 Paolo Carlini <pcarlini@suse.de> - - PR c++/33495 - * error.c (dump_expr): Deal specially with statements. - -2007-11-01 Jason Merrill <jason@redhat.com> - - PR c++/30897 - * pt.c (push_template_decl_real): Set DECL_CONTEXT on template - template parms. - (lookup_template_class): Use it to get the outer template args - for instantiating one. - - PR c++/29236 - * pt.c (reduce_template_parm_level): tsubst the parameters - of a template template parm. - -2007-11-01 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33955 - * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE. - -2007-11-01 Jakub Jelinek <jakub@redhat.com> - - PR c++/32384 - * parser.c (cp_parser_postfix_dot_deref_expression): If - POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor - first and if that succeeds and type is SCALAR_TYPE_P, create - PSEUDO_DTOR_EXPR. - - PR c++/32260 - * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment. - (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo - as for std::type_info. - -2007-10-31 Paolo Carlini <pcarlini@suse.de> - - PR c++/33494 - * cxx-pretty-print.c (pp_cxx_typeid_expression, - pp_cxx_delete_expression): Change to static linkage. - * cxx-pretty-print.h: Adjust declarations. - * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR, - MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR, - MODOP_EXPR): Forward to pp_expression. - - * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR): - Fix typo. - -2007-10-31 Christian Bruel <christian.bruel@st.com> - Mark Mitchell <mark@codesourcery.com> - - PR c++/19531 - * typeck.c (check_return_expr): Don't set named_return_value_okay_p - if retval is volatile. - -2007-10-30 Jakub Jelinek <jakub@redhat.com> - - PR c++/33616 - * decl2.c (build_offset_ref_call_from_tree): Call - build_non_dependent_expr on object prior to building ADDR_EXPR from it - if FN is DOTSTAR_EXPR. - -2007-10-30 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/31993 - PR c++/32252 - * pt.c (find_parameter_packs_r): Fix typo in comment. - (convert_template_argument): Look at the pattern of a pack - expansion to determine what kind of entity we're converting. - (coerce_template_parameter_pack): When we have coerced a non-type - template parameter pack, substitute into the type of that pack. - (tsubst_pack_expansion): When our substitution of a parameter pack - is a "trivial" substitution of itself, just substitute into the - pack expansion rather than actually expanding. - -2007-10-29 Jakub Jelinek <jakub@redhat.com> - - PR c++/33841 - * class.c (check_bitfield_decl): Don't set field's type to error_mark_node - for non-integral type bitfields. Return true if bitfield is correct, false - error has been diagnosed. - (check_field_decls): If check_bitfield_decl returned false, call also - check_field_decl. - -2007-10-28 Paolo Carlini <pcarlini@suse.de> - Mark Mitchell <mark@codesourcery.com> - - PR c++/30659 - * pt.c (do_decl_instantiation): If the VAR_DECL is not a - class member error out and return. - -2007-10-27 Jakub Jelinek <jakub@redhat.com> - - * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope - to current_function_decl rather than 0. - - PR c++/33844 - * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print - ->* rather than .*. - * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR. - -2007-10-27 Jason Merrill <jason@redhat.com> - - PR c++/5247 - * call.c (convert_default_arg): Detect recursion. - -2007-10-27 Jakub Jelinek <jakub@redhat.com> - - PR c++/33842 - * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype. - * cxx-pretty-print.c (pp_cxx_primary_expression): Handle - OFFSETOF_EXPR. - (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New - functions. - * error.c (dump_expr): Handle OFFSETOF_EXPR. - -2007-10-26 Jason Merrill <jason@redhat.com> - - PR c++/24791 - * pt.c (get_template_info): New fn. - (template_class_depth): Use it. - (push_template_decl_real): Check that the template args of the - definition match the args of the previous declaration. - -2007-10-26 Paolo Carlini <pcarlini@suse.de> - - PR c++/31988 - * decl2.c (coerce_new_type): Do not allow a default argument for - the first parameter. - -2007-10-26 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33839 - * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we - don't see the leading '('. Only lookup names if we get an - IDENTIFIER_NODE. - -2007-10-26 Jakub Jelinek <jakub@redhat.com> - - PR c++/33744 - * parser.c (cp_parser_parenthesized_expression_list): Set - greater_than_is_operator_p to true in between the parens. - -2007-10-26 Paolo Carlini <pcarlini@suse.de> - - PR c++/31747 - * decl.c (grokdeclarator): In case of conflicting specifiers - just return error_mark_node. - -2007-10-26 Ollie Wild <aaw@google.com> - - * expr.c (cxx_expand_expr): Removed. - * cp-tree.h (exx_expand_expr): Removed. - * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr - with c_expand_expr. - -2007-10-25 Paolo Carlini <pcarlini@suse.de> - - PR c++/33843 - * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR. - -2007-10-23 Jason Merrill <jason@redhat.com> - - PR c++/25950 (DR 391) - * call.c (struct conversion): Remove check_copy_constructor_p. - (reference_binding): Always bind a reference directly to a - compatible class rvalue. Pass down LOOKUP_NO_TEMP_BIND during - temporary creation. - (check_constructor_callable): Remove. - (convert_like_real): Don't call it. - (initialize_reference): Don't call check_constructor_callable. - (standard_conversion): Check LOOKUP_NO_CONVERSION instead of - LOOKUP_CONSTRUCTOR_CALLABLE. Don't require a temporary for base - conversions if LOOKUP_NO_TEMP_BIND. - (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND. - (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for - second conversion. - * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove. - -2007-10-22 Jakub Jelinek <jakub@redhat.com> - - PR c++/33372 - * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p - before checking if its type is integral. - -2007-10-22 Jason Merrill <jason@redhat.com> - - PR c++/33620 - * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES. - * pt.c (apply_late_template_attributes): Splice out dependent - attributes from DECL_ATTRIBUTES. - - * decl.c (cxx_maybe_build_cleanup): Use build_address. - -2007-10-17 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * typeck.c (build_binary_op) : Use appropriate warning option - instead of unnamed warning. - -2007-10-16 Paolo Carlini <pcarlini@suse.de> - - PR c++/31446 - * pt.c (current_template_args): Do not change TREE_LIST elements - with a TREE_VALUE of error_mark_node. - -2007-10-16 Mark Mitchell <mark@codesourcery.com> - - * typeck.c (cp_apply_type_quals_to_decl): Expand documentation. - * decl.c (start_decl): Tidy. - (start_decl_1): Call cp_apply_type_quals_to_decl after completing - the type. - (grokdeclarator): Clarify comment. - -2007-10-14 Andrew Pinski <pinskia@gmail.com> - - PR c++/30303 - * decl.c (grokfndecl): Return NULL after the "definition of - implicitly-declared" error happened. - -2007-10-12 Simon Martin <simartin@users.sourceforge.net> - - PR c++/26698 - * call.c (build_user_type_conversion_1): Do not consider conversion - functions to convert a (possibly cv-qualified) object to the (possibly - cv-qualified) same object type (or a reference to it), to a (possibly - cv-qualified) base class of that type (or a reference to it). - -2007-10-12 Paolo Carlini <pcarlini@suse.de> - - * pt.c (tsubst): Use template_parm_level_and_index. - -2007-10-12 Jakub Jelinek <jakub@redhat.com> - - PR c++/32121 - * parser.c (cp_parser_compound_statement): Handle label-declarations - at the beginning of the compound statement. - (cp_parser_block_declaration): Issue diagnostics about __label__ - not at the beginning of a block. - -2007-10-11 Paolo Carlini <pcarlini@suse.de> - - PR c++/33461 - * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node - to convert_template_argument. - (coerce_template_parms): Return error_mark_node after fixed-length - error. - (tsubst_decl): Check for error_mark_node the return value of the - first tsubst in 'case VAR_DECL'. - -2007-10-08 Ollie Wild <aaw@google.com> - - * typeck2.c (digest_init): Call cplus_expand_constant after - convert_for_initialization. - * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. - * expr.c (cplus_expand_constant): Updated function description. - -2007-10-04 Jason Merrill <jason@redhat.com> - - PR c++/20416 - * call.c (initialize_reference): Handle local static reference - temps properly. - -2007-10-03 Jason Merrill <jason@redhat.com> - - PR c++/32470 - * name-lookup.c (push_namespace_with_attrs): Fold back into... - (push_namespace): Here. - (handle_namespace_attrs): New fn for the attr code. - (leave_scope): Don't pop_visibility. - * name-lookup.h (struct cp_binding_level): Remove has_visibility. - * parser.c (cp_parser_namespace_definition): Call - handle_namespace_attrs and pop_visibility as appropriate. - - PR c++/11756 - * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry. - -2007-10-03 Alexandre Oliva <aoliva@redhat.com> - - * decl.c (duplicate_decls): Preserve linkage flags for mere - redeclarations of gnu_inline definitions. - -2007-10-03 Jason Merrill <jason@redhat.com> - - PR c++/15764 - * decl.c (wrap_cleanups_r): New fn. - (wrap_temporary_cleanups): New fn. - (initialize_local_var): Call it. - -2007-09-29 Jason Merrill <jason@redhat.com> - - PR c++/33094 - * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member - constant to not have DECL_EXTERNAL if it's file-local. - -2007-09-28 Ollie Wild <aaw@google.com> - - Revert - 2007-09-27 Ollie Wild <aaw@google.com> - - * typeck2.c (digest_init): Call cplus_expand_constant after - convert_for_initialization. - * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. - * expr.c (cplus_expand_constant): Updated function description. - -2007-09-28 Jason Merrill <jason@redhat.com> - - PR c++/10179 - * class.c (layout_empty_base): Take rli parameter, update - rli->record_align if empty base has user-specified alignment. - (build_base_field): Pass rli to it. - -2007-09-28 Paolo Carlini <pcarlini@suse.de> - - PR c++/33213 - * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION. - -2007-09-28 Paolo Carlini <pcarlini@suse.de> - - PR c++/33118 - * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT. - (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK. - (dump_parameters): Just call dump_type for argument packs too. - -2007-09-28 Jakub Jelinek <jakub@redhat.com> - - PR c++/31434 - * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION - qualification by creating qualified PACK_EXPANSION_PATTERN and - then calling make_pack_expansion on it. - -2007-09-27 Ollie Wild <aaw@google.com> - - * typeck2.c (digest_init): Call cplus_expand_constant after - convert_for_initialization. - * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. - * expr.c (cplus_expand_constant): Updated function description. - -2007-09-27 Jason Merrill <jason@redhat.com> - - PR c++/33571 - * decl2.c (is_late_template_attribute): Don't crash on unknown - attribute. - -2007-09-27 Paolo Carlini <pcarlini@suse.de> - - PR c++/33493 - * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR. - * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing - spaces in the formatting. - * cxx-pretty-print.h (pp_cxx_delete_expression): Declare. - -2007-09-27 Jakub Jelinek <jakub@redhat.com> - - * error.c (cxx_print_error_function): Add third argument, pass - it over to lhd_print_error_function. - (cp_print_error_function): If diagnostic->abstract_origin, print - virtual backtrace. - * cp-tree.h (struct diagnostic_info): New forward decl. - (cxx_print_error_function): Add third argument. - -2007-09-25 Simon Martin <simartin@users.sourceforge.net> - - PR c++/33207 - * name-lookup.c (pushtag): Do not create an implicit typedef before - the associated type declaration is known to be valid. - -2007-09-25 Jakub Jelinek <jakub@redhat.com> - - * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids - rather than pointers. - -2007-09-24 Danny Smith <dannysmith@user.sourceforge.net> - - PR c++/14688 - * search.c (check_final_overrider): Fail if - targetm.comp_type_attributes returns 0. - -2007-09-24 Jason Merrill <jason@redhat.com> - - PR c++/33239 - * pt.c (resolve_typename_type): Don't look things up in the original - template if it would mean losing template arguments. - -2007-09-24 Jakub Jelinek <jakub@redhat.com> - - PR c++/33506 - * cp-tree.h (cxx_type_hash_eq): New prototype. - * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine. - * tree.c (cxx_type_hash_eq): New function. - -2007-09-24 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33185 - * tree.c (cp_build_qualified_type_real): Build a canonical - ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type. - -2007-09-24 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/33112 - PR c++/33185 - * tree.c (cplus_array_compare): Compare pointers, not types. - (build_cplus_array_type_1): Store new array type into the hash - table before building the canonical type; build the canonical type - correctly. - (cp_build_qualified_type_real): Put all of the array types with - cv-qualified element types into the C++ array hash table, built as - variants of the unqualified versions. - -2007-09-23 Jason Merrill <jason@redhat.com> - - PR c++/16370 - * decl.c (grokdeclarator): Look through implicit TYPE_DECLs - for deprecation warnings. - -2007-09-22 Jason Merrill <jason@redhat.com> - - PR c++/15269 - * call.c (build_over_call): Warn about deprecated virtuals. - - PR c++/19407 - * cp-tree.h (ATTR_IS_DEPENDENT): New macro. - (MAYBE_TAGGED_TYPE_P): Remove. - * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT - instead of calling is_late_template_attribute again. - (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag. - (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL. - Don't crash on typedefs from non-template classes. - * decl2.c (grokfield): Don't sorry about attrs on template parms. - (is_late_template_attribute): All attributes applied to template - parms or typename types are dependent. Static. - (splice_template_attributes): Pass decl through. - (save_template_attributes): Likewise. - -2007-09-20 Jakub Jelinek <jakub@redhat.com> - - PR c++/33496 - * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node - returned from tsubst_pack_expansion. - (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise. - (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise. - -2007-09-20 Paolo Carlini <pcarlini@suse.de> - - PR c++/33460 - * semantics.c (finish_id_expression): Use consistently - context_for_name_lookup. - * decl.c (fixup_anonymous_aggr): Fix error message for - anonymous struct (vs union). - -2007-09-19 Jason Merrill <jason@redhat.com> - - PR c++/7586 - * pt.c (tsubst): Handle typedefs by looking for the specialization. - (retrieve_specialization): Only tagged types use - DECL_TEMPLATE_INSTANTIATIONS. - (instantiate_class_template): Push nested classes too. - (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for - tagged types. - * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro. - * init.c (is_aggr_type): Remove redundant tests. - * class.c (push_nested_class): Use CLASS_TYPE_P. - -2007-09-20 Paolo Carlini <pcarlini@suse.de> - - PR c++/33459 - * init.c (build_zero_init): If, recursively, build_zero_init - returns a NULL_TREE, do not append it to the VEC of constructors. - -2007-09-18 Jason Merrill <jason@redhat.com> - - PR c++/17743 - * pt.c (apply_late_template_attributes): Set processing_template_decl. - (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass - ATTR_FLAG_TYPE_IN_PLACE. - (tsubst): Do unqualified lookup to find typedefs from current class. - [ARRAY_TYPE]: Propagate alignment info. - * decl2.c (is_late_template_attribute): Only defer handling of - attribute aligned if the expression is dependent. - (save_template_attributes): If we're deferring any attributes, - make this a naming typedef. - -2007-09-18 Paolo Carlini <pcarlini@suse.de> - - PR c++/33462 (again) - * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print - va_arg instead of __builtin_va_arg. - -2007-09-18 Paolo Carlini <pcarlini@suse.de> - - PR c++/33462 - * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add. - (pp_cxx_primary_expression): Use it. - * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare. - * error.c (dump_expr): Use it. - -2007-09-18 Paolo Carlini <pcarlini@suse.de> - - PR c++/33463 - * cxx-pretty-print.c (pp_cxx_postfix_expression): Split - out case TYPEID_EXPR to... - (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren - and pp_cxx_right_paren. - * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare. - * error.c (dump_expr): Use it. - -2007-09-18 Paolo Carlini <pcarlini@suse.de> - - PR c++/33464 - * cxx-pretty-print.c (pp_cxx_trait_expression): Add. - (pp_cxx_primary_expression): Use it. - * cxx-pretty-print.h (pp_cxx_trait_expression): Declare. - * error.c (dump_expr): Use it. - -2007-09-16 Paolo Carlini <pcarlini@suse.de> - - PR c++/33124 - * init.c (build_new): Remove warning for zero-element - allocations. - -2007-09-16 Nathan Sidwell <nathan@codesourcery.com> - - PR c++/32756 - * call.c (maybe_handle_implicit_object): Set this_p, clear - rvaluedness_matches_p. - (compare_ics): Do not compare rvaluedness matching when one of the - operands is an implicit object. - -2007-09-14 Jason Merrill <jason@redhat.com> - - PR c++/17743, c++/19163 - * decl2.c (is_late_template_attribute): New fn. - (splice_template_attributes, save_template_attributes): New fns. - (cplus_decl_attributes): Call save_template_attributes. - * pt.c (apply_late_template_attributes): New fn. - (instantiate_class_template, tsubst_decl): Use it. - * cp-tree.h: Declare is_late_template_attribute. - -2007-09-13 Tom Tromey <tromey@redhat.com> - - * parser.c (cp_lexer_new_main): Don't use - c_lex_return_raw_strings. - (cp_lexer_get_preprocessor_token): Update. Add special case when - lexer is NULL. - -2007-09-11 Jan Hubicka <jh@suse.cz> - - * method.c (use_thunk): Use tree_rest_of_compilation - * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill. - (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define. - * cp-tree.h (expand_body): Kill. - (emit_associated_thunks): Declare. - * semantics.c (emit_associated_thunks): Export. - (expand_body): Kill. - -2007-09-09 David Daney <ddaney@avtrex.com> - - PR c++/33324 - * init.c (build_new_1): Use POINTER_PLUS_EXPR instead of MINUS_EXPR - to calculate cookie_ptr. - -2007-09-08 Jason Merrill <jason@redhat.com> - - PR c++/33342 - * pt.c (most_specialized_class): Set processing_template_decl - while tsubsting partial spec args. - -2007-09-06 Jason Merrill <jason@redhat.com> - - * decl2.c (get_guard): Copy visibility from the guarded variable. - -2007-09-06 Jan Hubicka <jh@suse.cz> - - * semantics.c (expand_body): Do not mark arguments of clones used. - -2007-09-06 Paolo Carlini <pcarlini@suse.de> - - PR c++/32674 - * decl.c (cp_finish_decl): When processing_template_decl, - deal correctly with init as TREE_LIST. - -2007-09-06 Tom Tromey <tromey@redhat.com> - - * decl.c (finish_function): Put return's location on line zero of - file. - -2007-09-05 Jason Merrill <jason@redhat.com> - - PR c++/15745 - * except.c (prepare_eh_type): Use type_decays_to. - - PR c++/15097 - * init.c (build_delete): Use build_headof to get the address of the - complete object if we aren't using the deleting destructor. - * rtti.c (build_headof): No longer static. - * cp-tree.h: Declare it. - -2007-09-06 Jakub Jelinek <jakub@redhat.com> - - * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX - decl if a prototype for XX is provided with throw(). - - PR c++/33289 - * decl.c (builtin_function_1): Set DECL_ANTICIPATED also - on __*_chk non-__builtin_* decls. - -2007-09-05 Paolo Carlini <pcarlini@suse.de> - - PR c++/30302 - * semantics.c (finish_id_expression): Use context_for_name_lookup - insted of DECL_CONTEXT, to see through anonymous structs and unions. - * class.c (finish_struct_anon): Deal correctly with anonymous - structs (vs unions, as GNU extension) in error messages. - -2007-09-05 Jan Hubicka <jh@suse.cz> - - * sematics.c (expand_body): Remove unnecesary import_export_decl - call, DECL_EXTERNAL checks and current_function_decl saving. - -2007-09-05 Paolo Carlini <pcarlini@suse.de> - - PR c++/29731 (again) - * parser.c (cp_parser_primary_expression): Return error_mark_node - when a statement-expression is found in a template-argument list. - -2007-09-04 Jason Merrill <jason@redhat.com> - - * except.c (initialize_handler_parm): Use - fold_build_cleanup_point_expr. - - PR c++/31419 - * call.c (reference_binding): Don't look for user-defined conversions - to the same type. - - PR c++/31411 - * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside - the MUST_NOT_THROW_EXPR. - -2007-09-04 Richard Sandiford <richard@codesourcery.com> - - * decl.c (cp_finish_decl): Call determine_visibility before - make_rtl_for_nonlocal_decl. - -2007-09-04 Jason Merrill <jason@redhat.com> - - PR c++/14032 - * pt.c (most_specialized_class): Substitute outer template - arguments into the arguments of a member template partial - specialization. - (strip_innermost_template_args): New fn. - -2007-09-03 Daniel Jacobowitz <dan@codesourcery.com> - - * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB. - -2007-09-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - * call.c (name_as_c_string): Supply a TYPE for CONST_CAST. - * decl.c (cp_make_fname_decl): Likewise, - * parser.c (cp_parser_string_literal): Likewise, - * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE. - * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p): - Likewise, - -2007-09-02 Paolo Carlini <pcarlini@suse.de> - - PR c++/33208 - * typeck.c (build_unary_op): Fix error message for - Boolean expression as operand to operator--. - -2007-09-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - * tree.c (pod_type_p, zero_init_p): Use strip_array_types. - * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p): - Likewise. - -2007-08-31 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/32597 - * init.c (build_default_init): Make extern. - * cp-tree.h (build_default_init): Declare here. - * pt.c (tsubst_expr): When the instantiation of the initializer of - a variable results in an empty list, default-initialize the - variable. - (tsubst_copy_and_build): When the instantiation of the initializer - in a new expression results in an empty initializer list, - default-initialize it. - -2007-08-31 Douglas Gregor <doug.gregor@gmail.com> - - * mangle.c (write_type): Change mangling of rvalue reference from - `RR' to `O'. - -2007-08-31 Jakub Jelinek <jakub@redhat.com> - - * decl.c (duplicate_decls): Remove duplicated line. - -2007-08-31 Paolo Carlini <pcarlini@suse.de> - - PR c++/33210 - * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with - BOUND_TEMPLATE_TEMPLATE_PARM. - -2007-08-31 Paolo Carlini <pcarlini@suse.de> - - PR c++/32113 - * search.c (lookup_member): Check the name argument for - error_mark_node. - -2007-08-31 Paolo Carlini <pcarlini@suse.de> - - PR c++/33212 - * parser.c (cp_parser_trait_expr): Check rerurn value of - cp_parser_type_id. - -2007-08-30 Ollie Wild <aaw@google.com> - - * cvt.c (cp_convert_to_pointer): Remove force parameter. Call - convert_ptrmem for pointer to member conversions. - (convert_to_pointer_force): Update cp_convert_to_pointer call. - (ocp_convert): Update cp_convert_to_pointer call. - * typeck.c (convert_ptrmem): Add conditional for null pointers to - members. - (build_static_cast_1): Check can_convert for conversions in either - direction. - (get_delta_difference_1): New function. - (get_delta_difference): Refactor to call get_delta_difference_1. - -2007-08-30 Jakub Jelinek <jakub@redhat.com> - - * decl.c (start_preparsed_function): Set - DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions. - -2007-08-28 Paolo Carlini <pcarlini@suse.de> - - PR c++/33209 - * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and - BOUND_TEMPLATE_TEMPLATE_PARM. - -2007-08-28 Jakub Jelinek <jakub@redhat.com> - - PR c++/32596 - PR c++/32400 - * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN - and DECL_NOT_REALLY_EXTERN if tmpl_func is not public. - -2007-08-27 Jason Merrill <jason@redhat.com> - - PR c++/29000 - * pt.c (build_non_dependent_expr, type_dependent_expression_p): - Look inside STMT_EXPR. - * semantics.c (stmt_expr_value_expr): New fn. - * cp-tree.h: Declare it. - - PR c++/28558 - * decl.c (groktypename): Ignore attributes applied to class type. - -2007-08-28 Richard Guenther <rguenther@suse.de> - - * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS. - -2007-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net> - - * error.c (dump_expr): Handle COMPLEX_CST. - * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise. - (pp_cxx_expression): Likewise. - -2007-08-27 Alexandre Oliva <aoliva@redhat.com> - - * decl.c (GNU_INLINE_P): New. - (duplicate_decls): Handle gnu_inline. Merge attributes and - some flags in overriding definitions. - (redeclaration_error_message): Handle gnu_inline. - (start_preparsed_function): Likewise. - -2007-08-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - * call.c (sufficient_parms_p): Constify. - * class.c (same_signature_p): Likewise. - * cp-gimplify.c (is_invisiref_parm, - cxx_omp_privatize_by_reference): Likewise. - * cp-objcp-common.c (has_c_linkage): Likewise. - * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK, - sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p, - grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for, - num_artificial_parms_for, comp_template_parms, - template_parameter_pack_p, any_dependent_template_arguments_p, - any_type_dependent_arguments_p, any_value_dependent_elements_p, - repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p, - zero_init_p, member_p, cp_lvalue_kind, - builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p, - varargs_function_p, is_dummy_object, special_function_kind, - string_conv_p, type_unknown_p, comp_except_specs, compparms, - comp_cv_qualification, is_bitfield_expr_with_lowered_type, - unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly, - cp_has_mutable_p, at_least_as_qualified_p, - invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise. - * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise. - * except.c (nothrow_libfn_p): Likewise. - * method.c (skip_artificial_parms_for, num_artificial_parms_for): - Likewise. - * pt.c (comp_template_parms, template_parameter_pack_p, - any_type_dependent_arguments_p, any_value_dependent_elements_p, - any_dependent_template_arguments_p): Likewise. - * repo.c (repo_export_class_p): Likewise. - * semantics.c (anon_aggr_type_p): Likewise. - * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p, - builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p, - varargs_function_p, member_p, is_dummy_object, pod_type_p, - zero_init_p, special_function_p): Likewise. - * typeck.c (comp_array_types, type_unknown_p, comp_except_specs, - comp_array_types, at_least_as_qualified_p, comp_cv_qualification, - compparms, invalid_nonstatic_memfn_p, - is_bitfield_expr_with_lowered_type, unlowered_expr_type, - string_conv_p, ptr_reasonably_similar, cp_type_readonly, - cp_has_mutable_p, lvalue_or_else): Likewise. - -2007-08-25 Paolo Bonzini <bonzini@gnu.org> - - * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case. - * cp-objcp-common.c (cp_tree_size): Ditto. - * tree.c (cp_walk_subtrees): Ditto - * cp-tree.def (TINST_LEVEL): Go away. - * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level, - move together with other non-tree structs. - (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL. - (union lang_tree_node): Eliminate tinst_level field. - (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate. - (current_instantiation, outermost_tinst_level): Return - a "struct tinst_level *". - - * error.c (print_instantiation_partial_context): Change second - parameter to a "struct tinst_level *". Replace accessor macros - with field access. - (print_instantiation_full_context): Likewise. - * lex.c (in_main_input_context): Likewise. - - * pt.c (struct pending_templates): New. - (pending_templates, last_pending_template): Use it as a type. - (current_tinst_level): Change typo to "struct tinst_level *" - (reopen_tinst_level): Accept "struct tinst_level *", return decl. - (add_pending_template): Construct a "struct pending_template". - Replace TINST_LEVEL accessor macros with field access. - (push_tinst_level): Likewise, using GGC_NEW instead of make_node. - (pop_tinst_level): Likewise. - (instantiate_pending_templates): Likewise. Factor common code used - when an instantiation has been done. - (outermost_tinst_level): Replace tree_last with loop. - (current_instantiation): Return a "struct tinst_level *". - -2007-08-24 Ollie Wild <aaw@google.com> - - * name-lookup.c (add_decl_to_level): Remove addition to vtables chain. - * name-lookup.h (cp_binding_level): Remove vtables member. - -2007-08-24 Richard Guenther <rguenther@suse.de> - - * tree.c (cp_cannot_inline_tree_fn): Remove. - * cp-tree.h (cp_cannot_inline_tree_fn): Likewise. - * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): - Remove define. - -2007-08-24 Jakub Jelinek <jakub@redhat.com> - - PR c++/32567 - * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return - error_mark_node right away if build_expr_type_conversion - returned it. - - PR c++/32898 - * name-lookup.c (set_decl_namespace): lookup_qualified_name failure - is error_mark_node rather than NULL_TREE. - * pt.c (check_explicit_specialization): Likewise. - - PR c++/31941 - * error.c (resolve_virtual_fun_from_obj_type_ref): Handle - TARGET_VTABLE_USES_DESCRIPTORS targets properly. - -2007-08-22 Jason Merrill <jason@redhat.com> - - PR c++/29365 - * pt.c (outermost_tinst_level): New function. - * lex.c (in_main_input_context): New function. - * cp-tree.h: Declare it. - * decl2.c (constrain_class_visibility): Use it to avoid warning - about uses of the anonymous namespace in the main input file. - -2007-08-21 Jakub Jelinek <jakub@redhat.com> - - * init.c (build_new_1): Use get_target_expr instead of save_expr. - -2007-08-20 Pawel Sikora <pluto@pld-linux.org> - - PR c++/7302 - * class.c (finish_struct_1): Warn when a class has virtual - functions and accessible non-virtual destructor. - -2007-08-20 Richard Guenther <rguenther@suse.de> - - PR c++/22369 - PR c++/22451 - * call.c (build_new_method_call): Convert initializer to - the basetype. - * init.c (build_aggr_init): Do not fiddle with types. - (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR. - * except.c (build_throw): Do not drop qualifiers for the - pointer type. - * typeck.c (get_member_function_from_ptrfunc): Do not - fiddle with types, instead convert. - (build_ptrmemfunc1): Convert to the target type for - initialization. - (gfc_trans_allocate): Convert result to target type. - * cp-objcp-common.c (cxx_get_alias_set): Pointers to - pointer-to-member structures shall have alias set zero as well. - -2007-08-20 Richard Guenther <rguenther@suse.de> - - * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): - Remove. - * cp-tree.h (cp_auto_var_in_fn_p): Remove. - (nonstatic_local_decl_p): Likewise. - * tree.c (cp_auto_var_in_fn_p): Remove. - * decl.c (nonstatic_local_decl_p): Remove. - -2007-08-20 Richard Guenther <rguenther@suse.de> - - * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): - Remove define. - * tree.h (cp_walk_tree): New define to walk_tree_1 with - cp_walk_subtrees lh parameter. - (cp_walk_tree_without_duplicates): New define to - walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter. - * tree.c (count_trees): Call - cp_walk_tree_without_duplicates. - (verify_stmt_tree): Call cp_walk_tree. - (break_out_target_exprs): Likewise. - (WALK_SUBTREE): Likewise. - * cp-gimplify.c (cp_genericize): Likewise. - * cp-pt.c (find_parameter_packs_r): Likewise. - (uses_parameter_packs): Likewise. - (make_pack_expansion): Likewise. - (check_for_bare_parameter_packs): Likewise. - (for_each_template_parm): Likewise. - * decl.c (check_default_argument): Call - cp_walk_tree_without_duplicates. - * except.c (build_throw): Likewise. - * decl2.c (type_visibility): Likewise. - * semantics.c (expand_or_defer_fn): Likewise. - (finalize_nrv): Call cp_walk_tree. - -2007-08-20 Jakub Jelinek <jakub@redhat.com> - - PR c++/33025 - * init.c (build_new_1): Rename placement_var variable to placement_expr. - Initialize it with save_expr rather than get_temp_regvar. - -2007-08-17 Andrew Pinski <andrew_pinski@playstation.sony.com> - - PR c++/28989 - * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never - lvalues. - -2007-08-17 Ollie Wild <aaw@google.com> - - PR c++/31749 - * name-lookup.c (do_nonmember_using_decl): Shift implicit type - declarations into appropriate slots for comparison. Fix type - comparison. - -2007-08-17 Paolo Carlini <pcarlini@suse.de> - - PR c++/32112 - * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE. - * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise. - -2007-08-17 Paolo Carlini <pcarlini@suse.de> - - PR c++/32870 - * parser.c (cp_parser_class_head): Improve error message. - -2007-08-16 Seongbae Park <seongbae.park@gmail.com> - - * pt.c (instantiate_decl): Set input_location - for the function end. - -2007-08-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size): - Constify. - * cp-tree.h (local_variable_p, nonstatic_local_decl_p, - class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals, - cxx_incomplete_type_diagnostic, cxx_incomplete_type_error, - cxx_warn_unused_global_decl, cp_expr_size): Likewise. - * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise. - * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise. - * typeck.c (cp_type_quals): Likewise. - * typeck2.c (cxx_incomplete_type_diagnostic, - cxx_incomplete_type_error): Likewise. - -2007-08-16 Paolo Carlini <pcarlini@suse.de> - - PR c++/31132 - * pt.c (tsubst_friend_function): When check_classfn - returns error_mark_node likewise return it. - -2007-08-15 Jakub Jelinek <jakub@redhat.com> - - PR c++/32992 - * typeck.c (check_return_expr): Don't NRV optimize vars in - anonymous unions. - * decl.c (finish_function): Comment fix. - -2007-08-15 Paolo Carlini <pcarlini@suse.de> - - PR c++/33035 - * pt.c (push_template_decl_real): Depending on TYPE_P - use either TYPE_CONTEXT or DECL_CONTEXT. - -2007-08-14 Mark Mitchell <mark@codesourcery.com> - - * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if - constructors and destructors return this. - -2007-08-14 Paolo Carlini <pcarlini@suse.de> - - PR c++/27211 - * decl2.c (check_classfn): Return error_mark_node in case of error; - in that case, do not call add_method. - * decl.c (start_decl): Deal with check_classfn returning - error_mark_node. - (grokfndecl): Likewise. - * pt.c (tsubst_friend_function): Likewise. - -2007-08-14 Andrew Pinski <pinskia@gmail.com> - - PR c++/30428 - * typeck.c (build_binary_op): Disallow vector float types with - BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR. - -2007-08-11 Ian Lance Taylor <iant@google.com> - - * cp-objcp-common.c (cxx_get_alias_set): Change return type to - alias_set_type. - * cp-tree.h (cxx_get_alias_set): Update declaration. - -2007-08-10 Ollie Wild <aaw@google.com> - - * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous - type lookups. - (ambiguous_decl): Construct tree of ambiguous types. Remove extaneous - function parameter. - (unqualified_namespace_lookup): Fix ambiguous_decl call. - (lookup_using_namespace): Fix ambiguous_decl call. - (qualified_lookup_using_namespace): Fix ambiguous_decl call. - -2007-08-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - * call.c (name_as_c_string): Use CONST_CAST. - * decl.c (build_decl): Likewise. - * parser.c (cp_parser_string_literal): Likewise. - -2007-08-10 Paolo Carlini <pcarlini@suse.de> - - PR c++/17763 - * error.c (dump_expr): Consistently use the *_cxx_* - variants of the pretty-print functions. - -2007-08-10 Paolo Carlini <pcarlini@suse.de> - - PR c++/22256 - * decl.c (check_special_function_return_type): Just error - on return type specified for conversion operator. - -2007-08-09 Daniel Berlin <dberlin@dberlin.org> - - * typeck2.c (readonly_error): Handle general expressions. - * error.c (dump_expr): Handle POINTER_PLUS_EXPR - -2007-08-06 Dan Hipschman <dsh@google.com> - - * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to - access function name. - -2007-08-04 Alfred Minarik <a.minarik@aon.at> - - PR pch/13676 - * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header. - * g++spec.c (lang_specific_driver): Check them. - -2007-08-06 Paolo Carlini <pcarlini@suse.de> - - PR c++/19532 - * pt.c (inline_needs_template_parms): Fix comment; change return type - to bool. - -2007-08-05 Volker Reichelt <v.reichelt@netcologne.de> - - Revert: - 2007-03-26 Dirk Mueller <dmueller@suse.de> - - * parser.c (cp_parser_member_declaration): Pedwarn - about stray semicolons after member declarations. - -2007-08-02 Lee Millward <lee.millward@gmail.com> - - PR c++/30849 - PR c++/30850 - PR c++/30851 - * parser.c (cp_parser_asm_definition): Detect and discard asm - statements with invalid inputs or outputs. - (cp_parser_asm_operand_list): Return error mark node if any - of the operands are invalid. Adjust documentation. - -2007-08-02 Nick Clifton <nickc@redhat.com> - - * typeck.c: Change copyright header to refer to version 3 of the - GNU General Public License and to point readers at the COPYING3 - file and the FSF's license web page. - * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c, - config-lang.in, cp-tree.def, call.c, decl.h, ptree.c, - Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c, - cp-objcp-common.h, except.c, error.c, operators.def, cvt.c, - tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c, - cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c, - cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c, - name-lookup.h, parser.c: Likewise. - -2007-08-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - PR middle-end/32668 - * call.c (magic_varargs_p): Honor the "type generic" attribute. - -2007-07-30 Paolo Carlini <pcarlini@suse.de> - - PR c++/32108 - * semantics.c (finish_label_stmt): Reject the __label__ - extension outside function scopes. - -2007-07-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - * parser.c (eof_token): Un-constify. - (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc, - cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious - casts. - -2007-07-28 Kazu Hirata <kazu@codesourcery.com> - - * pt.c, tree.c, typeck2.c: Fix comment typos. - -2007-07-28 Simon Martin <simartin@users.sourceforge.net> - Mark Mitchell <mark@codesourcery.com> - - PR c++/30917 - * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be - hidden due to friend declarations in local classes. - -2007-07-27 Douglas Gregor <doug.gregor@gmail.com> - - * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes. - * cp-tree.def (DECLTYPE_TYPE): New. - * error.c (dump_type): Dump DECLTYPE_TYPE nodes. - (dump_type_prefix): Ditto. - (dump_type_suffix): Ditto. - * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes. - * mangle.c (write_type): Handle DECLTYPE_TYPE. - * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate - types. - (DECLTYPE_TYPE_EXPR): New. - (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New. - (finish_declared_type): Declare. - * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print - DECLTYPE_TYPE nodes. - (pp_cxx_type_id): Ditto. - * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children. - (tsubst): Substitute into a DECLTYPE_TYPE node. - (tsubst_copy): Ditto. - (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE - nodes. - (dependent_type_p_r): DECLTYPE_TYPE types are always dependent. - * semantics.c (finish_typeof): TYPEOF_TYPE types need to use - structural equality (because we can't hash the expressions). - (finish_declared_type): New. - * lex.c (reswords): Add "decltype" keyword. - * parser.c cp_lexer_next_token_is_decl_specifier_keyword - (cp_parser_postfix_expression): Add member_access_only_p to - restrict postfix expression to member access expressions. - (cp_parser_unary_expression): Update call to - cp_parser_postfix_expression to reflect new parameter. - (cp_parser_declared_type): New. - (cp_parser_simple_type_specifier): Parse decltype types. - -2007-07-27 Mark Mitchell <mark@codesourcery.com> - - PR c++/32346 - * call.c (convert_for_arg_passing): Only widen bitfields to their - declared types if necessary. - -2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand): - Constify. - -2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> - - * decl.c (typename_hash, typename_compare): Constify. - * mangle.c (hash_type, compare_type): Likewise. - * pt.c (eq_local_specializations, hash_local_specialization): - Likewise. - * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq, - list_hash): Likewise. - * typeck2.c (pat_compare): Likewise. - -2007-07-24 Nathan Sidwell <nathan@codesourcery.com> - - * method.c (implicitly_declare_fn): Increase alignment if member - function pointer format requires it. - -2007-07-24 Paolo Carlini <pcarlini@suse.de> - - PR c++/29001 - * typeck.c (check_return_expr): Do not pass a null argument - to null_ptr_cst_p. - -2007-07-24 Paolo Carlini <pcarlini@suse.de> - - PR c++/32561 - * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P - only on VAR_DECL. - -2007-07-22 Nathan Sidwell <nathan@codesourcery.com> - - PR c++/32839 - * typeck.c (convert_arguments): Only use default args if we have - a function decl. - - PR c++/30818 - * typeck.c (structural_comptypes): No need to check - resolve_typename_type return value here. - * cp-tree.h (TYPENAME_IS_RESOLVING_P): New. - * pt.c (resolve_typename_type): Follow typename typedefs. Return - original type rather than error_mark_node in case of failure. - * parser.c (cp_parser_nested_name_specifier_opt): Adjust - resolve_typename_type result check. - (cp_parser_direct_declarator, cp_parser_head, - cp_parser_constructor_declarator_p): Likewise. - -2007-07-12 Kazu Hirata <kazu@codesourcery.com> - - * pt.c (template_parms_variadic_p): Remove. - * cp-tree.h: Remove the prototype for template_parms_variadic_p. - -2007-07-12 Jakub Jelinek <jakub@redhat.com> - - PR c++/30854 - * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last - argument to dump_aggr_init_expr_args instead of false. - -2007-07-11 Douglas Gregor <doug.gregor@gmail.com> - - * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the - canonical types; otherwise, fall back to structural type - comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an - internal compiler error if the canonical types are wrong. - -2007-07-11 Paolo Carlini <pcarlini@suse.de> - - PR c++/32560 - * parser.c (cp_parser_make_indirect_declarator): When the - the code argument is ERROR_MARK return cp_error_declarator. - -2007-07-09 Geoffrey Keating <geoffk@apple.com> - - PR 32617 - * decl.c (cxx_init_decl_processing): Don't set - force_align_functions_log. - (grokfndecl): Honour ptrmemfunc_vbit_in_pfn. - * typeck.c (cxx_alignof_expr): When alignof is used on a plain - FUNCTION_DECL, return its alignment. - -2007-07-09 Richard Guenther <rguenther@suse.de> - - * decl.c (start_preparsed_function): Do not promote return type. - -2007-07-08 Paolo Carlini <pcarlini@suse.de> - - PR c++/30535 - * pt.c (unify): Never pass error_mark_node to template_decl_level. - -2007-07-07 Mark Mitchell <mark@codesourcery.com> - - PR c++/32232 - * pt.c (resolve_overloaded_unification): Robustify. Return a - bool, not an int. - (type_unification_real): Adjust accordingly. - -2007-07-06 Richard Guenther <rguenther@suse.de> - - * init.c (build_new_1): Use the correct pointer type. - * typeck2.c (build_m_component_ref): Likewise. - -2007-07-05 Mark Mitchell <mark@codesourcery.com> - - PR c++/32245 - * init.c (build_zero_init): Always build an initializer for - non-static storage. - * typeck2.c (build_functional_cast): Use build_zero_init. - - PR c++/32251 - * init.c (build_new_1): Always pass the allocation function to - build_op_delete_call. - * call.c (build_op_delete_call): Handle operator delete with a - variable-argument list. Do not issue an error when no matching - deallocation function is available for a new operator. - - PR c++/31992 - * cp-tree.h (any_value_dependent_elements_p): Declare it. - * decl.c (value_dependent_init_p): New function. - (cp_finish_decl): Use it. - * pt.c (value_dependent_expression_p): Use - any_value_dependent_elements_p. - * parser.c (cp_parser_primary_expression): Add comment about - treating dependent qualified names as integral - constant-expressions. - -2007-07-04 Douglas Gregor <doug.gregor@gmail.com> - - * decl.c (build_ptrmemfunc_type): Always use structural equality - tests when comparing pointer-to-member-function types, because the - handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical - types. - -2007-07-03 Mark Mitchell <mark@codesourcery.com> - - * init.c (build_new): Tweak comment. - -2007-06-29 Dave Brolley <brolley@redhat.com> - - PR c++/31743 - * parser.c (cp_parser_new_type_id): Don't reduce a named array - type to its base type and number of elements here. - * init.c (build_new): Call complete_type_or_else to ensure that the - type is complete and to issue a diagnostic if it is not. - (build_new_1): Don't call complete_type_or_else here. - -2007-07-03 Richard Guenther <rguenther@suse.de> - - PR c++/32609 - * class.c (fixed_type_or_null): Re-lookup the hashtable slot - after recursing. - -2007-07-02 Simon Baldwin <simonb@google.com> - - * parser.c (cp_parser_elaborated_type_specifier): Added a warning - for inner-style nested forward declarations that don't declare - anything useful. - -2007-07-02 Jakub Jelinek <jakub@redhat.com> - - PR c++/31748 - * semantics.c (finish_omp_clauses): Use %qD instead of %qE for - DECL_P in not a variable and appears more than once error messages. - -2007-07-01 Ollie Wild <aaw@google.com> - - * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden. - (select_decl): Remove function. - (unqualified_namespace_lookup): Populate binding by calling - ambiguous_decl. Remove select_decl call. - (lookup_qualified_name): Remove select_decl call. - * decl.c (lookup_and_check_tag): Check for ambiguous references. - * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error - generation when name lookup is ambiguous. - -2007-06-29 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/31724 - * init.c (build_new_1): Use structural equality on the copy of the - array type. - -2007-06-28 Geoffrey Keating <geoffk@apple.com> - - * decl2.c (determine_visibility): Implement - flag_visibility_ms_compat effect on type info. - * decl.c (cxx_init_decl_processing): Implement - global effect of flag_visibility_ms_compat. - -2007-06-28 Geoffrey Keating <geoffk@apple.com> - - * decl2.c (start_objects): Mark constructor-running function - as artificial. - -2007-06-26 Simon Martin <simartin@users.sourceforge.net> - - PR c++/32111 - * decl.c (grokdeclarator): Reset friendp for member functions declared - friend of their own class. - -2007-06-23 Mark Mitchell <mark@codesourcery.com> - - * decl2.c (determine_visibility): Don't look for dllexport here. - (determine_visibility_from_class): Tidy. - -2007-06-18 Simon Baldwin <simonb@google.com> - - PR c++/31923 - * parser.c (cp_parser_single_declaration): Added check for storage - class other than sc_none in parsed declaration, and a flag to indicate - if the call is part of an explicit template specialization parse. - * (cp_parser_explicit_specialization): Specialization check flag added - to call to cp_parser_single_declaration(), set true. - * (cp_parser_template_declaration_after_export): Specialization check - flag added to call to cp_parser_single_declaration(), set false. - * pt.c (check_explicit_specialization): Added code to copy visiblity - and linkage from the templated function to the explicit specialization. - -2007-06-15 Andrew Pinski <andrew_pinski@playstation.sony.com> - - * typeck.c (build_binary_op): For templates build the - expression in pieces to avoid the assert in build2_stat. - (get_member_function_from_ptrfunc): - Change over to using POINTER_PLUS_EXPR and convert - the second operand to sizetype. - * typeck2.c (build_m_component_ref): Likewise. - * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR - instead of PLUS_EXPR for pointers. - (build_new_1): Likewise. - (build_vec_delete_1): Likewise. - (build_vec_delete): Likewise. - * class.c (build_base_path): Likewise. - (build_base_path): Likewise. - (convert_to_base_statically): Likewise. - (fixed_type_or_null): Handle POINTER_PLUS_EXPR. - (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR - instead of PLUS_EXPR. - (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR - instead of PLUS_EXPR for pointers. - * call.c (build_special_member_call): Likewise. - * rtti.c (build_headof): Likewise. - Use sizetype instead of ptrdiff_type_node. - (tinfo_base_init): Create a POINTER_PLUS_EXPR - instead of PLUS_EXPR for pointers. - * except.c (expand_start_catch_block): Do a - NEGATIVE and then a POINTER_PLUS_EXPR instead - of a MINUS_EXPR. - * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert - PLUS_EXPR on pointer types over to use - POINTER_PLUS_EXPR and remove the conversion - to the pointer types. - * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for - adding to a pointer type. Use size_int instead of - ssize_int. Convert the index to sizetype before - adding it to the pointer. - -2007-06-15 Mark Mitchell <mark@codesourcery.com> - - * cp-tree.h (DECL_VAR_MARKED_P): Remove. - (DECL_ANON_UNION_VAR_P): New macro. - * class.c (fixed_type_or_null): Tidy. Use a hash table, rather - than DECL_VAR_MARKED_P, to keep track of which variables we have - seen. - * decl.c (redeclaration_error_message): Complain about redeclaring - anonymous union members at namespace scope. - * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P. - -2007-06-14 Geoff Keating <geoffk@apple.com> - - * decl2.c (determine_visibility): Ensure that functions with - hidden types as parameters are hidden. - - PR 31093 - * decl2.c (determine_visibility): Remove duplicate code for - handling type info. - -2007-06-12 Ian Lance Taylor <iant@google.com> - - PR libstdc++/29286 - * init.c (avoid_placement_new_aliasing): New static function. - (build_new_1): Call it. - -2007-06-11 Rafael Ãvila de EspÃndola <espindola@google.com> - - * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove. - (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove. - -2007-06-08 Jakub Jelinek <jakub@redhat.com> - - PR c++/32177 - * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr - on init, the non-decl cond operand and increment value. - -2007-06-07 Simon Martin <simartin@users.sourceforge.net> - - PR c++/30759 - * decl.c (check_initializer): Report an error when a brace enclosed - initializer is used for a non-aggregate type in C++98. - (redeclaration_error_message): Rewrote flag_cpp0x in terms of - cxx_dialect. - (grokdeclarator): Likewise. - (move_fn_p): Likewise. - * typeck.c (check_return_expr): Likewise. - * call.c (reference_binding): Likewise. - * error.c (cp_cpp_error): Likewise. - * pt.c (check_default_tmpl_args): Likewise. - (tsubst): Likewise. - * lex.c (init_reswords): Likewise. - * parser.c (p_parser_primary_expression): Likewise. - (TOKEN_PRECEDENCE): Likewise. - (cp_parser_init_declarator): Likewise. - (cp_parser_ptr_operator): Likewise. - (cp_parser_parameter_declaration): Likewise. - (cp_parser_enclosed_template_argument_list): Likewise. - (cp_parser_skip_to_end_of_template_parameter_list): Likewise. - (cp_parser_next_token_ends_template_argument_p): Likewise. - -2007-06-04 Simon Baldwin <simonb@google.com> - - * decl.c (grokdeclarator): Readability change. Moved case labels - into direct switch statement scope. - -2007-06-04 Paolo Carlini <pcarlini@suse.de> - - * call.c (convert_like_real): Remove pointless code. - -2007-05-31 Mark Mitchell <mark@codesourcery.com> - - * decl.c (get_atexit_fn_ptr_type): New function. - (get_atexit_node): Use it. - (start_cleanup_fn): Likewise. - (register_dtor_fn): Use the object's destructor, instead of a - separate cleanup function, where possible. - * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator. - (atexit_fn_ptr_type_node): New macro. - * decl2.c (build_cleanup): Use build_address. - -2007-05-31 Daniel Berlin <dberlin@dberlin.org> - - * typeck.c (build_binary_op): Include types in error. - -2007-05-31 Jakub Jelinek <jakub@redhat.com> - - PR c++/31806 - * decl.c (cp_finish_decl): Also clear was_readonly if a static var - needs runtime initialization. - -2007-05-31 Paolo Carlini <pcarlini@suse.de> - - PR c++/32158 - * semantics.c (finish_trait_expr): Complete the types. - -2007-05-30 Russell Yanofsky <russ@yanofsky.org> - Douglas Gregor <doug.gregor@gmail.com> - Pedro Lamarao <pedro.lamarao@mndfck.org> - Howard Hinnant <howard.hinnant@gmail.com> - - PR c++/7412 - PR c++/29939 - * typeck.c (comptypes): Don't consider rvalue and lvalue - reference types to be equivalent. - (check_return_expr): Move from certain lvalues when returning - them. - * decl.c (grokdeclarator): Implement reference collapsing. - (copy_fn_p): Don't consider constructors taking rvalue references - to be copy constructors. - (move_fn_p): New. - * call.c (conversion): New "rvaluedness_matches_p" member. - (convert_class_to_reference): Require reference type as first - parameter instead of base type. - (reference_binding): Add logic to handle rvalue references. - (implicit_conversion): Update inaccurate comment. - (convert_like_real): Disable creation of temporaries that are - impossible to initialize for types with move constructors. - (build_over_call): Elide move constructors when possible. - (maybe_handle_implicit_object): Set "rvaluedness_matches_p". - (maybe_handle_ref_bind): Return conversion instead of type node. - (compare_ics): Add logic to use "rvaluedness_matches_p" values to - determine preferred conversion sequences. - * cp-tree.h (TYPE_REF_IS_RVALUE): New. - (LOOKUP_PREFER_RVALUE): New. - (DECL_MOVE_CONSTRUCTOR_P): New. - (struct cp_declarator): Add "reference" member for reference - types, with new "rvalue_ref" flag. - (cp_build_reference_type): Declare. - (move_fn_p): Declare. - * error.c (dump_type_prefix): Format rvalue reference types - correctly in error messages. - * except.c (build_throw): Move from certain lvalues when - throwing. - * mangle.c (write_type): Mangle rvalue references differently - than regular references. - * parser.c (make_reference_declarator): Add boolean parameter for - rvalue references. - (cp_parser_make_indirect_declarator): New. - (cp_parser_new_declarator_opt): Call - cp_parser_make_indirect_declarator. - (cp_parser_conversion_declarator_opt): Ditto. - (cp_parser_declarator): Ditto. - (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference - declarators. - * pt.c (tsubst): Implement reference collapsing. - (maybe_adjust_types_for_deduction): Implement special template - parameter deduction rule for rvalue references. - (type_unification_real): Update calls to - maybe_adjust_types_for_deduction. - (try_one_overload): Ditto. - (unify_pack_expansion): Ditto. - * tree.c (lvalue_p_1): Handle rvalue reference types. - (cp_build_reference_type): New. - -2007-05-30 Jakub Jelinek <jakub@redhat.com> - - PR c++/31809 - * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC - variables that need runtime initialization. - -2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com> - - PR c++/31339 - * typeck.c (build_unary_op <case PREINCREMENT_EXPR, - case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR, - case POSTDECREMENT_EXPR>): Return the error_mark_node - if either the real or imaginary parts would an - error_mark_node. - -2007-05-25 Simon Martin <simartin@users.sourceforge.net> - Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/31745 - * parser.c (cp_parser_skip_to_closing_brace): Return true if the next - token is a closing brace, false if there are no tokens left. - (cp_parser_namespace_alias_definition): Only consume the next token if - it is a closing brace. - - * parser.c (cp_parser_class_specifier): Likewise. - -2007-05-25 H.J. Lu <hongjiu.lu@intel.com> - - * semantics.c (finish_member_declaration): Fix a typo in the - last checkin. - -2007-05-25 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/31431 - PR c++/31432 - PR c++/31434 - PR c++/31435 - PR c++/31437 - PR c++/31438 - PR c++/31442 - PR c++/31443 - PR c++/31444 - PR c++/31445 - * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes. - * cp-tree.h (check_for_bare_parameter_packs): Returns bool. - * pt.c (check_for_bare_parameter_packs): Return bool indicated - whether everything was okay. Fix indentation. - (push_template_decl_real): Check for bare parameter packs in - function parameters; where errors occur, mark the parameter types - with ERROR_MARK_NODEs to avert ICEs. - (coerce_template_parameter_pack): New. - (coerce_template_parms): Moved parameter pack coercion into - coerce_template_parameter_pack, and permit it anywhere in the - template parameter list (not just at the end). Parameter and - argument indices can vary (somewhat) separately now, so add - PARM_IDX and ARG_IDX. - (fn_type_unification): Don't set an argument pack as incomplete if - no argument pack was deduced. - (type_unification_real): If a type parameter is a parameter pack - and has not otherwise been deduced, it will be deduced to an empty - parameter pack. - (more_specialized_fn): Use the actual lengths of the argument - lists when comparing against expansions. - * semantics.c (finish_member_declaration): If a field's type has - bare parameter packs, error and set its type to ERROR_MARK_NODE. - -2007-05-24 Danny Smith <dannysmith@users.sourceforge.net> - - PR target/27067 - * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name. - -2007-05-22 Ollie Wild <aaw@google.com> - - * name-lookup.c (ambiguous_decl): Adds check for hidden types. - (unqualified_namespace_lookup): Adds check for hidden types. - -2007-05-22 Ollie Wild <aaw@google.com> - - * decl.c (duplicate_decls): Verify namespace names are unique. - -2007-05-21 Mark Mitchell <mark@codesourcery.com> - - * decl.c (cxx_maybe_build_cleanup): Handle - __attribute__((cleanup)). - -2007-05-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * cvt.c (cp_convert_and_check): Don't check warnings if the - conversion failed. - -2007-05-18 Geoffrey Keating <geoffk@apple.com> - - * mangle.c (write_real_cst): Use 'unsigned long' for %lx. - -2007-05-14 Paolo Carlini <pcarlini@suse.de> - - PR c++/29928 - * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the - type only if is a class type (5.2.8/4). - -2007-05-14 Rafael Ãvila de EspÃndola <espindola@google.com> - - * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove. - * decl.c (grokdeclarator): Use unsigned_type_for instead of - c_common_unsigned_type. - -2007-05-11 Silvius Rus <rus@google.com> - - * typeck.c (build_indirect_ref): Add call to - strict_aliasing_warning. - (build_reinterpret_cast_1): Condition call to - strict_aliasing_warning. - -2007-05-11 Jan Hubicka <jh@suse.cz> - - * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn. - * decl2.c (start_objects): ctors and dtors are no longer public. - (cp_write_global_declarations): Do not call c_build_cdtor_fns. - -2007-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com> - - * typeck.c (build_unary_op): Remove code that used to - handle non lvalue increments/decrements. - -2007-05-07 Mike Stump <mrs@apple.com> - - * parser.c (check_empty_body): Add. - (cp_parser_iteration_statement): Add call to check_empty_body. - -2007-05-05 Geoffrey Keating <geoffk@apple.com> - - PR 31775 - * mangle.c (write_mangled_name): Mangle static variable names. - (write_unqualified_name): Use local-source-name for - namespace-scope static variables. - -2007-05-04 Dirk Mueller <dmueller@suse.de> - - * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is - not in effect. - -2007-05-02 Seongbae Park <seongbae.park@gmail.com> - - PR c++/31663 - * decl2.c (constrain_class_visibility): - Use strip_pointer_or_array_types instead of strip_array_types. - -2007-04-28 Andrew Pinski <andrew_pinski@playstation.sony.com> - - PR C++/30221 - * decl.c (reshape_init_r): Don't reshape the first element if it - is a pointer to member function. - -2007-04-27 Simon Baldwin <simonb@google.com> - - * decl.c (grokparms): Changed message format from %qD to %qE. - -2007-04-27 Douglas Gregor <doug.gregor@gmail.com> - - * error.c (maybe_warn_variadic_templates): Variadic templates are - now in C++0x, so only warn about them in C++98 mode. - -2007-04-26 Andrew Pinski <andrew_pinski@playstation.sony.com> - - PR C++/30016 - * typeck.c (build_reinterpret_cast_1): Only allow conversion to - integeral types from vectors types. - -2007-04-26 Jakub Jelinek <jakub@redhat.com> - - PR c++/31598 - * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO - for type dependent OMP_CLAUSE_DECLs. - -2007-04-24 Mark Mitchell <mark@codesourcery.com> - - PR c++/31338 - * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE. - * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as - COMPLEX_TYPE is now an ARITHMETIC_TYPE. - * init.c (build_zero_init): Adjust, as - COMPLEX_TYPE is now a SCALAR_TYPE. - * typeck2.c (digest_init): Allow brace-enclosed initializers for - COMPLEX_TYPE, even though that is now a SCALAR_TYPE. - -2007-04-25 Paolo Carlini <pcarlini@suse.de> - - * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust - per N2255; rename as classtype_has_nothrow_assign_or_copy_p. - (trait_expr_value): Adjust. - -2007-04-23 Simon Baldwin <simonb@google.com> - - * decl.c (grokparms): Added new error for duplicate function - parameters names in function prototypes, to match gcc behavior. - -2007-04-23 Jan Hubicka <jh@suse.cz> - - * decl2.c (finish_objects): Do not call target constructor/destructor - bits dirrectly. - -2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com> - - * cp-tree.h (lang_tree_node): Use GENERIC_NEXT - instead of checking GIMPLE_STMT_P in chain_next. - -2007-04-17 Mark Mitchell <mark@codesourcery.com> - - PR c++/31513 - * call.c (convert_for_arg_passing): Convert bitfields to their - declared types. - -2007-04-17 Simon Martin <simartin@users.sourceforge.net> - - PR c++/31517 - * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs. - -2007-04-16 Seongbae Park <seongbae.park@gmail.com> - - PR c++/29365 - * decl2.c (constrain_class_visibility): - Do not warn about the use of anonymous namespace in the main input file. - -2007-04-15 Mark Mitchell <mark@codesourcery.com> - - * cp-tree.h (current_template_parms): Fix typo in comment. - -2007-04-15 Kazu Hirata <kazu@codesourcery.com> - - * cp-tree.h, error.c: Fix comment typos. - -2007-04-13 Jason Merrill <jason@redhat.com> - - PR c++/31074 - * call.c (reference_binding): Add c_cast_p parm. If true, - add quals to TO as needed to make it reference-compatible. - -2007-04-11 Jan Hubicka <jh@suse.cz> - - * class.c (convert_to_base_statically): Fold produced tree; verify - that we are not processing template_decl. - -2007-04-09 Mark Mitchell <mark@codesourcery.com> - - PR c++/31449 - * class.c (build_base_path): Ensure that the converted pointer has - the same cv-qualification as the input. - -2007-04-09 Paolo Carlini <pcarlini@suse.de> - - * tree.c (cp_tree_equal): Deal with TRAIT_EXPR. - -2007-04-08 Steven Bosscher <steven@gcc.gnu.org> - - * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS): - Do not set it. - (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it. - * tree.c (cp_add_pending_fn_decls): Remove. - * cp-tree.h (cp_add_pending_fn_decls): Remove prototype. - -2007-04-07 Daniel Berlin <dberlin@dberlin.org> - - Revert change removing staticp. - -2007-04-06 Daniel Berlin <dberlin@dberlin.org> - - * cp-objcp-common.c (cxx_staticp): Remove. - * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove. - * cp-tree.h (cxx_staticp): - -2007-04-04 Danny Smith <dannysmith.users.sourceforge.net> - - * class.c (check_for_override): Don't remove dllmport attribute - of virtual methods. - -2007-04-03 Jakub Jelinek <jakub@redhat.com> - - PR c++/30847 - * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void - type issue error and return early. - -2007-03-30 Jason Merrill <jason@redhat.com> - - PR c++/31187 - * typeck.c (cp_type_readonly): New fn. - * cp-tree.h: Declare it. - * decl.c (start_decl): Set implicit DECL_THIS_STATIC here. - (cp_finish_decl): Not here. - -2007-03-31 Richard Guenther <rguenther@suse.de> - - * optimize.c (maybe_clone_body): Replace splay-tree usage by - pointer-map. - -2007-03-31 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/31138 - PR c++/31140 - PR c++/31141 - * parser.c (declarator_can_be_parameter_pack): New. - (cp_parser_template_parameter): Only parse the `...' if the - declarator can be a parameter pack. - (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE - is NULL. - * pt.c (find_parameter_packs_r): Look into the bounds on integer - types (they could be used as array bounds). - (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX. - (tsubst_pack_expansion): Handle failure to expand parameter - packs. - -2007-03-30 Paolo Carlini <pcarlini@suse.de> - - PR c++/26099 - * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr, - TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add. - (enum cp_tree_node_structure_enum, union lang_tree_node): Update. - (CLASS_TYPE_NON_UNION_P): Add. - (struct lang_type_class): Add has_complex_dflt. - (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add. - (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare. - * cp-tree.def: Add TRAIT_EXPR. - * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case. - * lex.c (struct resword): Add __has_nothrow_assign, - __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign, - __has_trivial_constructor, __has_trivial_copy, - __has_trivial_destructor, __has_virtual_destructor, __is_abstract, - __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum, - __is_pod, __is_polymorphic, __is_union. - * parser.c (cp_parser_primary_expression): Deal with the new RIDs. - (cp_parser_trait_expr): New. - * semantics.c (finish_trait_expr, trait_expr_value - classtype_has_nothrow_copy_or_assign_p): New. - * method.c (locate_copy, locate_ctor, locate_dtor): Do not define - as static. - * decl.c (cp_tree_node_structure): Add TRAIT_EXPR. - * class.c (check_bases, check_field_decl, check_bases_and_members): - Deal with TYPE_HAS_COMPLEX_DFLT (t) too. - * pt.c (uses_template_parms, tsubst_copy_and_build, - value_dependent_expression_p, type_dependent_expression_p): Deal with - TRAIT_EXPR. - * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR. - -2007-03-29 Richard Guenther <rguenther@suse.de> - - * tree.c (cp_walk_subtrees): Do not set input_location. - -2007-03-28 Simon Martin <simartin@users.sourceforge.net> - - PR c++/29077 - * decl.c (grokfndecl): Properly setup decl if it is a constructor or a - destructor. - -2007-03-28 Douglas Gregor <doug.gregor@gmail.com> - - * parser.c (struct cp_parser): Update comment for - greater_than_is_operator_p. - (cp_parser_primary_expression): In C++0x mode, a cast operator can - be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P. - (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when - !GREATER_THAN_IS_OPERATOR_P. - (cp_parser_binary_expression): When -Wc++0x-compat, warn about - `>>' operators that will become two `>' tokens in C++0x. - (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x - mode, allowing it to terminate default arguments. - (cp_parser_enclosed_template_argument_list): In C++0x mode, treat - `>>' like two consecutive `>' tokens. - (cp_parser_skip_to_end_of_template_parameter_list): Ditto. - (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>' - ends a template argument. - -2007-03-28 Douglas Gregor <doug.gregor@gmail.com> - - * decl.c (redeclaration_error_message): Complain when redeclaring - a friend function with default template arguments (C++0x mode only). - * cp-tree.h (check_default_tmpl_args): Declare. - * pt.c (check_default_tmpl_args): In C++0x mode, permit default - template arguments in function templates. Add support for checking - the default template arguments of friend templates. - (push_template_decl_real): Fix call to check_default_tmpl_args. - (type_unification_real): If a template parameter has not been - deduced but provides a default template argument, substitute into - that default template argument. - * parser.c (cp_parser_init_declarator): When declaring (but not - defining!) a function template in C++0x mode, check for default - template arguments. - -2007-03-28 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/29993 - * decl.c (grokdeclarator): Deal with cv-qualified function type - typedefs in the same way for member and non-member functions. - -2007-03-26 Dirk Mueller <dmueller@suse.de> - - * parser.c (cp_parser_member_declaration): Pedwarn - about stray semicolons after member declarations. - -2007-03-26 Paolo Carlini <pcarlini@suse.de> - - PR c++/30500 - * pt.c (instantiate_decl): Set in_system_header. - -2007-03-22 Mark Mitchell <mark@codesourcery.com> - - * cp-tree.h (current_tempalte_parms): Improve documentation. - * pt.c (current_template_args): Likewise. - - PR c++/30863 - * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do - not consume tokens when failing. - -2007-03-22 Jim Wilson <wilson@specifix.com> - Mark Mitchell <mark@codesourcery.com> - - PR c++/31273 - * call.c (standard_conversion): Use type_decays_to. Keep FCODE - consistent with FROM. - -2007-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net> - - * error.c (dump_expr): Handle dependent names that designate types. - * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE. - -2007-03-17 Kazu Hirata <kazu@codesourcery.com> - - * cp-tree.def, parser.c, pt.c: Fix comment typos. - -2007-03-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * cvt.c (cp_convert_and_check) : Define. - * cp-tree.h (cp_convert_and_check): Declare. - * call.c (convert_conversion_warnings): Rename to - conversion_null_warnings. The warning for floating-point to - integer is handled by convert_and_check in convert_like_real. - (convert_like_real): convert_conversion_warnings was renamed as - conversion_null_warnings. - * typeck.c (build_binary_op): Use cp_convert_and_check to warn for - overflow and changes of value during conversion. - -2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/30891 - * parser.c (cp_parser_statement): If 'namespace' is found, this - only can be a namespace alias definition, so parse it now. - (cp_parser_namespace_alias_definition): if we find an open brace - instead of '=', then this is actually a misplaced namespace - definition. - -2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/24924 - * decl.c (cxx_init_decl_processing): Move command-line options - processing to c-opts.c. - -2007-03-15 Douglas Gregor <doug.gregor@gmail.com> - - * ptree.c (cxx_print_type): Use formatting markup for integers - when printing template parameter index/level/orig level. - (cxx_print_xnode): Ditto. - * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0. - (struct template_parm_index_s): Remove the PARAMETER_PACK member. - Make INDEX, LEVEL, and ORIG_LEVEL integers instead of - HOST_WIDE_INTs. - (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int, - rather than a HOST_WIDE_INT. - Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and - NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for - better bit-packing. - (struct language_function): Make RETURNS_VALUE, RETURNS_NULL, - RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and - IN_BASE_INITIALIZER bool bitfields. - (struct cp_declarator): Make KIND a 4-bit field. Make - PARAMETER_PACK_P a bool bitfield just after KIND. - * pt.c (uses_parameter_packs): Destroy the pointer set. - (make_pack_expansion): Ditto. - (check_for_bare_parameter_packs): Ditto. - * name-lookup.c (push_to_top_level): Make need_pop a bool value. - -2007-03-14 Andrew Pinski <andrew_pinski@playstation.sony.com> - - PR c++/31165 - * call.c (convert_default_arg): Instead of copying the node, - unshare it. - -2007-03-15 Dirk Mueller <dmueller@suse.de> - - PR c++/30860 - * call.c (convert_conversion_warnings): New.. - (convert_like_real): .. factored out from here. - (convert_conversion_warnings): Add warning about - false being converted to NULL in argument passing. - -2007-03-14 Dirk Mueller <dmueller@suse.de> - - * semantics.c (c_finish_if_stmt): Call empty_if_body_warning. - (finish_do_body): Warn about empty body in do/while statement. - -2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning. - -2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c/21438 - * typeck.c (build_binary_op): Call warn_for_div_zero instead of - warning. - -2007-03-13 Alexandre Oliva <aoliva@redhat.com> - - * repo.c (init_repo): Initialize random_seed saved options. - (finish_repo): Adjust. - -2007-03-13 Mark Mitchell <mark@codesourcery.com> - - PR bootstrap/30899 - * Make-lang.in (doc/g++.1): Use $< to specify the location from - which to copy. - -2007-03-12 Seongbae Park <seongbae.park@gmail.com> - - * decl.c (compute_array_index_type): New warning flag warn_vla. - -2007-03-12 Mark Mitchell <mark@codesourcery.com> - - PR c++/30108 - * call.c (convert_default_arg): Copy non-constant arguments. - -2007-03-11 Mark Mitchell <mark@codesourcery.com> - - PR c++/31038 - * parser.c (cp_parser_postfix_expression): Disallow compound - literals in constant expressions. - - PR c++/30328 - * semantics.c (finish_typeof): Use unlowered_expr_type. - -2007-03-10 Mark Mitchell <mark@codesourcery.com> - - PR c++/30274 - * cp-tree.h (unlowered_expr_type): New function. - * typeck.c (is_bitfield_expr_with_lowered_type): Handle - COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR. - (unlowered_expr_type): New function. - (build_unary_op): Disallow predecrements of bool bitfields. - * call.c (build_conditional_expr): Use unlowered_expr_type. - * pt.c (type_unification_real): Likewise. - -2007-03-09 Douglas Gregor <doug.gregor@gmail.com> - - PR c++/20599 - * typeck.c (check_return_expr): Check for bare parameter packs. - (comptypes): Compare template parameter packs and - type pack expansions. - * decl.c (grokdeclarator): Deal with the declaration of function - parameter packs. - (grokparms): Verify that the (optional) function parameter pack is - at the end of the parameter list. - (xref_basetypes): Handle pack expansions in the base class. - (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT. - * cp-tree.def (TYPE_ARGUMENT_PACK): New. - (NONTYPE_ARGUMENT_PACK): New. - (TYPE_PACK_EXPANSION): New. - (EXPR_PACK_EXPANSION): New. - (ARGUMENT_PACK_SELECT): New. - * cp-objcp-common.c (cp_tree_size): Compute size of - (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and - ARGUMENT_PACK_SELECT. - * error.c (dump_template_argument): Print template argument packs. - (dump_template_argument_list): Ditto. - (dump_template_parameter): Dump `...' for template type parameter - packs. - (dump_type): Dump TYPE_PACK_EXPANSION nodes. - (dump_parameters): Print function parameter packs. - (dump_template_parms): Print template argument packs. - (dump_expr): Dump EXPR_PACK_EXPANSION nodes. - (maybe_warn_variadic_templates): New. - * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION. - * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK, - NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION, - CAST_EXPR. - * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION. - (write_template_arg): Write argument packs as separate arguments. - * cp-tree.h (struct template_parm_index_s): Add flag that - indicates that the template parameter is actually a parameter - pack. - (struct tree_argument_pack_select): New. - (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT. - (union lang_tree_node): Add argument_pack_select. - (FUNCTION_PARAMETER_PACK_P): New. - (PACK_EXPANSION_P): New. - (PACK_EXPANSION_PATTERN): New. - (SET_PACK_EXPANSION_PATTERN): New. - (PACK_EXPANSION_PARAMETER_PACKS): New. - (ARGUMENT_PACK_P): New. - (ARGUMENT_PACK_ARGS): New. - (SET_ARGUMENT_PACK_ARGS): New. - (ARGUMENT_PACK_INCOMPLETE_P): New. - (ARGUMENT_PACK_EXPLICIT_ARGS): New. - (TEMPLATE_PARM_PARAMETER_PACK): New. - (TEMPLATE_TYPE_PARAMETER_PACK): New. - (ARGUMENT_PACK_SELECT_FROM_PACK): New. - (ARGUMENT_PACK_SELECT_INDEX): New. - (ARGUMENT_PACK_SELECT_ARG): New. - (struct cp_declarator): Add parameter_pack_p flag. - (maybe_warn_variadic_templates): Declare. - (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to - indicate a template parameter pack. - (uses_parameter_packs): Declare. - (template_parameter_pack_p): Declare. - (template_parms_variadic_p): Declare. - (make_pack_expansion): Declare. - (check_for_bare_parameter_packs): Declare. - * cxx-pretty-print.c (pp_cxx_unary_expression): Print - sizeof... expressions. - (pp_cxx_expression): Print pack expansions and non-type argument - packs. - (pp_cxx_exception_specification): Print pack expansions. - (pp_cxx_direct_declarator): Print ellipsis for parameter packs. - (pp_cxx_ctor_initializer): Print pack expansions. - (pp_cxx_type_id): Print pack expansions. - (pp_cxx_template_argument_list): Print argument packs. - (pp_cxx_template_parameter): Print ellipsis for template parameter - packs. - * pt.c (comp_template_parms): Compare template parameter packs. - (template_parameter_pack_p): New. - (template_parms_variadic_p): New. - (template_args_variadic_p): New. - (make_ith_pack_parameter_name): New. - (struct find_parameter_pack_data): New. - (find_parameter_packs_r): New. - (uses_parameter_packs): New. - (make_pack_expansion): New. - (check_for_bare_parameter_packs): New. - (expand_template_argument_pack): New. - (reduce_template_parm_level): Propagate parameter pack flag. - (process_template_parm): Add is_parameter_pack parameter to state - when the parameter is actually a parameter pack. Create template - parameter packs when is_parameter_pack is true. - (current_template_args): The argument for a template parameter - pack is an argument pack containing a single pack expansion. - (process_partial_specialization): When checking that non-type - argument expressions do not involve template parameters, loop over - the arguments in argument packs separately. - (push_template_decl_real): Check that the type of the declaration - does not have any bare parameter packs. Check that primary - templates have no more than one parameter pack, and that it comes - at the end of the template parameter list. - (convert_template_argument): Handle coercions for pack expansion - expressions by coercing the pattern then rebuilding the expansion. - (coerce_template_parms): When coercing the arguments for a - variadic template, pack "extra" arguments into an argument pack. - (coerce_template_template_parms): Cannot coerce between parameter - packs and non-pack parameters. - (template_args_equal): Compare PACK_EXPANSION_P expressions. - (comp_template_args): Expand all template arguments packs before - comparing template argument lists. - (mangle_class_name_for_template): Make argument packs as separate - template arguments. - (for_each_template_parm_r): No need to handle BASELINK. - (instantiate_class_template): Handle pack expansions in the base - class list. - (tsubst_pack_expansion): New. - (tsubst_template_args): Handle substitutions of argument packs and - pack expansion into template argument lists. - (tsubst_decl): Expand function parameter packs into separate - function parameters. - (tsubst_arg_types): Expand a type pack expansion into separate - argument types. - (tsubst_exception_specification): Handle pack expansions in - exception specifiers. - (tsubst): See through ARGUMENT_PACK_SELECT arguments when - replacing a template parameter with its argument. If we encounter - a substitution for an argument pack, just return the parameter - itself. - (tsubst_copy): sizeof(X...) returns the number of elements in - parameter pack X. See through ARGUMENT_PACK_SELECT when the - PARM_DECL is a parameter pack. - (tsubst_expr): Expression pack expansions and argument packs - cannot show up here; they will all be handled through function - calls, sizeof, and template argument lists. - (tsubst_copy_and_build): sizeof(X...) returns the number of - elements in parameter pack X. Handle pack expansions in TREE_LIST - and CONSTRUCTOR nodes. - (fn_type_unification): Handle "incomplete" explicit template - argument lists that specify some of the arguments for a template - parameter pack. - (type_unification_real): Unify arguments against pack expansions. - (template_parm_level_and_index): New, helper function. - (unify_pack_expansion): New. - (unify): Unify argument packs on an argument-by-argument basis, - handling variadic argument packs as well. - (more_specialized_fn): Handle unification of function parameter - packs. All things being equal, prefer non-variadic function - templates to variadic function templates. - (more_specialized_class): Prefer the variadic class template - partial specialization that binds fewer arguments to a parameter - pack. - (regenerate_decl_from_template): Expand function parameter packs - into separate parameters. - (instantiate_decl): Ditto. - (tsubst_initializer_list): Handle pack expansions for base-class - initializers. - (dependent_type_p_r): Determine dependent types in argument packs - and pack expansions. - (value_dependent_expression_p): Determine value-dependence of - non-type argument packs. - (dependent_template_arg_p): Handle argument packs. - * semantics.c (finish_cond): Check for bare parameter packs. - (finish_expr_stmt): Ditto. - (finish_for_expr): Ditto. - (finish_switch_cond): Ditto. - (finish_mem_initializers): Ditto. - * name-lookup.c (arg_assoc_type): Handle pack expansions and - argument packs. - * decl2.c (cp_build_parm_decl): Mark function parameter packs. - * parser.c (make_declarator): Declarator is not an expansion. - (make_pointer_declarator): Transfer parameter pack flag to outer - declarator. - (make_reference_declarator): Ditto. - (make_ptrmem_declarator): Ditto. - (make_call_declarator): Ditto. - (make_array_declarator): Ditto. - (cp_parser_postfix_expression): Allow pack expansion expressions - in the argument list for a call expression. - (cp_parser_parenthesized_expression_list): Add new parameter - ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand - into separate arguments." - (cp_parser_new_placement): Allow pack expansion expressions. - (cp_parser_new_initializer): Ditto. - (cp_parser_mem_initializer_list): Allow ellipsis to create a - base-class initializer expansion. - (cp_parser_mem_initializer): Ditto. - (cp_parser_template_parameter_list): Keep track of whether the - template parameter is a template parameter pack. - (cp_parser_template_parameter): Parse the ellipsis to indicate a - template parameter pack. - (cp_parser_type_parameter): Ditto. - (cp_parser_template_argument_list): Parse the ellipsis to indicate - a pack expansion. - (cp_parser_direct_declarator): Parse the ellipsis to indicate that - this declarator is a parameter pack. - (cp_parser_parameter_declaration): The ellipsis does not end the - parameter declaration, because it might be a parameter pack. Parse - the ellipsis to indicate a parameter pack. - (cp_parser_initializer): Allow pack expansions. - (cp_parser_initializer_list): Allow ellipsis to create an - initializer expansion. - (cp_parser_base_clause): Allow ellipsis to create a base specifier - expansion. - (cp_parser_type_id_list): Allow ellipsis to create an exception - specifier expansion. - (cp_parser_attribute_list): Don't allow pack expansions. - (cp_parser_functional_cast): Allow pack expansions. - (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to - compute the length of a parameter pack. - (cp_parser_next_token_ends_template_argument_p): An ellipsis can - end a template argument. - * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK, - NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION, - CAST_EXPR. - -2007-03-09 Dirk Mueller <dmueller@suse.de> - - * call.c (build_new_op): Call warn_logical_operator. - -2007-03-08 Volker Reichelt <v.reichelt@netcologne.de> - - PR c++/30852 - * semantics.c (finish_offsetof): Handle COMPOUND_EXPR. - - PR c++/30534 - * pt.c (any_template_arguments_need_structural_equality_p): - Robustify. - -2007-03-08 Alexandre Oliva <aoliva@redhat.com> - - * decl.c (grokdeclarator): Disable warnings for anonymous - bitfields. - -2007-03-05 Volker Reichelt <v.reichelt@netcologne.de> - - * typeck2.c (readonly_error): Always emit a hard error. - Remove last argument. - * cp-tree.h (readonly_error): Adjust prototype. - * semantics.c (finish_asm_stmt): Adjust call to readonly_error. - * typeck.c (build_unary_op): Likewise. - (build_modify_expr): Likewise. - -2007-03-04 Simon Martin <simartin@users.sourceforge.net> - - PR c++/30895 - * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees. - -2007-03-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/15787 - * parser.c (struct cp_parser): New IN_IF_STMT. - (cp_parser_statement_seq_opt): Handle an unexpected 'else', - returning if parsing the body of an 'if' statement or issuing an - error and continuing. - (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing - body of 'if'. - (cp_parser_jump_statement): Mask new IN_IF_STMT bit. - -2007-03-02 Simon Martin <simartin@users.sourceforge.net> - - PR c++/28253 - * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders - for thunks. - -2007-03-02 Geoffrey Keating <geoffk@apple.com> - - * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling - Objective-C++. Don't exit early if -shared-libgcc needs to be - added. - -2007-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * typeck.c (common_base_type): Delete unused function. - -2007-03-01 Brooks Moses <brooks.moses@codesourcery.com> - - * Make-lang.in: Add dummy lang.install-pdf target. - -2007-03-01 Simon Baldwin <simonb@google.com> - - PR c++/23689 - * decl.c (check_tag_decl): Added new warning for typedef ignored - when it precedes an otherwise valid non-typedef declaration. - -2007-02-28 Sandra Loosemore <sandra@codesourcery.com> - - * typeck.c (build_function_call): Store converted arguments - in a stack-allocated array instead of building a list. - (convert_arguments): Store arguments in the array passed in as an - argument, and return the actual number of arguments. - * call.c (build_call): Delete, and replace with... - (build_call_n, build_call_a): New. - (build_op_delete_call): Rewrite to avoid constructing argument lists. - (build_over_call): Store converted arguments in a stack-allocated - array instead of building a list. - (build_cxx_call): Pass arguments in an array instead of as a list. - (build_java_interface_fn_ref): Rewrite to avoid constructing - argument lists. - * tree.h: Update declarations to reflect above changes. - * method.c (use_thunk): Use a stack-allocated array to hold - the arguments instead of a list. - * rtti.c (throw_bad_cast): Update call to cxx_call. - (throw_bad_typeid): Likewise. - (build_dynamic_cast_1): Likewise. - * init.c (build_builtin_delete_call): Use build_call_n. - * decl.c (expand_static_init): Likewise. - * except.c (cp_protect_cleanup_actions): Likewise. - * cp-gimplify.c (genericize_eh_spec_block): Likewise. - (gimplify_must_not_throw_expr): Likewise. - (cxx_omp_apply_fn): Use build_call_a. - -2007-02-26 Mark Mitchell <mark@codesourcery.com> - - * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn. - * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns. - -2007-02-25 Mark Mitchell <mark@codesourcery.com> - - * cp-tree.h (static_ctors): Remove. - * cp-tree.h (static_dtors): Likewise. - * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for - refactoring of tree_map hierarchy. - (decl_shadowed_for_var_insert): Likewise. - * semantics.c (expand_body): Use c_expand_body. - (expand_or_defer_fn): Don't update static_ctors or static_dtors. - * decl2.c (static_ctors): Remove. - (static_dtors): Likewise. - (generate_ctor_or_dtor_function): Pass NULL_TREE to - objc_generate_static_init_call. Do not call static_[cd]tors. - (generate_ctor_and_dtor_functions_for_priority): Do not check for - static_[cd]tors. - (cp_write_global_declarations): Likewise. - -2007-02-23 Richard Guenther <rguenther@suse.de> - - * class.c (note_name_declared_in_class): Make declaration - changes meaning a pedwarn. - -2007-02-22 Michael Matz <matz@suse.de> - - PR c++/29433 - * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag. - * error.c (dump_aggr_type, dump_simple_decl, dump_decl, - dump_function_decl): Guard emitting outer scopes by new flag. - * cp-lang.c (cxx_dwarf_name): New function. - (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name. - * pt.c (classtype_mangled_name, mangle_class_name_for_template): - Remove functions. - (push_template_decl_real, lookup_template_class): Remove calls - to above functions. - -2007-02-19 Mark Mitchell <mark@codesourcery.com> - - * call.c (build_new_method_call): Ensure that explicit calls of - destructors have type "void". - -2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * typeck.c (build_binary_op): Replace -Wstring-literal-comparison - and -Walways-true with -Waddress. - * cvt.c (convert_to_void): Replace unconditional warning with - -Waddress. - -2007-02-18 Kazu Hirata <kazu@codesourcery.com> - - * decl.c, tree.c: Fix comment typos. - -2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com> - - PR C++/30158 - * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the - statement expression if we had an error mark node. - -2007-02-15 Sandra Loosemore <sandra@codesourcery.com> - Brooks Moses <brooks.moses@codesourcery.com> - Lee Millward <lee.millward@codesourcery.com> - - * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation. - Change class to tcc_vl_exp. - - * call.c (build_call): Use build_call_list instead - of build3. - (build_over_call): Likewise. - (build_new_method_call): Use build_min_non_dep_call_list - instead of build_min_non_dep. - - * error.c (dump_call_expr_args): New function. - (dump_aggr_init_expr_args): New function. - (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. - Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros. - - * cvt.c (convert_to_void): Use build_call_array instead - of build3; use new AGGR_INIT_EXPR accessor macros. - - * mangle.c (write_expression): Use TREE_OPERAND_LENGTH - instead of TREE_CODE_LENGTH. - - * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new - AGGR_INIT_EXPR accessor macros. - - * cp-gimplify.c (cp_gimplify_init_expr): Use - AGGR_INIT_EXPR_SLOT to set the slot operand. - - * cp-tree.h (AGGR_INIT_EXPR_FN): New macro. - (AGGR_INIT_EXPR_SLOT): New macro. - (AGGR_INIT_EXPR_ARG): New macro. - (aggr_init_expr_nargs): New macro. - (AGGR_INIT_EXPR_ARGP): New macro. - (aggr_init_expr_arg_iterator): New. - (init_aggr_init_expr_arg_iterator): New. - (next_aggr_init_expr_arg): New. - (first_aggr_init_expr_arg): New. - (more_aggr_init_expr_args_p): New. - (FOR_EACH_AGGR_INIT_EXPR_ARG): New. - (stabilize_aggr_init): New declaration. - (build_min_non_dep_call_list): Likewise. - - * tree.c (process_aggr_init_operands): New function. - (build_aggr_init_array) New function. - (build_cplus_new): Update to use new CALL_EXPR and - AGGR_INIT_EXPR accessor macros. Replace use of build3 with - build_aggr_init_array. - (build_min_non_dep_call_list) New function. - (build_min_nt): Assert input code parameter is not a variable - length expression class. - (build_min, build_min_non_dep): Likewise. - (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments - to check for equality instead of recursing. Handle tcc_vl_exp - tree code classes. - (stabilize_call): Update to only handle CALL_EXPRs, not - AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros. - (stabilize_aggr_init): New function. - (stabilize_init): Use it. - - * cxx-pretty-print.c (pp_cxx_postfix_expression) - <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and - AGGR_INIT_EXPR accessor macros and argument iterators. - - * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with - build_vl_exp. Iterate through the operands, recursively - processing each one. - (tsubst_copy_and_build) <CALL_EXPR>: Update to use new - CALL_EXPR accessor macros. - (value_dependent_expression_p) <default>: Handle tcc_vl_exp - tree code classes. Use TREE_OPERAND_LENGTH instead of - TREE_CODE_LENGTH. - - * semantics.c (finish_call_expr): Use build_nt_call_list - instead of build_nt. - (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR - accessor macros. Use build_call_array to construct the - CALL_EXPR node instead of build3 - - * decl2.c (build_offset_ref_call_from_tree): Use - build_nt_call_list and build_min_non_dep_call_list instead - of build_min_nt and build_min_non_dep. - - * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>: - Use build_nt_call_list instead of build_min_nt. - -2007-02-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/28943 - * call.c (build_conditional_expr): Improve error message. - -2007-02-13 Dirk Mueller <dmueller@suse.de> - - * friend.c (do_friend): Annotate warning about friend - declarations in templates with OPT_Wnon_template_friend. - Convert informal message from warning() to inform(). - -2007-02-12 Simon Martin <simartin@users.sourceforge.net> - Mark Mitchell <mark@codesourcery.com> - - PR c++/14622 - * pt.c (do_decl_instantiation): Detect type mismatches in explicit - instantiations for variables. - -2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR middle-end/7651 - * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings. - Check warn_unused_value just once. - -2007-02-11 Mark Mitchell <mark@codesourcery.com> - - PR c++/26988 - * pt.c (determine_specialization): Use skip_artificial_parms_for. - (fn_type_unificiation): Likewise. - (get_bindings): Likewise. - -o2007-02-06 Mark Mitchell <mark@codesourcery.com> - - PR target/29487 - * decl.c (finish_function): Use DECL_REPLACEABLE. - * tree.c (cp_cannot_inline_tree_fn): Likewise. - -2007-02-10 Gabriel Dos Reis <gdr@integrable-solutions.net> - - * parser.c (cp_parser_primary_expression): Reformat overly long lines. - -2007-02-10 Richard Henderson <rth@redhat.com>, Jakub Jelinek <jakub@redhat.com> - - * decl.c (grokvardecl): Don't error if !have_tls. - (grokdeclarator): Likewise. - * parser.c (cp_parser_omp_threadprivate): Likewise. - -2007-02-07 Jakub Jelinek <jakub@redhat.com> - - PR c++/30703 - * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref - parameters and result decls in omp clauses. - (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs - by reference. - -2007-02-05 Dirk Mueller <dmueller@suse.de> - - PR bootstrap/30510 - * parser.c (cp_parser_class_specifier): Always initialize bases. - -2007-02-05 Paolo Bonzini <bonzini@gnu.org> - - * cp-tree.h (OMP_ATOMIC_CODE): Delete. - (OMP_ATOMIC_DEPENDENT_P): Rewrite. - * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC - expressions. - * semantics.c (finish_omp_atomic): Store a whole expression node - in operand 1, and integer_zero_node in operand 0, for dependent - OMP_ATOMIC. Rewrite to make flow easier to understand. - -2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net> - - * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0. - -2007-02-04 Kazu Hirata <kazu@codesourcery.com> - - * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c, - parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions. - -2007-02-03 Douglas Gregor <doug.gregor@gmail.com> - - * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x - keyword warning to -Wc++0x-compat. - -2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net> - - * decl.c (grokdeclarator): Update documentation. - -2007-02-02 Jakub Jelinek <jakub@redhat.com> - - PR c++/30536 - * decl.c (grokdeclarator): If __thread is used together with - a storage class other than extern and static, clear thread_p - after issuing diagnostics and fall through to checking the - storage class. - -2007-01-30 Roger Sayle <roger@eyesopen.com> - - * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when - calculating the size of an array (to avoid recursive errors). - -2007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/24745 - * typeck.c (build_binary_op): Fix logic for warning. Move warning - to -Wpointer-arith. - * call.c (convert_like_real): Don't warn when converting to - boolean type. - -2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - * decl.c (pop_label): Replace warning with call to - warn_for_unused_label. - -2007-01-28 Andrew Pinski <pinskia@gmail.com> - - PR C++/28988 - * semantics.c (finish_pseudo_destructor_expr): Check the - destrutor name by calling check_dtor_name. - -2007-01-24 Douglas Gregor <dgregor@osl.iu.edu> - - * lex.c (D_CPP0X): Rename. - (D_CXX0X): To this. - (reswords): D_CPP0X -> D_CXX0X. - (init_reswords): Ditto. - * parser.c (cp_lexer_get_preprocessor_token): Warn about the use - of C++0x keywords as identifiers. - -2007-01-23 Simon Martin <simartin@users.sourceforge.net> - - PR c++/27492 - * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for - function decls. - -2007-01-23 Ian Lance Taylor <iant@google.com> - - * typeck.c (convert_for_assignment): Only warn about a = b = c - when converting to bool. - -2007-01-23 Roger Sayle <roger@eyesopen.com> - - * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with - TREE_OVERFLOW. - * typeck.c (ignore_overflows): Remove the remaining uses of - TREE_CONSTANT_OVERFLOW. - -2007-01-20 Jan Hubicka <jh@suse.cz> - - * decl2.c (start_objects, start_static_storage_duration_function): - Do not make the functions uninlinable. - -2007-01-17 Ian Lance Taylor <iant@google.com> - - * class.c (add_method): Call VEC_reserve_exact rather than passing - a negative size to VEC_reserve. - -2007-01-11 Simon Martin <simartin@users.sourceforge.net> - - PR c++/29573 - * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees. - -2007-01-10 Mark Mitchell <mark@codesourcery.com> - - PR c++/28999 - * decl.c (make_typename_type): If the qualified name is not a - type, issue an error. - * parser.c (cp_parser_elaborated_type_specifier): Fix comment - formatting. - -2007-01-08 Geoffrey Keating <geoffk@apple.com> - - * rtti.c: Include target.h. - (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (), - don't emit typeinfo for fundamental types as weak. - * Make-lang.in (cp/rtti.o): Update and correct dependencies. - -2007-01-08 Richard Guenther <rguenther@suse.de> - - * cvt.c (cp_convert_to_pointer): Use build_int_cst_type. - -2007-01-08 Mark Shinwell <shinwell@codesourcery.com> - - * call.c (standard_conversion): Pass flag to - vector_types_convertible_p to disallow emission of note. - * typeck.c (convert_for_assignment): Pass flag to - vector_types_convertible_p to allow emission of note. - (ptr_reasonably_similar): Pass flag to vector_types_convertible_p - to disallow emission of note. - -2007-01-07 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c++/28986 - * typeck.c (build_binary_op): Call overflow_warning if - TREE_OVERFLOW_P is true for the result and not for any of the - operands. - -2007-01-06 Lee Millward <lee.millward@codesourcery.com> - - PR c++/19439 - * class.c (add_method): Don't wait until template - instantiation time to complain about duplicate methods. - -2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org> - - PR c/19978 - * semantics.c (finish_unary_op_expr): Warn only if result - overflowed and operands did not. - -2007-01-05 Ian Lance Taylor <iant@google.com> - - * typeck.c (build_binary_op): Warn about comparing a non-weak - address to NULL. - -2007-01-05 Douglas Gregor <doug.gregor@gmail.com> - - * pt.c (tsubst): Propagate the need for structural equality checks - when reducing the level of template parameters. - -2007-01-03 Kazu Hirata <kazu@codesourcery.com> - - * pt.c: Fix a comment typo. - -2007-01-02 Ian Lance Taylor <iant@google.com> - - * semantics.c (maybe_convert_cond): Optionally warn when using an - assignment as a condition. - * typeck.c (convert_for_assignment): Optionally warn about - assigning the result of an assignment to a bool. - -2007-01-02 Douglas Gregor <doug.gregor@gmail.com> - - * pt.c (canonical_template_parms): Correct typo in comment. - -2007-01-02 Douglas Gregor <doug.gregor@gmail.com> - - * typeck.c (structural_comptypes): Renamed from "comptypes". - (comptypes): Use canonical type information to perform fast type - comparison. When VERIFY_CANONICAL_TYPES, verify that the - canonical type comparison returns the same results as we would see - from the current, structural check. Support COMPARE_STRUCTURAL - when we need structural checks. - * decl.c (typename_compare): Fix comment. - (build_typename_type): TYPENAME_TYPE nodes require structural - equality checks, because they resolve different based on the - current class type. - (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes - require structural equality checks (for now). - (build_ptrmemfunc_type): Build the canonical pointer to member - function type. - (compute_array_index_type): Whenever we build a new index type - to represent the size of an array in a template, we need to mark - this index type as requiring structural equality. This goes for - arrays with value-dependent sizes with the current ABI, or all - arrays with ABI-1. - * tree.c (cplus_array_hash): New. - (struct cplus_array_info): New. - (cplus_array_compare): New. - (cplus_array_htab): New. - (build_cplus_array_type_1): Use a hash table to cache the array - types we build. Build the canonical array type for each array - type. - (cp_build_qualified_type_real): When building a cv-qualified array - type, use the hash table of array types and build canonical array - types as necessary. - (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes - use structural equality (for now). - * cp-tree.h (COMPARE_STRUCTURAL): New. - * pt.c (canonical_template_parms): New. - (canonical_type_parameter): New. - (process_template_parm): Find the canonical type parameter. - (lookup_template_class): When we have named the primary template - type, set the canonical type for our template class to the primary - template type. If any of the template arguments need structural - equality checks, the template class needs structural equality - checks. - (tsubst): When reducing the level of a template template - parameter, we require structural equality tests for the resulting - parameter because its template parameters have not had their types - canonicalized. When reducing a template type parameter, find the - canonical reduced type parameter. - (any_template_arguments_need_structural_equality_p): New. - diff --git a/gcc/cp/ChangeLog-2007 b/gcc/cp/ChangeLog-2007 new file mode 100644 index 00000000000..0bac135c984 --- /dev/null +++ b/gcc/cp/ChangeLog-2007 @@ -0,0 +1,3336 @@ +2007-12-20 Jason Merrill <jason@redhat.com> + + PR c++/34111 + * call.c (standard_conversion): Derived-to-base is considered a + standard conversion. + +2007-12-19 Jakub Jelinek <jakub@redhat.com> + + PR c++/34513 + * parser.c (cp_parser_omp_parallel): For non-combined parallel + call cp_parser_statement rather than + cp_parser_already_scoped_statement. + +2007-12-18 Jason Merrill <jason@redhat.com> + + PR c++/34206 + * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't + use template parms. + (dependent_type_p_r): Handle the domain of an array. + +2007-12-18 Douglas Gregor <doug.gregor@gmail.com> + Jakub Jelinek <jakub@redhat.com> + + PR c++/32565 + PR c++/33943 + PR c++/33965 + * pt.c (template_template_parm_bindings_ok_p): New; verifies + bindings of template template parameters after all template + arguments have been deduced. + (coerce_template_parms): Don't complain when COMPLAIN doesn't + include tf_error. + (fn_type_unification): Use template_template_parm_bindings_ok_p. + (unify): Deal with variadic, bound template template parameters. + (get_class_bindings): Use template_template_parm_bindings_ok_p. + +2007-12-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/34488 + * decl.c (grokdeclarator): Reject friend sfk_constructor + FUNCTION_TYPE. + +2007-12-17 Jakub Jelinek <jakub@redhat.com> + + PR c/34506 + * parser.c (cp_parser_omp_all_clauses): Accept optional comma + in between clauses. + +2007-12-15 Alexandre Oliva <aoliva@redhat.com> + + PR debug/7081 + * cp-lang.c (cp_classify_record): New. + (LANG_HOOKS_CLASSIFY_RECORD): Override. + +2007-12-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/34238 + * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change. + + PR c++/34364 + * rtti.c (build_dynamic_cast): Call convert_from_reference even for + dynamic_cast in a template. + +2007-12-10 Simon Martin <simartin@users.sourceforge.net> + + PR c++/34059 + * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from + MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO. + +2007-12-10 Jakub Jelinek <jakub@redhat.com> + + PR c++/34395 + * error.c (dump_type_prefix, dump_type_suffix): Handle + TYPE_PACK_EXPANSION. + + PR c++/34394 + * error.c (dump_expr): Handle ABS_EXPR. + +2007-12-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/34178 + PR c++/34340 + * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P + in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. + Return 2 also if DECL_EXPLICIT_INSTANTIATION. + * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when + flag_use_repository and repo_emit_p returned 2. + +2007-12-06 Jakub Jelinek <jakub@redhat.com> + + PR c++/34336 + * tree.c (stabilize_call, stabilize_init): Do nothing if + processing_template_decl. + +2007-12-05 Jakub Jelinek <jakub@redhat.com> + + PR c++/34271 + * semantics.c (finish_decltype_type): For SCOPE_REF issue an + error instead of assertion failure. + * parser.c (cp_parser_decltype): If closing paren is not found, + return error_mark_node. + +2007-12-04 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/34101 + * name-lookup.c (arg_assoc_template_arg): Recurse on argument + packs. + (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here, + since arg_assoc_template_arg will deal with them (better). + +2007-12-04 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33509 + * pt.c (tsubst_exception_specification): Handle substitutions into + member templates, where tsubst_pack_expansion returns a + TYPE_PACK_EXPANSION. + +2007-12-04 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33091 + * pt.c (unify_pack_expansion): If we didn't deduce any actual + bindings for the template parameter pack, don't try to keep the + empty deduced arguments. + (unify): If a parameter is a template-id whose template argument + list contains a pack expansion that is not at the end, then we + cannot unify against that template-id. + +2007-12-02 Paolo Carlini <pcarlini@suse.de> + + PR c++/34061 + * pt.c (current_template_args): Use error_operand_p. + +2007-12-02 Paolo Carlini <pcarlini@suse.de> + + PR c++/34273 + * error.c (dump_decl): Handle TREE_BINFO. + +2007-12-01 Ollie Wild <aaw@google.com> + + PR c++/8171 + * typeck.c (build_binary_op): Add conversion of pointers to function + members appearing as operands to the equality operators. + +2007-11-30 Jakub Jelinek <jakub@redhat.com> + + PR c++/34275 + * error.c (dump_expr): Handle OBJ_TYPE_REF. + +2007-11-29 Jakub Jelinek <jakub@redhat.com> + + PR c++/34270 + * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y + in templates. + * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>: + Likewise. + + PR c++/34267 + PR c++/34268 + * parser.c (cp_parser_decltype): Don't call finish_id_expression + on ~type. + * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs + and ~type early. + +2007-11-27 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/34181 + * method.c (use_thunk): Don't inline the call in the thunk. + + PR c++/34213 + * tree.c (decl_linkage): Static data members and static member + functions in anonymous ns classes are lk_external. + +2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com> + + PR c++/34081 + * decl.c (start_preparsed_function): Pass + processing_template_decl for the new allocate_struct_function + parameter. + +2007-11-25 Richard Guenther <rguenther@suse.de> + + * decl.c (poplevel): Use BLOCK_CHAIN. + +2007-11-24 Ollie Wild <aaw@google.com> + + * typeck.c (delta_from_ptrmemfunc): New function. + (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc. + (build_binary_op): Call delta_from_ptrmemfunc. + +2007-11-23 Jakub Jelinek <jakub@redhat.com> + + PR c++/30293 + PR c++/30294 + * decl.c (cp_finish_decl): Disallow variable or field + definitions if extern "Java" aggregates. + (grokparms): Disallow parameters with extern "Java" + aggregates. + (check_function_type): Disallow function return values + with extern "Java" aggregates. + * init.c (build_new_1): Disallow placement new with + extern "Java" aggregates. + +2007-11-23 Mark Mitchell <mark@codesourcery.com> + Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/5310 + * call.c (convert_like_real): Build a zero constant when __null is + converted to an integer type. + +2007-11-22 Jakub Jelinek <jakub@redhat.com> + + PR c++/34094 + * decl2.c (cp_write_global_declarations): Issue error about static + data members in anonymous namespace which are declared and used, + but not defined. + +2007-11-20 Jakub Jelinek <jakub@redhat.com> + + PR c++/34089 + * parser.c (cp_parser_class_head): Reject function template ids. + + PR c++/28879 + * tree.c (build_cplus_array_type_1): Don't pass any VLA types + when processing_template_decl to build_array_type. + + PR c++/33962 + * pt.c (more_specialized_fn): Don't segfault if one or + both argument list end with ellipsis. + +2007-11-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/30988 + * semantics.c (finish_call_expr): Set + current_function_returns_abnormally if fn is noreturn FUNCTION_DECL + or OVERLOAD with all noreturn functions. + +2007-11-16 Jakub Jelinek <jakub@redhat.com> + + PR c++/34100 + * pt.c (apply_late_template_attributes): Do nothing if decl's type is + error_mark_node. + +2007-11-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/34054 + PR c++/34056 + PR c++/34057 + PR c++/34058 + PR c++/34060 + * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error, + set to error_mark_node the outermost POINTER_TYPE to the pack if + it is seen in a POINTER_TYPE. + (push_template_decl_real): If check_for_bare_parameter_packs + fails for function return type, set the return type to + integer_type_node. If check_for_bare_parameter_packs failed + for non-function, return error_mark_node. + + PR c++/29225 + * call.c (build_new_op): Call resolve_args before calling + build_over_call. + +2007-11-11 Tom Tromey <tromey@redhat.com> + + PR c++/17577: + * lex.c (handle_pragma_implementation): Use cpp_included_before. + +2007-11-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/8570 + * pt.c (redeclare_class_template): Update error message. Use a + note to show the previous declaration. + (tsubst_friend_class): Use the location of the friend template as + the input location before calling redeclare_class_template. + +2007-11-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/34068 + * semantics.c (finish_pseudo_destructor_expr): Handle + object == error_mark_node. + +2007-11-10 Jakub Jelinek <jakub@redhat.com> + + PR c++/32241 + * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type + is not scalar type, let finish_class_member_access_expr handle + diagnostics. Pass BIT_NOT_EXPR argument to + finish_pseudo_destructor_expr. Handle SCOPE_REF properly. + +2007-11-09 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33510 + * decl.c (cp_complete_array_type): If any of the initializer + elements are pack expansions, don't compute the array size yet. + +2007-11-08 Andrew Pinski <pinskia@gmail.com> + + PR c++/30297: + * tree.c (decl_linkage): Fields have no linkage. + +2007-11-08 Daniel Jacobowitz <dan@codesourcery.com> + + * class.c (build_ctor_vtbl_group): Lay out the new type and decl. + +2007-11-07 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33045 + PR c++/33837 + PR c++/33838 + * semantics.c (finish_decltype_type): See through INDIRECT_REFs. + Be careful with ERROR_MARK_NODEs. + * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL + argument. + +2007-11-07 Jakub Jelinek <jakub@redhat.com> + + PR c++/33501 + * call.c (build_over_call): Don't check TREE_ADDRESSABLE + on incomplete type. + +2007-11-06 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33977 + PR c++/33886 + * tree.c (c_build_qualified_type): Define bridge to + cp_build_qualified_type. + +2007-11-06 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/31439 + PR c++/32114 + PR c++/32115 + PR c++/32125 + PR c++/32126 + PR c++/32127 + PR c++/32128 + PR c++/32253 + PR c++/32566 + * typeck.c (check_return_expr): Pass address of retval to + check_for_bare_parameter_packs. + * class.c (build_base_field): Tolerate bases that have no layout + due to errors. + (end_of_base): Ditto. + * tree.c (canonical_type_variant): Be careful with + ERROR_MARK_NODE. + * cp-tree.h (check_for_bare_parameter_packs): Now accepts a + tree*. + * pt.c (find_parameter_pack_data): Add set_packs_to_error field, + which states whether parameter packs should be replaced with + ERROR_MARK_NODE. + (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever + possible. If set_packs_to_error is set true, replace the parameter + pack with ERROR_MARK_NODE. Manage our own pointer sets. + (uses_parameter_packs): Don't set parameter packs to + ERROR_MARK_NODE. + (check_for_bare_parameter_packs): Now takes a pointer to a tree, + which may be modified (if it is a parameter pack). Instructs + find_parameter_packs_r to replace parameter packs with + ERROR_MARK_NODE (so that they won't cause errors later on). + (process_template_parm): Pass pointer to + check_for_bare_parameter_packs. + (process_partial_specialization): Replace pack expansions before + the end of the template argument list with ERROR_MARK_NODE. + (push_template_decl_real): Pass pointer to + check_for_bare_parameter_packs. Replace parameter packs not at the + end of the template parameter list with ERROR_MARK_NODE. + (convert_template_argument): Be more careful about using DECL_NAME + on only declarations. + (unify): Can't unify against ERROR_MARK_NODE. + * semantics.c (finish_cond): Pass pointer to + check_for_bare_parameter_packs. + (finish_expr_stmt): Ditto. + (finish_for_expr): Ditto. + (finish_switch_cond): Pass pointer to + check_for_bare_parameter_packs, and call it before we put the + condition into the statement. + (finish_mem_initializers): Pass pointer to + check_for_bare_parameter_packs. + (finish_member_declaration): Ditto. + * parser.c (cp_parser_base_clause): Ditto. + +2007-11-06 Jakub Jelinek <jakub@redhat.com> + + PR target/33168 + * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already + with the final TREE_READONLY flag in place. processing_template_decl + is known to be 0 in this part of function. + + PR c++/33894 + * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not + OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC. + * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P. + * semantics.c (finish_omp_atomic): Revert most of the + 2007-02-05 changes, just keep the new representation of + OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC. + +2007-11-05 H.J. Lu <hongjiu.lu@intel.com> + + PR c++/33871 + * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked + local. + +2007-11-05 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33996 + PR c++/33235 + PR c++/33930 + * typeck.c (merge_types): Don't lose rvalue references when + merging types. + * call.c (build_over_call): Don't elide move constructors just + because the copy constructor is trivial (!). + (compare_ics): If comparing cv-qualifiers fails, we can still order + based on binding lvalues vs. rvalues. + +2007-11-05 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33939 + * pt.c (unify_pack_expansion): bring handling of function call + arguments into line with type_unification_real. + +2007-11-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * typeck.c (build_binary_op): Use pedwarn instead of error for + consistency. + +2007-11-05 Jakub Jelinek <jakub@redhat.com> + + PR c++/33836 + * parser.c (cp_parser_unary_expression): For &&label call + cp_parser_non_integral_constant_expression and return error_mark_node + if it returned true. + + PR c++/33969 + * decl.c (grokdeclarator): Don't call build_memfn_type if type + is neither FUNCTION_TYPE nor METHOD_TYPE. + +2007-11-02 Jakub Jelinek <jakub@redhat.com> + + PR c++/33516 + * parser.c (cp_parser_nested_name_specifier_opt): Use + TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete + typedef of currently open class. + +2007-11-02 Paolo Carlini <pcarlini@suse.de> + + PR c++/33495 + * error.c (dump_expr): Deal specially with statements. + +2007-11-01 Jason Merrill <jason@redhat.com> + + PR c++/30897 + * pt.c (push_template_decl_real): Set DECL_CONTEXT on template + template parms. + (lookup_template_class): Use it to get the outer template args + for instantiating one. + + PR c++/29236 + * pt.c (reduce_template_parm_level): tsubst the parameters + of a template template parm. + +2007-11-01 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33955 + * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE. + +2007-11-01 Jakub Jelinek <jakub@redhat.com> + + PR c++/32384 + * parser.c (cp_parser_postfix_dot_deref_expression): If + POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor + first and if that succeeds and type is SCALAR_TYPE_P, create + PSEUDO_DTOR_EXPR. + + PR c++/32260 + * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment. + (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo + as for std::type_info. + +2007-10-31 Paolo Carlini <pcarlini@suse.de> + + PR c++/33494 + * cxx-pretty-print.c (pp_cxx_typeid_expression, + pp_cxx_delete_expression): Change to static linkage. + * cxx-pretty-print.h: Adjust declarations. + * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR, + MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR, + MODOP_EXPR): Forward to pp_expression. + + * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR): + Fix typo. + +2007-10-31 Christian Bruel <christian.bruel@st.com> + Mark Mitchell <mark@codesourcery.com> + + PR c++/19531 + * typeck.c (check_return_expr): Don't set named_return_value_okay_p + if retval is volatile. + +2007-10-30 Jakub Jelinek <jakub@redhat.com> + + PR c++/33616 + * decl2.c (build_offset_ref_call_from_tree): Call + build_non_dependent_expr on object prior to building ADDR_EXPR from it + if FN is DOTSTAR_EXPR. + +2007-10-30 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/31993 + PR c++/32252 + * pt.c (find_parameter_packs_r): Fix typo in comment. + (convert_template_argument): Look at the pattern of a pack + expansion to determine what kind of entity we're converting. + (coerce_template_parameter_pack): When we have coerced a non-type + template parameter pack, substitute into the type of that pack. + (tsubst_pack_expansion): When our substitution of a parameter pack + is a "trivial" substitution of itself, just substitute into the + pack expansion rather than actually expanding. + +2007-10-29 Jakub Jelinek <jakub@redhat.com> + + PR c++/33841 + * class.c (check_bitfield_decl): Don't set field's type to error_mark_node + for non-integral type bitfields. Return true if bitfield is correct, false + error has been diagnosed. + (check_field_decls): If check_bitfield_decl returned false, call also + check_field_decl. + +2007-10-28 Paolo Carlini <pcarlini@suse.de> + Mark Mitchell <mark@codesourcery.com> + + PR c++/30659 + * pt.c (do_decl_instantiation): If the VAR_DECL is not a + class member error out and return. + +2007-10-27 Jakub Jelinek <jakub@redhat.com> + + * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope + to current_function_decl rather than 0. + + PR c++/33844 + * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print + ->* rather than .*. + * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR. + +2007-10-27 Jason Merrill <jason@redhat.com> + + PR c++/5247 + * call.c (convert_default_arg): Detect recursion. + +2007-10-27 Jakub Jelinek <jakub@redhat.com> + + PR c++/33842 + * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype. + * cxx-pretty-print.c (pp_cxx_primary_expression): Handle + OFFSETOF_EXPR. + (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New + functions. + * error.c (dump_expr): Handle OFFSETOF_EXPR. + +2007-10-26 Jason Merrill <jason@redhat.com> + + PR c++/24791 + * pt.c (get_template_info): New fn. + (template_class_depth): Use it. + (push_template_decl_real): Check that the template args of the + definition match the args of the previous declaration. + +2007-10-26 Paolo Carlini <pcarlini@suse.de> + + PR c++/31988 + * decl2.c (coerce_new_type): Do not allow a default argument for + the first parameter. + +2007-10-26 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33839 + * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we + don't see the leading '('. Only lookup names if we get an + IDENTIFIER_NODE. + +2007-10-26 Jakub Jelinek <jakub@redhat.com> + + PR c++/33744 + * parser.c (cp_parser_parenthesized_expression_list): Set + greater_than_is_operator_p to true in between the parens. + +2007-10-26 Paolo Carlini <pcarlini@suse.de> + + PR c++/31747 + * decl.c (grokdeclarator): In case of conflicting specifiers + just return error_mark_node. + +2007-10-26 Ollie Wild <aaw@google.com> + + * expr.c (cxx_expand_expr): Removed. + * cp-tree.h (exx_expand_expr): Removed. + * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr + with c_expand_expr. + +2007-10-25 Paolo Carlini <pcarlini@suse.de> + + PR c++/33843 + * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR. + +2007-10-23 Jason Merrill <jason@redhat.com> + + PR c++/25950 (DR 391) + * call.c (struct conversion): Remove check_copy_constructor_p. + (reference_binding): Always bind a reference directly to a + compatible class rvalue. Pass down LOOKUP_NO_TEMP_BIND during + temporary creation. + (check_constructor_callable): Remove. + (convert_like_real): Don't call it. + (initialize_reference): Don't call check_constructor_callable. + (standard_conversion): Check LOOKUP_NO_CONVERSION instead of + LOOKUP_CONSTRUCTOR_CALLABLE. Don't require a temporary for base + conversions if LOOKUP_NO_TEMP_BIND. + (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND. + (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for + second conversion. + * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove. + +2007-10-22 Jakub Jelinek <jakub@redhat.com> + + PR c++/33372 + * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p + before checking if its type is integral. + +2007-10-22 Jason Merrill <jason@redhat.com> + + PR c++/33620 + * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES. + * pt.c (apply_late_template_attributes): Splice out dependent + attributes from DECL_ATTRIBUTES. + + * decl.c (cxx_maybe_build_cleanup): Use build_address. + +2007-10-17 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * typeck.c (build_binary_op) : Use appropriate warning option + instead of unnamed warning. + +2007-10-16 Paolo Carlini <pcarlini@suse.de> + + PR c++/31446 + * pt.c (current_template_args): Do not change TREE_LIST elements + with a TREE_VALUE of error_mark_node. + +2007-10-16 Mark Mitchell <mark@codesourcery.com> + + * typeck.c (cp_apply_type_quals_to_decl): Expand documentation. + * decl.c (start_decl): Tidy. + (start_decl_1): Call cp_apply_type_quals_to_decl after completing + the type. + (grokdeclarator): Clarify comment. + +2007-10-14 Andrew Pinski <pinskia@gmail.com> + + PR c++/30303 + * decl.c (grokfndecl): Return NULL after the "definition of + implicitly-declared" error happened. + +2007-10-12 Simon Martin <simartin@users.sourceforge.net> + + PR c++/26698 + * call.c (build_user_type_conversion_1): Do not consider conversion + functions to convert a (possibly cv-qualified) object to the (possibly + cv-qualified) same object type (or a reference to it), to a (possibly + cv-qualified) base class of that type (or a reference to it). + +2007-10-12 Paolo Carlini <pcarlini@suse.de> + + * pt.c (tsubst): Use template_parm_level_and_index. + +2007-10-12 Jakub Jelinek <jakub@redhat.com> + + PR c++/32121 + * parser.c (cp_parser_compound_statement): Handle label-declarations + at the beginning of the compound statement. + (cp_parser_block_declaration): Issue diagnostics about __label__ + not at the beginning of a block. + +2007-10-11 Paolo Carlini <pcarlini@suse.de> + + PR c++/33461 + * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node + to convert_template_argument. + (coerce_template_parms): Return error_mark_node after fixed-length + error. + (tsubst_decl): Check for error_mark_node the return value of the + first tsubst in 'case VAR_DECL'. + +2007-10-08 Ollie Wild <aaw@google.com> + + * typeck2.c (digest_init): Call cplus_expand_constant after + convert_for_initialization. + * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. + * expr.c (cplus_expand_constant): Updated function description. + +2007-10-04 Jason Merrill <jason@redhat.com> + + PR c++/20416 + * call.c (initialize_reference): Handle local static reference + temps properly. + +2007-10-03 Jason Merrill <jason@redhat.com> + + PR c++/32470 + * name-lookup.c (push_namespace_with_attrs): Fold back into... + (push_namespace): Here. + (handle_namespace_attrs): New fn for the attr code. + (leave_scope): Don't pop_visibility. + * name-lookup.h (struct cp_binding_level): Remove has_visibility. + * parser.c (cp_parser_namespace_definition): Call + handle_namespace_attrs and pop_visibility as appropriate. + + PR c++/11756 + * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry. + +2007-10-03 Alexandre Oliva <aoliva@redhat.com> + + * decl.c (duplicate_decls): Preserve linkage flags for mere + redeclarations of gnu_inline definitions. + +2007-10-03 Jason Merrill <jason@redhat.com> + + PR c++/15764 + * decl.c (wrap_cleanups_r): New fn. + (wrap_temporary_cleanups): New fn. + (initialize_local_var): Call it. + +2007-09-29 Jason Merrill <jason@redhat.com> + + PR c++/33094 + * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member + constant to not have DECL_EXTERNAL if it's file-local. + +2007-09-28 Ollie Wild <aaw@google.com> + + Revert + 2007-09-27 Ollie Wild <aaw@google.com> + + * typeck2.c (digest_init): Call cplus_expand_constant after + convert_for_initialization. + * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. + * expr.c (cplus_expand_constant): Updated function description. + +2007-09-28 Jason Merrill <jason@redhat.com> + + PR c++/10179 + * class.c (layout_empty_base): Take rli parameter, update + rli->record_align if empty base has user-specified alignment. + (build_base_field): Pass rli to it. + +2007-09-28 Paolo Carlini <pcarlini@suse.de> + + PR c++/33213 + * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION. + +2007-09-28 Paolo Carlini <pcarlini@suse.de> + + PR c++/33118 + * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT. + (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK. + (dump_parameters): Just call dump_type for argument packs too. + +2007-09-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/31434 + * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION + qualification by creating qualified PACK_EXPANSION_PATTERN and + then calling make_pack_expansion on it. + +2007-09-27 Ollie Wild <aaw@google.com> + + * typeck2.c (digest_init): Call cplus_expand_constant after + convert_for_initialization. + * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. + * expr.c (cplus_expand_constant): Updated function description. + +2007-09-27 Jason Merrill <jason@redhat.com> + + PR c++/33571 + * decl2.c (is_late_template_attribute): Don't crash on unknown + attribute. + +2007-09-27 Paolo Carlini <pcarlini@suse.de> + + PR c++/33493 + * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR. + * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing + spaces in the formatting. + * cxx-pretty-print.h (pp_cxx_delete_expression): Declare. + +2007-09-27 Jakub Jelinek <jakub@redhat.com> + + * error.c (cxx_print_error_function): Add third argument, pass + it over to lhd_print_error_function. + (cp_print_error_function): If diagnostic->abstract_origin, print + virtual backtrace. + * cp-tree.h (struct diagnostic_info): New forward decl. + (cxx_print_error_function): Add third argument. + +2007-09-25 Simon Martin <simartin@users.sourceforge.net> + + PR c++/33207 + * name-lookup.c (pushtag): Do not create an implicit typedef before + the associated type declaration is known to be valid. + +2007-09-25 Jakub Jelinek <jakub@redhat.com> + + * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids + rather than pointers. + +2007-09-24 Danny Smith <dannysmith@user.sourceforge.net> + + PR c++/14688 + * search.c (check_final_overrider): Fail if + targetm.comp_type_attributes returns 0. + +2007-09-24 Jason Merrill <jason@redhat.com> + + PR c++/33239 + * pt.c (resolve_typename_type): Don't look things up in the original + template if it would mean losing template arguments. + +2007-09-24 Jakub Jelinek <jakub@redhat.com> + + PR c++/33506 + * cp-tree.h (cxx_type_hash_eq): New prototype. + * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine. + * tree.c (cxx_type_hash_eq): New function. + +2007-09-24 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33185 + * tree.c (cp_build_qualified_type_real): Build a canonical + ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type. + +2007-09-24 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33112 + PR c++/33185 + * tree.c (cplus_array_compare): Compare pointers, not types. + (build_cplus_array_type_1): Store new array type into the hash + table before building the canonical type; build the canonical type + correctly. + (cp_build_qualified_type_real): Put all of the array types with + cv-qualified element types into the C++ array hash table, built as + variants of the unqualified versions. + +2007-09-23 Jason Merrill <jason@redhat.com> + + PR c++/16370 + * decl.c (grokdeclarator): Look through implicit TYPE_DECLs + for deprecation warnings. + +2007-09-22 Jason Merrill <jason@redhat.com> + + PR c++/15269 + * call.c (build_over_call): Warn about deprecated virtuals. + + PR c++/19407 + * cp-tree.h (ATTR_IS_DEPENDENT): New macro. + (MAYBE_TAGGED_TYPE_P): Remove. + * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT + instead of calling is_late_template_attribute again. + (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag. + (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL. + Don't crash on typedefs from non-template classes. + * decl2.c (grokfield): Don't sorry about attrs on template parms. + (is_late_template_attribute): All attributes applied to template + parms or typename types are dependent. Static. + (splice_template_attributes): Pass decl through. + (save_template_attributes): Likewise. + +2007-09-20 Jakub Jelinek <jakub@redhat.com> + + PR c++/33496 + * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node + returned from tsubst_pack_expansion. + (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise. + (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise. + +2007-09-20 Paolo Carlini <pcarlini@suse.de> + + PR c++/33460 + * semantics.c (finish_id_expression): Use consistently + context_for_name_lookup. + * decl.c (fixup_anonymous_aggr): Fix error message for + anonymous struct (vs union). + +2007-09-19 Jason Merrill <jason@redhat.com> + + PR c++/7586 + * pt.c (tsubst): Handle typedefs by looking for the specialization. + (retrieve_specialization): Only tagged types use + DECL_TEMPLATE_INSTANTIATIONS. + (instantiate_class_template): Push nested classes too. + (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for + tagged types. + * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro. + * init.c (is_aggr_type): Remove redundant tests. + * class.c (push_nested_class): Use CLASS_TYPE_P. + +2007-09-20 Paolo Carlini <pcarlini@suse.de> + + PR c++/33459 + * init.c (build_zero_init): If, recursively, build_zero_init + returns a NULL_TREE, do not append it to the VEC of constructors. + +2007-09-18 Jason Merrill <jason@redhat.com> + + PR c++/17743 + * pt.c (apply_late_template_attributes): Set processing_template_decl. + (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass + ATTR_FLAG_TYPE_IN_PLACE. + (tsubst): Do unqualified lookup to find typedefs from current class. + [ARRAY_TYPE]: Propagate alignment info. + * decl2.c (is_late_template_attribute): Only defer handling of + attribute aligned if the expression is dependent. + (save_template_attributes): If we're deferring any attributes, + make this a naming typedef. + +2007-09-18 Paolo Carlini <pcarlini@suse.de> + + PR c++/33462 (again) + * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print + va_arg instead of __builtin_va_arg. + +2007-09-18 Paolo Carlini <pcarlini@suse.de> + + PR c++/33462 + * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add. + (pp_cxx_primary_expression): Use it. + * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare. + * error.c (dump_expr): Use it. + +2007-09-18 Paolo Carlini <pcarlini@suse.de> + + PR c++/33463 + * cxx-pretty-print.c (pp_cxx_postfix_expression): Split + out case TYPEID_EXPR to... + (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren + and pp_cxx_right_paren. + * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare. + * error.c (dump_expr): Use it. + +2007-09-18 Paolo Carlini <pcarlini@suse.de> + + PR c++/33464 + * cxx-pretty-print.c (pp_cxx_trait_expression): Add. + (pp_cxx_primary_expression): Use it. + * cxx-pretty-print.h (pp_cxx_trait_expression): Declare. + * error.c (dump_expr): Use it. + +2007-09-16 Paolo Carlini <pcarlini@suse.de> + + PR c++/33124 + * init.c (build_new): Remove warning for zero-element + allocations. + +2007-09-16 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/32756 + * call.c (maybe_handle_implicit_object): Set this_p, clear + rvaluedness_matches_p. + (compare_ics): Do not compare rvaluedness matching when one of the + operands is an implicit object. + +2007-09-14 Jason Merrill <jason@redhat.com> + + PR c++/17743, c++/19163 + * decl2.c (is_late_template_attribute): New fn. + (splice_template_attributes, save_template_attributes): New fns. + (cplus_decl_attributes): Call save_template_attributes. + * pt.c (apply_late_template_attributes): New fn. + (instantiate_class_template, tsubst_decl): Use it. + * cp-tree.h: Declare is_late_template_attribute. + +2007-09-13 Tom Tromey <tromey@redhat.com> + + * parser.c (cp_lexer_new_main): Don't use + c_lex_return_raw_strings. + (cp_lexer_get_preprocessor_token): Update. Add special case when + lexer is NULL. + +2007-09-11 Jan Hubicka <jh@suse.cz> + + * method.c (use_thunk): Use tree_rest_of_compilation + * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill. + (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define. + * cp-tree.h (expand_body): Kill. + (emit_associated_thunks): Declare. + * semantics.c (emit_associated_thunks): Export. + (expand_body): Kill. + +2007-09-09 David Daney <ddaney@avtrex.com> + + PR c++/33324 + * init.c (build_new_1): Use POINTER_PLUS_EXPR instead of MINUS_EXPR + to calculate cookie_ptr. + +2007-09-08 Jason Merrill <jason@redhat.com> + + PR c++/33342 + * pt.c (most_specialized_class): Set processing_template_decl + while tsubsting partial spec args. + +2007-09-06 Jason Merrill <jason@redhat.com> + + * decl2.c (get_guard): Copy visibility from the guarded variable. + +2007-09-06 Jan Hubicka <jh@suse.cz> + + * semantics.c (expand_body): Do not mark arguments of clones used. + +2007-09-06 Paolo Carlini <pcarlini@suse.de> + + PR c++/32674 + * decl.c (cp_finish_decl): When processing_template_decl, + deal correctly with init as TREE_LIST. + +2007-09-06 Tom Tromey <tromey@redhat.com> + + * decl.c (finish_function): Put return's location on line zero of + file. + +2007-09-05 Jason Merrill <jason@redhat.com> + + PR c++/15745 + * except.c (prepare_eh_type): Use type_decays_to. + + PR c++/15097 + * init.c (build_delete): Use build_headof to get the address of the + complete object if we aren't using the deleting destructor. + * rtti.c (build_headof): No longer static. + * cp-tree.h: Declare it. + +2007-09-06 Jakub Jelinek <jakub@redhat.com> + + * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX + decl if a prototype for XX is provided with throw(). + + PR c++/33289 + * decl.c (builtin_function_1): Set DECL_ANTICIPATED also + on __*_chk non-__builtin_* decls. + +2007-09-05 Paolo Carlini <pcarlini@suse.de> + + PR c++/30302 + * semantics.c (finish_id_expression): Use context_for_name_lookup + insted of DECL_CONTEXT, to see through anonymous structs and unions. + * class.c (finish_struct_anon): Deal correctly with anonymous + structs (vs unions, as GNU extension) in error messages. + +2007-09-05 Jan Hubicka <jh@suse.cz> + + * sematics.c (expand_body): Remove unnecesary import_export_decl + call, DECL_EXTERNAL checks and current_function_decl saving. + +2007-09-05 Paolo Carlini <pcarlini@suse.de> + + PR c++/29731 (again) + * parser.c (cp_parser_primary_expression): Return error_mark_node + when a statement-expression is found in a template-argument list. + +2007-09-04 Jason Merrill <jason@redhat.com> + + * except.c (initialize_handler_parm): Use + fold_build_cleanup_point_expr. + + PR c++/31419 + * call.c (reference_binding): Don't look for user-defined conversions + to the same type. + + PR c++/31411 + * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside + the MUST_NOT_THROW_EXPR. + +2007-09-04 Richard Sandiford <richard@codesourcery.com> + + * decl.c (cp_finish_decl): Call determine_visibility before + make_rtl_for_nonlocal_decl. + +2007-09-04 Jason Merrill <jason@redhat.com> + + PR c++/14032 + * pt.c (most_specialized_class): Substitute outer template + arguments into the arguments of a member template partial + specialization. + (strip_innermost_template_args): New fn. + +2007-09-03 Daniel Jacobowitz <dan@codesourcery.com> + + * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB. + +2007-09-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * call.c (name_as_c_string): Supply a TYPE for CONST_CAST. + * decl.c (cp_make_fname_decl): Likewise, + * parser.c (cp_parser_string_literal): Likewise, + * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE. + * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p): + Likewise, + +2007-09-02 Paolo Carlini <pcarlini@suse.de> + + PR c++/33208 + * typeck.c (build_unary_op): Fix error message for + Boolean expression as operand to operator--. + +2007-09-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * tree.c (pod_type_p, zero_init_p): Use strip_array_types. + * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p): + Likewise. + +2007-08-31 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/32597 + * init.c (build_default_init): Make extern. + * cp-tree.h (build_default_init): Declare here. + * pt.c (tsubst_expr): When the instantiation of the initializer of + a variable results in an empty list, default-initialize the + variable. + (tsubst_copy_and_build): When the instantiation of the initializer + in a new expression results in an empty initializer list, + default-initialize it. + +2007-08-31 Douglas Gregor <doug.gregor@gmail.com> + + * mangle.c (write_type): Change mangling of rvalue reference from + `RR' to `O'. + +2007-08-31 Jakub Jelinek <jakub@redhat.com> + + * decl.c (duplicate_decls): Remove duplicated line. + +2007-08-31 Paolo Carlini <pcarlini@suse.de> + + PR c++/33210 + * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with + BOUND_TEMPLATE_TEMPLATE_PARM. + +2007-08-31 Paolo Carlini <pcarlini@suse.de> + + PR c++/32113 + * search.c (lookup_member): Check the name argument for + error_mark_node. + +2007-08-31 Paolo Carlini <pcarlini@suse.de> + + PR c++/33212 + * parser.c (cp_parser_trait_expr): Check rerurn value of + cp_parser_type_id. + +2007-08-30 Ollie Wild <aaw@google.com> + + * cvt.c (cp_convert_to_pointer): Remove force parameter. Call + convert_ptrmem for pointer to member conversions. + (convert_to_pointer_force): Update cp_convert_to_pointer call. + (ocp_convert): Update cp_convert_to_pointer call. + * typeck.c (convert_ptrmem): Add conditional for null pointers to + members. + (build_static_cast_1): Check can_convert for conversions in either + direction. + (get_delta_difference_1): New function. + (get_delta_difference): Refactor to call get_delta_difference_1. + +2007-08-30 Jakub Jelinek <jakub@redhat.com> + + * decl.c (start_preparsed_function): Set + DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions. + +2007-08-28 Paolo Carlini <pcarlini@suse.de> + + PR c++/33209 + * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and + BOUND_TEMPLATE_TEMPLATE_PARM. + +2007-08-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/32596 + PR c++/32400 + * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN + and DECL_NOT_REALLY_EXTERN if tmpl_func is not public. + +2007-08-27 Jason Merrill <jason@redhat.com> + + PR c++/29000 + * pt.c (build_non_dependent_expr, type_dependent_expression_p): + Look inside STMT_EXPR. + * semantics.c (stmt_expr_value_expr): New fn. + * cp-tree.h: Declare it. + + PR c++/28558 + * decl.c (groktypename): Ignore attributes applied to class type. + +2007-08-28 Richard Guenther <rguenther@suse.de> + + * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS. + +2007-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net> + + * error.c (dump_expr): Handle COMPLEX_CST. + * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise. + (pp_cxx_expression): Likewise. + +2007-08-27 Alexandre Oliva <aoliva@redhat.com> + + * decl.c (GNU_INLINE_P): New. + (duplicate_decls): Handle gnu_inline. Merge attributes and + some flags in overriding definitions. + (redeclaration_error_message): Handle gnu_inline. + (start_preparsed_function): Likewise. + +2007-08-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * call.c (sufficient_parms_p): Constify. + * class.c (same_signature_p): Likewise. + * cp-gimplify.c (is_invisiref_parm, + cxx_omp_privatize_by_reference): Likewise. + * cp-objcp-common.c (has_c_linkage): Likewise. + * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK, + sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p, + grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for, + num_artificial_parms_for, comp_template_parms, + template_parameter_pack_p, any_dependent_template_arguments_p, + any_type_dependent_arguments_p, any_value_dependent_elements_p, + repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p, + zero_init_p, member_p, cp_lvalue_kind, + builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p, + varargs_function_p, is_dummy_object, special_function_kind, + string_conv_p, type_unknown_p, comp_except_specs, compparms, + comp_cv_qualification, is_bitfield_expr_with_lowered_type, + unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly, + cp_has_mutable_p, at_least_as_qualified_p, + invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise. + * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise. + * except.c (nothrow_libfn_p): Likewise. + * method.c (skip_artificial_parms_for, num_artificial_parms_for): + Likewise. + * pt.c (comp_template_parms, template_parameter_pack_p, + any_type_dependent_arguments_p, any_value_dependent_elements_p, + any_dependent_template_arguments_p): Likewise. + * repo.c (repo_export_class_p): Likewise. + * semantics.c (anon_aggr_type_p): Likewise. + * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p, + builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p, + varargs_function_p, member_p, is_dummy_object, pod_type_p, + zero_init_p, special_function_p): Likewise. + * typeck.c (comp_array_types, type_unknown_p, comp_except_specs, + comp_array_types, at_least_as_qualified_p, comp_cv_qualification, + compparms, invalid_nonstatic_memfn_p, + is_bitfield_expr_with_lowered_type, unlowered_expr_type, + string_conv_p, ptr_reasonably_similar, cp_type_readonly, + cp_has_mutable_p, lvalue_or_else): Likewise. + +2007-08-25 Paolo Bonzini <bonzini@gnu.org> + + * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case. + * cp-objcp-common.c (cp_tree_size): Ditto. + * tree.c (cp_walk_subtrees): Ditto + * cp-tree.def (TINST_LEVEL): Go away. + * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level, + move together with other non-tree structs. + (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL. + (union lang_tree_node): Eliminate tinst_level field. + (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate. + (current_instantiation, outermost_tinst_level): Return + a "struct tinst_level *". + + * error.c (print_instantiation_partial_context): Change second + parameter to a "struct tinst_level *". Replace accessor macros + with field access. + (print_instantiation_full_context): Likewise. + * lex.c (in_main_input_context): Likewise. + + * pt.c (struct pending_templates): New. + (pending_templates, last_pending_template): Use it as a type. + (current_tinst_level): Change typo to "struct tinst_level *" + (reopen_tinst_level): Accept "struct tinst_level *", return decl. + (add_pending_template): Construct a "struct pending_template". + Replace TINST_LEVEL accessor macros with field access. + (push_tinst_level): Likewise, using GGC_NEW instead of make_node. + (pop_tinst_level): Likewise. + (instantiate_pending_templates): Likewise. Factor common code used + when an instantiation has been done. + (outermost_tinst_level): Replace tree_last with loop. + (current_instantiation): Return a "struct tinst_level *". + +2007-08-24 Ollie Wild <aaw@google.com> + + * name-lookup.c (add_decl_to_level): Remove addition to vtables chain. + * name-lookup.h (cp_binding_level): Remove vtables member. + +2007-08-24 Richard Guenther <rguenther@suse.de> + + * tree.c (cp_cannot_inline_tree_fn): Remove. + * cp-tree.h (cp_cannot_inline_tree_fn): Likewise. + * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): + Remove define. + +2007-08-24 Jakub Jelinek <jakub@redhat.com> + + PR c++/32567 + * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return + error_mark_node right away if build_expr_type_conversion + returned it. + + PR c++/32898 + * name-lookup.c (set_decl_namespace): lookup_qualified_name failure + is error_mark_node rather than NULL_TREE. + * pt.c (check_explicit_specialization): Likewise. + + PR c++/31941 + * error.c (resolve_virtual_fun_from_obj_type_ref): Handle + TARGET_VTABLE_USES_DESCRIPTORS targets properly. + +2007-08-22 Jason Merrill <jason@redhat.com> + + PR c++/29365 + * pt.c (outermost_tinst_level): New function. + * lex.c (in_main_input_context): New function. + * cp-tree.h: Declare it. + * decl2.c (constrain_class_visibility): Use it to avoid warning + about uses of the anonymous namespace in the main input file. + +2007-08-21 Jakub Jelinek <jakub@redhat.com> + + * init.c (build_new_1): Use get_target_expr instead of save_expr. + +2007-08-20 Pawel Sikora <pluto@pld-linux.org> + + PR c++/7302 + * class.c (finish_struct_1): Warn when a class has virtual + functions and accessible non-virtual destructor. + +2007-08-20 Richard Guenther <rguenther@suse.de> + + PR c++/22369 + PR c++/22451 + * call.c (build_new_method_call): Convert initializer to + the basetype. + * init.c (build_aggr_init): Do not fiddle with types. + (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR. + * except.c (build_throw): Do not drop qualifiers for the + pointer type. + * typeck.c (get_member_function_from_ptrfunc): Do not + fiddle with types, instead convert. + (build_ptrmemfunc1): Convert to the target type for + initialization. + (gfc_trans_allocate): Convert result to target type. + * cp-objcp-common.c (cxx_get_alias_set): Pointers to + pointer-to-member structures shall have alias set zero as well. + +2007-08-20 Richard Guenther <rguenther@suse.de> + + * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): + Remove. + * cp-tree.h (cp_auto_var_in_fn_p): Remove. + (nonstatic_local_decl_p): Likewise. + * tree.c (cp_auto_var_in_fn_p): Remove. + * decl.c (nonstatic_local_decl_p): Remove. + +2007-08-20 Richard Guenther <rguenther@suse.de> + + * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): + Remove define. + * tree.h (cp_walk_tree): New define to walk_tree_1 with + cp_walk_subtrees lh parameter. + (cp_walk_tree_without_duplicates): New define to + walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter. + * tree.c (count_trees): Call + cp_walk_tree_without_duplicates. + (verify_stmt_tree): Call cp_walk_tree. + (break_out_target_exprs): Likewise. + (WALK_SUBTREE): Likewise. + * cp-gimplify.c (cp_genericize): Likewise. + * cp-pt.c (find_parameter_packs_r): Likewise. + (uses_parameter_packs): Likewise. + (make_pack_expansion): Likewise. + (check_for_bare_parameter_packs): Likewise. + (for_each_template_parm): Likewise. + * decl.c (check_default_argument): Call + cp_walk_tree_without_duplicates. + * except.c (build_throw): Likewise. + * decl2.c (type_visibility): Likewise. + * semantics.c (expand_or_defer_fn): Likewise. + (finalize_nrv): Call cp_walk_tree. + +2007-08-20 Jakub Jelinek <jakub@redhat.com> + + PR c++/33025 + * init.c (build_new_1): Rename placement_var variable to placement_expr. + Initialize it with save_expr rather than get_temp_regvar. + +2007-08-17 Andrew Pinski <andrew_pinski@playstation.sony.com> + + PR c++/28989 + * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never + lvalues. + +2007-08-17 Ollie Wild <aaw@google.com> + + PR c++/31749 + * name-lookup.c (do_nonmember_using_decl): Shift implicit type + declarations into appropriate slots for comparison. Fix type + comparison. + +2007-08-17 Paolo Carlini <pcarlini@suse.de> + + PR c++/32112 + * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE. + * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise. + +2007-08-17 Paolo Carlini <pcarlini@suse.de> + + PR c++/32870 + * parser.c (cp_parser_class_head): Improve error message. + +2007-08-16 Seongbae Park <seongbae.park@gmail.com> + + * pt.c (instantiate_decl): Set input_location + for the function end. + +2007-08-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size): + Constify. + * cp-tree.h (local_variable_p, nonstatic_local_decl_p, + class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals, + cxx_incomplete_type_diagnostic, cxx_incomplete_type_error, + cxx_warn_unused_global_decl, cp_expr_size): Likewise. + * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise. + * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise. + * typeck.c (cp_type_quals): Likewise. + * typeck2.c (cxx_incomplete_type_diagnostic, + cxx_incomplete_type_error): Likewise. + +2007-08-16 Paolo Carlini <pcarlini@suse.de> + + PR c++/31132 + * pt.c (tsubst_friend_function): When check_classfn + returns error_mark_node likewise return it. + +2007-08-15 Jakub Jelinek <jakub@redhat.com> + + PR c++/32992 + * typeck.c (check_return_expr): Don't NRV optimize vars in + anonymous unions. + * decl.c (finish_function): Comment fix. + +2007-08-15 Paolo Carlini <pcarlini@suse.de> + + PR c++/33035 + * pt.c (push_template_decl_real): Depending on TYPE_P + use either TYPE_CONTEXT or DECL_CONTEXT. + +2007-08-14 Mark Mitchell <mark@codesourcery.com> + + * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if + constructors and destructors return this. + +2007-08-14 Paolo Carlini <pcarlini@suse.de> + + PR c++/27211 + * decl2.c (check_classfn): Return error_mark_node in case of error; + in that case, do not call add_method. + * decl.c (start_decl): Deal with check_classfn returning + error_mark_node. + (grokfndecl): Likewise. + * pt.c (tsubst_friend_function): Likewise. + +2007-08-14 Andrew Pinski <pinskia@gmail.com> + + PR c++/30428 + * typeck.c (build_binary_op): Disallow vector float types with + BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR. + +2007-08-11 Ian Lance Taylor <iant@google.com> + + * cp-objcp-common.c (cxx_get_alias_set): Change return type to + alias_set_type. + * cp-tree.h (cxx_get_alias_set): Update declaration. + +2007-08-10 Ollie Wild <aaw@google.com> + + * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous + type lookups. + (ambiguous_decl): Construct tree of ambiguous types. Remove extaneous + function parameter. + (unqualified_namespace_lookup): Fix ambiguous_decl call. + (lookup_using_namespace): Fix ambiguous_decl call. + (qualified_lookup_using_namespace): Fix ambiguous_decl call. + +2007-08-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * call.c (name_as_c_string): Use CONST_CAST. + * decl.c (build_decl): Likewise. + * parser.c (cp_parser_string_literal): Likewise. + +2007-08-10 Paolo Carlini <pcarlini@suse.de> + + PR c++/17763 + * error.c (dump_expr): Consistently use the *_cxx_* + variants of the pretty-print functions. + +2007-08-10 Paolo Carlini <pcarlini@suse.de> + + PR c++/22256 + * decl.c (check_special_function_return_type): Just error + on return type specified for conversion operator. + +2007-08-09 Daniel Berlin <dberlin@dberlin.org> + + * typeck2.c (readonly_error): Handle general expressions. + * error.c (dump_expr): Handle POINTER_PLUS_EXPR + +2007-08-06 Dan Hipschman <dsh@google.com> + + * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to + access function name. + +2007-08-04 Alfred Minarik <a.minarik@aon.at> + + PR pch/13676 + * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header. + * g++spec.c (lang_specific_driver): Check them. + +2007-08-06 Paolo Carlini <pcarlini@suse.de> + + PR c++/19532 + * pt.c (inline_needs_template_parms): Fix comment; change return type + to bool. + +2007-08-05 Volker Reichelt <v.reichelt@netcologne.de> + + Revert: + 2007-03-26 Dirk Mueller <dmueller@suse.de> + + * parser.c (cp_parser_member_declaration): Pedwarn + about stray semicolons after member declarations. + +2007-08-02 Lee Millward <lee.millward@gmail.com> + + PR c++/30849 + PR c++/30850 + PR c++/30851 + * parser.c (cp_parser_asm_definition): Detect and discard asm + statements with invalid inputs or outputs. + (cp_parser_asm_operand_list): Return error mark node if any + of the operands are invalid. Adjust documentation. + +2007-08-02 Nick Clifton <nickc@redhat.com> + + * typeck.c: Change copyright header to refer to version 3 of the + GNU General Public License and to point readers at the COPYING3 + file and the FSF's license web page. + * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c, + config-lang.in, cp-tree.def, call.c, decl.h, ptree.c, + Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c, + cp-objcp-common.h, except.c, error.c, operators.def, cvt.c, + tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c, + cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c, + cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c, + name-lookup.h, parser.c: Likewise. + +2007-08-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + PR middle-end/32668 + * call.c (magic_varargs_p): Honor the "type generic" attribute. + +2007-07-30 Paolo Carlini <pcarlini@suse.de> + + PR c++/32108 + * semantics.c (finish_label_stmt): Reject the __label__ + extension outside function scopes. + +2007-07-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * parser.c (eof_token): Un-constify. + (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc, + cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious + casts. + +2007-07-28 Kazu Hirata <kazu@codesourcery.com> + + * pt.c, tree.c, typeck2.c: Fix comment typos. + +2007-07-28 Simon Martin <simartin@users.sourceforge.net> + Mark Mitchell <mark@codesourcery.com> + + PR c++/30917 + * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be + hidden due to friend declarations in local classes. + +2007-07-27 Douglas Gregor <doug.gregor@gmail.com> + + * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes. + * cp-tree.def (DECLTYPE_TYPE): New. + * error.c (dump_type): Dump DECLTYPE_TYPE nodes. + (dump_type_prefix): Ditto. + (dump_type_suffix): Ditto. + * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes. + * mangle.c (write_type): Handle DECLTYPE_TYPE. + * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate + types. + (DECLTYPE_TYPE_EXPR): New. + (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New. + (finish_declared_type): Declare. + * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print + DECLTYPE_TYPE nodes. + (pp_cxx_type_id): Ditto. + * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children. + (tsubst): Substitute into a DECLTYPE_TYPE node. + (tsubst_copy): Ditto. + (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE + nodes. + (dependent_type_p_r): DECLTYPE_TYPE types are always dependent. + * semantics.c (finish_typeof): TYPEOF_TYPE types need to use + structural equality (because we can't hash the expressions). + (finish_declared_type): New. + * lex.c (reswords): Add "decltype" keyword. + * parser.c cp_lexer_next_token_is_decl_specifier_keyword + (cp_parser_postfix_expression): Add member_access_only_p to + restrict postfix expression to member access expressions. + (cp_parser_unary_expression): Update call to + cp_parser_postfix_expression to reflect new parameter. + (cp_parser_declared_type): New. + (cp_parser_simple_type_specifier): Parse decltype types. + +2007-07-27 Mark Mitchell <mark@codesourcery.com> + + PR c++/32346 + * call.c (convert_for_arg_passing): Only widen bitfields to their + declared types if necessary. + +2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand): + Constify. + +2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * decl.c (typename_hash, typename_compare): Constify. + * mangle.c (hash_type, compare_type): Likewise. + * pt.c (eq_local_specializations, hash_local_specialization): + Likewise. + * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq, + list_hash): Likewise. + * typeck2.c (pat_compare): Likewise. + +2007-07-24 Nathan Sidwell <nathan@codesourcery.com> + + * method.c (implicitly_declare_fn): Increase alignment if member + function pointer format requires it. + +2007-07-24 Paolo Carlini <pcarlini@suse.de> + + PR c++/29001 + * typeck.c (check_return_expr): Do not pass a null argument + to null_ptr_cst_p. + +2007-07-24 Paolo Carlini <pcarlini@suse.de> + + PR c++/32561 + * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P + only on VAR_DECL. + +2007-07-22 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/32839 + * typeck.c (convert_arguments): Only use default args if we have + a function decl. + + PR c++/30818 + * typeck.c (structural_comptypes): No need to check + resolve_typename_type return value here. + * cp-tree.h (TYPENAME_IS_RESOLVING_P): New. + * pt.c (resolve_typename_type): Follow typename typedefs. Return + original type rather than error_mark_node in case of failure. + * parser.c (cp_parser_nested_name_specifier_opt): Adjust + resolve_typename_type result check. + (cp_parser_direct_declarator, cp_parser_head, + cp_parser_constructor_declarator_p): Likewise. + +2007-07-12 Kazu Hirata <kazu@codesourcery.com> + + * pt.c (template_parms_variadic_p): Remove. + * cp-tree.h: Remove the prototype for template_parms_variadic_p. + +2007-07-12 Jakub Jelinek <jakub@redhat.com> + + PR c++/30854 + * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last + argument to dump_aggr_init_expr_args instead of false. + +2007-07-11 Douglas Gregor <doug.gregor@gmail.com> + + * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the + canonical types; otherwise, fall back to structural type + comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an + internal compiler error if the canonical types are wrong. + +2007-07-11 Paolo Carlini <pcarlini@suse.de> + + PR c++/32560 + * parser.c (cp_parser_make_indirect_declarator): When the + the code argument is ERROR_MARK return cp_error_declarator. + +2007-07-09 Geoffrey Keating <geoffk@apple.com> + + PR 32617 + * decl.c (cxx_init_decl_processing): Don't set + force_align_functions_log. + (grokfndecl): Honour ptrmemfunc_vbit_in_pfn. + * typeck.c (cxx_alignof_expr): When alignof is used on a plain + FUNCTION_DECL, return its alignment. + +2007-07-09 Richard Guenther <rguenther@suse.de> + + * decl.c (start_preparsed_function): Do not promote return type. + +2007-07-08 Paolo Carlini <pcarlini@suse.de> + + PR c++/30535 + * pt.c (unify): Never pass error_mark_node to template_decl_level. + +2007-07-07 Mark Mitchell <mark@codesourcery.com> + + PR c++/32232 + * pt.c (resolve_overloaded_unification): Robustify. Return a + bool, not an int. + (type_unification_real): Adjust accordingly. + +2007-07-06 Richard Guenther <rguenther@suse.de> + + * init.c (build_new_1): Use the correct pointer type. + * typeck2.c (build_m_component_ref): Likewise. + +2007-07-05 Mark Mitchell <mark@codesourcery.com> + + PR c++/32245 + * init.c (build_zero_init): Always build an initializer for + non-static storage. + * typeck2.c (build_functional_cast): Use build_zero_init. + + PR c++/32251 + * init.c (build_new_1): Always pass the allocation function to + build_op_delete_call. + * call.c (build_op_delete_call): Handle operator delete with a + variable-argument list. Do not issue an error when no matching + deallocation function is available for a new operator. + + PR c++/31992 + * cp-tree.h (any_value_dependent_elements_p): Declare it. + * decl.c (value_dependent_init_p): New function. + (cp_finish_decl): Use it. + * pt.c (value_dependent_expression_p): Use + any_value_dependent_elements_p. + * parser.c (cp_parser_primary_expression): Add comment about + treating dependent qualified names as integral + constant-expressions. + +2007-07-04 Douglas Gregor <doug.gregor@gmail.com> + + * decl.c (build_ptrmemfunc_type): Always use structural equality + tests when comparing pointer-to-member-function types, because the + handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical + types. + +2007-07-03 Mark Mitchell <mark@codesourcery.com> + + * init.c (build_new): Tweak comment. + +2007-06-29 Dave Brolley <brolley@redhat.com> + + PR c++/31743 + * parser.c (cp_parser_new_type_id): Don't reduce a named array + type to its base type and number of elements here. + * init.c (build_new): Call complete_type_or_else to ensure that the + type is complete and to issue a diagnostic if it is not. + (build_new_1): Don't call complete_type_or_else here. + +2007-07-03 Richard Guenther <rguenther@suse.de> + + PR c++/32609 + * class.c (fixed_type_or_null): Re-lookup the hashtable slot + after recursing. + +2007-07-02 Simon Baldwin <simonb@google.com> + + * parser.c (cp_parser_elaborated_type_specifier): Added a warning + for inner-style nested forward declarations that don't declare + anything useful. + +2007-07-02 Jakub Jelinek <jakub@redhat.com> + + PR c++/31748 + * semantics.c (finish_omp_clauses): Use %qD instead of %qE for + DECL_P in not a variable and appears more than once error messages. + +2007-07-01 Ollie Wild <aaw@google.com> + + * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden. + (select_decl): Remove function. + (unqualified_namespace_lookup): Populate binding by calling + ambiguous_decl. Remove select_decl call. + (lookup_qualified_name): Remove select_decl call. + * decl.c (lookup_and_check_tag): Check for ambiguous references. + * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error + generation when name lookup is ambiguous. + +2007-06-29 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/31724 + * init.c (build_new_1): Use structural equality on the copy of the + array type. + +2007-06-28 Geoffrey Keating <geoffk@apple.com> + + * decl2.c (determine_visibility): Implement + flag_visibility_ms_compat effect on type info. + * decl.c (cxx_init_decl_processing): Implement + global effect of flag_visibility_ms_compat. + +2007-06-28 Geoffrey Keating <geoffk@apple.com> + + * decl2.c (start_objects): Mark constructor-running function + as artificial. + +2007-06-26 Simon Martin <simartin@users.sourceforge.net> + + PR c++/32111 + * decl.c (grokdeclarator): Reset friendp for member functions declared + friend of their own class. + +2007-06-23 Mark Mitchell <mark@codesourcery.com> + + * decl2.c (determine_visibility): Don't look for dllexport here. + (determine_visibility_from_class): Tidy. + +2007-06-18 Simon Baldwin <simonb@google.com> + + PR c++/31923 + * parser.c (cp_parser_single_declaration): Added check for storage + class other than sc_none in parsed declaration, and a flag to indicate + if the call is part of an explicit template specialization parse. + * (cp_parser_explicit_specialization): Specialization check flag added + to call to cp_parser_single_declaration(), set true. + * (cp_parser_template_declaration_after_export): Specialization check + flag added to call to cp_parser_single_declaration(), set false. + * pt.c (check_explicit_specialization): Added code to copy visiblity + and linkage from the templated function to the explicit specialization. + +2007-06-15 Andrew Pinski <andrew_pinski@playstation.sony.com> + + * typeck.c (build_binary_op): For templates build the + expression in pieces to avoid the assert in build2_stat. + (get_member_function_from_ptrfunc): + Change over to using POINTER_PLUS_EXPR and convert + the second operand to sizetype. + * typeck2.c (build_m_component_ref): Likewise. + * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR + instead of PLUS_EXPR for pointers. + (build_new_1): Likewise. + (build_vec_delete_1): Likewise. + (build_vec_delete): Likewise. + * class.c (build_base_path): Likewise. + (build_base_path): Likewise. + (convert_to_base_statically): Likewise. + (fixed_type_or_null): Handle POINTER_PLUS_EXPR. + (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR + instead of PLUS_EXPR. + (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR + instead of PLUS_EXPR for pointers. + * call.c (build_special_member_call): Likewise. + * rtti.c (build_headof): Likewise. + Use sizetype instead of ptrdiff_type_node. + (tinfo_base_init): Create a POINTER_PLUS_EXPR + instead of PLUS_EXPR for pointers. + * except.c (expand_start_catch_block): Do a + NEGATIVE and then a POINTER_PLUS_EXPR instead + of a MINUS_EXPR. + * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert + PLUS_EXPR on pointer types over to use + POINTER_PLUS_EXPR and remove the conversion + to the pointer types. + * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for + adding to a pointer type. Use size_int instead of + ssize_int. Convert the index to sizetype before + adding it to the pointer. + +2007-06-15 Mark Mitchell <mark@codesourcery.com> + + * cp-tree.h (DECL_VAR_MARKED_P): Remove. + (DECL_ANON_UNION_VAR_P): New macro. + * class.c (fixed_type_or_null): Tidy. Use a hash table, rather + than DECL_VAR_MARKED_P, to keep track of which variables we have + seen. + * decl.c (redeclaration_error_message): Complain about redeclaring + anonymous union members at namespace scope. + * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P. + +2007-06-14 Geoff Keating <geoffk@apple.com> + + * decl2.c (determine_visibility): Ensure that functions with + hidden types as parameters are hidden. + + PR 31093 + * decl2.c (determine_visibility): Remove duplicate code for + handling type info. + +2007-06-12 Ian Lance Taylor <iant@google.com> + + PR libstdc++/29286 + * init.c (avoid_placement_new_aliasing): New static function. + (build_new_1): Call it. + +2007-06-11 Rafael Ãvila de EspÃndola <espindola@google.com> + + * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove. + (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove. + +2007-06-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/32177 + * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr + on init, the non-decl cond operand and increment value. + +2007-06-07 Simon Martin <simartin@users.sourceforge.net> + + PR c++/30759 + * decl.c (check_initializer): Report an error when a brace enclosed + initializer is used for a non-aggregate type in C++98. + (redeclaration_error_message): Rewrote flag_cpp0x in terms of + cxx_dialect. + (grokdeclarator): Likewise. + (move_fn_p): Likewise. + * typeck.c (check_return_expr): Likewise. + * call.c (reference_binding): Likewise. + * error.c (cp_cpp_error): Likewise. + * pt.c (check_default_tmpl_args): Likewise. + (tsubst): Likewise. + * lex.c (init_reswords): Likewise. + * parser.c (p_parser_primary_expression): Likewise. + (TOKEN_PRECEDENCE): Likewise. + (cp_parser_init_declarator): Likewise. + (cp_parser_ptr_operator): Likewise. + (cp_parser_parameter_declaration): Likewise. + (cp_parser_enclosed_template_argument_list): Likewise. + (cp_parser_skip_to_end_of_template_parameter_list): Likewise. + (cp_parser_next_token_ends_template_argument_p): Likewise. + +2007-06-04 Simon Baldwin <simonb@google.com> + + * decl.c (grokdeclarator): Readability change. Moved case labels + into direct switch statement scope. + +2007-06-04 Paolo Carlini <pcarlini@suse.de> + + * call.c (convert_like_real): Remove pointless code. + +2007-05-31 Mark Mitchell <mark@codesourcery.com> + + * decl.c (get_atexit_fn_ptr_type): New function. + (get_atexit_node): Use it. + (start_cleanup_fn): Likewise. + (register_dtor_fn): Use the object's destructor, instead of a + separate cleanup function, where possible. + * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator. + (atexit_fn_ptr_type_node): New macro. + * decl2.c (build_cleanup): Use build_address. + +2007-05-31 Daniel Berlin <dberlin@dberlin.org> + + * typeck.c (build_binary_op): Include types in error. + +2007-05-31 Jakub Jelinek <jakub@redhat.com> + + PR c++/31806 + * decl.c (cp_finish_decl): Also clear was_readonly if a static var + needs runtime initialization. + +2007-05-31 Paolo Carlini <pcarlini@suse.de> + + PR c++/32158 + * semantics.c (finish_trait_expr): Complete the types. + +2007-05-30 Russell Yanofsky <russ@yanofsky.org> + Douglas Gregor <doug.gregor@gmail.com> + Pedro Lamarao <pedro.lamarao@mndfck.org> + Howard Hinnant <howard.hinnant@gmail.com> + + PR c++/7412 + PR c++/29939 + * typeck.c (comptypes): Don't consider rvalue and lvalue + reference types to be equivalent. + (check_return_expr): Move from certain lvalues when returning + them. + * decl.c (grokdeclarator): Implement reference collapsing. + (copy_fn_p): Don't consider constructors taking rvalue references + to be copy constructors. + (move_fn_p): New. + * call.c (conversion): New "rvaluedness_matches_p" member. + (convert_class_to_reference): Require reference type as first + parameter instead of base type. + (reference_binding): Add logic to handle rvalue references. + (implicit_conversion): Update inaccurate comment. + (convert_like_real): Disable creation of temporaries that are + impossible to initialize for types with move constructors. + (build_over_call): Elide move constructors when possible. + (maybe_handle_implicit_object): Set "rvaluedness_matches_p". + (maybe_handle_ref_bind): Return conversion instead of type node. + (compare_ics): Add logic to use "rvaluedness_matches_p" values to + determine preferred conversion sequences. + * cp-tree.h (TYPE_REF_IS_RVALUE): New. + (LOOKUP_PREFER_RVALUE): New. + (DECL_MOVE_CONSTRUCTOR_P): New. + (struct cp_declarator): Add "reference" member for reference + types, with new "rvalue_ref" flag. + (cp_build_reference_type): Declare. + (move_fn_p): Declare. + * error.c (dump_type_prefix): Format rvalue reference types + correctly in error messages. + * except.c (build_throw): Move from certain lvalues when + throwing. + * mangle.c (write_type): Mangle rvalue references differently + than regular references. + * parser.c (make_reference_declarator): Add boolean parameter for + rvalue references. + (cp_parser_make_indirect_declarator): New. + (cp_parser_new_declarator_opt): Call + cp_parser_make_indirect_declarator. + (cp_parser_conversion_declarator_opt): Ditto. + (cp_parser_declarator): Ditto. + (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference + declarators. + * pt.c (tsubst): Implement reference collapsing. + (maybe_adjust_types_for_deduction): Implement special template + parameter deduction rule for rvalue references. + (type_unification_real): Update calls to + maybe_adjust_types_for_deduction. + (try_one_overload): Ditto. + (unify_pack_expansion): Ditto. + * tree.c (lvalue_p_1): Handle rvalue reference types. + (cp_build_reference_type): New. + +2007-05-30 Jakub Jelinek <jakub@redhat.com> + + PR c++/31809 + * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC + variables that need runtime initialization. + +2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com> + + PR c++/31339 + * typeck.c (build_unary_op <case PREINCREMENT_EXPR, + case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR, + case POSTDECREMENT_EXPR>): Return the error_mark_node + if either the real or imaginary parts would an + error_mark_node. + +2007-05-25 Simon Martin <simartin@users.sourceforge.net> + Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/31745 + * parser.c (cp_parser_skip_to_closing_brace): Return true if the next + token is a closing brace, false if there are no tokens left. + (cp_parser_namespace_alias_definition): Only consume the next token if + it is a closing brace. + + * parser.c (cp_parser_class_specifier): Likewise. + +2007-05-25 H.J. Lu <hongjiu.lu@intel.com> + + * semantics.c (finish_member_declaration): Fix a typo in the + last checkin. + +2007-05-25 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/31431 + PR c++/31432 + PR c++/31434 + PR c++/31435 + PR c++/31437 + PR c++/31438 + PR c++/31442 + PR c++/31443 + PR c++/31444 + PR c++/31445 + * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes. + * cp-tree.h (check_for_bare_parameter_packs): Returns bool. + * pt.c (check_for_bare_parameter_packs): Return bool indicated + whether everything was okay. Fix indentation. + (push_template_decl_real): Check for bare parameter packs in + function parameters; where errors occur, mark the parameter types + with ERROR_MARK_NODEs to avert ICEs. + (coerce_template_parameter_pack): New. + (coerce_template_parms): Moved parameter pack coercion into + coerce_template_parameter_pack, and permit it anywhere in the + template parameter list (not just at the end). Parameter and + argument indices can vary (somewhat) separately now, so add + PARM_IDX and ARG_IDX. + (fn_type_unification): Don't set an argument pack as incomplete if + no argument pack was deduced. + (type_unification_real): If a type parameter is a parameter pack + and has not otherwise been deduced, it will be deduced to an empty + parameter pack. + (more_specialized_fn): Use the actual lengths of the argument + lists when comparing against expansions. + * semantics.c (finish_member_declaration): If a field's type has + bare parameter packs, error and set its type to ERROR_MARK_NODE. + +2007-05-24 Danny Smith <dannysmith@users.sourceforge.net> + + PR target/27067 + * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name. + +2007-05-22 Ollie Wild <aaw@google.com> + + * name-lookup.c (ambiguous_decl): Adds check for hidden types. + (unqualified_namespace_lookup): Adds check for hidden types. + +2007-05-22 Ollie Wild <aaw@google.com> + + * decl.c (duplicate_decls): Verify namespace names are unique. + +2007-05-21 Mark Mitchell <mark@codesourcery.com> + + * decl.c (cxx_maybe_build_cleanup): Handle + __attribute__((cleanup)). + +2007-05-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * cvt.c (cp_convert_and_check): Don't check warnings if the + conversion failed. + +2007-05-18 Geoffrey Keating <geoffk@apple.com> + + * mangle.c (write_real_cst): Use 'unsigned long' for %lx. + +2007-05-14 Paolo Carlini <pcarlini@suse.de> + + PR c++/29928 + * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the + type only if is a class type (5.2.8/4). + +2007-05-14 Rafael Ãvila de EspÃndola <espindola@google.com> + + * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove. + * decl.c (grokdeclarator): Use unsigned_type_for instead of + c_common_unsigned_type. + +2007-05-11 Silvius Rus <rus@google.com> + + * typeck.c (build_indirect_ref): Add call to + strict_aliasing_warning. + (build_reinterpret_cast_1): Condition call to + strict_aliasing_warning. + +2007-05-11 Jan Hubicka <jh@suse.cz> + + * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn. + * decl2.c (start_objects): ctors and dtors are no longer public. + (cp_write_global_declarations): Do not call c_build_cdtor_fns. + +2007-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com> + + * typeck.c (build_unary_op): Remove code that used to + handle non lvalue increments/decrements. + +2007-05-07 Mike Stump <mrs@apple.com> + + * parser.c (check_empty_body): Add. + (cp_parser_iteration_statement): Add call to check_empty_body. + +2007-05-05 Geoffrey Keating <geoffk@apple.com> + + PR 31775 + * mangle.c (write_mangled_name): Mangle static variable names. + (write_unqualified_name): Use local-source-name for + namespace-scope static variables. + +2007-05-04 Dirk Mueller <dmueller@suse.de> + + * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is + not in effect. + +2007-05-02 Seongbae Park <seongbae.park@gmail.com> + + PR c++/31663 + * decl2.c (constrain_class_visibility): + Use strip_pointer_or_array_types instead of strip_array_types. + +2007-04-28 Andrew Pinski <andrew_pinski@playstation.sony.com> + + PR C++/30221 + * decl.c (reshape_init_r): Don't reshape the first element if it + is a pointer to member function. + +2007-04-27 Simon Baldwin <simonb@google.com> + + * decl.c (grokparms): Changed message format from %qD to %qE. + +2007-04-27 Douglas Gregor <doug.gregor@gmail.com> + + * error.c (maybe_warn_variadic_templates): Variadic templates are + now in C++0x, so only warn about them in C++98 mode. + +2007-04-26 Andrew Pinski <andrew_pinski@playstation.sony.com> + + PR C++/30016 + * typeck.c (build_reinterpret_cast_1): Only allow conversion to + integeral types from vectors types. + +2007-04-26 Jakub Jelinek <jakub@redhat.com> + + PR c++/31598 + * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO + for type dependent OMP_CLAUSE_DECLs. + +2007-04-24 Mark Mitchell <mark@codesourcery.com> + + PR c++/31338 + * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE. + * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as + COMPLEX_TYPE is now an ARITHMETIC_TYPE. + * init.c (build_zero_init): Adjust, as + COMPLEX_TYPE is now a SCALAR_TYPE. + * typeck2.c (digest_init): Allow brace-enclosed initializers for + COMPLEX_TYPE, even though that is now a SCALAR_TYPE. + +2007-04-25 Paolo Carlini <pcarlini@suse.de> + + * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust + per N2255; rename as classtype_has_nothrow_assign_or_copy_p. + (trait_expr_value): Adjust. + +2007-04-23 Simon Baldwin <simonb@google.com> + + * decl.c (grokparms): Added new error for duplicate function + parameters names in function prototypes, to match gcc behavior. + +2007-04-23 Jan Hubicka <jh@suse.cz> + + * decl2.c (finish_objects): Do not call target constructor/destructor + bits dirrectly. + +2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com> + + * cp-tree.h (lang_tree_node): Use GENERIC_NEXT + instead of checking GIMPLE_STMT_P in chain_next. + +2007-04-17 Mark Mitchell <mark@codesourcery.com> + + PR c++/31513 + * call.c (convert_for_arg_passing): Convert bitfields to their + declared types. + +2007-04-17 Simon Martin <simartin@users.sourceforge.net> + + PR c++/31517 + * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs. + +2007-04-16 Seongbae Park <seongbae.park@gmail.com> + + PR c++/29365 + * decl2.c (constrain_class_visibility): + Do not warn about the use of anonymous namespace in the main input file. + +2007-04-15 Mark Mitchell <mark@codesourcery.com> + + * cp-tree.h (current_template_parms): Fix typo in comment. + +2007-04-15 Kazu Hirata <kazu@codesourcery.com> + + * cp-tree.h, error.c: Fix comment typos. + +2007-04-13 Jason Merrill <jason@redhat.com> + + PR c++/31074 + * call.c (reference_binding): Add c_cast_p parm. If true, + add quals to TO as needed to make it reference-compatible. + +2007-04-11 Jan Hubicka <jh@suse.cz> + + * class.c (convert_to_base_statically): Fold produced tree; verify + that we are not processing template_decl. + +2007-04-09 Mark Mitchell <mark@codesourcery.com> + + PR c++/31449 + * class.c (build_base_path): Ensure that the converted pointer has + the same cv-qualification as the input. + +2007-04-09 Paolo Carlini <pcarlini@suse.de> + + * tree.c (cp_tree_equal): Deal with TRAIT_EXPR. + +2007-04-08 Steven Bosscher <steven@gcc.gnu.org> + + * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS): + Do not set it. + (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it. + * tree.c (cp_add_pending_fn_decls): Remove. + * cp-tree.h (cp_add_pending_fn_decls): Remove prototype. + +2007-04-07 Daniel Berlin <dberlin@dberlin.org> + + Revert change removing staticp. + +2007-04-06 Daniel Berlin <dberlin@dberlin.org> + + * cp-objcp-common.c (cxx_staticp): Remove. + * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove. + * cp-tree.h (cxx_staticp): + +2007-04-04 Danny Smith <dannysmith.users.sourceforge.net> + + * class.c (check_for_override): Don't remove dllmport attribute + of virtual methods. + +2007-04-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/30847 + * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void + type issue error and return early. + +2007-03-30 Jason Merrill <jason@redhat.com> + + PR c++/31187 + * typeck.c (cp_type_readonly): New fn. + * cp-tree.h: Declare it. + * decl.c (start_decl): Set implicit DECL_THIS_STATIC here. + (cp_finish_decl): Not here. + +2007-03-31 Richard Guenther <rguenther@suse.de> + + * optimize.c (maybe_clone_body): Replace splay-tree usage by + pointer-map. + +2007-03-31 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/31138 + PR c++/31140 + PR c++/31141 + * parser.c (declarator_can_be_parameter_pack): New. + (cp_parser_template_parameter): Only parse the `...' if the + declarator can be a parameter pack. + (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE + is NULL. + * pt.c (find_parameter_packs_r): Look into the bounds on integer + types (they could be used as array bounds). + (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX. + (tsubst_pack_expansion): Handle failure to expand parameter + packs. + +2007-03-30 Paolo Carlini <pcarlini@suse.de> + + PR c++/26099 + * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr, + TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add. + (enum cp_tree_node_structure_enum, union lang_tree_node): Update. + (CLASS_TYPE_NON_UNION_P): Add. + (struct lang_type_class): Add has_complex_dflt. + (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add. + (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare. + * cp-tree.def: Add TRAIT_EXPR. + * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case. + * lex.c (struct resword): Add __has_nothrow_assign, + __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign, + __has_trivial_constructor, __has_trivial_copy, + __has_trivial_destructor, __has_virtual_destructor, __is_abstract, + __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum, + __is_pod, __is_polymorphic, __is_union. + * parser.c (cp_parser_primary_expression): Deal with the new RIDs. + (cp_parser_trait_expr): New. + * semantics.c (finish_trait_expr, trait_expr_value + classtype_has_nothrow_copy_or_assign_p): New. + * method.c (locate_copy, locate_ctor, locate_dtor): Do not define + as static. + * decl.c (cp_tree_node_structure): Add TRAIT_EXPR. + * class.c (check_bases, check_field_decl, check_bases_and_members): + Deal with TYPE_HAS_COMPLEX_DFLT (t) too. + * pt.c (uses_template_parms, tsubst_copy_and_build, + value_dependent_expression_p, type_dependent_expression_p): Deal with + TRAIT_EXPR. + * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR. + +2007-03-29 Richard Guenther <rguenther@suse.de> + + * tree.c (cp_walk_subtrees): Do not set input_location. + +2007-03-28 Simon Martin <simartin@users.sourceforge.net> + + PR c++/29077 + * decl.c (grokfndecl): Properly setup decl if it is a constructor or a + destructor. + +2007-03-28 Douglas Gregor <doug.gregor@gmail.com> + + * parser.c (struct cp_parser): Update comment for + greater_than_is_operator_p. + (cp_parser_primary_expression): In C++0x mode, a cast operator can + be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P. + (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when + !GREATER_THAN_IS_OPERATOR_P. + (cp_parser_binary_expression): When -Wc++0x-compat, warn about + `>>' operators that will become two `>' tokens in C++0x. + (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x + mode, allowing it to terminate default arguments. + (cp_parser_enclosed_template_argument_list): In C++0x mode, treat + `>>' like two consecutive `>' tokens. + (cp_parser_skip_to_end_of_template_parameter_list): Ditto. + (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>' + ends a template argument. + +2007-03-28 Douglas Gregor <doug.gregor@gmail.com> + + * decl.c (redeclaration_error_message): Complain when redeclaring + a friend function with default template arguments (C++0x mode only). + * cp-tree.h (check_default_tmpl_args): Declare. + * pt.c (check_default_tmpl_args): In C++0x mode, permit default + template arguments in function templates. Add support for checking + the default template arguments of friend templates. + (push_template_decl_real): Fix call to check_default_tmpl_args. + (type_unification_real): If a template parameter has not been + deduced but provides a default template argument, substitute into + that default template argument. + * parser.c (cp_parser_init_declarator): When declaring (but not + defining!) a function template in C++0x mode, check for default + template arguments. + +2007-03-28 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/29993 + * decl.c (grokdeclarator): Deal with cv-qualified function type + typedefs in the same way for member and non-member functions. + +2007-03-26 Dirk Mueller <dmueller@suse.de> + + * parser.c (cp_parser_member_declaration): Pedwarn + about stray semicolons after member declarations. + +2007-03-26 Paolo Carlini <pcarlini@suse.de> + + PR c++/30500 + * pt.c (instantiate_decl): Set in_system_header. + +2007-03-22 Mark Mitchell <mark@codesourcery.com> + + * cp-tree.h (current_tempalte_parms): Improve documentation. + * pt.c (current_template_args): Likewise. + + PR c++/30863 + * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do + not consume tokens when failing. + +2007-03-22 Jim Wilson <wilson@specifix.com> + Mark Mitchell <mark@codesourcery.com> + + PR c++/31273 + * call.c (standard_conversion): Use type_decays_to. Keep FCODE + consistent with FROM. + +2007-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net> + + * error.c (dump_expr): Handle dependent names that designate types. + * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE. + +2007-03-17 Kazu Hirata <kazu@codesourcery.com> + + * cp-tree.def, parser.c, pt.c: Fix comment typos. + +2007-03-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * cvt.c (cp_convert_and_check) : Define. + * cp-tree.h (cp_convert_and_check): Declare. + * call.c (convert_conversion_warnings): Rename to + conversion_null_warnings. The warning for floating-point to + integer is handled by convert_and_check in convert_like_real. + (convert_like_real): convert_conversion_warnings was renamed as + conversion_null_warnings. + * typeck.c (build_binary_op): Use cp_convert_and_check to warn for + overflow and changes of value during conversion. + +2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/30891 + * parser.c (cp_parser_statement): If 'namespace' is found, this + only can be a namespace alias definition, so parse it now. + (cp_parser_namespace_alias_definition): if we find an open brace + instead of '=', then this is actually a misplaced namespace + definition. + +2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/24924 + * decl.c (cxx_init_decl_processing): Move command-line options + processing to c-opts.c. + +2007-03-15 Douglas Gregor <doug.gregor@gmail.com> + + * ptree.c (cxx_print_type): Use formatting markup for integers + when printing template parameter index/level/orig level. + (cxx_print_xnode): Ditto. + * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0. + (struct template_parm_index_s): Remove the PARAMETER_PACK member. + Make INDEX, LEVEL, and ORIG_LEVEL integers instead of + HOST_WIDE_INTs. + (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int, + rather than a HOST_WIDE_INT. + Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and + NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for + better bit-packing. + (struct language_function): Make RETURNS_VALUE, RETURNS_NULL, + RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and + IN_BASE_INITIALIZER bool bitfields. + (struct cp_declarator): Make KIND a 4-bit field. Make + PARAMETER_PACK_P a bool bitfield just after KIND. + * pt.c (uses_parameter_packs): Destroy the pointer set. + (make_pack_expansion): Ditto. + (check_for_bare_parameter_packs): Ditto. + * name-lookup.c (push_to_top_level): Make need_pop a bool value. + +2007-03-14 Andrew Pinski <andrew_pinski@playstation.sony.com> + + PR c++/31165 + * call.c (convert_default_arg): Instead of copying the node, + unshare it. + +2007-03-15 Dirk Mueller <dmueller@suse.de> + + PR c++/30860 + * call.c (convert_conversion_warnings): New.. + (convert_like_real): .. factored out from here. + (convert_conversion_warnings): Add warning about + false being converted to NULL in argument passing. + +2007-03-14 Dirk Mueller <dmueller@suse.de> + + * semantics.c (c_finish_if_stmt): Call empty_if_body_warning. + (finish_do_body): Warn about empty body in do/while statement. + +2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning. + +2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c/21438 + * typeck.c (build_binary_op): Call warn_for_div_zero instead of + warning. + +2007-03-13 Alexandre Oliva <aoliva@redhat.com> + + * repo.c (init_repo): Initialize random_seed saved options. + (finish_repo): Adjust. + +2007-03-13 Mark Mitchell <mark@codesourcery.com> + + PR bootstrap/30899 + * Make-lang.in (doc/g++.1): Use $< to specify the location from + which to copy. + +2007-03-12 Seongbae Park <seongbae.park@gmail.com> + + * decl.c (compute_array_index_type): New warning flag warn_vla. + +2007-03-12 Mark Mitchell <mark@codesourcery.com> + + PR c++/30108 + * call.c (convert_default_arg): Copy non-constant arguments. + +2007-03-11 Mark Mitchell <mark@codesourcery.com> + + PR c++/31038 + * parser.c (cp_parser_postfix_expression): Disallow compound + literals in constant expressions. + + PR c++/30328 + * semantics.c (finish_typeof): Use unlowered_expr_type. + +2007-03-10 Mark Mitchell <mark@codesourcery.com> + + PR c++/30274 + * cp-tree.h (unlowered_expr_type): New function. + * typeck.c (is_bitfield_expr_with_lowered_type): Handle + COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR. + (unlowered_expr_type): New function. + (build_unary_op): Disallow predecrements of bool bitfields. + * call.c (build_conditional_expr): Use unlowered_expr_type. + * pt.c (type_unification_real): Likewise. + +2007-03-09 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/20599 + * typeck.c (check_return_expr): Check for bare parameter packs. + (comptypes): Compare template parameter packs and + type pack expansions. + * decl.c (grokdeclarator): Deal with the declaration of function + parameter packs. + (grokparms): Verify that the (optional) function parameter pack is + at the end of the parameter list. + (xref_basetypes): Handle pack expansions in the base class. + (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT. + * cp-tree.def (TYPE_ARGUMENT_PACK): New. + (NONTYPE_ARGUMENT_PACK): New. + (TYPE_PACK_EXPANSION): New. + (EXPR_PACK_EXPANSION): New. + (ARGUMENT_PACK_SELECT): New. + * cp-objcp-common.c (cp_tree_size): Compute size of + (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and + ARGUMENT_PACK_SELECT. + * error.c (dump_template_argument): Print template argument packs. + (dump_template_argument_list): Ditto. + (dump_template_parameter): Dump `...' for template type parameter + packs. + (dump_type): Dump TYPE_PACK_EXPANSION nodes. + (dump_parameters): Print function parameter packs. + (dump_template_parms): Print template argument packs. + (dump_expr): Dump EXPR_PACK_EXPANSION nodes. + (maybe_warn_variadic_templates): New. + * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION. + * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK, + NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION, + CAST_EXPR. + * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION. + (write_template_arg): Write argument packs as separate arguments. + * cp-tree.h (struct template_parm_index_s): Add flag that + indicates that the template parameter is actually a parameter + pack. + (struct tree_argument_pack_select): New. + (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT. + (union lang_tree_node): Add argument_pack_select. + (FUNCTION_PARAMETER_PACK_P): New. + (PACK_EXPANSION_P): New. + (PACK_EXPANSION_PATTERN): New. + (SET_PACK_EXPANSION_PATTERN): New. + (PACK_EXPANSION_PARAMETER_PACKS): New. + (ARGUMENT_PACK_P): New. + (ARGUMENT_PACK_ARGS): New. + (SET_ARGUMENT_PACK_ARGS): New. + (ARGUMENT_PACK_INCOMPLETE_P): New. + (ARGUMENT_PACK_EXPLICIT_ARGS): New. + (TEMPLATE_PARM_PARAMETER_PACK): New. + (TEMPLATE_TYPE_PARAMETER_PACK): New. + (ARGUMENT_PACK_SELECT_FROM_PACK): New. + (ARGUMENT_PACK_SELECT_INDEX): New. + (ARGUMENT_PACK_SELECT_ARG): New. + (struct cp_declarator): Add parameter_pack_p flag. + (maybe_warn_variadic_templates): Declare. + (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to + indicate a template parameter pack. + (uses_parameter_packs): Declare. + (template_parameter_pack_p): Declare. + (template_parms_variadic_p): Declare. + (make_pack_expansion): Declare. + (check_for_bare_parameter_packs): Declare. + * cxx-pretty-print.c (pp_cxx_unary_expression): Print + sizeof... expressions. + (pp_cxx_expression): Print pack expansions and non-type argument + packs. + (pp_cxx_exception_specification): Print pack expansions. + (pp_cxx_direct_declarator): Print ellipsis for parameter packs. + (pp_cxx_ctor_initializer): Print pack expansions. + (pp_cxx_type_id): Print pack expansions. + (pp_cxx_template_argument_list): Print argument packs. + (pp_cxx_template_parameter): Print ellipsis for template parameter + packs. + * pt.c (comp_template_parms): Compare template parameter packs. + (template_parameter_pack_p): New. + (template_parms_variadic_p): New. + (template_args_variadic_p): New. + (make_ith_pack_parameter_name): New. + (struct find_parameter_pack_data): New. + (find_parameter_packs_r): New. + (uses_parameter_packs): New. + (make_pack_expansion): New. + (check_for_bare_parameter_packs): New. + (expand_template_argument_pack): New. + (reduce_template_parm_level): Propagate parameter pack flag. + (process_template_parm): Add is_parameter_pack parameter to state + when the parameter is actually a parameter pack. Create template + parameter packs when is_parameter_pack is true. + (current_template_args): The argument for a template parameter + pack is an argument pack containing a single pack expansion. + (process_partial_specialization): When checking that non-type + argument expressions do not involve template parameters, loop over + the arguments in argument packs separately. + (push_template_decl_real): Check that the type of the declaration + does not have any bare parameter packs. Check that primary + templates have no more than one parameter pack, and that it comes + at the end of the template parameter list. + (convert_template_argument): Handle coercions for pack expansion + expressions by coercing the pattern then rebuilding the expansion. + (coerce_template_parms): When coercing the arguments for a + variadic template, pack "extra" arguments into an argument pack. + (coerce_template_template_parms): Cannot coerce between parameter + packs and non-pack parameters. + (template_args_equal): Compare PACK_EXPANSION_P expressions. + (comp_template_args): Expand all template arguments packs before + comparing template argument lists. + (mangle_class_name_for_template): Make argument packs as separate + template arguments. + (for_each_template_parm_r): No need to handle BASELINK. + (instantiate_class_template): Handle pack expansions in the base + class list. + (tsubst_pack_expansion): New. + (tsubst_template_args): Handle substitutions of argument packs and + pack expansion into template argument lists. + (tsubst_decl): Expand function parameter packs into separate + function parameters. + (tsubst_arg_types): Expand a type pack expansion into separate + argument types. + (tsubst_exception_specification): Handle pack expansions in + exception specifiers. + (tsubst): See through ARGUMENT_PACK_SELECT arguments when + replacing a template parameter with its argument. If we encounter + a substitution for an argument pack, just return the parameter + itself. + (tsubst_copy): sizeof(X...) returns the number of elements in + parameter pack X. See through ARGUMENT_PACK_SELECT when the + PARM_DECL is a parameter pack. + (tsubst_expr): Expression pack expansions and argument packs + cannot show up here; they will all be handled through function + calls, sizeof, and template argument lists. + (tsubst_copy_and_build): sizeof(X...) returns the number of + elements in parameter pack X. Handle pack expansions in TREE_LIST + and CONSTRUCTOR nodes. + (fn_type_unification): Handle "incomplete" explicit template + argument lists that specify some of the arguments for a template + parameter pack. + (type_unification_real): Unify arguments against pack expansions. + (template_parm_level_and_index): New, helper function. + (unify_pack_expansion): New. + (unify): Unify argument packs on an argument-by-argument basis, + handling variadic argument packs as well. + (more_specialized_fn): Handle unification of function parameter + packs. All things being equal, prefer non-variadic function + templates to variadic function templates. + (more_specialized_class): Prefer the variadic class template + partial specialization that binds fewer arguments to a parameter + pack. + (regenerate_decl_from_template): Expand function parameter packs + into separate parameters. + (instantiate_decl): Ditto. + (tsubst_initializer_list): Handle pack expansions for base-class + initializers. + (dependent_type_p_r): Determine dependent types in argument packs + and pack expansions. + (value_dependent_expression_p): Determine value-dependence of + non-type argument packs. + (dependent_template_arg_p): Handle argument packs. + * semantics.c (finish_cond): Check for bare parameter packs. + (finish_expr_stmt): Ditto. + (finish_for_expr): Ditto. + (finish_switch_cond): Ditto. + (finish_mem_initializers): Ditto. + * name-lookup.c (arg_assoc_type): Handle pack expansions and + argument packs. + * decl2.c (cp_build_parm_decl): Mark function parameter packs. + * parser.c (make_declarator): Declarator is not an expansion. + (make_pointer_declarator): Transfer parameter pack flag to outer + declarator. + (make_reference_declarator): Ditto. + (make_ptrmem_declarator): Ditto. + (make_call_declarator): Ditto. + (make_array_declarator): Ditto. + (cp_parser_postfix_expression): Allow pack expansion expressions + in the argument list for a call expression. + (cp_parser_parenthesized_expression_list): Add new parameter + ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand + into separate arguments." + (cp_parser_new_placement): Allow pack expansion expressions. + (cp_parser_new_initializer): Ditto. + (cp_parser_mem_initializer_list): Allow ellipsis to create a + base-class initializer expansion. + (cp_parser_mem_initializer): Ditto. + (cp_parser_template_parameter_list): Keep track of whether the + template parameter is a template parameter pack. + (cp_parser_template_parameter): Parse the ellipsis to indicate a + template parameter pack. + (cp_parser_type_parameter): Ditto. + (cp_parser_template_argument_list): Parse the ellipsis to indicate + a pack expansion. + (cp_parser_direct_declarator): Parse the ellipsis to indicate that + this declarator is a parameter pack. + (cp_parser_parameter_declaration): The ellipsis does not end the + parameter declaration, because it might be a parameter pack. Parse + the ellipsis to indicate a parameter pack. + (cp_parser_initializer): Allow pack expansions. + (cp_parser_initializer_list): Allow ellipsis to create an + initializer expansion. + (cp_parser_base_clause): Allow ellipsis to create a base specifier + expansion. + (cp_parser_type_id_list): Allow ellipsis to create an exception + specifier expansion. + (cp_parser_attribute_list): Don't allow pack expansions. + (cp_parser_functional_cast): Allow pack expansions. + (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to + compute the length of a parameter pack. + (cp_parser_next_token_ends_template_argument_p): An ellipsis can + end a template argument. + * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK, + NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION, + CAST_EXPR. + +2007-03-09 Dirk Mueller <dmueller@suse.de> + + * call.c (build_new_op): Call warn_logical_operator. + +2007-03-08 Volker Reichelt <v.reichelt@netcologne.de> + + PR c++/30852 + * semantics.c (finish_offsetof): Handle COMPOUND_EXPR. + + PR c++/30534 + * pt.c (any_template_arguments_need_structural_equality_p): + Robustify. + +2007-03-08 Alexandre Oliva <aoliva@redhat.com> + + * decl.c (grokdeclarator): Disable warnings for anonymous + bitfields. + +2007-03-05 Volker Reichelt <v.reichelt@netcologne.de> + + * typeck2.c (readonly_error): Always emit a hard error. + Remove last argument. + * cp-tree.h (readonly_error): Adjust prototype. + * semantics.c (finish_asm_stmt): Adjust call to readonly_error. + * typeck.c (build_unary_op): Likewise. + (build_modify_expr): Likewise. + +2007-03-04 Simon Martin <simartin@users.sourceforge.net> + + PR c++/30895 + * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees. + +2007-03-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/15787 + * parser.c (struct cp_parser): New IN_IF_STMT. + (cp_parser_statement_seq_opt): Handle an unexpected 'else', + returning if parsing the body of an 'if' statement or issuing an + error and continuing. + (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing + body of 'if'. + (cp_parser_jump_statement): Mask new IN_IF_STMT bit. + +2007-03-02 Simon Martin <simartin@users.sourceforge.net> + + PR c++/28253 + * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders + for thunks. + +2007-03-02 Geoffrey Keating <geoffk@apple.com> + + * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling + Objective-C++. Don't exit early if -shared-libgcc needs to be + added. + +2007-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * typeck.c (common_base_type): Delete unused function. + +2007-03-01 Brooks Moses <brooks.moses@codesourcery.com> + + * Make-lang.in: Add dummy lang.install-pdf target. + +2007-03-01 Simon Baldwin <simonb@google.com> + + PR c++/23689 + * decl.c (check_tag_decl): Added new warning for typedef ignored + when it precedes an otherwise valid non-typedef declaration. + +2007-02-28 Sandra Loosemore <sandra@codesourcery.com> + + * typeck.c (build_function_call): Store converted arguments + in a stack-allocated array instead of building a list. + (convert_arguments): Store arguments in the array passed in as an + argument, and return the actual number of arguments. + * call.c (build_call): Delete, and replace with... + (build_call_n, build_call_a): New. + (build_op_delete_call): Rewrite to avoid constructing argument lists. + (build_over_call): Store converted arguments in a stack-allocated + array instead of building a list. + (build_cxx_call): Pass arguments in an array instead of as a list. + (build_java_interface_fn_ref): Rewrite to avoid constructing + argument lists. + * tree.h: Update declarations to reflect above changes. + * method.c (use_thunk): Use a stack-allocated array to hold + the arguments instead of a list. + * rtti.c (throw_bad_cast): Update call to cxx_call. + (throw_bad_typeid): Likewise. + (build_dynamic_cast_1): Likewise. + * init.c (build_builtin_delete_call): Use build_call_n. + * decl.c (expand_static_init): Likewise. + * except.c (cp_protect_cleanup_actions): Likewise. + * cp-gimplify.c (genericize_eh_spec_block): Likewise. + (gimplify_must_not_throw_expr): Likewise. + (cxx_omp_apply_fn): Use build_call_a. + +2007-02-26 Mark Mitchell <mark@codesourcery.com> + + * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn. + * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns. + +2007-02-25 Mark Mitchell <mark@codesourcery.com> + + * cp-tree.h (static_ctors): Remove. + * cp-tree.h (static_dtors): Likewise. + * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for + refactoring of tree_map hierarchy. + (decl_shadowed_for_var_insert): Likewise. + * semantics.c (expand_body): Use c_expand_body. + (expand_or_defer_fn): Don't update static_ctors or static_dtors. + * decl2.c (static_ctors): Remove. + (static_dtors): Likewise. + (generate_ctor_or_dtor_function): Pass NULL_TREE to + objc_generate_static_init_call. Do not call static_[cd]tors. + (generate_ctor_and_dtor_functions_for_priority): Do not check for + static_[cd]tors. + (cp_write_global_declarations): Likewise. + +2007-02-23 Richard Guenther <rguenther@suse.de> + + * class.c (note_name_declared_in_class): Make declaration + changes meaning a pedwarn. + +2007-02-22 Michael Matz <matz@suse.de> + + PR c++/29433 + * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag. + * error.c (dump_aggr_type, dump_simple_decl, dump_decl, + dump_function_decl): Guard emitting outer scopes by new flag. + * cp-lang.c (cxx_dwarf_name): New function. + (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name. + * pt.c (classtype_mangled_name, mangle_class_name_for_template): + Remove functions. + (push_template_decl_real, lookup_template_class): Remove calls + to above functions. + +2007-02-19 Mark Mitchell <mark@codesourcery.com> + + * call.c (build_new_method_call): Ensure that explicit calls of + destructors have type "void". + +2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * typeck.c (build_binary_op): Replace -Wstring-literal-comparison + and -Walways-true with -Waddress. + * cvt.c (convert_to_void): Replace unconditional warning with + -Waddress. + +2007-02-18 Kazu Hirata <kazu@codesourcery.com> + + * decl.c, tree.c: Fix comment typos. + +2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com> + + PR C++/30158 + * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the + statement expression if we had an error mark node. + +2007-02-15 Sandra Loosemore <sandra@codesourcery.com> + Brooks Moses <brooks.moses@codesourcery.com> + Lee Millward <lee.millward@codesourcery.com> + + * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation. + Change class to tcc_vl_exp. + + * call.c (build_call): Use build_call_list instead + of build3. + (build_over_call): Likewise. + (build_new_method_call): Use build_min_non_dep_call_list + instead of build_min_non_dep. + + * error.c (dump_call_expr_args): New function. + (dump_aggr_init_expr_args): New function. + (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. + Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros. + + * cvt.c (convert_to_void): Use build_call_array instead + of build3; use new AGGR_INIT_EXPR accessor macros. + + * mangle.c (write_expression): Use TREE_OPERAND_LENGTH + instead of TREE_CODE_LENGTH. + + * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new + AGGR_INIT_EXPR accessor macros. + + * cp-gimplify.c (cp_gimplify_init_expr): Use + AGGR_INIT_EXPR_SLOT to set the slot operand. + + * cp-tree.h (AGGR_INIT_EXPR_FN): New macro. + (AGGR_INIT_EXPR_SLOT): New macro. + (AGGR_INIT_EXPR_ARG): New macro. + (aggr_init_expr_nargs): New macro. + (AGGR_INIT_EXPR_ARGP): New macro. + (aggr_init_expr_arg_iterator): New. + (init_aggr_init_expr_arg_iterator): New. + (next_aggr_init_expr_arg): New. + (first_aggr_init_expr_arg): New. + (more_aggr_init_expr_args_p): New. + (FOR_EACH_AGGR_INIT_EXPR_ARG): New. + (stabilize_aggr_init): New declaration. + (build_min_non_dep_call_list): Likewise. + + * tree.c (process_aggr_init_operands): New function. + (build_aggr_init_array) New function. + (build_cplus_new): Update to use new CALL_EXPR and + AGGR_INIT_EXPR accessor macros. Replace use of build3 with + build_aggr_init_array. + (build_min_non_dep_call_list) New function. + (build_min_nt): Assert input code parameter is not a variable + length expression class. + (build_min, build_min_non_dep): Likewise. + (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments + to check for equality instead of recursing. Handle tcc_vl_exp + tree code classes. + (stabilize_call): Update to only handle CALL_EXPRs, not + AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros. + (stabilize_aggr_init): New function. + (stabilize_init): Use it. + + * cxx-pretty-print.c (pp_cxx_postfix_expression) + <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and + AGGR_INIT_EXPR accessor macros and argument iterators. + + * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with + build_vl_exp. Iterate through the operands, recursively + processing each one. + (tsubst_copy_and_build) <CALL_EXPR>: Update to use new + CALL_EXPR accessor macros. + (value_dependent_expression_p) <default>: Handle tcc_vl_exp + tree code classes. Use TREE_OPERAND_LENGTH instead of + TREE_CODE_LENGTH. + + * semantics.c (finish_call_expr): Use build_nt_call_list + instead of build_nt. + (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR + accessor macros. Use build_call_array to construct the + CALL_EXPR node instead of build3 + + * decl2.c (build_offset_ref_call_from_tree): Use + build_nt_call_list and build_min_non_dep_call_list instead + of build_min_nt and build_min_non_dep. + + * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>: + Use build_nt_call_list instead of build_min_nt. + +2007-02-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/28943 + * call.c (build_conditional_expr): Improve error message. + +2007-02-13 Dirk Mueller <dmueller@suse.de> + + * friend.c (do_friend): Annotate warning about friend + declarations in templates with OPT_Wnon_template_friend. + Convert informal message from warning() to inform(). + +2007-02-12 Simon Martin <simartin@users.sourceforge.net> + Mark Mitchell <mark@codesourcery.com> + + PR c++/14622 + * pt.c (do_decl_instantiation): Detect type mismatches in explicit + instantiations for variables. + +2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR middle-end/7651 + * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings. + Check warn_unused_value just once. + +2007-02-11 Mark Mitchell <mark@codesourcery.com> + + PR c++/26988 + * pt.c (determine_specialization): Use skip_artificial_parms_for. + (fn_type_unificiation): Likewise. + (get_bindings): Likewise. + +o2007-02-06 Mark Mitchell <mark@codesourcery.com> + + PR target/29487 + * decl.c (finish_function): Use DECL_REPLACEABLE. + * tree.c (cp_cannot_inline_tree_fn): Likewise. + +2007-02-10 Gabriel Dos Reis <gdr@integrable-solutions.net> + + * parser.c (cp_parser_primary_expression): Reformat overly long lines. + +2007-02-10 Richard Henderson <rth@redhat.com>, Jakub Jelinek <jakub@redhat.com> + + * decl.c (grokvardecl): Don't error if !have_tls. + (grokdeclarator): Likewise. + * parser.c (cp_parser_omp_threadprivate): Likewise. + +2007-02-07 Jakub Jelinek <jakub@redhat.com> + + PR c++/30703 + * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref + parameters and result decls in omp clauses. + (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs + by reference. + +2007-02-05 Dirk Mueller <dmueller@suse.de> + + PR bootstrap/30510 + * parser.c (cp_parser_class_specifier): Always initialize bases. + +2007-02-05 Paolo Bonzini <bonzini@gnu.org> + + * cp-tree.h (OMP_ATOMIC_CODE): Delete. + (OMP_ATOMIC_DEPENDENT_P): Rewrite. + * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC + expressions. + * semantics.c (finish_omp_atomic): Store a whole expression node + in operand 1, and integer_zero_node in operand 0, for dependent + OMP_ATOMIC. Rewrite to make flow easier to understand. + +2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net> + + * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0. + +2007-02-04 Kazu Hirata <kazu@codesourcery.com> + + * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c, + parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions. + +2007-02-03 Douglas Gregor <doug.gregor@gmail.com> + + * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x + keyword warning to -Wc++0x-compat. + +2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net> + + * decl.c (grokdeclarator): Update documentation. + +2007-02-02 Jakub Jelinek <jakub@redhat.com> + + PR c++/30536 + * decl.c (grokdeclarator): If __thread is used together with + a storage class other than extern and static, clear thread_p + after issuing diagnostics and fall through to checking the + storage class. + +2007-01-30 Roger Sayle <roger@eyesopen.com> + + * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when + calculating the size of an array (to avoid recursive errors). + +2007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/24745 + * typeck.c (build_binary_op): Fix logic for warning. Move warning + to -Wpointer-arith. + * call.c (convert_like_real): Don't warn when converting to + boolean type. + +2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * decl.c (pop_label): Replace warning with call to + warn_for_unused_label. + +2007-01-28 Andrew Pinski <pinskia@gmail.com> + + PR C++/28988 + * semantics.c (finish_pseudo_destructor_expr): Check the + destrutor name by calling check_dtor_name. + +2007-01-24 Douglas Gregor <dgregor@osl.iu.edu> + + * lex.c (D_CPP0X): Rename. + (D_CXX0X): To this. + (reswords): D_CPP0X -> D_CXX0X. + (init_reswords): Ditto. + * parser.c (cp_lexer_get_preprocessor_token): Warn about the use + of C++0x keywords as identifiers. + +2007-01-23 Simon Martin <simartin@users.sourceforge.net> + + PR c++/27492 + * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for + function decls. + +2007-01-23 Ian Lance Taylor <iant@google.com> + + * typeck.c (convert_for_assignment): Only warn about a = b = c + when converting to bool. + +2007-01-23 Roger Sayle <roger@eyesopen.com> + + * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with + TREE_OVERFLOW. + * typeck.c (ignore_overflows): Remove the remaining uses of + TREE_CONSTANT_OVERFLOW. + +2007-01-20 Jan Hubicka <jh@suse.cz> + + * decl2.c (start_objects, start_static_storage_duration_function): + Do not make the functions uninlinable. + +2007-01-17 Ian Lance Taylor <iant@google.com> + + * class.c (add_method): Call VEC_reserve_exact rather than passing + a negative size to VEC_reserve. + +2007-01-11 Simon Martin <simartin@users.sourceforge.net> + + PR c++/29573 + * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees. + +2007-01-10 Mark Mitchell <mark@codesourcery.com> + + PR c++/28999 + * decl.c (make_typename_type): If the qualified name is not a + type, issue an error. + * parser.c (cp_parser_elaborated_type_specifier): Fix comment + formatting. + +2007-01-08 Geoffrey Keating <geoffk@apple.com> + + * rtti.c: Include target.h. + (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (), + don't emit typeinfo for fundamental types as weak. + * Make-lang.in (cp/rtti.o): Update and correct dependencies. + +2007-01-08 Richard Guenther <rguenther@suse.de> + + * cvt.c (cp_convert_to_pointer): Use build_int_cst_type. + +2007-01-08 Mark Shinwell <shinwell@codesourcery.com> + + * call.c (standard_conversion): Pass flag to + vector_types_convertible_p to disallow emission of note. + * typeck.c (convert_for_assignment): Pass flag to + vector_types_convertible_p to allow emission of note. + (ptr_reasonably_similar): Pass flag to vector_types_convertible_p + to disallow emission of note. + +2007-01-07 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/28986 + * typeck.c (build_binary_op): Call overflow_warning if + TREE_OVERFLOW_P is true for the result and not for any of the + operands. + +2007-01-06 Lee Millward <lee.millward@codesourcery.com> + + PR c++/19439 + * class.c (add_method): Don't wait until template + instantiation time to complain about duplicate methods. + +2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c/19978 + * semantics.c (finish_unary_op_expr): Warn only if result + overflowed and operands did not. + +2007-01-05 Ian Lance Taylor <iant@google.com> + + * typeck.c (build_binary_op): Warn about comparing a non-weak + address to NULL. + +2007-01-05 Douglas Gregor <doug.gregor@gmail.com> + + * pt.c (tsubst): Propagate the need for structural equality checks + when reducing the level of template parameters. + +2007-01-03 Kazu Hirata <kazu@codesourcery.com> + + * pt.c: Fix a comment typo. + +2007-01-02 Ian Lance Taylor <iant@google.com> + + * semantics.c (maybe_convert_cond): Optionally warn when using an + assignment as a condition. + * typeck.c (convert_for_assignment): Optionally warn about + assigning the result of an assignment to a bool. + +2007-01-02 Douglas Gregor <doug.gregor@gmail.com> + + * pt.c (canonical_template_parms): Correct typo in comment. + +2007-01-02 Douglas Gregor <doug.gregor@gmail.com> + + * typeck.c (structural_comptypes): Renamed from "comptypes". + (comptypes): Use canonical type information to perform fast type + comparison. When VERIFY_CANONICAL_TYPES, verify that the + canonical type comparison returns the same results as we would see + from the current, structural check. Support COMPARE_STRUCTURAL + when we need structural checks. + * decl.c (typename_compare): Fix comment. + (build_typename_type): TYPENAME_TYPE nodes require structural + equality checks, because they resolve different based on the + current class type. + (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes + require structural equality checks (for now). + (build_ptrmemfunc_type): Build the canonical pointer to member + function type. + (compute_array_index_type): Whenever we build a new index type + to represent the size of an array in a template, we need to mark + this index type as requiring structural equality. This goes for + arrays with value-dependent sizes with the current ABI, or all + arrays with ABI-1. + * tree.c (cplus_array_hash): New. + (struct cplus_array_info): New. + (cplus_array_compare): New. + (cplus_array_htab): New. + (build_cplus_array_type_1): Use a hash table to cache the array + types we build. Build the canonical array type for each array + type. + (cp_build_qualified_type_real): When building a cv-qualified array + type, use the hash table of array types and build canonical array + types as necessary. + (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes + use structural equality (for now). + * cp-tree.h (COMPARE_STRUCTURAL): New. + * pt.c (canonical_template_parms): New. + (canonical_type_parameter): New. + (process_template_parm): Find the canonical type parameter. + (lookup_template_class): When we have named the primary template + type, set the canonical type for our template class to the primary + template type. If any of the template arguments need structural + equality checks, the template class needs structural equality + checks. + (tsubst): When reducing the level of a template template + parameter, we require structural equality tests for the resulting + parameter because its template parameters have not had their types + canonicalized. When reducing a template type parameter, find the + canonical reduced type parameter. + (any_template_arguments_need_structural_equality_p): New. diff --git a/gcc/cp/ChangeLog-2008 b/gcc/cp/ChangeLog-2008 new file mode 100644 index 00000000000..8411d7fb790 --- /dev/null +++ b/gcc/cp/ChangeLog-2008 @@ -0,0 +1,3256 @@ +2008-12-31 Jakub Jelinek <jakub@redhat.com> + + PR c++/38647 + * parser.c (cp_parser_primary_expression) <case RID_FUNCTION_NAME>: + Return error_mark_node if cp_parser_non_integral_constant_expression + returns true. + + PR c++/38640 + * semantics.c (finish_decltype_type): Handle TEMPLATE_PARM_INDEX. + +2008-12-29 Jakub Jelinek <jakub@redhat.com> + + PR c++/38635 + * parser.c (cp_parser_condition): Use cp_parser_require + instead of cp_lexer_consume_token to consume =. + + PR c++/38637 + * decl.c (start_enum): If enumtype is error_mark_node, exit early. + +2008-12-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/38650 + * semantics.c (finish_omp_for): Don't add CLEANUP_POINT_EXPR + around volatile iteration var in condition and/or increment + expression. + +2008-12-27 Jakub Jelinek <jakub@redhat.com> + + PR c++/38639 + * pt.c (tsubst_omp_for_iterator): RECUR on whole init_expr instead of + just its type. + +2008-12-21 Jason Merrill <jason@redhat.com> + + PR c++/38597 + * name-lookup.c (arg_assoc_type): Handle DECLTYPE_TYPE. + +2008-12-20 Jakub Jelinek <jakub@redhat.com> + Manuel López-Ibáñez <manu@gcc.gnu.org> + + PR c++/36921 + * c-common.c (warn_about_parentheses): Remove ARG_UNUSED from + arg_left. Don't warn about X<=Y<=Z if comparison's type isn't + integral. + +2008-12-19 Jakub Jelinek <jakub@redhat.com> + + PR c++/38577 + * call.c (build_new_method_call): Handle call being COMPOUND_EXPR + or NOP_EXPR. + +2008-12-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/38427 + * init.c (perform_member_init): For value-initialized + references call permerror instead of warning and don't emit any + INIT_EXPR. + +2008-12-18 Jason Merrill <jason@redhat.com> + + PR c++/38485 + * parser.c (cp_parser_token_starts_cast_expression): An EOF + can't start a cast-expression. + +2008-12-17 Jason Merrill <jason@redhat.com> + + * semantics.c (describable_type): New function. + (finish_decltype_type): Use it for dependent exprs. + * cp-tree.h: Declare it. + * mangle.c (write_type) [DECLTYPE_TYPE]: Set skip_evaluation. + (write_expression): If skip_evaluation, use type stubs. + * tree.c (cp_tree_equal): Handle PARM_DECLs from different + declarations of a function. + * init.c (build_new): Do auto deduction if type is describable. + * decl.c (cp_finish_decl): Likewise. + * parser.c (cp_parser_omp_for_loop): Likewise. + +2008-12-10 Jason Merrill <jason@redhat.com> + + PR c++/35319 + * mangle.c (write_builtin_type): Add mangling for decimal floating + point and fixed point types. + (write_type): Pass FIXED_POINT_TYPE along. + +2008-12-09 Mark Mitchell <mark@codesourcery.com> + + PR c++/37971 + * class.c (resolve_address_of_overloaded_function): Check + accessibility of member functions unless FLAGS indicates + otherwise. + * call.c (standard_conversion): Adjust flags passed to + instantiate_type. + (convert_default_arg): Do not perform access checks. + * cp-tree.h (tsubst_flags_t): Add tf_no_access_control. + +2008-12-08 Steve Ellcey <sje@cup.hp.com> + + * decl2.c (mark_used): Remove assemble_external call. + +2008-12-08 Dodji Seketeli <dodji@redhat.com> + + PR debug/38390 + * name-lookup.c (kept_level_p): Don't forget the case of levels + having using directives. + +2008-12-08 Richard Henderson <rth@redhat.com> + + PR 38240 + * class.c (finish_struct_bits): Use SET_TYPE_MODE. + * decl.c (record_unknown_type): Likewise. + (start_enum, finish_enum): Likewise. + +2008-12-05 Jakub Jelinek <jakub@redhat.com> + + PR c++/35336 + * error.c (dump_expr): Handle BIT_FIELD_REF. + +2008-12-05 Sebastian Pop <sebastian.pop@amd.com> + + PR bootstrap/38262 + * Make-lang.in (cc1plus-dummy, cc1plus): Add BACKENDLIBS, + remove GMPLIBS. + +2008-12-04 Jason Merrill <jason@redhat.com> + + PR c++/37906 + * decl.c (grok_special_member_properties): Set TYPE_HAS_COMPLEX_DFLT + here. + * class.c (check_bases_and_members): Rather than assuming any + user-declared default constructor is complex here. + +2008-12-04 Richard Guenther <rguenther@suse.de> + + PR c++/38334 + * typeck.c (get_member_function_from_ptrfunc): Mark the vtbl + pointer access with TREE_NO_WARNING. + +2008-12-03 Jason Merrill <jason@redhat.com> + + PR c++/38232 + * init.c (build_value_init): Do initial zero-initialization + of a class with an implicitly-defined constructor using + build_zero_init rather than in build_value_init. + (build_value_init_1): Fold into build_value_init. + + PR c++/38256 + * parser.c (cp_parser_conversion_type_id): Diagnose + 'operator auto' here. + * decl.c (grokdeclarator): Not here. + + PR c++/38380 + * decl.c (grokdeclarator): Only set DECL_NONCONVERTING_P + on explicit constructors. + * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Propagate + CONSTRUCTOR_IS_DIRECT_INIT. + +2008-12-02 Jason Merrill <jason@redhat.com> + + PR c++/35782, c++/37860 + * call.c (build_user_type_conversion_1): Remember + list-initialization. + (convert_like_real): Likewise. + (build_over_call): Don't require the copy constructor + for copy-list-initialization. + * cp-tree.h (TARGET_EXPR_LIST_INIT_P): New macro. + + PR c++/37234 + * decl.c (cp_finish_decl): Handle =default and =delete for + templates, too. + +2008-12-01 Jakub Jelinek <jakub@redhat.com> + + PR c++/38257 + * parser.c (cp_parser_omp_for_loop): Handle auto. + * pt.c (tsubst_omp_for_iterator): Likewise. + +2008-11-28 Jason Merrill <jason@redhat.com> + + PR c++/38233 + * init.c (perform_member_init): Fix value-initialization. + (build_value_init_1): Add assert to catch cases that will break + in the gimplifier. + (build_default_init): Remove. + * cp-tree.h: Remove its prototype. + * pt.c (tsubst_expr) [DECL_EXPR]: Use build_value_init for + value-initialization. + + PR c++/38278 + * parser.c (cp_parser_class_name): Only call + maybe_note_name_used_in_class if we actually found a class name. + +2008-11-25 Jason Merrill <jason@redhat.com> + + PR c++/28743 + * decl2.c (check_classfn): Error rather than abort on parameter + list mismatch. + +2008-11-20 Jason Merrill <jason@redhat.com> + + PR c++/28513 + * parser.c (cp_parser_class_name): Call maybe_note_name_used_in_class. + + PR c++/37540 + * call.c (build_over_call): Take the address of the function even + in a template. + (build_new_method_call): Remember the type of the called function + in a template. + +2008-11-19 Dodji Seketeli <dodji@redhat.com> + + PR c++/37142 + * pt.c (coerce_template_template_parm): Use the more robust + uses_template_parms instead of dependent_type_p. + +2008-11-19 Dodji Seketeli <dodji@redhat.com> + + PR c++/35405 + * pt.c (lookup_template_class): Check pointers before dereferencing + them. + * error.c (dump_template_decl): Likewise. + +2008-11-19 Jason Merrill <jason@redhat.com> + + PR c++/36410 + * decl2.c (grokfield): Pass ATTR_FLAG_TYPE_IN_PLACE for a typedef + that names a class for linkage purposes. + + PR c++/37563 + * parser.c (cp_parser_pseudo_destructor_name): A pseudo-destructor + name is not a declaration. + + PR c++/37256 + * pt.c (instantiate_decl): Don't require a definition of + a template that is explicitly instantiated 'extern'. + +2008-11-18 Jason Merrill <jason@redhat.com> + Jakub Jelinek <jakub@redhat.com> + + PR c++/37962 + * parser.c (cp_parser_type_id): Complain about auto. + * decl.c (grokdeclarator): Complain about parameters and + conversion functions declared with auto. + + * call.c (standard_conversion): Use CLASS_TYPE_P instead of + MAYBE_CLASS_TYPE_P. + * cp-tree.h (TYPE_NON_AGGREGATE_CLASS): Likewise. + +2008-11-17 Jakub Jelinek <jakub@redhat.com> + + PR c++/36089 + * init.c (constant_value_1): Handle TREE_LIST init. + +2008-11-15 Jakub Jelinek <jakub@redhat.com> + + PR c++/37561 + * typeck.c (cp_build_unary_op): Don't call get_unwidened. Use + argtype instead of result_type. + +2008-11-14 Jason Merrill <jason@redhat.com> + + PR c++/38030 + * semantics.c (finish_call_expr): Don't repeat arg-dep lookup + for a non-dependent call. + + PR c++/37740 + * call.c (build_aggr_conv): Increment i. + +2008-11-13 Jason Merrill <jason@redhat.com> + + PR c++/37932 + * typeck2.c (process_init_constructor_record): Update bitfield + handling. + (check_narrowing): Update bitfield handling, print source type. + +2008-11-12 Jakub Jelinek <jakub@redhat.com> + + PR c++/36478 + Revert: + 2007-05-07 Mike Stump <mrs@apple.com> + * parser.c (check_empty_body): Add. + (cp_parser_iteration_statement): Add call to check_empty_body. + +2008-11-12 Jason Merrill <jason@redhat.com> + + PR c++/38007 + * typeck.c (cp_build_modify_expr): Update bitfield handling. + +2008-11-12 Jakub Jelinek <jakub@redhat.com> + + PR c++/34269 + * parser.c (cp_parser_simple_declaration): Don't commit + to tentative parse if parse errors were seen. + + PR c++/35334 + * error.c (dump_expr): Handle COMPLEX_EXPR. + +2008-11-10 Jakub Jelinek <jakub@redhat.com> + + PR c++/38021 + * parser.c (cp_parser_enum_specifier): After parsing :, + parse definitely. Don't return early if type specifier + is erroneous. + +2008-11-06 David Edelsohn <edelsohn@gnu.org> + + PR target/26397 + * g++spec.c (LIBSTDCXX_STATIC): New. + (lang_spec_driver): Use LIBSTDCXX_STATIC when not + shared_libgcc. + +2008-11-05 Fabien Chene <fabien.chene@gmail.com> + + PR c++/32519 + * cp-tree.h: Fix DECL_NONSTATIC_MEMBER_P to handle member template + functions. + +2008-11-05 Richard Guenther <rguenther@suse.de> + + PR middle-end/37742 + * decl.c (start_preparsed_function): Use the correct type for + building the RESULT_DECL. + +2008-10-31 Jakub Jelinek <jakub@redhat.com> + + PR c++/37967 + * decl.c (grokdeclarator): Diagnose auto function decl without + late return type and late return type function decl where type + is not auto. + + PR c++/37965 + * decl.c (cp_finish_decl): Diagnose type_uses_auto type with + no initializer. + +2008-10-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 11492 + * class.c (check_bitfield_decl): Rename min_precision to + tree_int_cst_min_precision. + * decl.c (finish_enum): Likewise. + +2008-10-29 Manuel López-Ibáñez <manu@gcc.gnu.org> + + PR c++/26997 + * parser.c (cp_parser_token_starts_cast_expression): New. + (cp_parser_cast_expression): Peek the next token to decide whether + this could be a parenthesized constructor or is definitely an + actual cast. + +2008-10-24 Manuel López-Ibáñez <manu@gcc.gnu.org> + + PR c/7543 + * typeck.c (build_x_binary_op): Update call to + warn_about_parentheses. + * parser.c (cp_parser_binary_expression): Add note about passing + the correct code for unary expressions. + +2008-10-24 Jakub Jelinek <jakub@redhat.com> + + * Make-lang.in (check-c++-subtargets): New alias for + check-g++-subtargets. + (lang_checks_parallelized): Add check-g++. + (check_g++_parallelize): New variable. + +2008-10-21 Richard Guenther <rguenther@suse.de> + + * semantics.c (simplify_aggr_init_exprs_r): Remove. + (expand_or_defer_fn): Do not walk the function body to + simplify aggr_init_exprs. + +2008-10-20 Manuel López-Ibáñez <manu@gcc.gnu.org> + + PR c++/37004 + * typeck.c (cp_common_type): New. The same as + type_after_usual_arithmetic_conversions but without promotions. + (type_after_usual_arithmetic_conversions): Do the promotions and + call cp_common_type. + (common_type): Make it behave like the C version of this + function. Do not handle pointer types. + (common_pointer_type): Move handling of pointer types from + common_type to here. + (cp_build_binary_op): Use common_pointer_type instead of + common_type in call to pointer_diff. + Use cp_common_type instead of common_type. + * cp-tree.h (common_pointer_type): Declare. + +2008-10-14 Jakub Jelinek <jakub@redhat.com> + + PR c++/37819 + * cp-gimplify.c (cp_genericize_r): Only fold_convert COND_EXPR + arguments if they don't already have COND_EXPR's type. + +2008-10-14 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/37650 + * pt.c (push_template_decl_real): Check that current_template_parms + is not null. + (process_partial_specialization): Assert current_template_parms not + null. + +2008-10-13 Doug Evans <dje@google.com> + + * cp-tree.h (DECL_MAIN_P): Fix parentheses around expression. + +2008-10-10 Jakub Jelinek <jakub@redhat.com> + + PR c++/37146 + * cp-gimplify.c (cp_genericize_r): Fix up bitfield operands of + COND_EXPR. + +2008-10-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/37568 + * semantics.c (finalize_nrv_r): Clear DECL_INITIAL instead of + setting it to error_mark_node. + +2008-10-07 Steve Ellcey <sje@cup.hp.com> + + * decl.c (start_cleanup_fn): Declare as inline. + +2008-10-06 Jason Merrill <jason@redhat.com> + + PR c++/37376, other mangling issues + * mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling. + (write_member_name): Break out from... + (write_expression): ...here. Handle dependent COMPONENT_REF. + (write_template_arg): Wrap an argument pack in 'I'/'E'. + (write_builtin_type): Update char16/32_t mangling. + (write_nested_name, write_prefix): Don't forget template args + for typename types. + * operators.def: Add ARROW_EXPR, update COMPONENT_REF and + EXPR_PACK_EXPANSION. + +2008-10-06 Aldy Hernandez <aldyh@redhat.com> + + * typeck.c (build_x_indirect_ref): Add location argument. + (cp_build_binary_op): Pass location to warn_for_div_by_zero. + (cp_build_unary_op): Add location argument. + (cp_build_modify_expr): Same. + * class.c (build_base_path): Pass location to build_indirect_ref. + * semantics.c (handle_omp_for_class_iterator): Pass elocus to + build_modify_expr. + +2008-10-05 Dodji Seketeli <dodji@redhat.com> + + PR c++/37410 + * cp-gimplify.c (cp_gimplify_expr): For each USING_STMT + make sure an IMPORTED_DECL node is added to the BLOCK_VARS list + of the innermost containing BLOCK. + +2008-10-03 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/37719 + * error.c (dump_function_decl): Save the exceptions in case of + error about incompatible specifications in a specialization. + +2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com> + + * tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue. + +2008-09-30 H.J. Lu <hongjiu.lu@intel.com> + + PR c++/37683 + * parser.c (cp_parser_selection_statement): Fix uninitialized + variable. + +2008-09-30 Simon Martin <simartin@users.sourceforge.net> + + PR c++/37555 + PR c++/37556 + * decl.c (grokdeclarator): Set the type for typedefs to a + nested-name-specifier to error_mark_node. + +2008-09-30 Paolo Bonzini <bonzini@gnu.org> + + * parser.c (cp_parser_selection_statement): Implement here the + -Wempty-body warning for `if' and `else' statements. + * semantics.c (finish_if_stmt): Do not call empty_body_warning. + +2008-09-25 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/37649 + * name-lookup.c (maybe_process_template_type_declaration): Check + return value of push_template_decl_real for error_mark_node. + +2008-09-24 Aldy Hernandez <aldyh@redhat.com> + + * semantics.c (finish_fname): Pass location to fname_decl. + +2008-09-23 Jakub Jelinek <jakub@redhat.com> + + PR c++/37533 + * semantics.c (finish_omp_for): If processing_template_decl, just build + MODIFY_EXPR for init instead of calling cp_build_modify_expr. + +2008-09-23 Aldy Hernandez <aldyh@redhat.com> + + * typeck.c (build_array_ref): Pass location to cp_build_binary_op. + (get_member_function_from_ptrfunc): Same. + (build_x_binary_op): Same. + (build_binary_op): Same. + (cp_build_binary_op): New location argument. + (pointer_diff): Pass location to cp_build_binary_op. + (cp_truthvalue_conversion): Pass location to build_binary_op. + (convert_ptrmem): Pass location to cp_build_binary_op. + (cp_build_modify_expr): Same. + (build_ptrmemfunc): Same. + * init.c (expand_cleanup_for_base): Pass location to + c_common_truthvalue_conversion. + (build_new_1): Pass location to cp_build_binary_op. + (build_vec_delete_1): Pass location to *build_binary_op, + c_common_truthvalue_conversion. + (build_vec_init): Same. + (build_delete): Same. + * decl.c (compute_array_index_type): Same. + * call.c (build_new_op): Same. + * rtti.c (build_dynamic_cast_1): Same. + * cp-tree.h: Add argument to cp_build_binary_op. + * semantics.c (handle_omp_for_class_iterator): Pass location to + *build_binary_op, c_common_truthvalue_conversion. + * decl2.c (get_guard_cond): Same. + +2008-09-17 Richard Guenther <rguenther@suse.de> + + PR c++/22374 + * rtti.c (build_dynamic_cast_1): Convert the COND_EXPR + result to the correct type. + +2008-09-17 H.J. Lu <hongjiu.lu@intel.com> + + PR c++/37450 + * name-lookup.c (pushdecl_maybe_friend): Don't return the old + parameter for duplicate. + +2008-09-17 Jason Merrill <jason@redhat.com> + + PR c++/37588 + * name-lookup.c (lookup_type_scope): Look through sk_function_parms. + +2008-09-17 Jakub Jelinek <jakub@redhat.com> + + PR c++/37552 + * typeck.c (build_array_ref): Use protected_set_expr_location instead + of SET_EXPR_LOCATION when ret might not be an expression. + +2008-09-17 Jan Hubicka <jh@suse.cz> + + PR c++/18071 + * cp/decl.c (start_method): Set DECL_NO_INLINE_WARNING_P. + +2008-09-16 Jakub Jelinek <jakub@redhat.com> + + PR c++/37531 + * semantics.c (finish_compound_literal): Return error_mark_node if + type is errorneous. + + PR c++/37532 + * lex.c (init_reswords): Don't populate ridpointers for D_CONLY + reserved words. + +2008-09-15 Aldy Hernandez <aldyh@redhat.com> + + * decl.c (duplicate_decls): Call error_at. + (grokfndecl): New location argument. Use location if available. + (grokdeclarator): Pass declarator location to grokfndecl. + * cp-tree.h (struct cp_declarator): Update comment for id_loc. + * decl2.c (check_classfn): Use error_at. + * parser.c (cp_parser_init_declarator): Set function_start_locus + to brace location. + (cp_parser_member_declaration): Set id_loc for function declarators. + +2008-09-09 Jan Hubicka <jh@suse.cz> + + PR middle-end/37500 + * pt.c (tsubst_decl): Do not copy DECL_STRUCT_FUNCTION pointer. + +2008-09-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/37417 + * tree.c (array_type_nelts_top): Add size_one_node instead of + integer_one_node. + +2008-09-09 Jason Merrill <jason@redhat.com> + + PR c++/37439 + * pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has + DECL_CONTEXT set. + +2008-09-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/37389 + * decl.c (build_enumerator): Handle previous value's DECL_INITIAL + being error_operand_p. Don't clear value if it was error_mark_node. + +2008-09-09 Paolo Bonzini <bonzini@gnu.org> + + * cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove. + * cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS. + * semantics.c (anon_aggr_type_p): Remove. + +2008-09-06 Jason Merrill <jason@redhat.com> + + PR c++/37302 + * parser.c (cp_parser_parameter_declaration_list): Process the + PARM_DECLs as we go and push them. Return a TREE_LIST. + (cp_parser_parameter_declaration_clause): Return a TREE_LIST. + (cp_parser_direct_declarator): Create a binding level and + suppress deprecated warnings in the parameter list. + (make_call_declarator): PARMS is now a tree. + * cp-tree.h (struct cp_declarator): Function parms are now a tree. + * decl.h (enum deprecated_states, deprecated_state): Move here. + * decl.c: From here. + (type_is_deprecated): New fn. + (grokparms): PARMLIST is a tree now. Warn about parms that + use deprecated types. + * mangle.c (write_expression): Handle PARM_DECL, CALL_EXPR and + 0-operand cast. + * pt.c (tsubst) [DECLTYPE_TYPE]: Set skip_evaluation. + (tsubst_copy) [PARM_DECL]: Handle a PARM_DECL used outside of a + function. + * name-lookup.c (pushtag): Look through function parameter scopes. + (pushdecl_maybe_friend): Don't set DECL_CONTEXT on a PARM_DECL + when we're parsing a function declarator. + +2008-09-05 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/37342 + * tree.c (cp_build_qualified_type_real): Deal with sharing of + TYPE_LANG_SPECIFIC in the canonical types of pointer-to-method + types. + +2008-09-04 Ian Lance Taylor <iant@google.com> + + * parser.c (check_no_duplicate_clause): Change code parameter to + enum omp_clause_code. + +2008-09-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/37348 + * decl.c (cp_finish_decl): Only set + DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P if decl is VAR_DECL. + + PR c++/37189 + * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New + extern decls. + * decl2.c (mark_used): If defer_mark_used_calls, push decl into + deferred_mark_used_calls vector and exit early. + * decl.c (defer_mark_used_calls, deferred_mark_used_calls): New + variables. + (finish_function): Set defer_mark_used_calls for the duration of the + function. Call mark_used on any queued decls. + +2008-09-02 Jason Merrill <jason@redhat.com> + + PR c++/37208 + * call.c (build_over_call): Make =delete work with SFINAE. + * class.c (resolve_address_of_overloaded_function): Likewise. + + * cp-tree.h (struct lang_decl_flags): Rename threadprivate_p to + threadprivate_or_deleted_p. + (CP_DECL_THREADPRIVATE_P): Adjust. + (DECL_DELETED_FN): Likewise. + (SD_UNINITIALIZED, SD_INITIALIZED, SD_DEFAULTED): New macros. + (SD_DELETED): New macro. + * parser.c (cp_parser_init_declarator): Use them. + * decl.c (start_decl): Use them. + + * decl2.c (mark_used): Give =deleted error even in sizeof. + + * typeck2.c (check_narrowing): Downgrade narrowing error to + permerror. + +2008-09-02 Aldy Hernandez <aldyh@redhat.com> + + * typeck.c (build_array_ref): Use new location argument. + * class.c (build_vtbl_ref_1): Pass location to build_array_ref. + * call.c (build_new_op): Same. + * decl2.c (grok_array_decl): Same. + * cp-tree.h (build_array_ref): Add location argument to prototype. + +2008-09-01 Aldy Hernandez <aldyh@redhat.com> + + * typeck.c (build_x_indirect_ref): Add location argument. + * class.c (build_base_path): Pass location to build_indirect_ref. + * pt.c (tsubst_copy_and_build): Pass location to + finish_label_address_expr. + * parser.c (cp_parser_unary_expression): Same. + +2008-08-31 Jason Merrill <jason@redhat.com> + + Implement late-specified return type using 'auto'. + * cp-tree.h (struct cp_declarator): Add late_return_type field to + function declarator. + * parser.c (cp_parser_late_return_type_opt): New fn. + (cp_parser_direct_declarator): Use it. + (make_call_declarator): Put it in the declarator. + * decl.c (grokdeclarator): Splice in late-specified return type. + * pt.c (splice_late_return_type): New fn. + +2008-08-29 Michael Meissner <gnu@the-meissners.org> + + * decl.c (builtin_function_1): Take a bool argument to decide + whether to use pushdecl or pushdecl_top_level. + (duplicate_decls): Copy function specific target and optimization + options on duplicate declarations. + (cxx_builtin_function): Update builtin_function_1 call. + (cxx_builtin_function_ext_scope): New function, guarantee that the + declaration is done at global scope. + + * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New + macro, define builtin function hook for delayed machine specific + builtins. + + * cp-tree.h (cxx_builtin_function_ext_scope): Add declaration. + +2008-08-30 Jason Merrill <jason@redhat.com> + + PR c++/37288 + * pt.c (dependent_type_p): Don't abort on auto outside of a template. + +2008-08-29 Jason Merrill <jason@redhat.com> + + Implement C++0x 'auto' semantics. + * decl.c (start_decl_1): Don't complain about auto being incomplete. + (cp_finish_decl): Deduce auto. + * init.c (build_new): Handle 'new auto'. + * typeck2.c (cxx_incomplete_type_diagnostic): Give a different + message for auto than for normal template type parms. + * pt.c (type_dependent_expression_p): Handle { }. + (make_auto): New function. + (listify_autos): New function. + (do_auto_deduction): New function. + (is_auto): New function. + (type_uses_auto): New function. + * cp-tree.h: Declare them. + * parser.c (cp_parser_decl_specifier_seq): In C++0x mode, don't + treat auto as a declspec. + (cp_parser_simple_type_specifier): It's a type-specifier. + +2008-08-29 Mark Mitchell <mark@codesourcery.com> + + * mangle.c (write_type): Add target-specific manglings for + non-fundamental types to the substitution table. + gcc/testsuite/ + +2008-08-29 Jakub Jelinek <jakub@redhat.com> + + PR fortran/29635 + PR fortran/23057 + * name-lookup.c (do_using_directive, cp_emit_debug_info_for_using): + Adjust debug_hooks->imported_module_or_decl callers. + +2008-08-29 Jan Hubicka <jh@suse.cz> + + * cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic. + +2008-08-28 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/37260 + * decl.c (reshape_init_r): Check init for error_mark_node. + +2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/17880 + * semantics.c (maybe_convert_cond): Call verify_sequence_points. + (finish_return_stmt): Likewise. + (finish_switch_condition): Likewise. + +2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * cp-tree.h: Fix #error directive. + +2008-08-26 Douglas Gregor <doug.gregor@gmail.com> + + * typeck.c (type_after_usual_arithmetic_conversions): Don't do the + usual arithmetic conversions on scoped enumeration types. + (common_type): Ditto. + (default_conversion): Don't perform integral promotions on scoped + enumeration types. + (build_array_ref): Scoped enumeration types can't be used as + subscripts. + * decl.c (start_enum): If building a C++0x scoped enumeration, + enter its scope. If provided with an underlying type, check that + underlying type and set up the enumeration type accordingly. + (finish_enum): Only compute an underlying type if the underlying + type isn't already fixed, and only convert the enumerator values + now if we've just computed the underlying type. Finish the scope + of C++0x scoped enumerations. + (build_enumerator): For enumerations with a fixed underlying type, + check the enumerator values when the enumerator is defined. + (lookup_enumerator): New. + * call.c (standard_conversion): Don't allow assignment from + integers to scoped enumeration types, even with -fpermissive. + Don't convert from scoped enumerations to bool or any arithmetic + types. + (build_conditional_expr): Don't per the usual arithmetic + conversions for scoped enumeration types. + (convert_like_real): Check complain to see if we should + produce warnings. + * error.c (class_key_or_enum_as_string): Print scoped enums. + * cp-tree.h (MAYBE_CLASS_TYPE_P): Check CLASS_TYPE_P, not + TYPE_LANG_FLAG_5. + (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P): New. + (SCOPED_ENUM_P): New. + (UNSCOPED_ENUM_P): New. + (SET_SCOPED_ENUM_P): New. + (ENUM_UNDERLYING_TYPE): New. + * pt.c (lookup_template_class): Update the instantiation of enum + types to deal with C++0x scoped enumerations and underlying + types. + * name-lookup.c (begin_scope): Deal with scoped enumeration + scopes. + (lookup_qualified_name): Deal with lookup into enumeration types. + * name-lookup.h (enum scope_kind): Add sk_scoped_enum. + * parser.c (cp_parser_class_or_namespace_name): Rename to... + (cp_parser_qualifying_entity): ... this. Also, in C++0x mode, + parse a type-name that can be an enumeration type. + (cp_parser_nested_name_specifier_opt): Update with C++0x grammar. + (cp_parser_elaborated_type_specifier): Parse the + optional `struct' or `class' following enum (in C++0x). + (cp_parser_enum_specifier): Parse C++0x scoped enumerations and + enum-base clauses. + +2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * typeck.c: Update all calls to pedwarn. + * decl.c: Likewise. + * call.c: Likewise. + * error.c: Likewise. + * pt.c: Likewise. + * name-lookup.c: Likewise. + * parser.c: Likewise. + +2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/35158 + * parser.c (cp_parser_omp_for_loop): Handle parenthesized + initializers. + +2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * parser.c: Update all calls to inform. + * typeck.c: Likewise. + * init.c: Likewise. + * class.c: Likewise. + * call.c: Likewise. + * method.c: Likewise. + * friend.c: Likewise. + * typeck2.c: Likewise. + * pt.c: Likewise. + * name-lookup.c: Likewise. + * lex.c: Likewise. + +2008-08-19 Jakub Jelinek <jakub@redhat.com> + + PR debug/37156 + * error.c (cp_print_error_function): Deal with recursive BLOCK trees. + +2008-08-18 Tomas Bily <tbily@suse.cz> + + * tree.c (cp_tree_equal): Use CONVERT_EXPR_CODE_P. + +2008-08-18 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * typeck.c: Update all callers of permerror. + * init.c: Likewise. + * class.c: Likewise. + * decl.c: Likewise. + * call.c: Likewise. + * except.c: Likewise. + * cvt.c: Likewise. + * typeck2.c: Likewise. + * pt.c: Likewise. + * semantics.c: Likewise. + * name-lookup.c: Likewise. + * lex.c: Likewise. + * decl2.c: Likewise. + * parser.c: Likewise. + +2008-08-14 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/34485 + * pt.c (check_template_shadow): Change to return a bool. + * name-lookup.c (push_class_level_binding): Early return if + check_template_shadow returns false. + * cp-tree.h (check_template_shadow): Adjust declaration. + +2008-08-14 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/34600 + * decl.c (grokdeclarator): In case of extern and initializer, return + error_mark_node after the error. + +2008-08-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 30551 + * decl.c (grokfndecl): Call check_main_parameters_type only if + -Wmain. + +2008-08-12 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/37087 + * parser.c (cp_parser_class_head): Early return error_mark_node in + case of global qualification of class name or qualified name that + does not name a class. + +2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/12242 + * cvt.c (ocp_convert): Warn for out-of-range conversions to enum. + +2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 36901 + * cp-tree.h (struct diagnostic_context, struct diagnostic_info): + Delete forward declarations. Check that toplev.h has not been + included before this file. Include toplev.h and diagnostic.h. + * error.c (cp_cpp_error): Use DK_PEDWARN. + (cxx_incomplete_type_diagnostic): Update declaration. + (cxx_incomplete_type_error): Use DK_ERROR. + * typeck2.c (cxx_incomplete_type_diagnostic): Take a diagnostic_t + as argument. Use emit_diagnostic. + (cxx_incomplete_type_error): Use DK_ERROR. + (add_exception_specifier): Use diagnostic_t instead of custom + codes. + * typeck.c (complete_type_or_else): Update call to + cxx_incomplete_type_diagnostic. + * init.c (build_delete): Likewise. + * call.c (diagnostic_fn_t): Remove unused typedef. + (build_temp): Pass a pointer to diagnostic_t. + (convert_like_real): Use emit_diagnostic. + (joust): Check return value of warning before giving informative + note. + * friend.c (do_friend): Check return value of warning + before giving informative note. + * parser.c (cp_parser_template_id): Likewise. + +2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 7651 + * class.c (check_bases_and_members): Warn with -Wuninitialized + instead of -Wextra. + +2008-08-08 Volker Reichelt <v.reichelt@netcologne.de> + + PR c++/35985 + * decl.c (xref_basetypes): Check base for MAYBE_CLASS_TYPE_P, + and make sure it is not a union. + +2008-08-07 H.J. Lu <hongjiu.lu@intel.com> + + * semantics.c (finish_decltype_type): Initialize type. + +2008-08-07 Douglas Gregor <doug.gregor@gmail.com> + + * semantics.c (finish_decltype_type): Handle calls to function + pointers and references to functions properly. + +2008-08-06 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/36460 + * parser.c (cp_parser_template_argument): Don't assume that '>>' + following a type-id is an error when in C++0x mode. + +2008-08-06 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 26785 + * decl.c (grokdeclarator): Use explicit location with permerror_at. + +2008-08-06 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 8715 + * typeck.c (cp_build_binary_op): Move code to c-common.c. + +2008-08-05 Jason Merrill <jason@redhat.com> + + PR c++/37016 + * decl.c (build_ptrmemfunc_type): Don't require structural + comparison of PMF types. + * tree.c (cp_build_qualified_type_real): Don't clear + a valid TYPE_PTRMEMFUNC_TYPE. + * typeck.c (cp_build_unary_op): Still do build_ptrmemfunc in + templates. + +2008-08-04 Jason Merrill <jason@redhat.com> + + PR c++/36963 + * typeck2.c (check_narrowing): Allow narrowing conversion + from an explicit floating-point constant. + + PR c++/37006 + * pt.c (tsubst_decl): Leave DECL_INITIAL set on deleted + instantiations. + +2008-08-04 Simon Baldwin <simonb@google.com> + + PR c++/36999 + * parser.c (cp_parser_elaborated_type_specifier): Warn only when + the declaration's id is followed by a semicolon. + +2008-07-31 Jakub Jelinek <jakub@redhat.com> + + PR c++/36405 + * rtti.c (get_tinfo_decl_dynamic, get_typeid): Call + complete_type_or_else even for UNKNOWN_TYPE to get diagnostics. + +2008-07-31 Jason Merrill <jason@redhat.com> + + PR c++/36633 + * init.c (build_new_1): Don't convert pointer to the data type + until we're actually going to treat it as that type. + + PR c++/11309 + * tree.c (build_aggr_init_expr): Split out... + (build_cplus_new): ...from here. + (stabilize_init): Don't mess with AGGR_INIT_EXPR either. + * init.c (build_new_1): new T() means value-initialization, + not default-initialization. + (build_vec_init): Likewise. + (build_value_init_1): Use build_aggr_init_expr. + +2008-07-30 Dodji Seketeli <dseketel@redhat.com> + + PR c++/36767 + * decl2.c (fix_temporary_vars_context_r): New function. + (one_static_initialization_or_destruction): Make sure temporary + variables part of the initialiser have their DECL_CONTEXT() + properly set. + +2008-07-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 34389 + * typeck.c (build_binary_op): Encapsulate code into + shorten_binary_op. + +2008-07-29 Jakub Jelinek <jakub@redhat.com> + + PR c++/36852 + * tree.c (cplus_array_hash, build_cplus_array_type_1): Hash on + TYPE_UID instead of pointers. + +2008-07-29 Jan Hubicka <jh@suse.cz> + + * optimize.c (maybe_clone_body): Remove DECL_INLINE. + * decl.c (duplicate_decls): Likewise. + (grokfndecl): Likewise. + (start_method): Likewise. + * method.c (make_thunk, make_alias_for, implicitly_declare_fn): + Likewise. + * pt.c (register_specialization, regenerate_decl_from_template): + Likewise. + * decl2.c (grokfield): Likewise. + +2008-07-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 34985 + * decl.c (duplicate_decls): Merge USED flags. + +2008-07-27 Jason Merrill <jason@redhat.com> + + PR c++/36943 + * decl.c (reshape_init_r): Allow C++0x initializer lists. + +2008-07-28 Richard Guenther <rguenther@suse.de> + + Merge from gimple-tuples-branch. + + 2008-07-22 Aldy Hernandez <aldyh@redhat.com> + + * cp-gimplify.c (gimplify_if_stmt): Set location on newly created + COND_EXPR. + + 2008-07-18 Jakub Jelinek <jakub@redhat.com> + + * decl.c (finish_function): Call gimple_body after cp_genericize. + + 2008-07-18 Aldy Hernandez <aldyh@redhat.com> + + * optimize.c: Include gimple.h instead of tree-gimple.h. + * Make-lang.in (cp-gimplify.o): Depend on tree-iterator.h. + * cp-gimplify.c: Rename tree-gimple.h to gimple.h. Include + tree-iterator.h. + + 2008-07-16 Jakub Jelinek <jakub@redhat.com> + + * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE for the clone. + + 2008-07-14 Jakub Jelinek <jakub@redhat.com> + + * cp-gimplify.c (cp_gimplify_expr): Update comment. + + 2008-07-14 Aldy Hernandez <aldyh@redhat.com> + + * cp-tree.h (union lang_tree_node): Rename GENERIC_NEXT to + TREE_CHAIN. + * cp-gimplify.c (cxx_omp_clause_apply_fn): Rename + GIMPLE_MODIFY_STMT to MODIFY_EXPR. + (cxx_omp_clause_copy_ctor): Same. + (cxx_omp_clause_assign_op): Same. + + 2008-05-28 Jakub Jelinek <jakub@redhat.com> + + * cp-gimplify.c (cp_gimplify_omp_for): Add pre_p argument. Tuplify. + (cp_gimplify_expr): Adjust caller. + + 2008-05-11 Doug Kwan <dougkwan@google.com> + + * init.c (build_vec_delete): Add type conversion for argument + 0 of POINTER_PLUS_EXPR. + + 2008-04-29 Doug Kwan <dougkwan@google.com> + + * decl2 (File): Include "gimple.h" + (cp_write_global_declarations): Use gimple_body instead of + DECL_SAVED_TREE. + * Make-lang.in (cp/decl2.o): Add $(GIMPLE_H) + + 2008-04-10 Diego Novillo <dnovillo@google.com> + + http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00913.html + + * optimize.c (maybe_clone_body): Re-enable call to + clone_body. + * cp-gimplify.c (cp_gimplify_omp_for): Mark disabled + code with call to gimple_unreachable. + (cp_genericize): Fix handling of clone bodies. + + 2008-04-04 Diego Novillo <dnovillo@google.com> + + http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00413.html + + * optimize.c (maybe_clone_body): Re-enable. + + 2008-02-19 Diego Novillo <dnovillo@google.com> + Oleg Ryjkov <olegr@google.com> + + http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html + + * cp-gimplify.c (gimplify_for_stmt): Change gimple_seq + argument to gimple_seq *. Update all users. + (gimplify_must_not_throw_expr): Likewise. + + 2008-02-04 Oleg Ryjkov <olegr@google.com> + + * except.c: Include gimple.h + (cp_protect_cleanup_actions): Convert to tuples. + * Make-lang.in (cp/except.o): Add dependency on gimple.h + + 2007-11-10 Aldy Hernandez <aldyh@redhat.com> + + * cp-gimplify.c (gimplify_cp_loop): Call tree_annotate_all_with_locus + instead of annotating each block manually. + + 2007-10-30 Aldy Hernandez <aldyh@redhat.com> + + * cp-gimplify.c (gimplify_cp_loop): Tuplify. + (gimplify_for_stmt): Same. + (gimplify_switch_stmt): Same. + (cp_gimplify_expr): [FOR_STMT]: Do not call gimplify_for_stmt. Return + GS_OK. + [WHILE_STMT]: Return GS_OK. + [SWITCH_STMT]: Same. + [CONTINUE_STMT]: Same. + [BREAK_STMT]: Same. + (cp_genericize): Set gimple_body() of cloned functions when needed. + + 2007-10-29 Aldy Hernandez <aldy@quesejoda.com> + + * cp-gimplify.c: Move build_gimple_eh_filter_tree here. + (cp_gimplify_init_expr): Convert to tuples. + (gimplify_must_not_throw_expr): Make function return a + gimplify_status and convert to tuples. + + 2007-10-18 Aldy Hernandez <aldy@quesejoda.com> + + * cp-gimplify.c (genericize_try_block): Enable and do not call + gimplify_stmt. + (genericize_catch_block): Same. + (genericize_eh_spec_block): Same. + Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree. + (cp_gimplify_expr): Enable TRY_BLOCK, HANDLER, and EH_SPEC_BLOCK. + + 2007-10-16 Aldy Hernandez <aldy@quesejoda.com> + + * optimize.c (maybe_clone_body): Comment out call to clone_body. + * decl.c (finish_function): Use gimple_body instead of + DECL_SAVED_TREE. + * cp-tree.h (cp_gimplify_expr): Last 2 arguments are sequences. + * cp-gimplify.c (genericize_try_block): Comment out. + (genericize_catch_block): Same. + (genericize_eh_spec_block): Same. + (gimplify_cp_loop): Comment out calls to gimplify_stmt. + (gimplify_for_stmt): Comment out. + (gimplify_switch_stmt): Comment out call to gimplify_stmt. + (cp_gimplify_omp_for): Same. + (gimplify_must_not_throw_expr): Argument pre_p is a sequence. + Comment out call to gimplify_stmt and append_to_statement_list. + Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree. + (cp_gimplify_init_expr): Arguments pre_p and post_p are sequences. + (cp_gimplify_expr): Same. + Comment out calls to genericize_*_block. Comment out call to + gimplify_for_stmt. + +2008-07-27 H.J. Lu <hongjiu.lu@intel.com> + + PR c++/36944 + * class.c (type_has_user_provided_default_constructor): Handle + default parameters. + +2008-07-27 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (push_library_fn): Add a parameter for the exceptions that + the function may throw. + (push_void_library_fn, push_throw_library_fn, expand_static_init): + Adjust. + (build_library_fn): Change to static. + * cp-tree.h: Adjust declarations. + * except.c (declare_nothrow_library_fn): New. + (do_get_exception_ptr, do_begin_catch, do_free_exception, + do_allocate_exception): Use the latter, adjust the declarations + (ie, add empty exception-specification), consistently with the + actual implementation in libsupc++. + +2008-07-25 Jan Hubicka <jh@suse.cz> + + * typeck.c (inline_conversion): Remove. + (cp_build_function_call): Do not use inline_conversion. + * decl.c (duplicate_decls): Do not insist on inline being declared + early. + (start_cleanup_fn): Do not assume that INLINE flags prevent function + from being output. We now remove static functions always. + (finish_function): Do return warning on all static functions. + * call.c (build_over_call): Do not use inline_conversion. + * cp-tree.h (possibly_inlined_p): Declare. + (inline_conversion): Remove. + * pt.c (instantiate_decl): Use possibly_inlined_p predicate. + * decl2.c (cp_write_global_declarations): Likewise. + (mark_used): Likewise. + (possibly_inlined_p): New functions. + +2008-07-25 Jason Merrill <jason@redhat.com> + + * class.c (type_has_user_provided_default_constructor): Handle + templates. + +2008-07-23 Jan Hubicka <jh@suse.cz> + + * decl.c (duplicate_decls): Update comment and unit-at-a-time. + (grogfndecl): Drop flag_inline_trees code. + * pt.c (instantiate_decl): Drop flag_iline_trees code. + * lex.c (cxx_init): Do not set unit-at-a-time. + +2008-07-23 Jason Merrill <jason@redhat.com> + + * mangle.c (write_unqualified_name): Avoid infinite recursion when + trying to mangle a decl with no name. + + Implement defaulted/deleted functions as per N2346 + * cp-tree.h (struct lang_decl_flags): Add defaulted_p bitfield. + (DECL_DELETED_FN): New macro. + (DECL_DEFAULTED_FN): New macro. + * class.c (user_provided_p): New fn. + (defaultable_fn_p): New fn. + (type_has_user_provided_constructor): New fn. + (type_has_user_provided_default_constructor): New fn. + (check_methods): A defaulted fn is still trivial. + (check_bases_and_members): Likewise. + * decl.c (grok_special_member_properties): Likewise. + (duplicate_decls): Complain about redeclaring a function as deleted. + (start_decl): initialized==2 means deleted. + (cp_finish_decl): Handle deleted/defaulted semantics. + * decl2.c (grokfield): Likewise. + (mark_used): Check DECL_DEFAULTED_FN instead of DECL_ARTIFICIAL. + Complain about using a deleted fn. + * init.c (build_value_init_1): Use type_has_user_provided_constructor. + (perform_member_init): Check for a user-provided default constructor + even if TYPE_NEEDS_CONSTRUCTING. + (build_new_1): Likewise. + * call.c (build_over_call): Don't call mark_used twice. + * method.c (implicitly_declare_fn): Set DECL_DEFAULTED_FN. + * search.c (check_final_overrider): Check for deleted mismatch. + * parser.c (cp_parser_init_declarator): Tell start_decl about =delete. + (cp_parser_pure_specifier): Handle =default and =delete. + + * error.c (maybe_warn_cpp0x): Suggest -std=gnu++0x as well. + +2008-07-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 35058 + * typeck.c: All calls to pedwarn changed. + * decl.c: All calls to pedwarn changed. + * call.c: All calls to pedwarn changed. + * error.c: All calls to pedwarn changed. + * typeck2.c: All calls to pedwarn changed. + * pt.c: All calls to pedwarn changed. + * name-lookup.c: All calls to pedwarn changed. + * parser.c: All calls to pedwarn changed. + +2008-07-21 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * call.c: Fix comment typos. + * class.c: Likewise. + * cp-tree.h: Likewise. + * cxx-pretty-print.c: Likewise. + * decl.c: Likewise. + * init.c: Likewise. + * name-lookup.c: Likewise. + * operators.def: Likewise. + * parser.c: Likewise. + * pt.c: Likewise. + * tree.c: Likewise. + * typeck.c: Likewise. + +2008-07-21 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36871 + PR c++/36872 + * semantics.c (classtype_has_nothrow_assign_or_copy_p): Only check + copy constructors and copy assignment operators proper. + +2008-07-21 Rafael Ãvila de EspÃndola <espindola@google.com> + + * parser.c (cp_token): Remove in_system_header. + (eof_token): Remove in_system_header. + (cp_lexer_get_preprocessor_token): Don't set in_system_header. + (cp_lexer_set_source_position_from_token): Don't set in_system_header. + (cp_parser_member_declaration): Use in_system_header_at. + * pt.c (lookup_template_class): Don't set DECL_IN_SYSTEM_HEADER. + (pop_tinst_level): Don't set in_system_header. + (instantiate_class_template): Don't set in_system_header. + (instantiate_decl): Don't set in_system_header. + (instantiate_pending_templates): Don't set in_system_header. + +2008-07-21 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36870 + * semantics.c (classtype_has_nothrow_assign_or_copy_p): Use + TYPE_NOTHROW_P, not TREE_NOTHROW. + (trait_expr_value): Likewise. + +2008-07-18 Dodji Seketeli <dseketel@redhat.com> + + PR c++/36407 + * call.c (convert_like_real): Don't take the error code path + when a rvalue or base conversion has the bad_p field set. + +2008-07-18 Kris Van Hees <kris.van.hees@oracle.com> + + * rtti.c (emit_support_tinfos): Add char16_type_node and + char32_type_node. + * typeck2.c (digest_init): Support char16_t and char32_t. + +2008-07-18 Kavih R. Ghazi <ghazi@caip.rutgers.edu> + + * cvt.c (convert_to_void): Avoid C++ keywords. + * decl.c (walk_namespaces_r, wrapup_globals_for_namespace): + Likewise. + * friend.c (is_friend): Likewise. + * init.c (perform_member_init): Likewise. + * mangle.c (write_template_prefix, write_template_template_param): + Likewise. + * name-lookup.c (do_namespace_alias, do_using_directive, + parse_using_directive, ambiguous_decl, arg_assoc): Likewise. + * parser.c (cp_parser_template_id, cp_parser_namespace_definition, + cp_parser_objc_typename, cp_parser_objc_method_keyword_params): + Likewise. + * pt.c (is_specialization_of_friend, lookup_template_class, + push_tinst_level, instantiate_class_template, + tsubst_copy_and_build): Likewise. + * tree.c (add_stmt_to_compound): Likewise. + * typeck.c (finish_class_member_access_expr): Likewise. + +2008-07-17 Julian Brown <julian@codesourcery.com> + Mark Mitchell <mark@codesourcery.com> + + * decl2.c (determine_visibility): Allow target to override + visibility of class data. + +2008-07-17 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36855 + * semantics.c (trait_expr_value): Update __has_trivial_destructor + semantics to the current WP (N2691). + +2008-07-16 Dodji Seketeli <dseketel@redhat.com> + + PR c++/13699 + * name-lookup.c (lookup_extern_c_fun_binding_in_all_ns): New function. + (pushdecl_maybe_friend): Check if a redeclaration of extern C function + complies with exception specification constraints. + +2008-07-14 Jason Merrill <jason@redhat.com> + + * lex.c (init_reswords): Always set D_OBJC. + +2008-07-11 Tom Tromey <tromey@redhat.com> + Ian Lance Taylor <iant@google.com> + + * lex.c (struct resword, reswords): Don't define. + (D_EXT, D_ASM, D_OBJC, D_CXX0X): Don't define. + (init_reswords): Clarify mask code. Use c_common_reswords rather + than reswords. + +2008-07-11 Dodji Seketeli <dseketel@redhat.com> + + PR c++/13101 + * decl.c (grokdeclarator): Warn about initializing variables + of storage class 'extern' only after the type of the declarator + has been properly computed. + +2008-07-11 Dodji Seketeli <dseketel@redhat.com> + + PR c++/31754 + * cp-tree.h (struct cp_decl_specifier_seq): Add a location field. It + carries the location of the primary type. + * parser.c (cp_parser_check_type_definition): Update documentation. + (cp_parser_check_for_definition_in_return_type, + cp_parser_check_for_invalid_template_id, + cp_parser_set_decl_spec_type, + cp_parser_check_for_definition_in_return_type, + cp_parser_diagnose_invalid_type_name, + cp_parser_new_expression, cp_parser_explicit_instantiation, + cp_parser_type_specifier, cp_parser_simple_type_specifier, + cp_parser_omp_for_loop, cp_parser_pragma): Use location in error + messages. + +2008-07-11 Dodji Seketeli <dseketel@redhat.com> + + PR c++/31754 + * pt.c, semantic.c: + * semantic.c (qualified_name_lookup_error, finish_id_expression): + Add a location_t parameter so that + error message can have a more accurate location. + * cp-tree.h: Updated prototype + * pt.c (tsubst_qualified_id): Use location in error messages. + * parser.c (cp_parser_postfix_expression, + cp_parser_objc_statement, cp_parser_trait_expr, + cp_parser_token_is_class_key, + cp_parser_uncommitted_to_tentative_parse_p, + cp_parser_check_for_invalid_template_id, cp_parser_is_string_literal, + cp_parser_error, cp_parser_name_lookup_error, + cp_parser_simulate_error, cp_parser_check_decl_spec, + cp_parser_check_decl_spec, cp_parser_non_integral_constant_expression, + cp_parser_diagnose_invalid_type_name, + cp_parser_parse_and_diagnose_invalid_type_name, + cp_parser_require_pragma_eol, cp_parser_make_typename_type, + cp_parser_string_literal, cp_parser_primary_expression, + cp_parser_primary_expression, cp_parser_unqualified_id, + cp_parser_nested_name_specifier_opt, cp_parser_postfix_expression, + cp_parser_postfix_dot_deref_expression, cp_parser_new_expression, + cp_parser_direct_new_declarator, cp_parser_builtin_offsetof, + cp_parser_label_for_labeled_statement, cp_parser_statement_seq_opt, + cp_parser_jump_statement, cp_parser_block_declaration, + cp_parser_simple_declaration, cp_parser_decl_specifier_seq, + cp_parser_function_specifier_opt, cp_parser_decltype, + cp_parser_mem_initializer_list, cp_parser_mem_initializer, + cp_parser_mem_initializer_id, cp_parser_template_parameter, + cp_parser_type_parameter, cp_parser_template_id, + cp_parser_template_name, cp_parser_template_argument): Likewise. + +2008-07-09 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36760 + * pt.c (tsubst_function_type): Remove warning for type qualifiers + on function return type. + +2008-07-09 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36760 + * pt.c (tsubst_function_type): Don't warn for type qualifiers + on function return type in case of system header. + +2008-07-09 Raksit Ashok <raksit@google.com> + + * parser.c (cp_parser_postfix_expression): New warning based on flag + warn_disallowed_functions. + +2008-07-08 Simon Martin <simartin@users.sourceforge.net> + + PR c++/34963 + * decl.c (grokdeclarator): Reset storage_class and staticp for friend + functions declared with a storage class qualifier. + +2008-07-03 Richard Guenther <rguenther@suse.de> + + PR c++/36128 + * typeck.c (cp_build_function_call): Move code to verify + builtin function arguments ... + * call.c (build_cxx_call): ... here. + +2008-07-02 Jason Merrill <jason@redhat.com> + + * Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency. + + Implement WG21 N2672, Initializer List proposed wording + * cp-tree.h (enum cp_tree_index): Add CPTI_INIT_LIST_TYPE. + (struct lang_type_class): Add has_list_ctor bitfield. + (TYPE_HAS_LIST_CTOR): New macro. + (BRACE_ENCLOSED_INITIALIZER_P): Expect init_list_type_node. + (CONSTRUCTOR_IS_DIRECT_INIT): New macro. + (LOOKUP_NO_NARROWING): New macro. + (LOOKUP_NO_COPY_CTOR_CONVERSION): New macro. + * parser.c (cp_parse_braced_list): Split out from... + (cp_parser_initializer_clause): ...here. + (cp_parser_postfix_expression): Build up CONSTRUCTOR for compound + literal here. + (cp_lexer_next_token_is_not_keyword): New fn. + (cp_parser_parenthesized_expression_list): Handle { }. + (cp_parser_new_expression, cp_parser_new_initializer): Likewise. + (cp_parser_assignment_expression, cp_parser_condition): Likewise. + (cp_parser_jump_statement, cp_parser_simple_declaration): Likewise. + (cp_parser_mem_initializer, cp_parser_init_declarator): Likewise. + (cp_parser_initializer, cp_parser_functional_cast): Likewise. + (cp_parser_omp_for_loop, cp_parser_cache_group): Likewise. + (cp_parser_save_member_function_body): Likewise. + * call.c (conversion_kind): Add ck_list, ck_aggr. + (struct conversion): Add check_narrowing bitfield, conversion list. + (build_list_conv): New fn. + (build_aggr_conv): New fn. + (implicit_conversion): Call them. + (standard_conversion): Set check_narrowing if appropriate. + (add_function_candidate): Handle LOOKUP_NO_COPY_CTOR_CONVERSION. + (build_user_type_conversion_1): When converting from an init list, + we allow additional conversions except when calling a copy ctor. + (convert_like_real): Calling an explicit ctor for an init list is + ill-formed. Handle ck_list and ck_addr. Check narrowing. + (build_new_method_call): If CONSTRUCTOR_IS_DIRECT_INIT is set and + class doesn't have a list ctor, break the {} into a TREE_LIST. + (compare_ics): ck_list is better than other UDCs. + (set_up_extended_ref_temp): Split out from initialize_reference. + (is_std_init_list): New fn. + (is_list_ctor): New fn. + * decl.c (cxx_init_decl_processing): Create init_list_type_node. + (reshape_init_array_1): Pass it to build_constructor. + (reshape_init_class): Ditto. + (initialize_artificial_var): Pass the appropriate type. + (build_aggr_init_full_exprs): Split out from... + (check_initializer): ...here. Handle new semantics. + (build_init_list_var_init): New subroutine of check_initializer. + (grokdeclarator): Converting constructors can have more than one parm. + (grok_special_member_properties): Set TYPE_HAS_LIST_CTOR. + * init.c (expand_default_init): Only do digest_init for aggregates. + * rtti.c (tinfo_base_init): Pass init_list_type_node to + build_constructor_from_list. + (generic_initializer, ptr_initializer): Ditto. + (ptm_initializer, class_initializer): Ditto. + (get_pseudo_ti_init): Ditto. + * error.c (dump_type): Handle init_list_type_node. + (maybe_warn_cpp0x): New fn. + (maybe_varn_variadic_templates): Call it. + * cvt.c (ocp_convert): Handle conversion from { }. + * tree.c (build_array_of_n_type): New fn. + * typeck2.c (store_init_value): Use init_list_type_node. + (digest_init): Likewise. + (check_narrowing): New fn. + * semantics.c: (finish_compound_literal): Take CONSTRUCTOR instead + of vector of constructor elts. Handle non-aggregate types. Make + constant literals static. + * pt.c: (tsubst_copy_and_build): Adjust. + (unify): Handle { }. + * name-lookup.c (arg_assoc_type): Handle init_list_type_node. + +2008-07-01 Daniel Jacobowitz <dan@codesourcery.com> + + * typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p. + (comp_ptr_ttypes_const): Likewise. + +2008-07-01 Andrew Haley <aph@redhat.com> + + * decl.c (finish_constructor_body): Don't set the return value of + the constructor if the constructor is that of a Java type. + +2008-06-30 Jakub Jelinek <jakub@redhat.com> + + PR c++/36662 + * decl2.c (is_late_template_attribute): If the first attribute + argument is IDENTIFIER_NODE, don't consider it when checking + if arguments are value or type dependent. + +2008-06-29 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36655 + * pt.c (do_type_instantiation): In c++0x mode do not warn for + extern template. + +2008-06-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * Make-lang.in (cp-warn): Delete $(CXX_COMPAT_WARN). + +2008-06-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/36364 + * repo.c (repo_emit_p): Put const static data members initialized + by const expr into *.rpo file, just return 2 if IDENTIFIER_REPO_CHOSEN + for it is 0. + +2008-06-27 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36655 + * pt.c (do_decl_instantiation): In c++0x mode do not warn for + extern template. + +2008-06-24 Jonathan Wakely <jwakely.gcc@gmail.com> + + PR c++/23194 + * typeck.c (cp_build_function_call): Show example syntax in + diagnostic. + +2008-06-21 Jonathan Wakely <jwakely.gcc@gmail.com> + + * typeck.c (composite_pointer_type_r, cxx_sizeof_expr, + cxx_alignof_expr, check_template_keyword, cp_build_binary_op, + pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list, + build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change + pedwarn to permerror. + * init.c (perform_member_init, build_new_1, build_new): Likewise. + * decl.c (warn_extern_redeclared_static, duplicate_decls, + * identify_goto, check_previous_goto_1, check_goto, define_label, + check_tag_decl, start_decl, check_class_member_definition_namespace, + grokfndecl, grokdeclarator): Likewise. + * except.c (check_handlers): Likewise. + * typeck2.c (digest_init): Likewise. + * pt.c (check_specialization_namespace, + check_explicit_instantiation_namespace, + maybe_process_partial_specialization, check_explicit_specialization, + convert_template_argument, do_decl_instantiation, + do_type_instantiation, instantiate_decl): Likewise. + * semantics.c (finish_template_type_parm): Likewise. + * name-lookup.c (pushdecl_maybe_friend, + check_for_out_of_scope_variable): Likewise. + * decl2.c (finish_static_data_member_decl, build_anon_union_vars, + coerce_new_type): Likewise. + * parser.c (cp_parser_nested_name_specifier_opt, + cp_parser_mem_initializer, cp_parser_elaborated_type_specifier, + cp_parser_class_head, cp_parser_check_class_key): Likewise. + (cp_parser_parameter_declaration): Check flag_permissive instead of + flag_pedantic_errors. + * call.c (joust): Change pedwarn to warning. + * friend.c (make_friend_class): Likewise. + +2008-06-16 Jan Hubicka <jh@suse.cz> + + * method.c: Include cgraph.h. + (use_thunk): Use cgraph_add_new_function instead of calling backend + directly. + +2008-06-15 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * parser.c: Fix comment typo. + +2008-06-14 Simon Martin <simartin@users.sourceforge.net> + + PR c++/35320 + * decl2.c (grokbitfield): Receive the list of attributes, pass it to + grokdeclarator and apply it to the created declaration. + * cp-tree.h (grokbitfield): Update prototype. + * parser.c (cp_parser_member_declaration): Don't apply the attributes + since they are now applied in grokbitfield. Adjusted the call to + grokbitfield. + (cp_parser_objc_class_ivars): Likewise. + +2008-06-14 Simon Martin <simartin@users.sourceforge.net> + + PR c++/35317 + * class.c (type_requires_array_cookie): Do not consider delete[] + operators with an ellipsis as second argument. + +2008-06-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/36408 + * semantics.c (stmt_expr_value_expr): Don't crash on empty + STATEMENT_LIST. + +2008-06-08 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/35242 + * pt.c (maybe_process_partial_specialization): Check the tree + returned by push_template_decl for error_mark_node. + * parser.c (cp_parser_class_head): Likewise, check the tree + returned by the latter. + +2008-06-07 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/35327 + * decl.c (grokdeclarator): In case of wrong return type return + immediately error_mark_node. + +2008-06-06 Jakub Jelinek <jakub@redhat.com> + + * cp-tree.h (cxx_omp_finish_clause, cxx_omp_create_clause_info, + dependent_omp_for_p, begin_omp_task, finish_omp_task, + finish_omp_taskwait): New prototypes. + (cxx_omp_clause_default_ctor): Add outer argument. + (finish_omp_for): Add new clauses argument. + * cp-gimplify.c (cxx_omp_finish_clause): New function. + (cxx_omp_predetermined_sharing): Moved from semantics.c, rewritten. + (cxx_omp_clause_default_ctor): Add outer argument. + (cp_genericize_r): Walk OMP_CLAUSE_LASTPRIVATE_STMT. + * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define. + * parser.c (cp_parser_omp_for_loop): Parse collapsed for loops. + Add par_clauses argument. If decl is present in parallel's + lastprivate clause, change that clause to shared and add + a lastprivate clause for decl to OMP_FOR_CLAUSES. + Fix wording of error messages. Adjust finish_omp_for caller. + Add clauses argument. Parse loops with random access iterators. + (cp_parser_omp_clause_collapse, cp_parser_omp_clause_untied): New + functions. + (cp_parser_omp_for, cp_parser_omp_parallel): Adjust + cp_parser_omp_for_loop callers. + (cp_parser_omp_for_cond, cp_parser_omp_for_incr): New helper + functions. + (cp_parser_omp_clause_name): Handle collapse and untied + clauses. + (cp_parser_omp_clause_schedule): Handle auto schedule. + (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE + and PRAGMA_OMP_CLAUSE_UNTIED. + (OMP_FOR_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_COLLAPSE. + (OMP_TASK_CLAUSE_MASK): Define. + (cp_parser_omp_task, cp_parser_omp_taskwait): New functions. + (cp_parser_omp_construct): Handle PRAGMA_OMP_TASK. + (cp_parser_pragma): Handle PRAGMA_OMP_TASK and + PRAGMA_OMP_TASKWAIT. + * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and + OMP_CLAUSE_UNTIED. Handle OMP_CLAUSE_LASTPRIVATE_STMT. + (tsubst_omp_for_iterator): New function. + (dependent_omp_for_p): New function. + (tsubst_expr) <case OMP_FOR>: Use it. Handle collapsed OMP_FOR + loops. Adjust finish_omp_for caller. Handle loops with random + access iterators. Adjust for OMP_FOR_{INIT,COND,INCR} changes. + (tsubst_expr): Handle OMP_TASK. + * semantics.c (cxx_omp_create_clause_info): New function. + (finish_omp_clauses): Call it. Handle OMP_CLAUSE_UNTIED and + OMP_CLAUSE_COLLAPSE. + (cxx_omp_predetermined_sharing): Removed. + * semantics.c (finish_omp_for): Allow pointer iterators. Use + handle_omp_for_class_iterator and dependent_omp_for_p. Handle + collapsed for loops. Adjust c_finish_omp_for caller. Add new + clauses argument. Fix check for type dependent cond or incr. + Set OMP_FOR_CLAUSES to clauses. Use cp_convert instead of + fold_convert to convert incr amount to difference_type. Only + fold if not in template. If decl is mentioned in lastprivate + clause, set OMP_CLAUSE_LASTPRIVATE_STMT. Handle loops with random + access iterators. Adjust for OMP_FOR_{INIT,COND,INCR} + changes. + (finish_omp_threadprivate): Allow static class members of the + current class. + (handle_omp_for_class_iterator, begin_omp_task, finish_omp_task, + finish_omp_taskwait): New functions. + + * parser.c (cp_parser_binary_expression): Add prec argument. + (cp_parser_assignment_expression): Adjust caller. + * cp-tree.h (outer_curly_brace_block): New prototype. + * decl.c (outer_curly_brace_block): No longer static. + +2008-06-02 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36404 + * pt.c (push_template_decl_real): Consistently return error_mark_node + on error. + +2008-06-02 Tomas Bily <tbily@suse.cz> + + * typeck.c (is_bitfield_expr_with_lowered_type): Use CASE_CONVERT. + (cp_build_unary_op): Likewise. + (cp_build_indirect_ref): Use CONVERT_EXPR_P. + (maybe_warn_about_returning_address_of_local): Likewise. + +2008-05-29 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/35243 + * pt.c (tsubst_initializer_list): Consistently check the tree + returned by tsubst_pack_expansion for error_mark_node. + +2008-05-27 Michael Matz <matz@suse.de> + + PR c++/27975 + * call.c (build_new_op): Make warning conditional on + OPT_Wenum_compare. + +2008-05-27 Alexandre Oliva <aoliva@redhat.com> + + PR c++/35909 + * call.c (convert_like_real): Convert bitfield to desired type + before creating temporary. + +2008-05-26 Daniel Franke <franke.daniel@gmail.com> + + * Makefile.in: Adjusted dependencies on c-incpath.o. + +2008-05-23 Jakub Jelinek <jakub@redhat.com> + + PR c++/36237 + * cp-gimplify.c (cxx_omp_clause_apply_fn): Call + fold_build_cleanup_point_expr on build_call_a results. + + PR c++/36308 + * semantics.c (omp_clause_info_fndecl): New function. + (finish_omp_clauses): Use it. + +2008-05-21 Jakub Jelinek <jakub@redhat.com> + + PR c++/36023 + * cp-tree.h (check_array_initializer): New prototype. + * decl.c (check_array_initializer): New function. + (check_initializer): Call it. + * semantics.c (finish_compound_literal): Call it for ARRAY_TYPEs. + +2008-05-21 Tom Tromey <tromey@redhat.com> + + * mangle.c (save_partially_mangled_name): Remove. + (restore_partially_mangled_name): Likewise. + (write_encoding): Update. + (write_unqualified_name): Likewise. + (start_mangling): Always use name_obstack. Remove 'ident_p' + argument. + (get_identifier_nocopy): Remove. + (finish_mangling_internal): Rename from finish_mangling. + (finish_mangling): New function. + (finish_mangling_get_identifier): Likewise. + (partially_mangled_name, partially_mangled_name_len): Remove. + (mangle_decl_string): Change return type. Update. + (mangle_decl, mangle_type_string, mangle_special_for_type, + mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable, + mangle_ref_init_variable): Update. + +2008-05-12 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/35331 + * semantics.c (begin_class_definition): Extend checks on the first + argument. + +2008-05-12 Tomas Bily <tbily@suse.cz> + + * typeck2.c (digest_init): Use CONVERT_EXPR_P. + * call.c (build_over_call): Likewise. + * error.c (dump_expr): Use CASE_CONVERT. + * class.c (fixed_type_or_null): Likewise. + +2008-05-11 Volker Reichelt <v.reichelt@netcologne.de> + + * parser.c (cp_parser_omp_clause_reduction): Add missing "expected" + in error message. + (cp_parser_omp_clause_schedule): Remove superfluous "expected" + in error message. + +2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com> + + * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY, + DECL_LOOPING_CONST_OR_PURE_P attributes. + * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to + DECL_PURE_P. + +2008-05-02 Simon Baldwin <simonb@google.com> + + PR bootstrap/36108 + * typeck.c (build_array_ref): Remove warn_array_subscript_range. + +2008-05-01 Simon Baldwin <simonb@google.com> + + * typeck.c (build_array_ref): Call warn_array_subscript_range. + +2008-04-30 Jakub Jelinek <jakub@redhat.com> + + PR c++/35986 + * pt.c (more_specialized_fn): Stop the loop even if there are no + arguments before ellipsis. + +2008-04-29 Jakub Jelinek <jakub@redhat.com> + + PR c++/35650 + * parser.c (cp_parser_lookup_name): Look through single function + OVERLOAD. + + PR c++/35987 + * typeck.c (cp_build_modify_expr) <case PREINCREMENT_EXPR>: Don't build + COMPOUND_EXPR if the second argument would be error_mark_node. + +2008-04-28 Jason Merrill <jason@redhat.com> + Liu Guanwei <liu_gw@163.com> + + PR c++/57 + * parser.c (cp_parser_parameter_declaration): Handle < ambiguity + in default arguments. + +2008-04-25 Jan Hubicka <jh@suse.cz> + + * typeck.c (check_return_expr): Update. + * decl.c (start_preparsed_function): Update. + * method.c (use_thunk): Update. + +2008-04-24 Jakub Jelinek <jakub@redhat.com> + + PR c++/35758 + * cp-tree.h (cp_reconstruct_complex_type): New prototype. + * cp-objcp-common.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define. + * decl2.c (is_late_template_attribute): Only make vector_size + late tmpl attribute if argument is type or value dependent. + (cp_reconstruct_complex_type): New function. + +2008-04-24 Richard Guenther <rguenther@suse.de> + + * typeck.c (cp_build_function_call): Call + check_builtin_function_arguments. + +2008-04-23 Paolo Bonzini <bonzini@gnu.org> + + * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT. + (build_ptrmemfunc1): Don't set TREE_INVARIANT. + * init.c (build_zero_init): Don't set TREE_INVARIANT. + * class.c (build_base_path): Don't set TREE_INVARIANT. + (build_vtbl_ref_1): Don't set TREE_INVARIANT. + (build_vtbl_initializer): Don't set TREE_INVARIANT. + * decl.c (build_enumerator): Don't set TREE_INVARIANT. + * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT. + (generic_initializer): Don't set TREE_INVARIANT. + (ptr_initializer): Don't set TREE_INVARIANT. + (ptm_initializer): Don't set TREE_INVARIANT. + (class_initializer): Don't set TREE_INVARIANT. + * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT. + * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT. + (build_template_parm_index): Don't set TREE_INVARIANT. + (reduce_template_parm_level): Don't set TREE_INVARIANT. + (process_template_parm): Don't set TREE_INVARIANT. + +2008-04-22 Jason Merrill <jason@redhat.com> + + PR c++/35316 + * semantics.c (finish_decltype_type): Check DECL_BIT_FIELD_TYPE + to see if DECL_BIT_FIELD_TYPE should be used, not some other flag. + * typeck.c (is_bitfield_expr_with_lowered_type): Likewise. + +2008-04-22 Jakub Jelinek <jakub@redhat.com> + + PR c++/35747 + * semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt + expression is errorneous. + +2008-04-21 Jason Merrill <jason@redhat.com> + + PR c++/35325 + * tree.c (cp_tree_equal): Handle FIXED_CST. + + PR c++/35678 + * pt.c (template_template_parm_bindings_ok_p): Set + processing_template_decl while in this function. + +2008-04-18 Kris Van Hees <kris.van.hees@oracle.com> + + * cvt.c (type_promotes_to): Support char16_t and char32_t. + * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on + char16_t and char32_t. + * lex.c (reswords): Add char16_t and char32_t (for c++0x). + * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor + extended builtin type "u8char{16,32}_t". + * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support + RID_CHAR{16,32}. + (cp_lexer_print_token): Support CPP_STRING{16,32}. + (cp_parser_is_string_literal): Idem. + (cp_parser_string_literal): Idem. + (cp_parser_primary_expression): Support CPP_CHAR{16,32} and + CPP_STRING{16,32}. + (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}. + * tree.c (char_type_p): Support char16_t and char32_t as char types. + * typeck.c (string_conv_p): Support char16_t and char32_t. + +2008-04-17 Jason Merrill <jason@redhat.com> + + PR c++/35773 + * call.c (build_user_type_conversion_1): Represent second step of + copy-init with an rvalue conversion. + (convert_like_real) [ck_user]: Don't implicitly add it here. + +2008-04-15 Jakub Jelinek <jakub@redhat.com> + + PR c/35751 + * decl.c (layout_var_decl): If extern or static var has variable + size, set TREE_TYPE (decl) to error_mark_node. + +2008-04-16 Danny Smith <dannysmith@users.sourceforge.net> + + PR target/35921 + * optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag + to clone. + +2008-04-09 Jason Merrill <jason@redhat.com> + + PR c++/35708 + * semantics.c (finish_compound_literal): Return a TARGET_EXPR, + not a pushed variable. + +2008-04-09 Volker Reichelt <v.reichelt@netcologne.de> + + * call.c (build_op_delete_call): Fix quotation in warning message. + * decl.c (grokdeclarator): Quote keyword in error message. + * pt.c (check_for_bare_parameter_packs): Fix quotation in error + message. + + * parser.c (cp_parser_check_type_definition): Print error string + directly rather than using "%s". + (cp_parser_postfix_expression): Fix quotation. + (cp_parser_decltype): Likewise. + (cp_parser_sizeof_operand): Fix quotation. Simplify. + + * parser.c (cp_parser_non_integral_constant_expression): Build error + message with CONCAT rather than using "%s". + (cp_parser_primary_expression): Fix quotation. + (cp_parser_postfix_expression): Likewise. + (cp_parser_postfix_dot_deref_expression): Likewise. + (cp_parser_unary_expression): Likewise. + (cp_parser_new_expression): Likewise. + (cp_parser_delete_expression): Likewise. + + * parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN + as `)', not as `('. Fix quotation. + (cp_parser_consume_semicolon_at_end_of_statement): Fix quotation. + (cp_parser_primary_expression): Likewise. + (cp_parser_nested_name_specifier_opt): Likewise. + (cp_parser_postfix_expression): Likewise. + (cp_parser_postfix_open_square_expression): Likewise. + (cp_parser_parenthesized_expression_list): Likewise. + (cp_parser_pseudo_destructor_name): Likewise. + (cp_parser_new_expression): Likewise. + (cp_parser_direct_new_declarator): Likewise. + (cp_parser_delete_expression): Likewise. + (cp_parser_cast_expression): Likewise. + (cp_parser_question_colon_clause): Likewise. + (cp_parser_builtin_offsetof): Likewise. + (cp_parser_trait_expr): Likewise. + (cp_parser_label_for_labeled_statement): Likewise. + (cp_parser_compound_statement): Likewise. + (cp_parser_selection_statement): Likewise. + (cp_parser_condition): Likewise. + (cp_parser_iteration_statement): Likewise. + (cp_parser_already_scoped_statement): Likewise. + (cp_parser_simple_declaration): Likewise. + (cp_parser_linkage_specification): Likewise. + (cp_parser_static_assert): Likewise. + (cp_parser_decltype): Likewise. + (cp_parser_conversion_function_id): Likewise. + (cp_parser_operator_function_id): Likewise. + (cp_parser_operator): Likewise. + (cp_parser_type_parameter): Likewise. + (cp_parser_template_id): Likewise. + (cp_parser_explicit_instantiation): Likewise. + (cp_parser_explicit_specialization): Likewise. + (cp_parser_enum_specifier): Likewise. + (cp_parser_namespace_definition): Likewise. + (cp_parser_namespace_alias_definition): Likewise. + (cp_parser_using_declaration): Likewise. + (cp_parser_using_directive): Likewise. + (cp_parser_asm_definition): Likewise. + (cp_parser_direct_declarator): Likewise. + (cp_parser_ptr_operator): Likewise. + (cp_parser_parameter_declaration_clause): Likewise. + (cp_parser_initializer_clause): Likewise. + (cp_parser_class_specifier): Likewise. + (cp_parser_member_specification_opt): Likewise. + (cp_parser_member_declaration): Likewise. + (cp_parser_pure_specifier): Likewise. + (cp_parser_constant_initializer): Likewise. + (cp_parser_base_clause): Likewise. + (cp_parser_exception_specification_opt): Likewise. + (cp_parser_try_block): Likewise. + (cp_parser_function_try_block): Likewise. + (cp_parser_handler): Likewise. + (cp_parser_throw_expression): Likewise. + (cp_parser_asm_operand_list): Likewise. + (cp_parser_attributes_opt): Likewise. + (cp_parser_label_declaration): Likewise. + (cp_parser_constructor_declarator_p): Likewise. + (cp_parser_template_declaration_after_export): Likewise. + (cp_parser_single_declaration): Likewise. + (cp_parser_objc_message_expression): Likewise. + (cp_parser_objc_message_args): Likewise. + (cp_parser_objc_encode_expression): Likewise. + (cp_parser_objc_defs_expression): Likewise. + (cp_parser_objc_protocol_expression): Likewise. + (cp_parser_objc_selector_expression): Likewise. + (cp_parser_objc_protocol_refs_opt): Likewise. + (cp_parser_objc_typename): Likewise. + (cp_parser_objc_method_keyword_params): Likewise. + (cp_parser_objc_superclass_or_category): Likewise. + (cp_parser_objc_try_catch_finally_statement): Likewise. + (cp_parser_objc_synchronized_statement): Likewise. + (cp_parser_objc_throw_statement): Likewise. + (cp_parser_omp_var_list_no_open): Likewise. + (cp_parser_omp_clause_default): Likewise. + (cp_parser_omp_clause_if): Likewise. + (cp_parser_omp_clause_num_threads): Likewise. + (cp_parser_omp_clause_reduction): Likewise. + (cp_parser_omp_clause_schedule): Likewise. + (cp_parser_omp_critical): Likewise. + (cp_parser_omp_for_loop): Likewise. + (cp_parser_omp_sections_scope): Likewise. + + * parser.c (cp_parser_template_parameter_list): Simplify. + +2008-04-07 James E. Wilson <wilson@tuliptree.org> + + * pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len. + +2008-04-07 Jason Merrill <jason@redhat.com> + + PR c++/35734 + * class.c (type_has_user_nondefault_constructor): A template + counts as a nondefault constructor. + +2008-04-04 Paolo Bonzini <bonzini@gnu.org> + + * decl.c (cxx_push_function_context): Delete. + (cxx_pop_function_context): Delete. + (start_preparsed_function): Merge cxx_push_function_context (!f->decl + code only). + * cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT, + LANG_HOOKS_FUNCTION_FINAL): Delete. + (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to + LANG_HOOKS_MISSING_NORETURN_OK_P. + * cp-tree.h (cxx_push_function_context, cxx_pop_function_context): + Delete prototype. + * semantics.c (current_stmt_tree): Fix comment. + +2008-04-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/35741 + * semantics.c (finish_offsetof): Undo effect of convert_from_reference + before calling fold_offsetof. + +2008-04-03 Tom Tromey <tromey@redhat.com> + + * Make-lang.in (c++_OBJS): New variable. + +2008-04-03 Paolo Bonzini <bonzini@gnu.org> + + * optimize.c (clone_body): New, from tree-inline.c. + +2008-04-03 Paolo Bonzini <bonzini@gnu.org> + + * method.c (synthesize_method): Use {push,pop}_function_context. + * name-lookup.c (push_to_top_level): Likewise. + * parser.c (cp_parser_late_parsing_for_member): Likewise. + +2008-03-30 Volker Reichelt <v.reichelt@netcologne.de> + + PR c++/35578 + * parser.c (cp_parser_decl_specifier_seq): Add location to error + message. + +2008-03-27 Tom Tromey <tromey@redhat.com> + + * Make-lang.in: Revert automatic dependency patch. + +2008-03-27 Douglas Gregor <doug.gregor@gmail.com> + + PR obj-c++/35704 + * typeck.c (build_x_compound_expr): Use cp_build_compound_expr. + (build_compound_expr): New, for compatibility with C + build_compound_expr. + (cp_build_compound_expr): Renamed from build_compound_expr. + (build_c_cast): New, for compatibility with C build_c_cast. + (cp_build_c_cast): Renamed from build_c_cast. + * init.c (build_vec_delete_1): Fix calls to build_compound_expr. + * decl.c (cxx_maybe_build_cleanup): Ditto. + * cp-tree.h (build_compound_expr): Add C-compatibile prototype. + (cp_build_compound_expr): Renamed from build_compound_expr. + (build_c_cast): Add C-compatible prototype. + (cp_build_c_cast): Renamed from build_c_cast. + * typeck2.c (build_functional_cast): Use cp_build_c_cast. + * parser.c (cp_parser_cast_expression): Fix call to build_c_cast. + +2008-03-27 Douglas Gregor <doug.gregor@gmail.com> + + * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with + tsubst_pack_expansion returning a pack expansion, or a TREE_VEC + ending in a pack expansion, both of which can occur when + substituting into a nested template. + (tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're + instantiating the sizeof...(X) form, make tsubst_copy do the work. + * parser.c (cp_parser_template_parameter): Deal with unnamed + non-type template parameter packs identified by pack expansions in + the parameter type. + +2008-03-26 Jakub Jelinek <jakub@redhat.com> + + PR c++/35546 + * pt.c (apply_late_template_attributes): Don't call tsubst on + first attribute argument if it is IDENTIFIER_NODE. + + PR c++/35332 + * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR + and LTGT_EXPR to pp_expression. + +2008-03-26 Douglas Gregor <doug.gregor@gmail.com> + + * pt.c (coerce_template_template_parm): Moved the body of the loop + of coerce_template_template_parms here, to make iteration over a + template argument pack simpler. + Also, allow matching of a template parameter pack in the template + template parameter to a template parameter in the template + template argument. + (coerce_template_template_parms): Deal with variadic template + template parameters. Use coerce_template_template_parm. + (unify): Make sure we coerce the template template argument's + template arguments to the template template parameter's template + parameters, not the other way around. + +2008-03-25 Tom Tromey <tromey@redhat.com> + + * Make-lang.in: Remove .o targets. + (cp/g++spec.o): Moved to cp/. Reduce to variable setting. + (GXX_OBJS): Update. + (c++_OBJS): New variable. + (CXX_TREE_H, CXX_PRETTY_PRINT_H): Remove. + +2008-03-25 Douglas Gregor <doug.gregor@gmail.com> + + * typeck.c (composite_pointer_type_r): Add SFINAE support. + (composite_pointer_type): Ditto. + (common_type): Fix call to composite_pointer_type. + (cxx_sizeof_nowarn): New; used to be a macro. + (cxx_sizeof_expr): Add SFINAE support. + (cxx_alignof_expr): Ditto. + (decay_conversion): Fix calls for SFINAE support. + (rationalize_conditional_expr): Add SFINAE support. + (build_class_member_access_expr): Ditto. + (finish_class_member_access_expr): Ditto. + (build_x_indirect_ref): Ditto. + (build_indirect_ref): Original version renamed to + cp_build_indirect_ref; new version provides a bridge from + c-common. + (cp_build_indirect_ref): Was build_indirect_ref; added SFINAE + support. + (get_member_function_from_ptrfunc): Fix calls for SFINAE support. + (build_function_call): Original version renamed to + cp_build_function_call; new version provides a bridge from + c-common. + (cp_build_function_call): Was build_function_call; added SFINAE + support. + (convert_arguments): Add SFINAE support. + (build_x_binary_op): Ditto. + (build_binary_op): Original version renamed to cp_build_binary_op; + new version provides a bridge from c-common. + (cp_build_binary_op): Was build_binary_op; added SFINAE support. + (pointer_diff): Fix calls for SFINAE. + (build_x_unary_op): Add SFINAE support. + (condition_conversion): Fix calls for SFINAE. + (build_unary_op): Original version renamed to cp_build_unary_op; + new version provides a bridge from c-common. + (cp_build_unary_op): Was build_unary_op; added SFINAE support. + (unary_complex_lvalue): Fix calls for SFINAE. + (build_x_conditional_expr): Add SFINAE support. + (build_x_compound_expr_from_list): Fix calls for SFINAE. + (build_x_compound_expr): Add SFINAE support. + (convert_ptrmem): Fix calls for SFINAE. + (build_static_cast_1): Add SFINAE support. + (build_static_cast): Ditto. + (build_reinterpret_cast_1): Ditto. + (build_reinterpret_cast): Ditto. + (build_const_cast_1): Ditto. + (build_const_cast): Ditto. + (build_c_cast): Ditto. + (build_modify_expr): Original version renamed to + cp_build_modify_expr; new version provides a bridge from c-common. + (cp_build_modify_expr): Was build_modify_expr; added SFINAE + support. + (build_x_modify_expr): Add SFINAE support. + (build_ptrmemfunc): Fix calls for SFINAE. + (convert_for_assignment): Add SFINAE support. + (convert_for_initialization): Ditto. + (check_return_expr): Fix calls for SFINAE. + (lvalue_or_else): Add SFINAE support. + * init.c (perform_member_init): Fix calls for SFINAE. + (emit_mem_initializers): Ditto. + (expand_virtual_init): Ditto. + (expand_cleanup_for_base): Ditto. + (build_aggr_init): Add SFINAE support. + (expand_default_init): Ditto. + (expand_aggr_init_1): Fix calls for SFINAE. + (build_offset_ref): Ditto. + (build_new_1): Add SFINAE support. + (build_new): Ditto. + (build_vec_delete_1): Fix calls for SFINAE. + (get_temp_regvar): Ditto. + (build_vec_init): Add SFINAE support. + (build_dtor_call): Fix calls for SFINAE. + (build_delete): Ditto. + (push_base_cleanups): Ditto. + (build_vec_delete_1): Ditto. + * class.c (build_base_path): Fix calls for SFINAE. + (build_simple_base_path): Ditto. + (convert_to_base_statically): Ditto. + (build_vfn_ref): Ditto. + (resolve_address_of_overloaded_function): Ditto. + * decl.c (check_initializer): Fix calls for SFINAE. + (register_dtor_fn): Ditto. + (compute_array_index_type): Ditto. + (finish_enum): Ditto. + (start_preparsed_function): Ditto. + (cxx_maybe_build_cleanup): Ditto. + * call.c (convert_like): Add COMPLAIN argument. + (convert_like_with_context): Ditto. + (build_this): Fix calls for SFINAE. + (build_user_type_conversion): Ditto. + (resolve_args): Ditto. + (build_new_function_call): Add SFINAE support. + (build_operator_new_call): Fix calls for SFINAE. + (build_object_call): Add SFINAE support. + (build_conditional_expr): Ditto. + (build_new_op): Ditto. + (build_op_delete_call): Fix calls for SFINAE. + (build_temp): Ditto. + (convert_like_real): Add SFINAE support. + (build_x_va_arg): Fix calls for SFINAE. + (convert_default_arg): Ditto. + (build_over_call): Add SFINAE support. + (build_java_interface_fn_ref): Fix calls for SFINAE. + (build_special_member_call): Add SFINAE support. + (build_new_method_call): Ditto. + (perform_implicit_conversion): Ditto. + (perform_direct_initialization_if_possible): Ditto. + (initialize_reference): Fix calls for SFINAE. + * method.c (do_build_assign_ref): Fix calls for SFINAE. + * rtti.c (build_headof): Fix calls for SFINAE. + (get_tinfo_decl_dynamic): Ditto. + (get_typeid): Ditto. + (build_dynamic_cast_1): Add SFINAE support. + (build_dynamic_cast): Ditto. + (tinfo_base_init): Fix calls for SFINAE. + * except.c (do_get_exception_ptr): Fix calls for SFINAE. + (do_end_catch): Ditto. + (initialize_handler_parm): Ditto. + (expand_start_catch_block): Ditto. + (do_allocate_exception): Ditto. + (do_free_exception): Ditto. + (build_throw): Ditto. + * cvt.c (build_up_reference): Fix calls for SFINAE. + (convert_to_reference): Ditto. + (ocp_convert): Ditto. + (convert_to_void): Add SFINAE support. + * tree.c (build_dummy_object): Fix calls for SFINAE. + (stabilize_expr): Ditto. + * cp-tree.h (build_conditional_expr): Add tsubst_flags_t + parameter. + (build_new_method_call): Ditto. + (build_special_member_call): Ditto. + (build_new_op): Ditto. + (perform_implicit_conversion): Ditto. + (perform_direct_initialization_if_possible): Ditto. + (convert_to_void): Ditto. + (build_aggr_init): Ditto. + (build_new): Ditto. + (build_vec_init): Ditto. + (build_dynamic_cast): Ditto. + (finish_call_expr): Ditto + (cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter. + (cxx_sizeof_nowarn): Remove macro; add function declaration. + (build_class_member_access_expr): Add tsubst_flags_t parameter. + (finish_class_member_access_expr): Ditto. + (build_x_indirect_ref): Ditto. + (cp_build_indirect_ref): New. + (cp_build_function_call): Add tsubst_flags_t parameter. + (build_x_unary_op): Ditto. + (cp_build_unary_op): New. + (build_x_conditional_expr): Add tsubst_flags_t parameter. + (build_x_compound_expr): Ditto. + (build_compound_expr): Ditto. + (build_static_cast): Ditto. + (build_reinterpret_cast): Ditto. + (build_const_cast): Ditto. + (build_c_cast): Ditto. + (build_x_modify_expr): Ditto. + (cp_build_modify_expr): New. + (convert_for_initialization): Add tsubst_flags_t parameter. + (cp_build_binary_op): Remove macro; add function declaration. + (invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter. + (lvalue_or_else): Ditto. + (build_functional_cast): Ditto. + * typeck2.c (digest_init): Fix calls for SFINAE. + (process_init_constructor_array): Ditto. + (process_init_constructor_record): Ditto. + (build_x_arrow): Ditto. + (build_m_component_ref): Ditto. + (build_functional_cast): Add SFINAE support. + * pt.c (tsubst_copy_and_build): Add (more) SFINAE support. + * semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE. + (finish_expr_stmt): Ditto. + (finish_for_expr): Ditto. + (finish_asm_stmt): Ditto. + (finish_non_static_data_member): Ditto. + (finish_qualified_id_expr): Ditto. + (finish_call_expr): Add SFINAE support. + (finish_increment_expr): Fix calls for SFINAE. + (finish_unary_op_expr): Ditto. + (simplify_aggr_init_expr): Ditto. + (finish_omp_clauses): Ditto. + (finish_omp_for): Ditto. + (finish_omp_barrier): Ditto. + (finish_omo_flush): Ditto. + * decl2.c (grok_array_decl): Fix calls or SFINAE. + (build_anon_union_vars): Ditto. + (get_guard_cond): Ditto. + (set_guard): Ditto. + (one_static_initialization_or_destruction): Ditto. + (do_static_initialization_or_destruction): Ditto. + (generate_ctor_or_dtor_function): Ditto. + (build_offset_ref_call_from_tree): Ditto. + * parser.c (cp_parser_postfix_expression): Fix calls for SFINAE. + (cp_parser_postfix_dot_deref_expression): Ditto. + (cp_parser_unary_expression): Ditto. + (cp_parser_new_expression): Ditto. + (cp_parser_cast_expression): Ditto. + (cp_parser_binary_expression): Ditto. + (cp_parser_question_colon_clause): Ditto. + (cp_parser_assignment_expression): Ditto. + (cp_parser_expression): Ditto. + (cp_parser_builtin_offsetof): Ditto. + (cp_parser_template_argument): Ditto. + (cp_parser_functional_cast): Ditto. + +2008-03-24 Tom Tromey <tromey@redhat.com> + + * lex.c (handle_pragma_interface): Don't copy the filename. + (handle_pragma_implementation): Copy filename using xstrdup. + +2008-03-21 Paolo Carlini <pcarlini@suse.de> + + * cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P. + (SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P. + (IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P. + (PROMOTES_TO_AGGR_TYPE): Remove. + (CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust. + * typeck.c (unary_complex_lvalue, build_modify_expr, + convert_for_initialization): Adjust. + * init.c (is_aggr_type): Remove. + (is_class_type): Add. + (build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init, + build_delete): Adjust. + * lex.c (make_aggr_type): Remove. + (make_class_type): Add. + (cxx_make_type): Adjust. + * class.c (finish_struct_1, fixed_type_or_null, is_empty_class): + Adjust. + * decl.c (build_typename_type, make_typename_type, + make_unbound_class_template, cxx_init_decl_processing, + check_tag_decl, groktypename, start_decl_1, layout_var_decl, + check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms, + grok_op_properties, xref_tag, check_function_type): Adjust. + * call.c (check_dtor_name, standard_conversion, implicit_conversion, + add_builtin_candidate, add_builtin_candidates, + build_user_type_conversion_1, convert_like_real, build_cxx_call, + is_subseq, compare_ics): Adjust. + * method.c (use_thunk): Adjust. + * rtti.c (build_dynamic_cast_1, create_pseudo_type_info, + create_tinfo_types): Adjust. + * cvt.c (cp_convert_to_pointer, convert_to_pointer_force, + build_up_reference, convert_to_reference, convert_from_reference, + ocp_convert, build_expr_type_conversion): Adjust. + * tree.c (bind_template_template_parm, error_type): Adjust. + * dump.c (cp_dump_tree): Adjust. + * search.c (lookup_member): Adjust. + * friend.c (make_friend_class, do_friend): Adjust. + * typeck2.c (store_init_value, process_init_constructor_array, + process_init_constructor_record, build_x_arrow, build_m_component_ref, + build_functional_cast): Adjust. + * pt.c (finish_member_template_decl, process_template_parm, + lookup_template_class, tsubst_function_type, tsubst, + tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc): + Adjust. + * semantics.c (begin_class_definition, finish_base_specifier, + finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type): + Adjust. + * name-lookup.c (constructor_name_p, push_overloaded_decl, + do_class_using_decl, lookup_qualified_name, + maybe_process_template_type_declaration): Adjust. + * decl2.c (grok_array_decl, check_member_template, + constrain_class_visibility): Adjust. + * parser.c (cp_parser_class_name): Adjust. + +2008-03-18 Paolo Bonzini <bonzini@gnu.org> + + * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete. + +2008-03-17 Jason Merrill <jason@redhat.com> + + PR c++/35548 + * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding + a temp directly to a reference as per DR391. + +2008-03-12 Richard Guenther <rguenther@suse.de> + + PR c++/35469 + Revert: + 2008-02-04 Richard Guenther <rguenther@suse.de> + + PR java/35035 + * decl.c (record_builtin_java_type): Make jboolean a + integer type again where its mode doesn't match that of bool. + + 2008-01-25 Richard Guenther <rguenther@suse.de> + + PR c++/33887 + * decl.c (record_builtin_java_type): Make __java_boolean + a variant of bool. + * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check + after TYPE_MAIN_VARIANT check. + +2008-03-10 Jakub Jelinek <jakub@redhat.com> + + PR c++/35328 + * semantics.c (finish_omp_clauses): Look through NOP_EXPR even + if errorcount. + + PR c++/35337 + * semantics.c (finish_omp_clauses): Use %qD instead of %qE for + DECL_P in not a variable and appears more than once error messages. + +2008-03-07 Paolo Bonzini <bonzini@gnu.org> + + Revert: + + 2008-02-06 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/35049 + PR c++/35096 + * typeck.c (structural_comptypes): Call cp_comptypes. + (comptypes): New; called from the C/C++ common bits to perform + strict checks. + (cp_comptypes): Renamed from comptypes, which is already used, + with a different signature, by the C++ front end. + (build_reinterpret_cast_1): Call cp_comptypes. + (ptr_reasonably_similar): Ditto. + * decl.c (decls_match): Ditto. + * cvt.c (convert_to_reference): Ditto. + * cp-tree.h (same_type_p): Ditto. + (same_or_base_type_p): Ditto. + (comptypes): Rename to cp_comptypes. + * pt.c (canonical_type_parameter): Call cp_comptypes. + +2008-03-07 Paolo Bonzini <bonzini@gnu.org> + + * cp-objcp-common.c (cxx_types_compatible_p): Remove obsolete + test for equivalence between pointer and references. + +2008-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 24924 + * class.c (finish_struct_anon): Use permerror instead of pedwarn. + (check_field_decls): Likewise. + (note_name_declared_in_class): Likewise. + * call.c (build_new_op): Likewise. + (convert_like_real): Likewise. + (build_over_call): Likewise. + * lex.c (unqualified_fn_lookup_error): Likewise. + * parser.c (cp_parser_template_id): Likewise. + * cvt.c (warn_ref_binding): Likewise. + (convert_to_reference): Likewise. + (ocp_convert): Likewise. + (convert_to_void): Use error instead of pedwarn. + * error.c (cp_cpp_error): Use pedantic_warning_kind. + * decl.c (compute_array_index_type): Use constant_expression_error. + +2008-03-01 Douglas Gregor <doug.gregor@gmail.com> + + * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Note + that auto is either a storage class or a simple type specifier, + depending on the dialect. + (cp_parser_decl_specifier_seq): Complain about `auto' as a storage + specifier in C++98 mode, error in C++0x mode (since we don't + support auto as a type specifier, yet). + (cp_parser_storage_class_specifier_opt): Don't treat `auto' as a + storage specifier in C++0x mode. + (cp_parser_simple_type_specifier): Parse `auto' as a + simple-type-specifier, but error because we don't support it yet. + +2008-02-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * parser.c (cp_parser_nonclass_name): New. + (cp_parser_pseudo_destructor_name): Use it instead of + cp_parser_type_name. + (cp_parser_type_name): Move code to cp_parser_nonclass_name. + +2008-02-29 Tom Tromey <tromey@redhat.com> + + * parser.c (struct cp_token) <input_file_stack_index>: Remove. + (cp_lexer_get_preprocessor_token): Update. + (cp_lexer_set_source_position_from_token): Don't call + restore_input_file_stack. + * lex.c (cxx_init): Don't use push_srcloc or pop_srcloc. + +2008-02-28 Richard Guenther <rguenther@suse.de> + + Revert: + 2008-02-26 Richard Guenther <rguenther@suse.de> + + * decl.c (duplicate_decls): Remove decl from global mapping + before ggc_freeing it. + +2008-02-27 Jakub Jelinek <jakub@redhat.com> + + PR c++/35368 + * rtti.c: Include c-pragma.h. + (push_abi_namespace, pop_abi_namespace): New functions. + (build_dynamic_cast_1, tinfo_base_init, get_pseudo_ti_index, + create_tinfo_types, emit_support_tinfos): Use them. + * Make-lang.in (cp/rtti.o): Depend on $(C_PRAGMA_H). + +2008-02-26 Jason Merrill <jason@redhat.com> + + PR c++/35315 + * decl.c (grokdeclarator): Allow a typedef of an unnamed struct + to name the struct for linkage purposes even if it has attributes. + (start_decl): In that case, set ATTR_FLAG_TYPE_IN_PLACE. + +2008-02-26 Tom Tromey <tromey@redhat.com> + + * parser.c (eof_token): Remove old location code. + (check_empty_body): Remove test of USE_MAPPED_LOCATION. + * decl2.c (generate_ctor_or_dtor_function): Remove old location + code. + (cp_write_global_declarations): Likewise. + * lex.c (cxx_init): Remove old location code. + (handle_pragma_implementation): Remove test of + USE_MAPPED_LOCATION. + * pt.c (tsubst): Remove old location code. + * error.c (cp_print_error_function): Remove test of + USE_MAPPED_LOCATION. + * decl.c (pop_label): Remove old location code. + (finish_function): Likewise. + +2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 26264 + * call.c (magic_varargs_p): Remove BUILT_IN_STDARG_START. + +2008-02-26 Richard Guenther <rguenther@suse.de> + + * decl.c (duplicate_decls): Remove decl from global mapping + before ggc_freeing it. + +2008-02-26 Paolo Carlini <pcarlini@suse.de> + + PR c++/35323 + * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE. + +2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * typeck.c (build_class_member_access_expr): Add appropriate + OPT_W* parameter to warning. + (build_reinterpret_cast_1): Likewise. + * name-lookup.c (push_overloaded_decl): Likewise. + +2008-02-25 Paolo Carlini <pcarlini@suse.de> + + PR c++/35333 + * error.c (dump_expr): Handle CONJ_EXPR. + +2008-02-25 Paolo Carlini <pcarlini@suse.de> + + PR c++/35338 + * error.c (dump_type): Handle FIXED_POINT_TYPE. + (dump_expr): Handle FIXED_CST. + +2008-02-24 Jason Merrill <jason@redhat.com> + + * parser.c (cp_parser_declaration): Handle "inline namespace". + (cp_parser_namespace_definition): Likewise. + + PR c++/33486 + * name-lookup.c (arg_assoc_namespace): Look down into inline + namespaces, too. + +2008-02-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * typeck.c (check_for_casting_away_constness): Use 1 single + argument, the type of cast, to decide what diagnostics generate. + (build_static_cast_1): Remove unused code. Update call to + check_for_casting_away_constness. + (build_reinterpret_cast_1): Update call to + check_for_casting_away_constness. + (build_const_cast_1): Likewise. + +2008-02-24 Paolo Carlini <pcarlini@suse.de> + + * error.c (dump_expr): Don't deal directly with NEW_EXPR (and + VEC_NEW_EXPR), forward to pp_expression. + * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME. + +2008-02-24 Danny Smith <dannysmith@users.sourceforge.net> + + PR c++/34749 + * friend.c (do_friend): Call cplus_decl_attributes earlier. + +2008-02-22 Andrew Pinski <andrew_pinski@playstation.sony.com> + + PR C++/34715 + * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for + template decls' function decl. + +2008-02-22 Paolo Carlini <pcarlini@suse.de> + + PR c++/35282 + Revert: + 2008-02-14 Paolo Carlini <pcarlini@suse.de> + + PR c++/28743 + * pt.c (determine_specialization): In case of function templates, + when the type of DECL does not match FN there is no match. + +2008-02-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + PR c/19999 + * typeck.c (build_binary_op): Warn about floating point + comparisons if FLOAT_TYPE_P, not only for REAL_TYPE. + +2008-02-19 Jason Merrill <jason@redhat.com> + + PR c++/34950 + * pt.c (resolve_overloaded_unification): Set processing_template_decl + while we look for possible bindings. + +2008-02-19 Jakub Jelinek <jakub@redhat.com> + + PR c++/35028 + * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors. + + PR c++/34964 + PR c++/35244 + * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p + vars. Afterwards ensure v is VAR_DECL. + + PR c++/35078 + * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't + call cp_finish_decl. + * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type + early. + +2008-02-15 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/35023 + PR c++/35024 + PR c++/35026 + * pt.c (finish_member_template_decl): If the type in a TYPE_DECL + is error_mark_node, return an error early. + (find_parameter_packs_r): Pass the pointer set along to recursive + calls of cp_walk_subtrees; don't try to manage the pointer set + ourselves. + (uses_parameter_packs): Pass the pointer set to cp_walk_tree. + (make_pack_expansion): Ditto. + (check_for_bare_parameter_packs): Ditto. Also, don't bother taking + a second pass through the tree with find_parameter_packs_r; that + second pass no longer does anything. + (push_template_decl_real): If we have an erroneous declaration, + set its type to error_mark_node before returning an error. + +2008-02-14 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/34050 + * pt.c (tsubst_initializer_list): Deal with the use of + VOID_TYPE_NODE to indicate value-initialization of the bases. + +2008-02-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + Jason Merrill <jason@redhat.com> + + PR c++/5645 + PR c++/11159 + * class.c (type_has_user_nondefault_constructor): New fn. + * cp-tree.h: Declare it. + * init.c (emit_mem_initializers): Use it for -W warning about + missing base initializer. + +2008-02-14 Paolo Carlini <pcarlini@suse.de> + + PR c++/28743 + * pt.c (determine_specialization): In case of function templates, + when the type of DECL does not match FN there is no match. + +2008-02-13 Jakub Jelinek <jakub@redhat.com> + Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c++/35138 + * parser.c (cp_parser_pseudo_destructor_name): If next tokens + are not identifier :: ~, return before calling cp_parser_type_name. + +2008-02-13 Jason Merrill <jason@redhat.com> + + PR c++/34962, c++/34937, c++/34939 + * decl2.c (is_late_template_attribute): Always defer attributes + vector_size and weak. + + PR c++/34774 + * pt.c (value_dependent_expression_p): Look into DECL_INITIAL + of enumerators, too. + +2008-02-12 Jason Merrill <jason@redhat.com> + + PR c++/34824 + * call.c (convert_like_real): Pass LOOKUP_NO_CONVERSION to build_temp + if we're doing conversions to call a user-defined conversion function. + +2008-02-12 Steven Bosscher <steven@gcc.gnu.org> + + PR c++/29048 + * semantics.c (finish_qualified_id_expr): Avoid duplicate access + check here, too. + +2008-02-12 Jakub Jelinek <jakub@redhat.com> + + PR c++/34862 + * init.c (build_new_1): Don't create placement_expr before + constructing alloc_call. Verify that the pointer is passed by + value to operator new. + +2008-02-11 Jason Merrill <jason@redhat.com> + + PR c++/35097 + * pt.c (tsubst): Don't look up a template typedef in an explicit + specialization. + +2008-02-11 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/35113 + * tree.c (cp_build_qualified_type_real): When building a + cv-qualified array type, build it as a unique type with + build_cplus_array_type_1 and then adopt the unqualified type's + main variant. + +2008-02-11 Paolo Carlini <pcarlini@suse.de> + + PR c++/35077 + * decl.c (groktypename): Check grokdeclarator return. + +2008-02-10 Jason Merrill <jason@redhat.com> + + PR c++/34094 + * decl2.c (cp_write_global_declarations): Don't write out static + data members with DECL_IN_AGGR_P set. + +2008-02-08 Jason Merrill <jason@redhat.com> + + PR c++/35116 + * tree.c (build_target_expr_with_type): Handle void initializer. + (bot_manip): Remap slot before recursing. + +2008-02-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + PR other/35107 + * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS). + +2008-02-06 Alexandre Oliva <aoliva@redhat.com> + + PR c++/35056 + * tree.c: Include tree-flow.h. + (build_target_expr): Check type compatibility. + * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H). + * call.c (convert_like_real): Convert bitfield to expected type. + +2008-02-06 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/35049 + PR c++/35096 + * typeck.c (structural_comptypes): Call cp_comptypes. + (comptypes): New; called from the C/C++ common bits to perform + strict checks. + (cp_comptypes): Renamed from comptypes, which is already used, + with a different signature, by the C++ front end. + (build_reinterpret_cast_1): Call cp_comptypes. + (ptr_reasonably_similar): Ditto. + * decl.c (decls_match): Ditto. + * cvt.c (convert_to_reference): Ditto. + * cp-tree.h (same_type_p): Ditto. + (same_or_base_type_p): Ditto. + (comptypes): Rename to cp_comptypes. + * pt.c (canonical_type_parameter): Call cp_comptypes. + +2008-02-05 Jakub Jelinek <jakub@redhat.com> + + PR c++/33553 + * pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is + value dependent expression. + +2008-02-05 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/35074 + * decl2.c (save_template_attributes): When we're modifying the + TYPE_MAIN_VARIANT to add new attributes, be sure to also modify + all of the other variants to add those same attributes. Otherwise, + the main variant will be inconsistent with those other variants. + +2008-02-04 Richard Guenther <rguenther@suse.de> + + PR java/35035 + * decl.c (record_builtin_java_type): Make jboolean a + integer type again where its mode doesn't match that of bool. + +2008-02-02 Jason Merrill <jason@redhat.com> + Mark Mitchell <mark@codesourcery.com> + + PR c++/33916 + * init.c (build_value_init_1): New function. + (build_value_init): New function. + * typeck2.c (build_functional_cast): Call it. + * cp-gimplify.c (cp_gimplify_init_expr): Handle its output. + + * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from + TYPE_HAS_CONSTRUCTOR. + * class.c (finish_struct_bits, maybe_warn_about_overly_private_class, + add_implicitly_declared_members): Adjust. + (check_field_decls): Adjust. Remove warnings about reference/const + in class without constructor. + (check_bases_and_members): Adjust. Give those warnings here instead. + * decl.c (fixup_anonymous_aggr): Adjust. + (check_initializer): Adjust, clarify logic slightly. + (grok_special_member_properties): Adjust, only set if user-provided. + * rtti.c (create_tinfo_types): Don't set. + * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al. + Use same_type_ignoring_top_level_qualifiers_p. + * pt.c (check_explicit_specialization): Adjust. + (instantiate_class_template): Adjust. + +2008-01-31 Douglas Gregor <doug.gregor@gmail.com> + Jakub Jelinek <jakub@redhat.com> + + PR c++/34935 + PR c++/34936 + * typeck.c (structural_comptypes): Handle comparisons of + VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and + REAL_TYPE nodes. + * mangle.c (write_builtin_type): Map down to the canonical type, + which will be one of the predefined type nodes. + +2008-01-29 Michael Meissner <michael.meissner@amd.com> + + PR 35004 + * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16 + bits to allow for expansion of the number of middle end tree + codes. + +2008-01-29 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/34055 + PR c++/34103 + PR c++/34219 + PR c++/34606 + PR c++/34753 + PR c++/34754 + PR c++/34755 + PR c++/34919 + PR c++/34961 + * typeck.c (check_return_expr): Tweak call to + check_for_bare_parameter_packs. + * class.c (add_method): Be careful with error_mark_nodes. + * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from + signature. + * pt.c (struct find_parameter_pack_data): Remove + SET_PACKS_TO_ERROR. + (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR. + (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR. + (make_pack_expansion): Ditto. + (check_for_bare_parameter_packs): Parameter is now a tree, not a + tree*. + (process_template_parm): Tweak call to + check_for_bare_parameter_packs. + (push_template_decl_real): Tweak calls to + check_for_bare_parameter_packs. If bare parameter packs are found + in the list of exceptions, clear out that list after giving an + error. + * semantics.c (finish_cond): Tweak call to + check_for_bare_parameter_packs. + (finish_expr_stmt): Ditto. + (finish_for_expr): Ditto. + (finish_switch_cond): Ditto. + (finish_mem_initializers): Ditto. + (finish_member_declaration): Ditto. + (finish_static_assert): Check for bare parameter packs in the + condition. + * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the + attributes of a declaration. + * parser.c (cp_parser_using_declaration): Tweak call to + check_for_bare_parameter_packs. + (cp_parser_base_clause): Ditto. + +2008-01-28 Jason Merrill <jason@redhat.com> + + PR c++/35007 + * class.c (build_base_path): Fix !want_pointer case. + +2008-01-27 Jason Merrill <jason@redhat.com> + + PR c++/27177 + * class.c (build_base_path): Fix previous change. + +2008-01-26 Jakub Jelinek <jakub@redhat.com> + + PR c++/34965 + * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR + and TRUTH_XOR_EXPR. + +2008-01-26 Richard Guenther <rguenther@suse.de> + + PR c++/34235 + * typeck.c (build_binary_op): Remove code to shorten compares. + +2008-01-25 Richard Guenther <rguenther@suse.de> + + PR c++/33887 + * decl.c (record_builtin_java_type): Make __java_boolean + a variant of bool. + * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check + after TYPE_MAIN_VARIANT check. + +2008-01-25 Jason Merrill <jason@redhat.com> + + PR c++/27177 + * class.c (build_base_path): Don't mess with virtual access if + skip_evaluation. + * call.c (standard_conversion): Don't check whether source type + is complete. + + * decl2.c (is_late_template_attribute): Don't defer attribute + visibility just because the type is dependent. + +2008-01-25 Jason Merrill <jason@redhat.com> + Mark Mitchell <mark@codesourcery.com> + + PR c++/31780 + * call.c (standard_conversion): Allow conversion from integer/real + to complex. + (compare_ics): Such a conversion is worse than a normal arithmetic + conversion. + +2008-01-25 Richard Guenther <rguenther@suse.de> + + PR c++/33887 + * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define + to true. + +2008-01-24 Paolo Carlini <pcarlini@suse.de> + + PR c++/34603 + * pt.c (push_template_decl_real): Return error_mark_node in case + of template definition of non-template. + +2008-01-24 Jason Merrill <jason@redhat.com> + + PR c++/34913 + * decl2.c (is_late_template_attribute): Defer any attribute with + dependent args. Also defer type attributes if the type is dependent. + +2008-01-22 Jakub Jelinek <jakub@redhat.com> + Alexandre Oliva <aoliva@redhat.com> + + PR c++/33984 + * call.c (reference_binding): For bitfields use the declared bitfield + type. + (add_builtin_candidates): Likewise. + * class.c (layout_class_type): For bitfields copy over the + original type quals. + +2008-01-22 Jason Merrill <jason@redhat.com> + + PR c++/28560 + * decl.c (groktypename): Also ignore attributes on dependent + possibly-class types. + + PR c++/34912 + * friend.c (do_friend): Check for prior declaration of a friend + function of a local class. + * name-lookup.c (lookup_name_innermost_nonclass_level): + No longer static. + * name-lookup.h: Declare it. + +2008-01-22 Tom Tromey <tromey@redhat.com> + + PR c++/34829: + * init.c (build_new_1): Only disallow Java aggregates. + +2008-01-22 Jakub Jelinek <jakub@redhat.com> + + PR c++/34607 + * semantics.c (finish_omp_for): Don't call c_finish_omp_for + if decl or init is error_mark_node. + + PR c++/34918 + * error.c (dump_expr): Handle VECTOR_CST. + +2008-01-21 Jason Merrill <jason@redhat.com> + + PR c++/33959 + * pt.c (tsubst_aggr_type): Make sure our context is complete. + + PR c++/34573 + * pt.c (retrieve_local_specialization): Robustify. + (tsubst_pack_expansion, tsubst_decl): Remove redundant checks. + + PR c++/34846 + * pt.c (tsubst): Only call retrieve_local_specialization if the + original typedef was in a function template. + + PR c++/34196 + * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP. + +2008-01-21 Richard Guenther <rguenther@suse.de> + + PR c++/34850 + * error.c (cp_print_error_function): Deal with recursive + BLOCK trees. + +2008-01-20 Paolo Carlini <pcarlini@suse.de> + + PR c++/34891 + * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR. + +2008-01-20 Paolo Carlini <pcarlini@suse.de> + + PR c++/34776 + PR c++/34486 + * name-lookup.c (do_class_using_decl): Do not call constructor_name_p + on non-IS_AGGR_TYPE scope. + (constructor_name_p): Assert IS_AGGR_TYPE. + +2008-01-18 Ian Lance Taylor <iant@google.com> + + PR c++/33407 + * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag. + (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set + DECL_IS_OPERATOR_NEW flag. + +2008-01-16 Richard Guenther <rguenther@suse.de> + + PR c++/33819 + * typeck.c (is_bitfield_expr_with_lowered_type): Recurse + for conversions to type variants. + +2008-01-15 Andreas Tobler <a.tobler@schweiz.org> + + * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing + declaration and code. Update copyright year. + +2008-01-15 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/34399 + * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we + know we have a class type. + +2008-01-15 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/34751 + * pt.c (coerce_template_parameter_pack): When substituting into + the type of a non-type template parameter pack. use the + deduced/substituted arguments. + * parser.c (declarator_can_be_parameter_pack): A pointer-to-member + can be a parameter pack with the ellipsis following it. When we + have an erroneous declaration, allow it to be a parameter pack. + (cp_parser_template_parameter): Complain about default + arguments on non-type template parameter packs, and parse them + using the new cp_parser_default_argument. + (cp_parser_parameter_declaration): Complain about parameter packs + with default arguments. Move parsing of default arguments into a + new function, cp_parser_default_argument. + (cp_parser_default_argument): New; extracted from + cp_parser_parameter_declaration. + +2008-01-15 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/34051 + PR c++/34055 + PR c++/34102 + PR c++/34103 + * typeck.c (check_return_expr): If there are bare parameter packs + in the return value, set it to error_mark_node. + * tree.c (cp_walk_subtrees): Walk USING_DECL nodes. + * pt.c (find_parameter_packs_r): Look at the type of + IDENTIFIER_NODEs (e.g., for user-defined conversions). + (check_for_bare_parameter_packs): Flip the result: now returns + TRUE when there were bare parameter packs, FALSE otherwise. + (push_template_decl_real): Deal with flipped result of + check_for_bare_parameter_packs. + * semantics.c (finish_cond): If there are bare parameter packs in + the conditional, set it to error_mark_node. + (finish_expr_stmt): If there are bare parameter packs in the + expression, set it to error_mark_node. + (finish_for_expr): Ditto. + (finish_switch_cond): If there are bare parameter packs in + the conditional, set it to error_mark_node. + (finish_mem_initializers): If there are bare parameter packs in + the member initializer, set it to error_mark_node. + (finish_member_declaration): Check the attributes of the + declaration for bare parameter packs, and remove the attributes if + any have bare parameter packs. + * parser.c (cp_parser_using_declaration): Check the using + declaration for bare parameter packs. + (cp_parser_base_clause): If there are bare parameter packs in a + base specifier, don't add it to the chain. + +2008-01-15 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/34314 + * error.c (dump_simple_decl): Display ellipsis for template + non-type parameter packs. + (dump_decl): Display ellipsis for template type parameter packs. + (dump_template_decl): Display ellipsis for template template + parameter packs. + * pt.c (redeclare_class_template): When redeclaring a class + template, check for collisions between template parameters and + template parameter packs. + +2008-01-15 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/33964 + * pt.c (process_partial_specialization): Don't mark template + parameters that occur in non-deduced contexts. + (struct pair_fn_data): Add include_nondeduced_p. + (for_each_template_parm_r): Only visit non-deduced contexts if + include_nondeduced_p is set. + (for_each_template_parm): Added parameter include_nondeduced_p, + which states whether template parameters found in non-deduced + contexts should be visited. + (uses_template_parms): Visit all template parameters, even those + in non-deduced contexts. + +2008-01-15 Douglas Gregor <doug.gregor@gmail.com> + + PR c++/34052 + * pt.c (check_default_tmpl_args): Check for parameter packs that + aren't at the end of a primary template. + (push_template_decl_real): Remove check for parameter packs that + aren't at the end of a primary template; that now happens in + check_default_tmpl_args. + * semantics.c (finish_template_template_parm): Use + check_default_tmpl_args to check for errors in the template + parameter list. + +2008-01-12 Doug Kwan <dougkwan@google.com> + + * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers + instead of OPT_Wreturn_type in warning due to ignored return type + qualifiers. + * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers + instead of OPT_Wreturn_type in warning due to ignored return type + qualifiers. + +2008-01-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/33890 + * semantics.c (finish_omp_for): Don't call + fold_build_cleanup_point_expr if processing_template_decl. + +2008-01-04 Paolo Carlini <pcarlini@suse.de> + Jakub Jelinek <jakub@redhat.com> + + PR c++/34611 + * error.c (dump_template_argument): Deal with TREE_LIST. + +2008-01-01 Douglas Gregor <doug.gregor@gmail.com> + + * parser.c (cp_parser_check_decl_spec): Don't warn about "long + long" in C++0x mode; change the warning to note that "long long" + is only unsupported in C++98 mode. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index ead7d3a3907..80a767ebe2d 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -9200,7 +9200,11 @@ cp_parser_mem_initializer (cp_parser* parser) mem_initializer_id = NULL_TREE; } else - mem_initializer_id = cp_parser_mem_initializer_id (parser); + { + mem_initializer_id = cp_parser_mem_initializer_id (parser); + if (mem_initializer_id == error_mark_node) + return mem_initializer_id; + } member = expand_member_init (mem_initializer_id); if (member && !DECL_P (member)) in_base_initializer = 1; diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 81eaffef57a..dacc8689f38 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -4756,6 +4756,9 @@ coerce_template_template_parms (tree parm_parms, { parm = TREE_VALUE (TREE_VEC_ELT (parm_parms, nparms - 1)); + if (parm == error_mark_node) + return 0; + switch (TREE_CODE (parm)) { case TEMPLATE_DECL: @@ -13204,9 +13207,18 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict) FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (arg), i, elt) { + int elt_strict = strict; if (!BRACE_ENCLOSED_INITIALIZER_P (elt)) - elt = TREE_TYPE (elt); - if (unify (tparms, targs, elttype, elt, UNIFY_ALLOW_NONE)) + { + tree type = TREE_TYPE (elt); + /* It should only be possible to get here for a call. */ + gcc_assert (elt_strict & UNIFY_ALLOW_OUTER_LEVEL); + elt_strict |= maybe_adjust_types_for_deduction + (DEDUCE_CALL, &elttype, &type, elt); + elt = type; + } + + if (unify (tparms, targs, elttype, elt, elt_strict)) return 1; } return 0; @@ -15283,9 +15295,14 @@ instantiate_decl (tree d, int defer_ok, /* In general, we do not instantiate such templates... */ if (external_p /* ... but we instantiate inline functions so that we can inline - them and ... */ + them. An explicit instantiation declaration prohibits implicit + instantiation of non-inline functions. With high levels of + optimization, we would normally inline non-inline functions + -- but we're not allowed to do that for "extern template" functions. + Therefore, we check DECL_DECLARED_INLINE_P, rather than + possibly_inlined_p. And ... */ && ! (TREE_CODE (d) == FUNCTION_DECL - && possibly_inlined_p (d)) + && DECL_DECLARED_INLINE_P (d)) /* ... we instantiate static data members whose values are needed in integral constant expressions. */ && ! (TREE_CODE (d) == VAR_DECL diff --git a/gcc/dbxout.c b/gcc/dbxout.c index f4a2792bc93..babba15f8a5 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -3593,7 +3593,7 @@ dbxout_block (tree block, int depth, tree args) while (block) { /* Ignore blocks never expanded or otherwise marked as real. */ - if (TREE_USED (block) && TREE_ASM_WRITTEN (block)) + if (TREE_ASM_WRITTEN (block)) { int did_output; int blocknum = BLOCK_NUMBER (block); @@ -3625,20 +3625,6 @@ dbxout_block (tree block, int depth, tree args) scope_start = buf; } - if (BLOCK_HANDLER_BLOCK (block)) - { - /* A catch block. Must precede N_LBRAC. */ - tree decl = BLOCK_VARS (block); - while (decl) - { - dbxout_begin_complex_stabs (); - stabstr_I (DECL_NAME (decl)); - stabstr_S (":C1"); - dbxout_finish_complex_stabs (0, N_CATCH, 0, - scope_start, 0); - decl = TREE_CHAIN (decl); - } - } dbx_output_lbrac (scope_start, begin_label); } diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 21769c161bf..f901db32fda 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -3872,7 +3872,7 @@ section. For example, this small program uses several specific section names: struct duart a __attribute__ ((section ("DUART_A"))) = @{ 0 @}; struct duart b __attribute__ ((section ("DUART_B"))) = @{ 0 @}; char stack[10000] __attribute__ ((section ("STACK"))) = @{ 0 @}; -int init_data __attribute__ ((section ("INITDATA"))) = 0; +int init_data __attribute__ ((section ("INITDATA"))); main() @{ @@ -3889,18 +3889,19 @@ main() @end smallexample @noindent -Use the @code{section} attribute with an @emph{initialized} definition -of a @emph{global} variable, as shown in the example. GCC issues -a warning and otherwise ignores the @code{section} attribute in -uninitialized variable declarations. +Use the @code{section} attribute with +@emph{global} variables and not @emph{local} variables, +as shown in the example. -You may only use the @code{section} attribute with a fully initialized -global definition because of the way linkers work. The linker requires +You may use the @code{section} attribute with initialized or +uninitialized global variables but the linker requires each object be defined once, with the exception that uninitialized variables tentatively go in the @code{common} (or @code{bss}) section -and can be multiply ``defined''. You can force a variable to be -initialized with the @option{-fno-common} flag or the @code{nocommon} -attribute. +and can be multiply ``defined''. Using the @code{section} attribute +will change what section the variable goes into and may cause the +linker to issue an error if an uninitialized variable has multiple +definitions. You can force a variable to be initialized with the +@option{-fno-common} flag or the @code{nocommon} attribute. Some file formats do not support arbitrary sections so the @code{section} attribute is not available on all platforms. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 593435acaf9..05402a0a745 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -3155,7 +3155,7 @@ and lacks a @code{case} for one or more of the named codes of that enumeration. @code{case} labels outside the enumeration range also provoke warnings when this option is used. -@item -Wsync-nand +@item -Wsync-nand @r{(C and C++ only)} @opindex Wsync-nand @opindex Wno-sync-nand Warn when @code{__sync_fetch_and_nand} and @code{__sync_nand_and_fetch} @@ -3609,7 +3609,7 @@ assume anything on the bounds of the loop indices. With @option{-funsafe-loop-optimizations} warn if the compiler made such assumptions. -@item -Wno-pedantic-ms-format +@item -Wno-pedantic-ms-format @r{(MinGW targets only)} @opindex Wno-pedantic-ms-format @opindex Wpedantic-ms-format Disables the warnings about non-ISO @code{printf} / @code{scanf} format @@ -8047,17 +8047,28 @@ Pass @var{option} as an option to the linker. You can use this to supply system-specific linker options which GCC does not know how to recognize. -If you want to pass an option that takes an argument, you must use +If you want to pass an option that takes a separate argument, you must use @option{-Xlinker} twice, once for the option and once for the argument. For example, to pass @option{-assert definitions}, you must write @samp{-Xlinker -assert -Xlinker definitions}. It does not work to write @option{-Xlinker "-assert definitions"}, because this passes the entire string as a single argument, which is not what the linker expects. +When using the GNU linker, it is usually more convenient to pass +arguments to linker options using the @option{@var{option}=@var{value}} +syntax than as separate arguments. For example, you can specify +@samp{-Xlinker -Map=output.map} rather than +@samp{-Xlinker -Map -Xlinker output.map}. Other linkers may not support +this syntax for command-line options. + @item -Wl,@var{option} @opindex Wl Pass @var{option} as an option to the linker. If @var{option} contains -commas, it is split into multiple options at the commas. +commas, it is split into multiple options at the commas. You can use this +syntax to pass an argument to the option. +For example, @samp{-Wl,-Map,output.map} passes @samp{-Map output.map} to the +linker. When using the GNU linker, you can also get the same effect with +@samp{-Wl,-Map=output.map}. @item -u @var{symbol} @opindex u diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index 96ce749dc17..a05a6b2c333 100644 --- a/gcc/doc/options.texi +++ b/gcc/doc/options.texi @@ -41,6 +41,7 @@ records have two fields: the string @samp{TargetSave}, and a declaration type to go in the @code{cl_target_option} structure. @item +An option definition record. These records have the following fields: @enumerate @item the name of the option, with the leading ``-'' removed diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index fc8586b48e5..b4fcc2de94d 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -4304,20 +4304,12 @@ a new target instead. @defmac LIBCALL_VALUE (@var{mode}) A C expression to create an RTX representing the place where a library -function returns a value of mode @var{mode}. If the precise function -being called is known, @var{func} is a tree node -(@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null -pointer. This makes it possible to use a different value-returning -convention for specific functions when all their calls are -known. +function returns a value of mode @var{mode}. Note that ``library function'' in this context means a compiler support routine, used to perform arithmetic, whose name is known specially by the compiler and was not mentioned in the C code being compiled. - -The definition of @code{LIBRARY_VALUE} need not be concerned aggregate -data types, because none of the library functions returns such types. @end defmac @defmac FUNCTION_VALUE_REGNO_P (@var{regno}) @@ -5228,9 +5220,9 @@ macro, a reasonable default is used. @defmac TARGET_C99_FUNCTIONS When this macro is nonzero, GCC will implicitly optimize @code{sin} calls into @code{sinf} and similarly for other functions defined by C99 standard. The -default is nonzero that should be proper value for most modern systems, however -number of existing systems lacks support for these functions in the runtime so -they needs this macro to be redefined to 0. +default is zero because a number of existing systems lack support for these +functions in their runtime so this macro needs to be redefined to one on +systems that do support the C99 runtime. @end defmac @cindex sincos math function, implicit usage diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index d3de6e6afc6..848926b6383 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -3405,6 +3405,17 @@ typedef const struct die_struct *const_dw_die_ref; typedef struct dw_loc_descr_struct *dw_loc_descr_ref; typedef struct dw_loc_list_struct *dw_loc_list_ref; +typedef struct deferred_locations_struct GTY(()) +{ + tree variable; + dw_die_ref die; +} deferred_locations; + +DEF_VEC_O(deferred_locations); +DEF_VEC_ALLOC_O(deferred_locations,gc); + +static GTY(()) VEC(deferred_locations, gc) *deferred_locations_list; + /* Each DIE may have a series of attribute/value pairs. Values can take on several forms. The forms that are used in this implementation are listed below. */ @@ -4947,7 +4958,6 @@ static const char *dwarf_tag_name (unsigned); static const char *dwarf_attr_name (unsigned); static const char *dwarf_form_name (unsigned); static tree decl_ultimate_origin (const_tree); -static tree block_ultimate_origin (const_tree); static tree decl_class_context (tree); static void add_dwarf_attr (dw_die_ref, dw_attr_ref); static inline enum dw_val_class AT_class (dw_attr_ref); @@ -5143,11 +5153,11 @@ static void gen_inlined_enumeration_type_die (tree, dw_die_ref); static void gen_inlined_structure_type_die (tree, dw_die_ref); static void gen_inlined_union_type_die (tree, dw_die_ref); static dw_die_ref gen_enumeration_type_die (tree, dw_die_ref); -static dw_die_ref gen_formal_parameter_die (tree, dw_die_ref); +static dw_die_ref gen_formal_parameter_die (tree, tree, dw_die_ref); static void gen_unspecified_parameters_die (tree, dw_die_ref); static void gen_formal_types_die (tree, dw_die_ref); static void gen_subprogram_die (tree, dw_die_ref); -static void gen_variable_die (tree, dw_die_ref); +static void gen_variable_die (tree, tree, dw_die_ref); static void gen_const_die (tree, dw_die_ref); static void gen_label_die (tree, dw_die_ref); static void gen_lexical_block_die (tree, dw_die_ref, int); @@ -5167,7 +5177,7 @@ static void gen_block_die (tree, dw_die_ref, int); static void decls_for_scope (tree, dw_die_ref, int); static int is_redundant_typedef (const_tree); static void gen_namespace_die (tree); -static void gen_decl_die (tree, dw_die_ref); +static void gen_decl_die (tree, tree, dw_die_ref); static dw_die_ref force_decl_die (tree); static dw_die_ref force_type_die (tree); static dw_die_ref setup_namespace_context (tree, dw_die_ref); @@ -5772,51 +5782,6 @@ decl_ultimate_origin (const_tree decl) return DECL_ABSTRACT_ORIGIN (decl); } -/* Determine the "ultimate origin" of a block. The block may be an inlined - instance of an inlined instance of a block which is local to an inline - function, so we have to trace all of the way back through the origin chain - to find out what sort of node actually served as the original seed for the - given block. */ - -static tree -block_ultimate_origin (const_tree block) -{ - tree immediate_origin = BLOCK_ABSTRACT_ORIGIN (block); - - /* output_inline_function sets BLOCK_ABSTRACT_ORIGIN for all the - nodes in the function to point to themselves; ignore that if - we're trying to output the abstract instance of this function. */ - if (BLOCK_ABSTRACT (block) && immediate_origin == block) - return NULL_TREE; - - if (immediate_origin == NULL_TREE) - return NULL_TREE; - else - { - tree ret_val; - tree lookahead = immediate_origin; - - do - { - ret_val = lookahead; - lookahead = (TREE_CODE (ret_val) == BLOCK - ? BLOCK_ABSTRACT_ORIGIN (ret_val) : NULL); - } - while (lookahead != NULL && lookahead != ret_val); - - /* The block's abstract origin chain may not be the *ultimate* origin of - the block. It could lead to a DECL that has an abstract origin set. - If so, we want that DECL's abstract origin (which is what DECL_ORIGIN - will give us if it has one). Note that DECL's abstract origins are - supposed to be the most distant ancestor (or so decl_ultimate_origin - claims), so we don't need to loop following the DECL origins. */ - if (DECL_P (ret_val)) - return DECL_ORIGIN (ret_val); - - return ret_val; - } -} - /* Get the class to which DECL belongs, if any. In g++, the DECL_CONTEXT of a virtual function may refer to a base class, so we check the 'this' parameter. */ @@ -11904,6 +11869,17 @@ add_location_or_const_value_attribute (dw_die_ref die, tree decl, tree_add_const_value_attribute (die, decl); } +/* Add VARIABLE and DIE into deferred locations list. */ + +static void +defer_location (tree variable, dw_die_ref die) +{ + deferred_locations entry; + entry.variable = variable; + entry.die = die; + VEC_safe_push (deferred_locations, gc, deferred_locations_list, &entry); +} + /* Helper function for tree_add_const_value_attribute. Natively encode initializer INIT into an array. Return true if successful. */ @@ -13280,6 +13256,9 @@ gen_enumeration_type_die (tree type, dw_die_ref context_die) add_name_attribute (enum_die, IDENTIFIER_POINTER (TREE_PURPOSE (link))); + if (TREE_CODE (value) == CONST_DECL) + value = DECL_INITIAL (value); + if (host_integerp (value, TYPE_UNSIGNED (TREE_TYPE (value)))) /* DWARF2 does not provide a way of indicating whether or not enumeration constants are signed or unsigned. GDB @@ -13314,16 +13293,17 @@ gen_enumeration_type_die (tree type, dw_die_ref context_die) argument type of some subprogram type. */ static dw_die_ref -gen_formal_parameter_die (tree node, dw_die_ref context_die) +gen_formal_parameter_die (tree node, tree origin, dw_die_ref context_die) { + tree node_or_origin = node ? node : origin; dw_die_ref parm_die = new_die (DW_TAG_formal_parameter, context_die, node); - tree origin; - switch (TREE_CODE_CLASS (TREE_CODE (node))) + switch (TREE_CODE_CLASS (TREE_CODE (node_or_origin))) { case tcc_declaration: - origin = decl_ultimate_origin (node); + if (!origin) + origin = decl_ultimate_origin (node); if (origin != NULL) add_abstract_origin_attribute (parm_die, origin); else @@ -13342,15 +13322,17 @@ gen_formal_parameter_die (tree node, dw_die_ref context_die) add_AT_flag (parm_die, DW_AT_artificial, 1); } - equate_decl_number_to_die (node, parm_die); - if (! DECL_ABSTRACT (node)) - add_location_or_const_value_attribute (parm_die, node, DW_AT_location); + if (node) + equate_decl_number_to_die (node, parm_die); + if (! DECL_ABSTRACT (node_or_origin)) + add_location_or_const_value_attribute (parm_die, node_or_origin, + DW_AT_location); break; case tcc_type: /* We were called with some kind of a ..._TYPE node. */ - add_type_attribute (parm_die, node, 0, 0, context_die); + add_type_attribute (parm_die, node_or_origin, 0, 0, context_die); break; default: @@ -13403,7 +13385,7 @@ gen_formal_types_die (tree function_or_method_type, dw_die_ref context_die) break; /* Output a (nameless) DIE to represent the formal parameter itself. */ - parm_die = gen_formal_parameter_die (formal_type, context_die); + parm_die = gen_formal_parameter_die (formal_type, NULL, context_die); if ((TREE_CODE (function_or_method_type) == METHOD_TYPE && link == first_parm_type) || (arg && DECL_ARTIFICIAL (arg))) @@ -13463,7 +13445,7 @@ gen_type_die_for_member (tree type, tree member, dw_die_ref context_die) } } else - gen_variable_die (member, type_die); + gen_variable_die (member, NULL_TREE, type_die); pop_decl_scope (); } @@ -13808,7 +13790,7 @@ gen_subprogram_die (tree decl, dw_die_ref context_die) "__builtin_va_alist")) gen_unspecified_parameters_die (parm, subr_die); else - gen_decl_die (parm, subr_die); + gen_decl_die (parm, NULL, subr_die); } /* Decide whether we need an unspecified_parameters DIE at the end. @@ -13850,7 +13832,7 @@ gen_subprogram_die (tree decl, dw_die_ref context_die) { /* Emit a DW_TAG_variable DIE for a named return value. */ if (DECL_NAME (DECL_RESULT (decl))) - gen_decl_die (DECL_RESULT (decl), subr_die); + gen_decl_die (DECL_RESULT (decl), NULL, subr_die); current_function_has_inlines = 0; decls_for_scope (outer_scope, subr_die, 0); @@ -13892,17 +13874,18 @@ common_block_die_table_eq (const void *x, const void *y) return d->decl_id == e->decl_id && d->die_parent == e->die_parent; } -/* Generate a DIE to represent a declared data object. */ +/* Generate a DIE to represent a declared data object. + Either DECL or ORIGIN must be non-null. */ static void -gen_variable_die (tree decl, dw_die_ref context_die) +gen_variable_die (tree decl, tree origin, dw_die_ref context_die) { HOST_WIDE_INT off; tree com_decl; + tree decl_or_origin = decl ? decl : origin; dw_die_ref var_die; - tree origin = decl_ultimate_origin (decl); - dw_die_ref old_die = lookup_decl_die (decl); - int declaration = (DECL_EXTERNAL (decl) + dw_die_ref old_die = decl ? lookup_decl_die (decl) : NULL; + int declaration = (DECL_EXTERNAL (decl_or_origin) /* If DECL is COMDAT and has not actually been emitted, we cannot take its address; there might end up being no definition anywhere in @@ -13920,11 +13903,15 @@ gen_variable_die (tree decl, dw_die_ref context_die) Here, S<int>::i is not DECL_EXTERNAL, but no definition is required, so the compiler will not emit a definition. */ - || (TREE_CODE (decl) == VAR_DECL - && DECL_COMDAT (decl) && !TREE_ASM_WRITTEN (decl)) + || (TREE_CODE (decl_or_origin) == VAR_DECL + && DECL_COMDAT (decl_or_origin) + && !TREE_ASM_WRITTEN (decl_or_origin)) || class_or_namespace_scope_p (context_die)); - com_decl = fortran_common (decl, &off); + if (!origin) + origin = decl_ultimate_origin (decl); + + com_decl = fortran_common (decl_or_origin, &off); /* Symbol in common gets emitted as a child of the common block, in the form of a data member. */ @@ -13935,7 +13922,7 @@ gen_variable_die (tree decl, dw_die_ref context_die) dw_loc_descr_ref loc; die_node com_die_arg; - var_die = lookup_decl_die (decl); + var_die = lookup_decl_die (decl_or_origin); if (var_die) { if (get_AT (var_die, DW_AT_location) == NULL) @@ -14092,16 +14079,22 @@ gen_variable_die (tree decl, dw_die_ref context_die) if (declaration) add_AT_flag (var_die, DW_AT_declaration, 1); - if (DECL_ABSTRACT (decl) || declaration) + if (decl && (DECL_ABSTRACT (decl) || declaration)) equate_decl_number_to_die (decl, var_die); - if (! declaration && ! DECL_ABSTRACT (decl)) + if (! declaration && ! DECL_ABSTRACT (decl_or_origin)) { - add_location_or_const_value_attribute (var_die, decl, DW_AT_location); - add_pubname (decl, var_die); + if (TREE_CODE (decl_or_origin) == VAR_DECL && TREE_STATIC (decl_or_origin) + && !TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl_or_origin))) + defer_location (decl_or_origin, var_die); + else + add_location_or_const_value_attribute (var_die, + decl_or_origin, + DW_AT_location); + add_pubname (decl_or_origin, var_die); } else - tree_add_const_value_attribute (var_die, decl); + tree_add_const_value_attribute (var_die, decl_or_origin); } /* Generate a DIE to represent a named constant. */ @@ -14178,35 +14171,6 @@ add_call_src_coords_attributes (tree stmt, dw_die_ref die) } -/* If STMT's abstract origin is a function declaration and STMT's - first subblock's abstract origin is the function's outermost block, - then we're looking at the main entry point. */ -static bool -is_inlined_entry_point (const_tree stmt) -{ - tree decl, block; - - if (!stmt || TREE_CODE (stmt) != BLOCK) - return false; - - decl = block_ultimate_origin (stmt); - - if (!decl || TREE_CODE (decl) != FUNCTION_DECL) - return false; - - block = BLOCK_SUBBLOCKS (stmt); - - if (block) - { - if (TREE_CODE (block) != BLOCK) - return false; - - block = block_ultimate_origin (block); - } - - return block == DECL_INITIAL (decl); -} - /* A helper function for gen_lexical_block_die and gen_inlined_subroutine_die. Add low_pc and high_pc attributes to the DIE for a block STMT. */ @@ -14219,7 +14183,7 @@ add_high_low_attributes (tree stmt, dw_die_ref die) { tree chain; - if (is_inlined_entry_point (stmt)) + if (inlined_function_outer_scope_p (stmt)) { ASM_GENERATE_INTERNAL_LABEL (label, BLOCK_BEGIN_LABEL, BLOCK_NUMBER (stmt)); @@ -14255,7 +14219,7 @@ gen_lexical_block_die (tree stmt, dw_die_ref context_die, int depth) { dw_die_ref stmt_die = new_die (DW_TAG_lexical_block, context_die, stmt); - if (! BLOCK_ABSTRACT (stmt)) + if (! BLOCK_ABSTRACT (stmt) && TREE_ASM_WRITTEN (stmt)) add_high_low_attributes (stmt, stmt_die); decls_for_scope (stmt, stmt_die, depth); @@ -14280,7 +14244,8 @@ gen_inlined_subroutine_die (tree stmt, dw_die_ref context_die, int depth) = new_die (DW_TAG_inlined_subroutine, context_die, stmt); add_abstract_origin_attribute (subr_die, decl); - add_high_low_attributes (stmt, subr_die); + if (TREE_ASM_WRITTEN (stmt)) + add_high_low_attributes (stmt, subr_die); add_call_src_coords_attributes (stmt, subr_die); decls_for_scope (stmt, subr_die, depth); @@ -14512,7 +14477,7 @@ gen_member_die (tree type, dw_die_ref context_die) if (child) splice_child_die (context_die, child); else - gen_decl_die (member, context_die); + gen_decl_die (member, NULL, context_die); } /* Now output info about the function members (if any). */ @@ -14526,7 +14491,7 @@ gen_member_die (tree type, dw_die_ref context_die) if (child) splice_child_die (context_die, child); else - gen_decl_die (member, context_die); + gen_decl_die (member, NULL, context_die); } } @@ -14701,7 +14666,7 @@ gen_type_die_with_usage (tree type, dw_die_ref context_die, gcc_assert (DECL_ORIGINAL_TYPE (TYPE_NAME (type)) != type); TREE_ASM_WRITTEN (type) = 1; - gen_decl_die (TYPE_NAME (type), context_die); + gen_decl_die (TYPE_NAME (type), NULL, context_die); return; } @@ -14904,14 +14869,14 @@ static void gen_block_die (tree stmt, dw_die_ref context_die, int depth) { int must_output_die = 0; - tree origin; - tree decl; - enum tree_code origin_code; + bool inlined_func; /* Ignore blocks that are NULL. */ if (stmt == NULL_TREE) return; + inlined_func = inlined_function_outer_scope_p (stmt); + /* If the block is one fragment of a non-contiguous block, do not process the variables, since they will have been done by the origin block. Do process subblocks. */ @@ -14925,52 +14890,29 @@ gen_block_die (tree stmt, dw_die_ref context_die, int depth) return; } - /* Determine the "ultimate origin" of this block. This block may be an - inlined instance of an inlined instance of inline function, so we have - to trace all of the way back through the origin chain to find out what - sort of node actually served as the original seed for the creation of - the current block. */ - origin = block_ultimate_origin (stmt); - origin_code = (origin != NULL) ? TREE_CODE (origin) : ERROR_MARK; - /* Determine if we need to output any Dwarf DIEs at all to represent this block. */ - if (origin_code == FUNCTION_DECL) + if (inlined_func) /* The outer scopes for inlinings *must* always be represented. We generate DW_TAG_inlined_subroutine DIEs for them. (See below.) */ must_output_die = 1; else { - /* In the case where the current block represents an inlining of the - "body block" of an inline function, we must *NOT* output any DIE for - this block because we have already output a DIE to represent the whole - inlined function scope and the "body block" of any function doesn't - really represent a different scope according to ANSI C rules. So we - check here to make sure that this block does not represent a "body - block inlining" before trying to set the MUST_OUTPUT_DIE flag. */ - if (! is_body_block (origin ? origin : stmt)) - { - /* Determine if this block directly contains any "significant" - local declarations which we will need to output DIEs for. */ - if (debug_info_level > DINFO_LEVEL_TERSE) - /* We are not in terse mode so *any* local declaration counts - as being a "significant" one. */ - must_output_die = (BLOCK_VARS (stmt) != NULL - && (TREE_USED (stmt) - || TREE_ASM_WRITTEN (stmt) - || BLOCK_ABSTRACT (stmt))); - else - /* We are in terse mode, so only local (nested) function - definitions count as "significant" local declarations. */ - for (decl = BLOCK_VARS (stmt); - decl != NULL; decl = TREE_CHAIN (decl)) - if (TREE_CODE (decl) == FUNCTION_DECL - && DECL_INITIAL (decl)) - { - must_output_die = 1; - break; - } - } + /* Determine if this block directly contains any "significant" + local declarations which we will need to output DIEs for. */ + if (debug_info_level > DINFO_LEVEL_TERSE) + /* We are not in terse mode so *any* local declaration counts + as being a "significant" one. */ + must_output_die = ((BLOCK_VARS (stmt) != NULL + || BLOCK_NUM_NONLOCALIZED_VARS (stmt)) + && (TREE_USED (stmt) + || TREE_ASM_WRITTEN (stmt) + || BLOCK_ABSTRACT (stmt))); + else if ((TREE_USED (stmt) + || TREE_ASM_WRITTEN (stmt) + || BLOCK_ABSTRACT (stmt)) + && !dwarf2out_ignore_block (stmt)) + must_output_die = 1; } /* It would be a waste of space to generate a Dwarf DW_TAG_lexical_block @@ -14982,7 +14924,7 @@ gen_block_die (tree stmt, dw_die_ref context_die, int depth) instances and local (nested) function definitions. */ if (must_output_die) { - if (origin_code == FUNCTION_DECL) + if (inlined_func) gen_inlined_subroutine_die (stmt, context_die, depth); else gen_lexical_block_die (stmt, context_die, depth); @@ -14991,6 +14933,35 @@ gen_block_die (tree stmt, dw_die_ref context_die, int depth) decls_for_scope (stmt, context_die, depth); } +/* Process variable DECL (or variable with origin ORIGIN) within + block STMT and add it to CONTEXT_DIE. */ +static void +process_scope_var (tree stmt, tree decl, tree origin, dw_die_ref context_die) +{ + dw_die_ref die; + tree decl_or_origin = decl ? decl : origin; + tree ultimate_origin = origin ? decl_ultimate_origin (origin) : NULL; + + if (ultimate_origin) + origin = ultimate_origin; + + if (TREE_CODE (decl_or_origin) == FUNCTION_DECL) + die = lookup_decl_die (decl_or_origin); + else if (TREE_CODE (decl_or_origin) == TYPE_DECL + && TYPE_DECL_IS_STUB (decl_or_origin)) + die = lookup_type_die (TREE_TYPE (decl_or_origin)); + else + die = NULL; + + if (die != NULL && die->die_parent == NULL) + add_child_die (context_die, die); + else if (TREE_CODE (decl_or_origin) == IMPORTED_DECL) + dwarf2out_imported_module_or_decl_1 (decl_or_origin, DECL_NAME (decl_or_origin), + stmt, context_die); + else + gen_decl_die (decl, origin, context_die); +} + /* Generate all of the decls declared within a given scope and (recursively) all of its sub-blocks. */ @@ -14998,48 +14969,22 @@ static void decls_for_scope (tree stmt, dw_die_ref context_die, int depth) { tree decl; + unsigned int i; tree subblocks; /* Ignore NULL blocks. */ if (stmt == NULL_TREE) return; - if (TREE_USED (stmt)) - { - /* Output the DIEs to represent all of the data objects and typedefs - declared directly within this block but not within any nested - sub-blocks. Also, nested function and tag DIEs have been - generated with a parent of NULL; fix that up now. */ - for (decl = BLOCK_VARS (stmt); decl != NULL; decl = TREE_CHAIN (decl)) - { - dw_die_ref die; - - if (TREE_CODE (decl) == FUNCTION_DECL) - die = lookup_decl_die (decl); - else if (TREE_CODE (decl) == TYPE_DECL && TYPE_DECL_IS_STUB (decl)) - die = lookup_type_die (TREE_TYPE (decl)); - else - die = NULL; - - if (die != NULL && die->die_parent == NULL) - add_child_die (context_die, die); - /* Do not produce debug information for static variables since - these might be optimized out. We are called for these later - in varpool_analyze_pending_decls. - - But *do* produce it for Fortran COMMON variables because, - even though they are static, their names can differ depending - on the scope, which we need to preserve. */ - if (TREE_CODE (decl) == VAR_DECL && TREE_STATIC (decl) - && !(is_fortran () && TREE_PUBLIC (decl))) - ; - else if (TREE_CODE (decl) == IMPORTED_DECL) - dwarf2out_imported_module_or_decl_1 (decl, DECL_NAME (decl), - stmt, context_die); - else - gen_decl_die (decl, context_die); - } - } + /* Output the DIEs to represent all of the data objects and typedefs + declared directly within this block but not within any nested + sub-blocks. Also, nested function and tag DIEs have been + generated with a parent of NULL; fix that up now. */ + for (decl = BLOCK_VARS (stmt); decl != NULL; decl = TREE_CHAIN (decl)) + process_scope_var (stmt, decl, NULL_TREE, context_die); + for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++) + process_scope_var (stmt, NULL, BLOCK_NONLOCALIZED_VAR (stmt, i), + context_die); /* If we're at -g1, we're not interested in subblocks. */ if (debug_info_level <= DINFO_LEVEL_TERSE) @@ -15122,7 +15067,7 @@ force_decl_die (tree decl) gen_decl_die() call. */ saved_external_flag = DECL_EXTERNAL (decl); DECL_EXTERNAL (decl) = 1; - gen_decl_die (decl, context_die); + gen_decl_die (decl, NULL, context_die); DECL_EXTERNAL (decl) = saved_external_flag; break; @@ -15205,7 +15150,7 @@ declare_in_namespace (tree thing, dw_die_ref context_die) if (is_fortran ()) return ns_context; if (DECL_P (thing)) - gen_decl_die (thing, ns_context); + gen_decl_die (thing, NULL, ns_context); else gen_type_die (thing, ns_context); } @@ -15256,14 +15201,15 @@ gen_namespace_die (tree decl) /* Generate Dwarf debug information for a decl described by DECL. */ static void -gen_decl_die (tree decl, dw_die_ref context_die) +gen_decl_die (tree decl, tree origin, dw_die_ref context_die) { - tree origin; + tree decl_or_origin = decl ? decl : origin; + tree class_origin = NULL; - if (DECL_P (decl) && DECL_IGNORED_P (decl)) + if (DECL_P (decl_or_origin) && DECL_IGNORED_P (decl_or_origin)) return; - switch (TREE_CODE (decl)) + switch (TREE_CODE (decl_or_origin)) { case ERROR_MARK: break; @@ -15288,8 +15234,10 @@ gen_decl_die (tree decl, dw_die_ref context_die) case FUNCTION_DECL: /* Don't output any DIEs to represent mere function declarations, unless they are class members or explicit block externs. */ - if (DECL_INITIAL (decl) == NULL_TREE && DECL_CONTEXT (decl) == NULL_TREE - && (current_function_decl == NULL_TREE || DECL_ARTIFICIAL (decl))) + if (DECL_INITIAL (decl_or_origin) == NULL_TREE + && DECL_CONTEXT (decl_or_origin) == NULL_TREE + && (current_function_decl == NULL_TREE + || DECL_ARTIFICIAL (decl_or_origin))) break; #if 0 @@ -15301,8 +15249,8 @@ gen_decl_die (tree decl, dw_die_ref context_die) #endif /* If we're emitting a clone, emit info for the abstract instance. */ - if (DECL_ORIGIN (decl) != decl) - dwarf2out_abstract_function (DECL_ABSTRACT_ORIGIN (decl)); + if (origin || DECL_ORIGIN (decl) != decl) + dwarf2out_abstract_function (origin ? origin : DECL_ABSTRACT_ORIGIN (decl)); /* If we're emitting an out-of-line copy of an inline function, emit info for the abstract instance and set up to refer to it. */ @@ -15330,7 +15278,8 @@ gen_decl_die (tree decl, dw_die_ref context_die) gen_type_die (DECL_CONTEXT (decl), context_die); /* And its containing type. */ - origin = decl_class_context (decl); + if (!origin) + origin = decl_class_context (decl); if (origin != NULL_TREE) gen_type_die_for_member (origin, decl, context_die); @@ -15339,7 +15288,8 @@ gen_decl_die (tree decl, dw_die_ref context_die) } /* Now output a DIE to represent the function itself. */ - gen_subprogram_die (decl, context_die); + if (decl) + gen_subprogram_die (decl, context_die); break; case TYPE_DECL: @@ -15382,28 +15332,30 @@ gen_decl_die (tree decl, dw_die_ref context_die) /* Output any DIEs that are needed to specify the type of this data object. */ - if (TREE_CODE (decl) == RESULT_DECL && DECL_BY_REFERENCE (decl)) - gen_type_die (TREE_TYPE (TREE_TYPE (decl)), context_die); + if (TREE_CODE (decl_or_origin) == RESULT_DECL + && DECL_BY_REFERENCE (decl_or_origin)) + gen_type_die (TREE_TYPE (TREE_TYPE (decl_or_origin)), context_die); else - gen_type_die (TREE_TYPE (decl), context_die); + gen_type_die (TREE_TYPE (decl_or_origin), context_die); /* And its containing type. */ - origin = decl_class_context (decl); - if (origin != NULL_TREE) - gen_type_die_for_member (origin, decl, context_die); + class_origin = decl_class_context (decl_or_origin); + if (class_origin != NULL_TREE) + gen_type_die_for_member (class_origin, decl_or_origin, context_die); /* And its containing namespace. */ - context_die = declare_in_namespace (decl, context_die); + context_die = declare_in_namespace (decl_or_origin, context_die); /* Now output the DIE to represent the data object itself. This gets complicated because of the possibility that the VAR_DECL really represents an inlined instance of a formal parameter for an inline function. */ - origin = decl_ultimate_origin (decl); + if (!origin) + origin = decl_ultimate_origin (decl); if (origin != NULL_TREE && TREE_CODE (origin) == PARM_DECL) - gen_formal_parameter_die (decl, context_die); + gen_formal_parameter_die (decl, origin, context_die); else - gen_variable_die (decl, context_die); + gen_variable_die (decl, origin, context_die); break; case FIELD_DECL: @@ -15419,11 +15371,11 @@ gen_decl_die (tree decl, dw_die_ref context_die) break; case PARM_DECL: - if (DECL_BY_REFERENCE (decl)) - gen_type_die (TREE_TYPE (TREE_TYPE (decl)), context_die); + if (DECL_BY_REFERENCE (decl_or_origin)) + gen_type_die (TREE_TYPE (TREE_TYPE (decl_or_origin)), context_die); else - gen_type_die (TREE_TYPE (decl), context_die); - gen_formal_parameter_die (decl, context_die); + gen_type_die (TREE_TYPE (decl_or_origin), context_die); + gen_formal_parameter_die (decl, origin, context_die); break; case NAMESPACE_DECL: @@ -15714,7 +15666,7 @@ dwarf2out_decl (tree decl) return; } - gen_decl_die (decl, context_die); + gen_decl_die (decl, NULL, context_die); } /* Output a marker (i.e. a label) for the beginning of the generated code for @@ -15749,11 +15701,19 @@ static bool dwarf2out_ignore_block (const_tree block) { tree decl; + unsigned int i; for (decl = BLOCK_VARS (block); decl; decl = TREE_CHAIN (decl)) if (TREE_CODE (decl) == FUNCTION_DECL || (TREE_CODE (decl) == TYPE_DECL && TYPE_DECL_IS_STUB (decl))) return 0; + for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (block); i++) + { + decl = BLOCK_NONLOCALIZED_VAR (block, i); + if (TREE_CODE (decl) == FUNCTION_DECL + || (TREE_CODE (decl) == TYPE_DECL && TYPE_DECL_IS_STUB (decl))) + return 0; + } return 1; } @@ -16532,6 +16492,7 @@ dwarf2out_finish (const char *filename) { limbo_die_node *node, *next_node; dw_die_ref die = 0; + unsigned int i; /* Add the name for the main input file now. We delayed this from dwarf2out_init to avoid complications with PCH. */ @@ -16546,6 +16507,14 @@ dwarf2out_finish (const char *filename) add_comp_dir_attribute (comp_unit_die); } + for (i = 0; i < VEC_length (deferred_locations, deferred_locations_list); i++) + { + add_location_or_const_value_attribute ( + VEC_index (deferred_locations, deferred_locations_list, i)->die, + VEC_index (deferred_locations, deferred_locations_list, i)->variable, + DW_AT_location); + } + /* Traverse the limbo die list, and add parent/child links. The only dies without parents that should be here are concrete instances of inline functions, and the comp_unit_die. We can ignore the comp_unit_die. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 679e95ea8a2..ca033824c0d 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -2008,6 +2008,7 @@ adjust_address_1 (rtx memref, enum machine_mode mode, HOST_WIDE_INT offset, rtx memoffset = MEM_OFFSET (memref); rtx size = 0; unsigned int memalign = MEM_ALIGN (memref); + int pbits; /* If there are no changes, just return the original memory reference. */ if (mode == GET_MODE (memref) && !offset @@ -2019,6 +2020,16 @@ adjust_address_1 (rtx memref, enum machine_mode mode, HOST_WIDE_INT offset, (plus (plus reg reg) const_int) -- so do this always. */ addr = copy_rtx (addr); + /* Convert a possibly large offset to a signed value within the + range of the target address space. */ + pbits = GET_MODE_BITSIZE (Pmode); + if (HOST_BITS_PER_WIDE_INT > pbits) + { + int shift = HOST_BITS_PER_WIDE_INT - pbits; + offset = (((HOST_WIDE_INT) ((unsigned HOST_WIDE_INT) offset << shift)) + >> shift); + } + if (adjust) { /* If MEMREF is a LO_SUM and the offset is within the alignment of the diff --git a/gcc/expr.c b/gcc/expr.c index 9eb1ae70a0d..0e8e0eeee5c 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -8061,9 +8061,10 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, if (fndecl && (attr = lookup_attribute ("warning", DECL_ATTRIBUTES (fndecl))) != NULL) - warning (0, "%Kcall to %qs declared with attribute warning: %s", - exp, lang_hooks.decl_printable_name (fndecl, 1), - TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); + warning_at (tree_nonartificial_location (exp), + 0, "%Kcall to %qs declared with attribute warning: %s", + exp, lang_hooks.decl_printable_name (fndecl, 1), + TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); /* Check for a built-in function. */ if (fndecl && DECL_BUILT_IN (fndecl)) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 57ad11b3214..6502f1a0802 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,4 +1,29 @@ -2008-02-21 Thomas Koenig <tkoenig@gcc.gnu.org> +2009-02-27 Tobias Burnus <burnus@net-b.de> + + PR fortran/39309 + * module.c (read_md5_from_module_file): Add missing quote. + +2009-02-27 Tobias Burnus <burnus@net-b.de> + + PR fortran/39309 + * module.c (read_md5_from_module_file): Include mod version + in had-changed test. + +2009-02-26 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/39295 + * interface.c (compare_type_rank_if): Return 1 if the symbols + are the same and deal with external procedures where one is + identified to be a function or subroutine by usage but the + other is not. + +2009-02-26 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/39292 + * trans-array.c (gfc_conv_array_initializer): Convert all + expressions rather than ICEing. + +2009-02-21 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/38914 * array.c (ref_dimen_size): Rename to gfc_ref_dimen_size, diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 5b2bdd10665..88638070d3c 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -491,17 +491,26 @@ compare_type_rank_if (gfc_symbol *s1, gfc_symbol *s2) if (s1 == NULL || s2 == NULL) return s1 == s2 ? 1 : 0; + if (s1 == s2) + return 1; + if (s1->attr.flavor != FL_PROCEDURE && s2->attr.flavor != FL_PROCEDURE) return compare_type_rank (s1, s2); if (s1->attr.flavor != FL_PROCEDURE || s2->attr.flavor != FL_PROCEDURE) return 0; - /* At this point, both symbols are procedures. */ - if ((s1->attr.function == 0 && s1->attr.subroutine == 0) - || (s2->attr.function == 0 && s2->attr.subroutine == 0)) - return 0; + /* At this point, both symbols are procedures. It can happen that + external procedures are compared, where one is identified by usage + to be a function or subroutine but the other is not. Check TKR + nonetheless for these cases. */ + if (s1->attr.function == 0 && s1->attr.subroutine == 0) + return s1->attr.external == 1 ? compare_type_rank (s1, s2) : 0; + + if (s2->attr.function == 0 && s2->attr.subroutine == 0) + return s2->attr.external == 1 ? compare_type_rank (s1, s2) : 0; + /* Now the type of procedure has been identified. */ if (s1->attr.function != s2->attr.function || s1->attr.subroutine != s2->attr.subroutine) return 0; diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index bfc4ef9f0d2..d5a9f54a76a 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -4739,8 +4739,18 @@ read_md5_from_module_file (const char * filename, unsigned char md5[16]) return -1; /* Read two lines. */ - if (fgets (buf, sizeof (buf) - 1, file) == NULL - || fgets (buf, sizeof (buf) - 1, file) == NULL) + if (fgets (buf, sizeof (buf) - 1, file) == NULL) + { + fclose (file); + return -1; + } + + /* The file also needs to be overwritten if the version number changed. */ + n = strlen ("GFORTRAN module version '" MOD_VERSION "' created"); + if (strncmp (buf, "GFORTRAN module version '" MOD_VERSION "' created", n) != 0) + return -1; + + if (fgets (buf, sizeof (buf) - 1, file) == NULL) { fclose (file); return -1; diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 2b23f15cba4..6c623504af8 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -4005,8 +4005,21 @@ gfc_conv_array_initializer (tree type, gfc_expr * expr) CONSTRUCTOR_APPEND_ELT (v, index, se.expr); break; + default: - gcc_unreachable (); + /* Catch those occasional beasts that do not simplify + for one reason or another, assuming that if they are + standard defying the frontend will catch them. */ + gfc_conv_expr (&se, c->expr); + if (range == NULL_TREE) + CONSTRUCTOR_APPEND_ELT (v, index, se.expr); + else + { + if (index != NULL_TREE) + CONSTRUCTOR_APPEND_ELT (v, index, se.expr); + CONSTRUCTOR_APPEND_ELT (v, range, se.expr); + } + break; } } break; diff --git a/gcc/gcc.c b/gcc/gcc.c index b8691f93320..cf85618c887 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -3232,6 +3232,7 @@ display_help (void) fputs (_(" Display specific types of command line options\n"), stdout); if (! verbose_flag) fputs (_(" (Use '-v --help' to display command line options of sub-processes)\n"), stdout); + fputs (_(" --version Display compiler version information\n"), stdout); fputs (_(" -dumpspecs Display all of the built in spec strings\n"), stdout); fputs (_(" -dumpversion Display the version of the compiler\n"), stdout); fputs (_(" -dumpmachine Display the compiler's target processor\n"), stdout); @@ -6601,7 +6602,10 @@ main (int argc, char **argv) /* We do not exit here. Instead we have created a fake input file called 'help-dummy' which needs to be compiled, and we pass this - on the various sub-processes, along with the --help switch. */ + on the various sub-processes, along with the --help switch. + Ensure their output appears after ours. */ + fputc ('\n', stdout); + fflush (stdout); } if (verbose_flag) diff --git a/gcc/ggc.h b/gcc/ggc.h index bbd03758759..d5dab9f750b 100644 --- a/gcc/ggc.h +++ b/gcc/ggc.h @@ -252,7 +252,7 @@ extern void dump_ggc_loc_statistics (bool); #define ggc_alloc_tree(LENGTH) ((tree) ggc_alloc_zone (LENGTH, &tree_zone)) #define htab_create_ggc(SIZE, HASH, EQ, DEL) \ - htab_create_alloc (SIZE, HASH, EQ, DEL, ggc_calloc, NULL) + htab_create_alloc (SIZE, HASH, EQ, DEL, ggc_calloc, ggc_free) #define splay_tree_new_ggc(COMPARE) \ splay_tree_new_with_allocator (COMPARE, NULL, NULL, \ diff --git a/gcc/gimplify.c b/gcc/gimplify.c index ae12424589b..02d4923aa1e 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -6047,12 +6047,27 @@ goa_stabilize_expr (tree *expr_p, gimple_seq *pre_p, tree lhs_addr, switch (TREE_CODE_CLASS (TREE_CODE (expr))) { case tcc_binary: + case tcc_comparison: saw_lhs |= goa_stabilize_expr (&TREE_OPERAND (expr, 1), pre_p, lhs_addr, lhs_var); case tcc_unary: saw_lhs |= goa_stabilize_expr (&TREE_OPERAND (expr, 0), pre_p, lhs_addr, lhs_var); break; + case tcc_expression: + switch (TREE_CODE (expr)) + { + case TRUTH_ANDIF_EXPR: + case TRUTH_ORIF_EXPR: + saw_lhs |= goa_stabilize_expr (&TREE_OPERAND (expr, 1), pre_p, + lhs_addr, lhs_var); + saw_lhs |= goa_stabilize_expr (&TREE_OPERAND (expr, 0), pre_p, + lhs_addr, lhs_var); + break; + default: + break; + } + break; default: break; } diff --git a/gcc/graphite.c b/gcc/graphite.c index 1af3c140d9d..9b36284e680 100644 --- a/gcc/graphite.c +++ b/gcc/graphite.c @@ -1209,11 +1209,23 @@ static gimple harmful_stmt_in_bb (basic_block scop_entry, basic_block bb) { gimple_stmt_iterator gsi; + gimple stmt; for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) if (!stmt_simple_for_scop_p (scop_entry, gsi_stmt (gsi))) return gsi_stmt (gsi); + stmt = last_stmt (bb); + if (stmt && gimple_code (stmt) == GIMPLE_COND) + { + tree lhs = gimple_cond_lhs (stmt); + tree rhs = gimple_cond_rhs (stmt); + + if (TREE_CODE (TREE_TYPE (lhs)) == REAL_TYPE + || TREE_CODE (TREE_TYPE (rhs)) == REAL_TYPE) + return stmt; + } + return NULL; } @@ -2370,8 +2382,10 @@ graphite_loop_normal_form (loop_p loop) tree nit; gimple_seq stmts; edge exit = single_dom_exit (loop); + bool known_niter = number_of_iterations_exit (loop, exit, &niter, false); + + gcc_assert (known_niter); - gcc_assert (number_of_iterations_exit (loop, exit, &niter, false)); nit = force_gimple_operand (unshare_expr (niter.niter), &stmts, true, NULL_TREE); if (stmts) @@ -2381,7 +2395,7 @@ graphite_loop_normal_form (loop_p loop) if (nb_reductions_in_loop (loop) > 0) return NULL_TREE; - return canonicalize_loop_ivs (loop, NULL, nit); + return canonicalize_loop_ivs (loop, NULL, &nit); } /* Record LOOP as occuring in SCOP. Returns true when the operation @@ -3410,9 +3424,9 @@ build_scop_conditions_1 (VEC (gimple, heap) **conditions, bool res = true; int i, j; graphite_bb_p gbb; - gimple_stmt_iterator gsi; basic_block bb_child, bb_iter; VEC (basic_block, heap) *dom; + gimple stmt; /* Make sure we are in the SCoP. */ if (!bb_in_sese_p (bb, SCOP_REGION (scop))) @@ -3430,9 +3444,9 @@ build_scop_conditions_1 (VEC (gimple, heap) **conditions, dom = get_dominated_by (CDI_DOMINATORS, bb); - for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + stmt = last_stmt (bb); + if (stmt) { - gimple stmt = gsi_stmt (gsi); VEC (edge, gc) *edges; edge e; diff --git a/gcc/jump.c b/gcc/jump.c index 4f598220dff..2b9a9545223 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -1,6 +1,6 @@ /* Optimize jump instructions, for GNU compiler. Copyright (C) 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -1563,11 +1563,6 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y) GET_MODE (x)); byte_x = 0; } - else if (!subreg_offset_representable_p (reg_x, - GET_MODE (SUBREG_REG (x)), - byte_x, - GET_MODE (x))) - return 0; } else { @@ -1594,11 +1589,6 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y) GET_MODE (y)); byte_y = 0; } - else if (!subreg_offset_representable_p (reg_y, - GET_MODE (SUBREG_REG (y)), - byte_y, - GET_MODE (y))) - return 0; } else { diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h index 9c85b583a2b..f9f8cde4d2a 100644 --- a/gcc/langhooks-def.h +++ b/gcc/langhooks-def.h @@ -97,7 +97,6 @@ extern void lhd_omp_firstprivatize_type_sizes (struct gimplify_omp_ctx *, #define LANG_HOOKS_STATICP lhd_staticp #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL lhd_do_nothing_t #define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME lhd_set_decl_assembler_name -#define LANG_HOOKS_NO_BODY_BLOCKS false #define LANG_HOOKS_PRINT_STATISTICS lhd_do_nothing #define LANG_HOOKS_PRINT_XNODE lhd_print_tree_nothing #define LANG_HOOKS_PRINT_DECL lhd_print_tree_nothing @@ -246,7 +245,6 @@ extern tree lhd_make_node (enum tree_code); LANG_HOOKS_STATICP, \ LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, \ LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, \ - LANG_HOOKS_NO_BODY_BLOCKS, \ LANG_HOOKS_PRINT_STATISTICS, \ LANG_HOOKS_PRINT_XNODE, \ LANG_HOOKS_PRINT_DECL, \ diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 752ad99501f..52d1f24448c 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -317,11 +317,6 @@ struct lang_hooks assembler does not talk about it. */ void (*set_decl_assembler_name) (tree); - /* Nonzero if this front end does not generate a dummy BLOCK between - the outermost scope of the function and the FUNCTION_DECL. See - is_body_block in stmt.c, and its callers. */ - bool no_body_blocks; - /* The front end can add its own statistics to -fmem-report with this hook. It should output to stderr. */ void (*print_statistics) (void); diff --git a/gcc/omp-low.c b/gcc/omp-low.c index b7885e6cf3c..dce89fa2464 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -2821,7 +2821,14 @@ lower_send_shared_vars (gimple_seq *ilist, gimple_seq *olist, omp_context *ctx) x = build_sender_ref (ovar, ctx); gimplify_assign (x, var, ilist); - if (!TREE_READONLY (var)) + if (!TREE_READONLY (var) + /* We don't need to receive a new reference to a result + or parm decl. In fact we may not store to it as we will + invalidate any pending RSO and generate wrong gimple + during inlining. */ + && !((TREE_CODE (var) == RESULT_DECL + || TREE_CODE (var) == PARM_DECL) + && DECL_BY_REFERENCE (var))) { x = build_sender_ref (ovar, ctx); gimplify_assign (var, x, olist); diff --git a/gcc/optc-gen.awk b/gcc/optc-gen.awk index 2e220164cfc..3e644a571df 100644 --- a/gcc/optc-gen.awk +++ b/gcc/optc-gen.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2003, 2004, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. # Contributed by Kelley Cook, June 2004. # Original code from Neil Booth, May 2003. # @@ -53,6 +53,8 @@ BEGIN { opts[n_opts] = $1 flags[n_opts] = $2 help[n_opts] = $3 + for (i = 4; i <= NF; i++) + help[n_opts] = help[n_opts] " " $i n_opts++; } } @@ -145,6 +147,8 @@ for (i = 0; i < n_opts; i++) { # ends, for example. while( i + 1 != n_opts && opts[i] == opts[i + 1] ) { flags[i + 1] = flags[i] " " flags[i + 1]; + if (help[i + 1] == "") + help[i + 1] = help[i] i++; back_chain[i] = "N_OPTS"; indices[opts[i]] = j; @@ -153,11 +157,10 @@ for (i = 0; i < n_opts; i++) { } for (i = 0; i < n_opts; i++) { - # Combine the flags of identical switches. Switches - # appear many times if they are handled by many front - # ends, for example. + # With identical flags, pick only the last one. The + # earlier loop ensured that it has all flags merged, + # and a nonempty help text if one of the texts was nonempty. while( i + 1 != n_opts && opts[i] == opts[i + 1] ) { - flags[i + 1] = flags[i] " " flags[i + 1]; i++; } diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index 4d502c3da66..29de0d37a90 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,7 @@ +2009-03-03 Joseph Myers <joseph@codesourcery.com> + + * es.po: Update. + 2009-02-22 Joseph Myers <joseph@codesourcery.com> * zh_CN.po: Update. diff --git a/gcc/po/es.po b/gcc/po/es.po index 23e9f1ac96e..433b8056a02 100644 --- a/gcc/po/es.po +++ b/gcc/po/es.po @@ -1,16 +1,16 @@ -# Mensajes en español para gcc-4.3.0 -# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# Mensajes en español para gcc-4.4-b20081121 +# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is distributed under the same license as the gcc package. -# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # # Agradezco a Juan Cuquejo Mira por sus comentarios sobre esta traducción # msgid "" msgstr "" -"Project-Id-Version: gcc 4.3.0\n" +"Project-Id-Version: gcc 4.4-b20081121\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" "POT-Creation-Date: 2008-11-18 20:02+0000\n" -"PO-Revision-Date: 2008-03-18 11:52-0600\n" +"PO-Revision-Date: 2009-03-03 14:52-0600\n" "Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n" "Language-Team: Spanish <es@li.org>\n" "MIME-Version: 1.0\n" @@ -302,14 +302,12 @@ msgid "char-array initialized from wide string" msgstr "matriz de tipo char inicializada con una cadena ancha" #: c-typeck.c:4803 -#, fuzzy msgid "wide character array initialized from non-wide string" -msgstr "matriz de tipo wchar_t inicializada con una cadena que no es ancha" +msgstr "matriz de caracteres anchos inicializada con una cadena que no es ancha" #: c-typeck.c:4809 -#, fuzzy msgid "wide character array initialized from incompatible wide string" -msgstr "matriz de tipo wchar_t inicializada con una cadena que no es ancha" +msgstr "matriz de caracteres anchos inicializada con una cadena ancha incompatible" #: c-typeck.c:4827 cp/typeck2.c:785 #, gcc-internal-format @@ -467,7 +465,7 @@ msgstr "el cuerpo de la función no está disponible" #: cgraph.c:688 cgraphbuild.c:95 msgid "redefined extern inline functions are not considered for inlining" -msgstr "las funciones extern inline redefinidas no se consideran para la inclusión en línea'" +msgstr "las funciones extern inline redefinidas no se consideran para la inclusión en línea" #: cgraph.c:691 cgraphbuild.c:102 msgid "function not considered for inlining" @@ -931,9 +929,8 @@ msgid " -print-multi-os-directory Display the relative path to OS libraries\n" msgstr " -print-multi-os-directory Muestra la ruta relativa para las bibliotecas del SO\n" #: gcc.c:3247 -#, fuzzy msgid " -print-sysroot Display the target libraries directory\n" -msgstr " -dumpmachine Muestra el procesador objetivo del compilador\n" +msgstr " -print-sysroot Muestra el directorio de las bibliotecas objetivo\n" #: gcc.c:3248 msgid " -print-sysroot-headers-suffix Display the sysroot suffix used to find headers\n" @@ -1119,9 +1116,9 @@ msgid "argument to '-specs=' is missing" msgstr "falta el argumento para '-specs='" #: gcc.c:3822 -#, fuzzy, c-format +#, c-format msgid "argument to '-wrapper' is missing" -msgstr "falta el argumento para '-specs'" +msgstr "falta el argumento para '-wrapper'" #: gcc.c:3850 #, c-format @@ -1770,11 +1767,8 @@ msgid "optimizing for size and code size would grow" msgstr "se optimiza para tamaño y el tamaño del código podría crecer" #: ipa-inline.c:980 -#, fuzzy msgid "target specific option mismatch" -msgstr "" -"\n" -"Opciones específicas del objetivo:\n" +msgstr "no coincide la opción específica del objetivo" #: ipa-inline.c:1056 msgid "--param inline-unit-growth limit reached" @@ -1845,7 +1839,7 @@ msgstr " No se encontraron opciones con las características deseadas\n" #: opts.c:1312 #, c-format msgid " None found. Use --help=%s to show *all* the options supported by the %s front-end\n" -msgstr "" +msgstr " No se encontró ninguna. Use --help=%s para mostrar *todas* las opciones admitidas por el frente %s\n" #: opts.c:1318 #, c-format @@ -1873,9 +1867,8 @@ msgid "The --param option recognizes the following as parameters" msgstr "La opción --param reconoce los parámetros a continuación" #: opts.c:1390 -#, fuzzy msgid "The following options are specific to just the language " -msgstr "Las siguientes opciones son específicas del lenguaje " +msgstr "Las siguientes opciones son específicas sólo para el lenguaje " #: opts.c:1392 msgid "The following options are supported by the language " @@ -1892,10 +1885,10 @@ msgstr "Las siguientes opciones son relacionadas al lenguaje" #: opts.c:1567 #, c-format msgid "warning: --help argument %.*s is ambiguous, please be more specific\n" -msgstr "" +msgstr "aviso: el argumento %.*s de --help es ambiguo, por favor sea más específico\n" #: opts.c:1575 -#, fuzzy, c-format +#, c-format msgid "warning: unrecognized argument to --help= option: %.*s\n" msgstr "aviso: no se reconoce el argumento para la opción --help=: %.*s\n" @@ -2155,7 +2148,7 @@ msgstr "%s: se podría convertir el fichero '%s'\n" #: protoize.c:3952 #, c-format msgid "%s: converting file '%s'\n" -msgstr "%s: convirtiendo el fichero '%s'\n" +msgstr "%s: se convierte el fichero '%s'\n" #: protoize.c:3962 #, c-format @@ -2353,14 +2346,12 @@ msgid "originally indirect function call not considered for inlining" msgstr "originalmente la llamada indirecta a función no se considera para la inclusión en línea" #: tree-vrp.c:6383 -#, fuzzy msgid "assuming signed overflow does not occur when simplifying && or || to & or |" -msgstr "se asume que el desbordamiento con signo no ocurre al simplificar la prueba de rango" +msgstr "se asume que el desbordamiento con signo no ocurre al simplificar && o || a & o |" #: tree-vrp.c:6387 -#, fuzzy msgid "assuming signed overflow does not occur when simplifying ==, != or ! to identity or ^" -msgstr "se asume que el desbordamiento con signo no ocurre al simplificar la prueba de rango" +msgstr "se asume que el desbordamiento con signo no ocurre al simplificar ==, != o ! a identidad o ^" #. The remainder are real diagnostic types. #: diagnostic.def:15 @@ -2398,14 +2389,12 @@ msgstr "depuración: " #. These two would be re-classified as DK_WARNING or DK_ERROR, so the #. prefix does not matter. #: diagnostic.def:25 -#, fuzzy msgid "pedwarn: " -msgstr "aviso: " +msgstr "avisoped: " #: diagnostic.def:26 -#, fuzzy msgid "permerror: " -msgstr "error: " +msgstr "errorperm: " #: params.def:47 msgid "The maximum structure size (in bytes) for which GCC will use by-element copies" @@ -2425,7 +2414,7 @@ msgstr "La tasa de intervalo entre las cuentas de estructura actual y más calien #: params.def:85 msgid "Maximal esitmated outcome of branch considered predictable" -msgstr "" +msgstr "Salida estimada maximal de la ramificación considerada predecible" #: params.def:102 msgid "The maximum number of instructions in a single function eligible for inlining" @@ -2492,9 +2481,8 @@ msgid "how much can given compilation unit grow because of the inlining (in perc msgstr "cuánto puede crecer la unidad de compilación dada a causa de la inclusión en línea (en porcentajes)" #: params.def:205 -#, fuzzy msgid "how much can given compilation unit grow because of the interprocedural constant propagation (in percent)" -msgstr "cuánto puede crecer la unidad de compilación dada a causa de la inclusión en línea (en porcentajes)" +msgstr "cuánto puede crecer la unidad de compilación dada a causa de la propagación constante interprocedural (en porcentajes)" #: params.def:209 msgid "expense of call operation relative to ordinary arithmetic operations" @@ -2599,7 +2587,7 @@ msgstr "La selección de fracción de la frecuencia maximal de ejecuciones de bloq #: params.def:350 msgid "Loops iterating at least selected number of iterations will get loop alignement." -msgstr "Iterar ciclos por lo menos el número seleccionado de iteraciones que logrará alienación de ciclos." +msgstr "Iterar ciclos por lo menos el número seleccionado de iteraciones que logrará alineación de ciclos." #: params.def:366 msgid "The maximum number of loop iterations we predict statically" @@ -2760,21 +2748,19 @@ msgstr "La probabilidad mínima de éxito de especulación (en porcentaje), para qu #: params.def:592 msgid "The maximum size of the lookahead window of selective scheduling" -msgstr "" +msgstr "El tamaño máximo de la ventana de búsqueda hacia adelante de la calendarización selectiva" #: params.def:597 -#, fuzzy msgid "Maximum number of times that an insn could be scheduled" -msgstr "Establece el número de insns encoladas que se pueden calendarizar prematuramente" +msgstr "El número máximo de veces que se puede calendarizar una insns" #: params.def:602 -#, fuzzy msgid "Maximum number of instructions in the ready list that are considered eligible for renaming" -msgstr "El número máximo de instrucciones en una sola función elegible para inclusión en línea" +msgstr "El número máximo de instrucciones en la lista ready que se consideran elegibles para renombrado" #: params.def:607 msgid "Minimal distance between possibly conflicting store and load" -msgstr "" +msgstr "La distancia mínima entre store y load en posible conflicto" #: params.def:612 msgid "The maximum number of RTL nodes that can be recorded as combiner's last value" @@ -2846,11 +2832,11 @@ msgstr "Se usó un multiplicador para determinar la tasa de doble encolamiento" #: params.def:756 msgid "max loops number for regional RA" -msgstr "" +msgstr "número de ciclos máximo para el RA regional" #: params.def:764 msgid "The maximum ratio between array size and switch branches for a switch conversion to take place" -msgstr "" +msgstr "La tasa máxima entre el tamaño de la matriz y las ramificaciones switch para que tome lugar una conversión switch" #: config/alpha/alpha.c:5025 #, c-format @@ -3506,21 +3492,19 @@ msgstr "MMIX Interno: Esto no es una constante:" #: config/picochip/picochip.c:2398 msgid "picochip_print_memory_address - Operand isn't memory based" -msgstr "" +msgstr "picochip_print_memory_address - El operando no está basado en memoria" #: config/picochip/picochip.c:2657 msgid "Unknown mode in print_operand (CONST_DOUBLE) :" -msgstr "" +msgstr "Modo desconocido en print_operand (CONST_DOUBLE) :" #: config/picochip/picochip.c:2703 config/picochip/picochip.c:2735 -#, fuzzy msgid "Bad address, not (reg+disp):" -msgstr "dirección errónea, no (reg+disp):" +msgstr "Dirección errónea, no (reg+disp):" #: config/picochip/picochip.c:2749 -#, fuzzy msgid "Bad address, not register:" -msgstr "dirección errónea, no (reg+disp):" +msgstr "Dirección errónea, no register:" #: config/rs6000/host-darwin.c:97 #, c-format @@ -3598,9 +3582,9 @@ msgid "invalid %%v value" msgstr "valor %%v inválido" #: config/rs6000/rs6000.c:12513 -#, fuzzy, c-format +#, c-format msgid "invalid %%y value, try using the 'Z' constraint" -msgstr "puntuación %qc inválida en la restricción" +msgstr "valor %%y inválido, pruebe usando la restricción 'Z'" #: config/rs6000/rs6000.c:22816 msgid "AltiVec argument passed to unprototyped function" @@ -3785,7 +3769,7 @@ msgstr "falta el argumento para '%s'\n" #: fortran/arith.c:44 #, no-c-format msgid "Conversion of an Infinity or Not-a-Number at %L to INTEGER" -msgstr "" +msgstr "Conversión de un Infinity o No-un-Numero en %L a INTEGER" #: fortran/arith.c:94 msgid "Arithmetic OK at %L" @@ -3822,42 +3806,42 @@ msgstr "operación binaria elemental" #: fortran/arith.c:2059 #, no-c-format msgid "Arithmetic OK converting %s to %s at %L" -msgstr "Se convierte el OK aritmético %s a %s en %L" +msgstr "OK aritmético al convertir %s a %s en %L" #: fortran/arith.c:2063 #, no-c-format msgid "Arithmetic overflow converting %s to %s at %L. This check can be disabled with the option -fno-range-check" -msgstr "El desborde aritmético convierte %s a %s en %L. Esta revisión se puede desactivar con la opción -fno-range-check" +msgstr "Desborde aritmético al convertir %s a %s en %L. Esta revisión se puede desactivar con la opción -fno-range-check" #: fortran/arith.c:2068 -#, fuzzy, no-c-format +#, no-c-format msgid "Arithmetic underflow converting %s to %s at %L. This check can be disabled with the option -fno-range-check" -msgstr "El desborde aritmético convierte %s a %s en %L. Esta revisión se puede desactivar con la opción -fno-range-check" +msgstr "Desborde aritmético por debajo al convertir %s a %s en %L. Esta revisión se puede desactivar con la opción -fno-range-check" #: fortran/arith.c:2073 -#, fuzzy, no-c-format +#, no-c-format msgid "Arithmetic NaN converting %s to %s at %L. This check can be disabled with the option -fno-range-check" -msgstr "El desborde aritmético convierte %s a %s en %L. Esta revisión se puede desactivar con la opción -fno-range-check" +msgstr "NaN aritmético al convertir %s a %s en %L. Esta revisión se puede desactivar con la opción -fno-range-check" #: fortran/arith.c:2078 #, no-c-format msgid "Division by zero converting %s to %s at %L" -msgstr "Se convierte la división por cero %s a %s en %L" +msgstr "División por cero al convertir %s a %s en %L" #: fortran/arith.c:2082 #, no-c-format msgid "Array operands are incommensurate converting %s to %s at %L" -msgstr "Se convierten los operandos de matriz que son inconmesurables %s a %s en %L" +msgstr "Los operandos de matriz son inconmesurables al convertir %s a %s en %L" #: fortran/arith.c:2086 #, no-c-format msgid "Integer outside symmetric range implied by Standard Fortran converting %s to %s at %L" -msgstr "Se convierte el rango simétrico fuera de entero implicado por Standard Fortran %s a %s en %L" +msgstr "Entero fuera del rango simétrico implicado por Standard Fortran al convertir %s a %s en %L" #: fortran/arith.c:2419 #, no-c-format msgid "The Hollerith constant at %L is too long to convert to %s" -msgstr "La constante Holletith en %L es demasiado grande para convertirse a %s" +msgstr "La constante Hollerith en %L es demasiado grande para convertirse a %s" #: fortran/arith.c:2578 #, no-c-format @@ -3912,7 +3896,7 @@ msgstr "Especificación de matriz errónea para una matriz de forma diferida en %C #: fortran/array.c:417 #, no-c-format msgid "Bad specification for assumed size array at %C" -msgstr "Especificación errónea para el tamaño de matriz asumido en %C" +msgstr "Especificación errónea para la matriz de tamaño asumido en %C" #: fortran/array.c:426 #, no-c-format @@ -3925,9 +3909,9 @@ msgid "Array specification at %C has more than %d dimensions" msgstr "La especificación de matriz en %C tiene más de %d dimensiones" #: fortran/array.c:438 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2008: Array specification at %C with more than 7 dimensions" -msgstr "La especificación de matriz en %C tiene más de %d dimensiones" +msgstr "Fortran 2008: La especificación de matriz en %C tiene más de 7 dimensiones" #: fortran/array.c:644 #, no-c-format @@ -3947,12 +3931,12 @@ msgstr "Error sintáctico en el constructor de matriz en %C" #: fortran/array.c:895 #, no-c-format msgid "Fortran 2003: [...] style array constructors at %C" -msgstr "Fortran 2003: constructores de matriz de estilo [...] en %C" +msgstr "Fortran 2003: Constructores de matriz de estilo [...] en %C" #: fortran/array.c:915 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: Array constructor including type specification at %C" -msgstr "Fortran 2003: constructores de matriz de estilo [...] en %C" +msgstr "Fortran 2003: Los constructores de matriz incluyen especificación de tipo en %C" #: fortran/array.c:930 #, no-c-format @@ -3970,9 +3954,9 @@ msgid "Iterator step at %L cannot be zero" msgstr "El paso de iterador en %L no puede ser cero" #: fortran/array.c:1650 -#, fuzzy, no-c-format +#, no-c-format msgid "Different CHARACTER lengths (%d/%d) in array constructor at %L" -msgstr "El elemento en el constructor de matriz %s en %L es %s" +msgstr "Longitudes de CHARACTER diferentes (%d/%d) en el constructor de matriz en %L" #: fortran/check.c:44 #, no-c-format @@ -4122,7 +4106,7 @@ msgstr "Fortran 2003: Intrínseco '%s' con argumento KIND en %L" #: fortran/check.c:881 #, no-c-format msgid "SHIFT argument at %L of CSHIFT must have rank %d or be a scalar" -msgstr "" +msgstr "El argumento SHIFT en %L de CSHIFT debe tener rango %d o ser un escalar" #: fortran/check.c:979 fortran/check.c:1799 fortran/check.c:1807 #, no-c-format @@ -4142,17 +4126,17 @@ msgstr "El argumento '%s' del intrínseco '%s' en %L debe ser real por defecto" #: fortran/check.c:1047 #, no-c-format msgid "SHIFT argument at %L of EOSHIFT must have rank %d or be a scalar" -msgstr "" +msgstr "El argumento SHIFT en %L de EOSHIFT debe tener rango %d o ser un escalar" #: fortran/check.c:1067 -#, fuzzy, no-c-format +#, no-c-format msgid "BOUNDARY argument at %L of EOSHIFT must have rank %d or be a scalar" -msgstr "el argumento de UPPER debe tener un modo, o ser un modo" +msgstr "El argumento BOUNDARY en %L de EOSHIFT debe tener rango %d o ser un escalar" #: fortran/check.c:1078 -#, fuzzy, no-c-format +#, no-c-format msgid "Different shape in dimension %d for SHIFT and BOUNDARY arguments of EOSHIFT at %L" -msgstr "Formas diferentes en la dimensión 1 para los argumentos '%s' y '%s' en %L para el intrínseco matmul" +msgstr "Formas diferentes en la dimensión %d para los argumentos SHIFT y BOUNDARY de EOSHIFT en %L" #: fortran/check.c:1310 #, no-c-format @@ -4257,7 +4241,7 @@ msgstr "Faltan argumentos para el intrínseco %s en %L" #: fortran/check.c:2516 #, no-c-format msgid "'source' argument of 'shape' intrinsic at %L must not be an assumed size array" -msgstr "El argumento 'source' del intrínseco 'shape' en %L no debe ser un tamaño de matriz asumido" +msgstr "El argumento 'source' del intrínseco 'shape' en %L no debe ser una matriz de tamaño asumido" #: fortran/check.c:2590 #, no-c-format @@ -4272,17 +4256,17 @@ msgstr "El argumento 'MOLD' del intrínseco 'TRANSFER' en %L no debe ser %s" #: fortran/check.c:2924 #, no-c-format msgid "FIELD argument at %L of UNPACK must have the same rank as MASK or be a scalar" -msgstr "" +msgstr "El argumento FIELD en %L de UNPACK debe tener el mismo rango que MASK o ser un escalar" #: fortran/check.c:2935 -#, fuzzy, no-c-format +#, no-c-format msgid "Different shape in dimension %d for MASK and FIELD arguments of UNPACK at %L" -msgstr "Formas diferentes en la dimensión 1 para los argumentos '%s' y '%s' en %L para el intrínseco matmul" +msgstr "Formas diferentes en la dimensión %d para los argumentos MASK y FIELD de UNPACK en %L" #: fortran/check.c:3175 #, no-c-format msgid "Array PUT of intrinsic %s is too small (%i/%i) at %L" -msgstr "" +msgstr "La matriz PUT del intrínseco %s es demasiado pequeña (%i/%i) en %L" #: fortran/check.c:3207 #, no-c-format @@ -4312,12 +4296,12 @@ msgstr "se especificó dos veces el nombre del fichero de salida" #: fortran/cpp.c:432 #, no-c-format msgid "To enable preprocessing, use -cpp" -msgstr "" +msgstr "Para activar el preprocesamiento, utilice -cpp" #: fortran/cpp.c:521 fortran/cpp.c:531 -#, fuzzy, no-c-format +#, no-c-format msgid "opening output file %s: %s" -msgstr "abriendo el fichero de salida %s: %m" +msgstr "se abre el fichero de salida %s: %s" #: fortran/data.c:64 #, no-c-format @@ -4856,9 +4840,9 @@ msgid "Unexpected junk after function declaration at %C" msgstr "Basura inesperada después de la declaración de la función en %C" #: fortran/decl.c:4069 fortran/decl.c:4869 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2008: BIND(C) attribute at %L may not be specified for an internal procedure" -msgstr "Extensión: El atributo BIND(C) en %L no se puede especificar para un procedimiento internal" +msgstr "Fortran 2008: El atributo BIND(C) en %L no se puede especificar para un procedimiento internal" #: fortran/decl.c:4137 #, no-c-format @@ -5214,29 +5198,29 @@ msgid "MODULE PROCEDURE at %C must be in a generic module interface" msgstr "MODULE PROCEDURE en %C debe estar en una interfaz genérica de módulo" #: fortran/decl.c:6295 -#, fuzzy, no-c-format +#, no-c-format msgid "Ambiguous symbol in TYPE definition at %C" -msgstr "Se esperaba :: en la definición TYPE en %C" +msgstr "Símbolo ambiguo en la definición TYPE en %C" #: fortran/decl.c:6301 -#, fuzzy, no-c-format +#, no-c-format msgid "No such symbol in TYPE definition at %C" -msgstr "Se esperaba :: en la definición TYPE en %C" +msgstr "No existe ese símbolo en la definición TYPE en %C" #: fortran/decl.c:6307 #, no-c-format msgid "'%s' in EXTENDS expression at %C is not a derived type" -msgstr "" +msgstr "'%s' en la expresión EXTENDS en %C no es un tipo derivado" #: fortran/decl.c:6314 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' cannot be extended at %C because it is BIND(C)" -msgstr "El tipo derivado '%s' en %L no puede tener el atributo SEQUENCE porque es BIND(C)" +msgstr "'%s' no se puede extender en %C porque es BIND(C)" #: fortran/decl.c:6321 #, no-c-format msgid "'%s' cannot be extended at %C because it is a SEQUENCE type" -msgstr "" +msgstr "'%s' no se puede extender en %C porque es un tipo SEQUENCE" #: fortran/decl.c:6344 #, no-c-format @@ -5249,9 +5233,9 @@ msgid "Derived type at %C can only be PUBLIC in the specification part of a modu msgstr "El tipo derivado en %C sólo puede ser PUBLIC en la parte de especificación de un módulo" #: fortran/decl.c:6377 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: ABSTRACT type at %C" -msgstr "Fortran 2003: ABSTRACT INTERFACE en %C" +msgstr "Fortran 2003: Tipo ABSTRACT en %C" #: fortran/decl.c:6441 #, no-c-format @@ -5276,7 +5260,7 @@ msgstr "La definición del tipo derivado de '%s' en %C ya se había definido" #: fortran/decl.c:6545 #, no-c-format msgid "Cray Pointee at %C cannot be assumed shape array" -msgstr "El Apuntado Cray en %C no se puede asumir como matriz de forma" +msgstr "El Apuntado Cray en %C no puede ser una matriz de forma asumida" #: fortran/decl.c:6565 #, no-c-format @@ -5299,149 +5283,149 @@ msgid "Syntax error in ENUMERATOR definition at %C" msgstr "Error sintáctico en la definición ENUMERATOR en %C" #: fortran/decl.c:6765 fortran/decl.c:6780 -#, fuzzy, no-c-format +#, no-c-format msgid "Duplicate access-specifier at %C" -msgstr "Especificación %s duplicada en %C" +msgstr "Especificador de acceso duplicado en %C" #: fortran/decl.c:6800 #, no-c-format msgid "Binding attributes already specify passing, illegal NOPASS at %C" -msgstr "" +msgstr "Los atributos de enlace ya especifican paso, NOPASS ilegal en %C" #: fortran/decl.c:6818 -#, fuzzy, no-c-format +#, no-c-format msgid "Duplicate NON_OVERRIDABLE at %C" -msgstr "Se esperaba una VARIABLE en %C" +msgstr "NON_OVERRIDABLE duplicado en %C" #: fortran/decl.c:6833 -#, fuzzy, no-c-format +#, no-c-format msgid "DEFERRED not yet implemented at %C" -msgstr "FORBID no se ha implementado aún" +msgstr "DEFERRED aún no se admite en %C" #: fortran/decl.c:6847 #, no-c-format msgid "Binding attributes already specify passing, illegal PASS at %C" -msgstr "" +msgstr "Los atributos de enlace ya especifican paso, PASS ilegal en %C" #: fortran/decl.c:6868 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected access-specifier at %C" -msgstr "Se esperaba una interfaz sin nombre en %C" +msgstr "Se esperaba un especificador de acceso en %C" #: fortran/decl.c:6870 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected binding attribute at %C" -msgstr "Se esperaba un nombre terminal en %C" +msgstr "Se esperaba un atributo de enlace en %C" #: fortran/decl.c:6910 -#, fuzzy, no-c-format +#, no-c-format msgid "PROCEDURE(interface) at %C is not yet implemented" -msgstr "FORBID no se ha implementado aún" +msgstr "PROCEDURE(interface) en %C aún no se admite" #: fortran/decl.c:6932 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected '::' after binding-attributes at %C" -msgstr "Se esperaba un nombre terminal en %C" +msgstr "Se esperaba '::' después de los atributos de enlace en %C" #: fortran/decl.c:6942 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected binding name at %C" -msgstr "Se esperaba un nombre terminal en %C" +msgstr "Se esperaba un nombre de enlace en %C" #: fortran/decl.c:6955 #, no-c-format msgid "'::' needed in PROCEDURE binding with explicit target at %C" -msgstr "" +msgstr "Se necesita '::' en el enlace PROCEDURE con objetivo explícito en %C" #: fortran/decl.c:6965 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected binding target after '=>' at %C" -msgstr "Se esperaba un nombre terminal en %C" +msgstr "Se esperaba un objetivo de enlace después de '=>' en %C" #: fortran/decl.c:6977 -#, fuzzy, no-c-format +#, no-c-format msgid "Junk after PROCEDURE declaration at %C" -msgstr "Error sintáctico en la declaración CHARACTER en %C" +msgstr "Basura después de la declaración PROCEDURE en %C" #: fortran/decl.c:6995 #, no-c-format msgid "There's already a procedure with binding name '%s' for the derived type '%s' at %C" -msgstr "" +msgstr "Ya existe un procedimiento con nombre de enlace '%s' para el tipo derivado '%s' en %C" #: fortran/decl.c:7028 #, no-c-format msgid "GENERIC at %C must be inside a derived-type CONTAINS" -msgstr "" +msgstr "GENERIC en %C debe estar dentro de un tipo derivado CONTAINS" #: fortran/decl.c:7045 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected '::' at %C" -msgstr "Se esperaba '(' en %C" +msgstr "Se esperaba '::' en %C" #: fortran/decl.c:7055 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected generic name at %C" -msgstr "se esperaba un nombre variable en %C" +msgstr "Se esperaba un nombre genérico en %C" #: fortran/decl.c:7066 #, no-c-format msgid "There's already a non-generic procedure with binding name '%s' for the derived type '%s' at %C" -msgstr "" +msgstr "Ya existe un procedimiento que no es genérico con el nombre de enlace '%s' para el tipo derivado '%s' en %C" #: fortran/decl.c:7075 #, no-c-format msgid "Binding at %C must have the same access as already defined binding '%s'" -msgstr "" +msgstr "El enlace en %C debe tener el mismo acceso que el enlace '%s' que ya está definido" #: fortran/decl.c:7103 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected specific binding name at %C" -msgstr "Se esperaba un nombre terminal en %C" +msgstr "Se esperaba un nombre de enlace específico en %C" #: fortran/decl.c:7114 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' already defined as specific binding for the generic '%s' at %C" -msgstr "No hay una función específica para el genérico '%s' en %L" +msgstr "Ya se definió '%s' como un enlace específico para el genérico '%s' en %L" #: fortran/decl.c:7132 #, no-c-format msgid "Junk after GENERIC binding at %C" -msgstr "" +msgstr "Basura después del enlace GENERIC en %C" #: fortran/decl.c:7157 #, no-c-format msgid "FINAL declaration at %C must be inside a derived type CONTAINS section" -msgstr "" +msgstr "La declaración FINAL en %C debe estar dentro de una sección de tipo derivado CONTAINS" #: fortran/decl.c:7168 -#, fuzzy, no-c-format +#, no-c-format msgid "Derived type declaration with FINAL at %C must be in the specification part of a MODULE" -msgstr "El tipo derivado en %C sólo puede ser PUBLIC en la parte de especificación de un módulo" +msgstr "La declaración de tipo derivado con FINAL en %C debe estar en la parte de especificación de un MODULE" #: fortran/decl.c:7190 -#, fuzzy, no-c-format +#, no-c-format msgid "Empty FINAL at %C" -msgstr "Se esperaba una VARIABLE en %C" +msgstr "FINAL vacío en %C" #: fortran/decl.c:7197 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected module procedure name at %C" -msgstr "Falta un procedimiento para el argumento '%s' en %L" +msgstr "Se esperaba un nombre de procedimiento de módulo en %C" #: fortran/decl.c:7207 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected ',' at %C" -msgstr "Se esperaba '(' en %C" +msgstr "Se esperaba ',' en %C" #: fortran/decl.c:7213 -#, fuzzy, no-c-format +#, no-c-format msgid "Unknown procedure name \"%s\" at %C" -msgstr "Operador '%s' desconocido en %%L" +msgstr "Nombre de procedimiento \"%s\" desconocido en %C" #: fortran/decl.c:7227 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' at %C is already defined as FINAL procedure!" -msgstr "El prcedimiento %s en %L ya sa había declarado como un procedimiento %s" +msgstr "¡'%s' en %C ya se había definido como un procedimiento FINAL!" #. We are told not to check dependencies. #. We do it, however, and issue a warning in case we find one. @@ -5451,7 +5435,7 @@ msgstr "El prcedimiento %s en %L ya sa había declarado como un procedimiento %s" #: fortran/dependency.c:461 #, no-c-format msgid "INTENT(%s) actual argument at %L might interfere with actual argument at %L." -msgstr "" +msgstr "El argumento actual INTENT(%s) en %L puede interferir con el argumento actual en %L." #: fortran/error.c:298 #, no-c-format @@ -5656,9 +5640,9 @@ msgid "Variable '%s' cannot appear in the expression at %L" msgstr "La variable '%s' no puede aparecer en la expresión en %L" #: fortran/expr.c:2727 -#, fuzzy, no-c-format +#, no-c-format msgid "Expression at %L must be of INTEGER type, found %s" -msgstr "La expresión en %L debe ser de tipo INTEGER" +msgstr "La expresión en %L debe ser de tipo INTEGER, se encontró %s" #: fortran/expr.c:2737 #, no-c-format @@ -5737,12 +5721,12 @@ msgstr "La literal BOZ en %L se transfiere por bits al símbolo '%s' que no es en #: fortran/expr.c:2965 fortran/resolve.c:6475 #, no-c-format msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check" -msgstr "El desborde aritmético por debajo del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check" +msgstr "Desborde aritmético por debajo del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check" #: fortran/expr.c:2969 fortran/resolve.c:6479 #, no-c-format msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check" -msgstr "El desborde aritmético del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check" +msgstr "Desborde aritmético del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check" #: fortran/expr.c:2973 fortran/resolve.c:6483 #, no-c-format @@ -5750,9 +5734,9 @@ msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disab msgstr "NaN aritmético del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check" #: fortran/expr.c:2995 -#, fuzzy, no-c-format +#, no-c-format msgid "Incompatible types in DATA statement at %L; attempted conversion of %s to %s" -msgstr "Tipos incompatible en la asignación en %L, %s a %s" +msgstr "Tipos incompatible en la declaración DATA en %L; se intentó la conversión de %s a %s" #: fortran/expr.c:3031 #, no-c-format @@ -5765,19 +5749,19 @@ msgid "'%s' in the pointer assignment at %L cannot be an l-value since it is a p msgstr "'%s' en la asignación de puntero en %L no puede ser un l-valor ya que es un procedimiento" #: fortran/expr.c:3067 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected bounds specification for '%s' at %L" -msgstr "Especificación %s duplicada en %C" +msgstr "Se esperaba una especificación de límites para '%s' en %L" #: fortran/expr.c:3072 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: Bounds specification for '%s' in pointer assignment at %L" -msgstr "Fortran 2003: La función '%s' como una expresión de inicialización en %L" +msgstr "Fortran 2003: Especificación de límites para '%s' en una asignación de puntero en %L" #: fortran/expr.c:3078 -#, fuzzy, no-c-format +#, no-c-format msgid "Pointer bounds remapping at %L is not yet implemented in gfortran" -msgstr "Fortran 2003: Aún no se admiten los punteros a procedimiento en %L en gfortran" +msgstr "El remapeo de límites de puntero en %L aún no se admiten en gfortran" #: fortran/expr.c:3096 #, no-c-format @@ -5790,9 +5774,9 @@ msgid "Bad pointer object in PURE procedure at %L" msgstr "Objeto puntero erróneo en el procedimiento PURE en %L" #: fortran/expr.c:3121 -#, fuzzy, no-c-format +#, no-c-format msgid "Different types in pointer assignment at %L; attempted assignment of %s to %s" -msgstr "Tipos diferentes en la asignación de puntero en %L" +msgstr "Tipos diferentes en la asignación de puntero en %L; se intentó la asignación de %s a %s" #: fortran/expr.c:3129 #, no-c-format @@ -5825,7 +5809,7 @@ msgid "Pointer assignment with vector subscript on rhs at %L" msgstr "Asignación de puntero con subíndice vectorial del lado derecho en %L" #: fortran/expr.c:3183 -#, fuzzy, no-c-format +#, no-c-format msgid "Pointer assignment target has PROTECTED attribute at %L" msgstr "El objetivo de asignación de puntero tiene atributo PROTECTED en %L" @@ -5860,9 +5844,9 @@ msgid "no input files; unwilling to write output files" msgstr "no hay ficheros de entrada; incapaz de escribir ficheros de salida" #: fortran/gfortranspec.c:432 -#, fuzzy, c-format +#, c-format msgid "Warning: Using -M <directory> is deprecated, use -J instead\n" -msgstr "Esta opción es obsoleta; utilice en su lugar -Wextra" +msgstr "Aviso: Usar -M <directorio> es obsoleto; utilice en su lugar -J\n" #: fortran/gfortranspec.c:578 #, c-format @@ -5955,9 +5939,9 @@ msgid "Intrinsic operator interface at %L must be a FUNCTION" msgstr "La interfaz de operador intrínseco en %L debe ser FUNCTION" #: fortran/interface.c:643 -#, fuzzy, no-c-format +#, no-c-format msgid "First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)" -msgstr "El primer argumento de la asignación definida en %L debe ser INTENT(IN) o INTENT(INOUT)" +msgstr "El primer argumento de la asignación definida en %L debe ser INTENT(OUT) o INTENT(INOUT)" #: fortran/interface.c:647 #, no-c-format @@ -6070,9 +6054,9 @@ msgid "Actual argument contains too few elements for dummy argument '%s' (%lu/%l msgstr "El argumento actual contiene muy pocos elementos para el argumento dummy '%s' (%lu/%lu) en %L" #: fortran/interface.c:1967 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected a procedure pointer for argument '%s' at %L" -msgstr "Falta un procedimiento para el argumento '%s' en %L" +msgstr "Se esperaba un puntero procedimiento para el argumento '%s' en %L" #: fortran/interface.c:1979 #, no-c-format @@ -6160,9 +6144,9 @@ msgid "Procedure '%s' called with an implicit interface at %L" msgstr "Se llamó al procedimiento '%s' con una interfaz implícita en %L" #: fortran/interface.c:2442 -#, fuzzy, no-c-format +#, no-c-format msgid "Keyword argument requires explicit interface for procedure '%s' at %L" -msgstr "El argumento de palabra clave '%s' en %L no está en el procedimiento" +msgstr "El argumento de palabra clave requiere una interfaz explícita para el procedimiento '%s' en %L" #: fortran/interface.c:2676 #, no-c-format @@ -6177,7 +6161,7 @@ msgstr "La entidad '%s' en %C ya está presente en la interfaz" #: fortran/intrinsic.c:840 #, no-c-format msgid "The intrinsic '%s' at %L is not included in the selected standard but %s and '%s' will be treated as if declared EXTERNAL. Use an appropriate -std=* option or define -fall-intrinsics to allow this intrinsic." -msgstr "" +msgstr "El intrínseco '%s' en %L no se incluye en el estándar seleccionado, pero %s y '%s' se tratarán como si se declararan EXTERNAL. Use una opción -std=* apropiada o defina -fall-intrinsics para permitir este intrínseco." #: fortran/intrinsic.c:3079 #, no-c-format @@ -6215,9 +6199,9 @@ msgid "Type of argument '%s' in call to '%s' at %L should be %s, not %s" msgstr "El tipo del argumento '%s' en la llamada a '%s' en %L debe ser %s, no %s" #: fortran/intrinsic.c:3559 -#, fuzzy, no-c-format +#, no-c-format msgid "Intrinsic '%s' (is %s) is used at %L" -msgstr "El apuntado Cray '%s' en la cláusula %s en %L" +msgstr "El intrínseco '%s' (es %s) se usa en %L" #: fortran/intrinsic.c:3623 #, no-c-format @@ -6252,12 +6236,12 @@ msgstr "No se puede convertir %s a %s en %L" #: fortran/intrinsic.c:3978 #, no-c-format msgid "'%s' declared at %L may shadow the intrinsic of the same name. In order to call the intrinsic, explicit INTRINSIC declarations may be required." -msgstr "" +msgstr "'%s' declarado en %L puede oscurecer al intrínseco del mismo nombre. Para llamar al intrínsico, tal vez se requieran declaraciones INTRINSIC explícitas." #: fortran/intrinsic.c:3983 #, no-c-format msgid "'%s' declared at %L is also the name of an intrinsic. It can only be called via an explicit interface or if declared EXTERNAL." -msgstr "" +msgstr "'%s' declarado en %L es también el nombre de un intrínseco. Sólo se puede llamar a través de una interfaz explícita o si se declara EXTERNAL." #: fortran/io.c:164 fortran/primary.c:768 #, no-c-format @@ -6270,14 +6254,14 @@ msgid "Extension: Tab character in format at %C" msgstr "Extensión: Carácter tabulador en el formato en %C" #: fortran/io.c:445 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: DP format specifier not allowed at %C" -msgstr "Fortran 2003: Declaración IMPORT en %C" +msgstr "Fortran 2003: no se permite el especificador de formato DP en %C" #: fortran/io.c:452 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: DC format specifier not allowed at %C" -msgstr "Fortran 2003: Declaración VALUE en %C" +msgstr "Fortran 2003: no se permite el especificador de formato DC en %C" #: fortran/io.c:488 msgid "Positive width required" @@ -6288,18 +6272,16 @@ msgid "Nonnegative width required" msgstr "Se requiere una anchura que no sea negativa" #: fortran/io.c:490 -#, fuzzy msgid "Unexpected element '%c' in format string at %L" -msgstr "Cadena de fin de formato inesperada" +msgstr "Elemento '%c' inesperado en la cadena de formato en %L" #: fortran/io.c:492 msgid "Unexpected end of format string" msgstr "Cadena de fin de formato inesperada" #: fortran/io.c:493 -#, fuzzy msgid "Zero width in format descriptor" -msgstr "anchura cero en el formato %s" +msgstr "Anchura cero en el descriptor de formato" #: fortran/io.c:512 msgid "Missing leading left parenthesis" @@ -6335,9 +6317,8 @@ msgid "Repeat count cannot follow P descriptor" msgstr "La cuenta de repetición no puede estar después del descriptor P" #: fortran/io.c:665 -#, fuzzy msgid "Positive width required with T descriptor" -msgstr "Se requieren una anchura positiva" +msgstr "Se requieren una anchura positiva con el descriptor T" #: fortran/io.c:680 #, no-c-format @@ -6345,9 +6326,9 @@ msgid "Extension: Missing positive width after L descriptor at %C" msgstr "Extensión: Falta una anchura positiva después del descriptor L en %C" #: fortran/io.c:723 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2008: 'G0' in format at %C" -msgstr "Fortran 2003: Etiqueta IOMSG en %L" +msgstr "Fortran 2008: 'G0' en un formato en %C" #: fortran/io.c:751 fortran/io.c:753 fortran/io.c:814 fortran/io.c:816 #, no-c-format @@ -6369,9 +6350,9 @@ msgid "Extension: Missing comma at %C" msgstr "Extensión: Falta una coma en %C" #: fortran/io.c:989 -#, fuzzy, no-c-format +#, no-c-format msgid "%s in format string at %L" -msgstr "%s en la cadena de formato en %C" +msgstr "%s en la cadena de formato en %L" #: fortran/io.c:1034 #, no-c-format @@ -6384,9 +6365,9 @@ msgid "Missing format label at %C" msgstr "Falta la etiqueta de formato en %C" #: fortran/io.c:1100 fortran/io.c:1131 fortran/io.c:1193 -#, fuzzy, no-c-format +#, no-c-format msgid "Invalid value for %s specification at %C" -msgstr "Especificación %s duplicada en %C" +msgstr "Valor inválido para la especificación %s en %C" #: fortran/io.c:1106 fortran/io.c:1137 #, no-c-format @@ -6394,14 +6375,14 @@ msgid "Duplicate %s specification at %C" msgstr "Especificación %s duplicada en %C" #: fortran/io.c:1144 -#, fuzzy, no-c-format +#, no-c-format msgid "Variable %s cannot be INTENT(IN) at %C" -msgstr "La etiqueta de variable no puede ser INTENT(IN) en %C" +msgstr "La variable %s no puede ser INTENT(IN) en %C" #: fortran/io.c:1151 -#, fuzzy, no-c-format +#, no-c-format msgid "Variable %s cannot be assigned in PURE procedure at %C" -msgstr "La etiqueta de variable no se puede asignar en el procedimiento PURE en %C" +msgstr "La variable %s no se puede asignar en el procedimiento PURE en %C" #: fortran/io.c:1199 #, no-c-format @@ -6491,38 +6472,38 @@ msgstr "No se permite una declaración OPEN en el procedimiento PURE en %C" #: fortran/io.c:1649 #, no-c-format msgid "Fortran 2003: ASYNCHRONOUS= at %C not allowed in Fortran 95" -msgstr "" +msgstr "Fortran 2003: no se permite ASYNCHRONOUS= en %C en Fortran 95" #: fortran/io.c:1667 fortran/io.c:3045 #, no-c-format msgid "Fortran 2003: BLANK= at %C not allowed in Fortran 95" -msgstr "" +msgstr "Fortran 2003: no se permite BLANK= en %C en Fortran 95" #: fortran/io.c:1685 fortran/io.c:3024 #, no-c-format msgid "Fortran 2003: DECIMAL= at %C not allowed in Fortran 95" -msgstr "" +msgstr "Fortran 2003: no se permite DECIMAL= en %C en Fortran 95" #: fortran/io.c:1703 fortran/io.c:3135 #, no-c-format msgid "Fortran 2003: DELIM= at %C not allowed in Fortran 95" -msgstr "" +msgstr "Fortran 2003: no se permite DELIM= en %C en Fortran 95" #: fortran/io.c:1721 #, no-c-format msgid "Fortran 2003: ENCODING= at %C not allowed in Fortran 95" -msgstr "" +msgstr "Fortran 2003: no se permite ENCODING= en %C en Fortran 95" #. When implemented, change the following to use gfc_notify_std F2003. #: fortran/io.c:1773 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran F2003: ROUND= specifier at %C not implemented" -msgstr "Fortran 2003: Aún no se admiten los punteros a procedimiento en %L en gfortran" +msgstr "Fortran 2003: Aún no se admiten el especificador ROUND= en %C" #: fortran/io.c:1792 #, no-c-format msgid "Fortran 2003: SIGN= at %C not allowed in Fortran 95" -msgstr "" +msgstr "Fortran 2003: no se permite SIGN= en %C en Fortran 95" #: fortran/io.c:2005 #, no-c-format @@ -6575,9 +6556,9 @@ msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER var msgstr "La especificación UNIT en %L debe ser una expresión INTEGER o una variable CHARACTER" #: fortran/io.c:2542 -#, fuzzy, no-c-format +#, no-c-format msgid "Invalid form of WRITE statement at %L, UNIT required" -msgstr "Forma inválida de la declaración PROGRAM en %C" +msgstr "Forma inválida de la declaración WRITE en %L, se requiere UNIT" #: fortran/io.c:2553 #, no-c-format @@ -6590,9 +6571,9 @@ msgid "External IO UNIT cannot be an array at %L" msgstr "Un IO UNIT externo no puede ser una matriz en %L" #: fortran/io.c:2565 -#, fuzzy, no-c-format +#, no-c-format msgid "Extension: Comma before i/o item list at %L" -msgstr "Extensión: Una coma antes de una lista de elementos de e/s en %C" +msgstr "Extensión: Una coma antes de una lista de elementos de e/s en %L" #: fortran/io.c:2575 #, no-c-format @@ -6656,14 +6637,14 @@ msgid "Fortran 2003: Internal file at %L with namelist" msgstr "Fortran 2003: Fichero interno en %L con lista de nombres" #: fortran/io.c:2998 -#, fuzzy, no-c-format +#, no-c-format msgid "ASYNCHRONOUS= specifier at %L must be an initialization expression" -msgstr "El parámetro KIND de %s en %L debe ser una expresión de inicialización" +msgstr "El especificador ASYNCHRONOUS= en %L debe ser una expresión de inicialización" #: fortran/io.c:3066 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: PAD= at %C not allowed in Fortran 95" -msgstr "Fortran 2003: Los componentes del procedimiento en %C aún no se admiten en gfortran" +msgstr "Fortran 2003: No se permite PAD= en %C en Fortran 95" #. When implemented, change the following to use gfc_notify_std F2003. #. if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ROUND= at %C " @@ -6672,7 +6653,7 @@ msgstr "Fortran 2003: Los componentes del procedimiento en %C aún no se admiten #: fortran/io.c:3091 #, no-c-format msgid "F2003 Feature: ROUND= specifier at %C not implemented" -msgstr "" +msgstr "Característica F2003: aún no se admite el especificador ROUND= en %C" #: fortran/io.c:3280 #, no-c-format @@ -6710,29 +6691,29 @@ msgid "INQUIRE statement at %L requires either FILE or UNIT specifier" msgstr "La declaración INQUIRE en %L requiere un especificador FILE o UNIT" #: fortran/io.c:3707 -#, fuzzy, no-c-format +#, no-c-format msgid "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier" -msgstr "La declaración INQUIRE en %L requiere un especificador FILE o UNIT" +msgstr "La declaración INQUIRE en %L requiere un especificador PENDING= con el especificador ID=" #: fortran/io.c:3866 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: WAIT at %C not allowed in Fortran 95" -msgstr "Fortran 2003: Los componentes del procedimiento en %C aún no se admiten en gfortran" +msgstr "Fortran 2003: No se permite WAIT en %C en Fortran 95" #: fortran/io.c:3872 -#, fuzzy, no-c-format +#, no-c-format msgid "WAIT statement not allowed in PURE procedure at %C" -msgstr "No se permite una declaración %s en el procedimiento PURE en %C" +msgstr "No se permite una declaración WAIT en un procedimiento PURE en %C" #: fortran/match.c:158 -#, fuzzy, no-c-format +#, no-c-format msgid "Missing ')' in statement at or before %L" -msgstr "Falta un ')' en la declaración antes de %L" +msgstr "Falta un ')' en la declaración en o antes de %L" #: fortran/match.c:163 -#, fuzzy, no-c-format +#, no-c-format msgid "Missing '(' in statement at or before %L" -msgstr "Falta un '(' en la declaración antes de %L" +msgstr "Falta un '(' en la declaración en o antes de %L" #: fortran/match.c:360 #, no-c-format @@ -6772,7 +6753,7 @@ msgstr "El nombre en %C es demasiado largo" #: fortran/match.c:553 #, no-c-format msgid "Invalid character '$' at %C. Use -fdollar-ok to allow it as an extension" -msgstr "" +msgstr "Carácter '$' inválido en %C. Use -fdollar-ok para permitirlo como una extensión" #: fortran/match.c:604 fortran/match.c:652 #, no-c-format @@ -6935,19 +6916,19 @@ msgid "Extension: RETURN statement in main program at %C" msgstr "Extensión: declaración RETURN en el programa principal en %C" #: fortran/match.c:2515 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected component reference at %C" -msgstr "Se esperaba un nombre de componente de estructura en %C" +msgstr "Se esperaba una referencia de componente en %C" #: fortran/match.c:2521 #, no-c-format msgid "Junk after CALL at %C" -msgstr "" +msgstr "Basura después de CALL en %C" #: fortran/match.c:2527 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected type-bound procedure reference at %C" -msgstr "Falta un procedimiento para el argumento '%s' en %L" +msgstr "Se esperaba una referencia a procedimiento enlazado a tipo en %C" #: fortran/match.c:2745 #, no-c-format @@ -7374,7 +7355,7 @@ msgstr "%s no es un nombre de procedimiento INTRINSIC en %C" #: fortran/openmp.c:404 #, no-c-format msgid "COLLAPSE clause argument not constant positive integer at %C" -msgstr "" +msgstr "El argumento de la cláusula COLLAPSE no es un entero positivo constante en %C" #: fortran/openmp.c:541 #, no-c-format @@ -7402,9 +7383,9 @@ msgid "SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression" msgstr "El chunk_size de la cláusula SCHEDULE en %L requiere una expresión INTEGER escalar" #: fortran/openmp.c:815 -#, fuzzy, no-c-format +#, no-c-format msgid "Object '%s' is not a variable at %L" -msgstr "'%s' en %C no es una variable" +msgstr "El objeto '%s' no es una variable en %L" #: fortran/openmp.c:823 fortran/openmp.c:833 fortran/openmp.c:840 #: fortran/openmp.c:850 @@ -7425,7 +7406,7 @@ msgstr "El objeto de la cláusula COPYIN '%s' en %L tiene componente ALLOCATABLE" #: fortran/openmp.c:884 #, no-c-format msgid "Assumed size array '%s' in COPYPRIVATE clause at %L" -msgstr "La matriz de tamaño asumido '%s' en la cláusula COPYPRIVATE en %L" +msgstr "Matriz de tamaño asumido '%s' en la cláusula COPYPRIVATE en %L" #: fortran/openmp.c:887 #, no-c-format @@ -7470,7 +7451,7 @@ msgstr "El puntero Cray '%s' en la cláusula %s en %L" #: fortran/openmp.c:926 #, no-c-format msgid "Assumed size array '%s' in %s clause at %L" -msgstr "La matriz de tamaño asumido '%s' en la cláusula %s en %L" +msgstr "Matriz de tamaño asumido '%s' en la cláusula %s en %L" #: fortran/openmp.c:931 #, no-c-format @@ -7575,17 +7556,17 @@ msgstr "La variable de iteración !$OMP DO está presente en una cláusula diferent #: fortran/openmp.c:1462 #, no-c-format msgid "!$OMP DO collapsed loops don't form rectangular iteration space at %L" -msgstr "" +msgstr "Los ciclos !$OMP DO colapsados no forman un espacio de iteración rectangular en %L" #: fortran/openmp.c:1476 #, no-c-format msgid "collapsed !$OMP DO loops not perfectly nested at %L" -msgstr "" +msgstr "Los ciclos !$OMP DO no están perfectamente anidados en %L" #: fortran/openmp.c:1485 fortran/openmp.c:1492 #, no-c-format msgid "not enough DO loops for collapsed !$OMP DO at %L" -msgstr "" +msgstr "no hay suficientes ciclos DO para los !$OMP DO colapsados en %L" #: fortran/options.c:233 #, no-c-format @@ -7633,9 +7614,9 @@ msgid "Flag -fmax-stack-var-size=%d overwrites -frecursive implied by -fopenmp" msgstr "La opción -fmax-stack-var-size=%d sobreescribe -frecursive implicada por -fopenmp" #: fortran/options.c:404 -#, fuzzy, no-c-format +#, no-c-format msgid "gfortran: Only one -J option allowed" -msgstr "gfortran: Sólo se permite una opción -M\n" +msgstr "gfortran: Sólo se permite una opción -J" #: fortran/options.c:447 #, no-c-format @@ -7784,39 +7765,39 @@ msgid "Unexpected end of file in '%s'" msgstr "Fin de fichero inesperado en '%s'" #: fortran/parse.c:1722 -#, fuzzy, no-c-format +#, no-c-format msgid "Derived-type '%s' with SEQUENCE must not have a CONTAINS section at %C" -msgstr "Declaración %s inesperada en la sección CONTAINS en %C" +msgstr "El tipo derivado '%s' con SEQUENCE no debe tener una sección CONTAINS en %C" #: fortran/parse.c:1725 -#, fuzzy, no-c-format +#, no-c-format msgid "Derived-type '%s' with BIND(C) must not have a CONTAINS section at %C" -msgstr "Declaración %s inesperada en la sección CONTAINS en %C" +msgstr "El tipo derivado '%s' con BIND(C) no debe tener una sección CONTAINS en %C" #: fortran/parse.c:1745 #, no-c-format msgid "Components in TYPE at %C must precede CONTAINS" -msgstr "" +msgstr "Los componentes en TYPE en %C deben preceder a CONTAINS" #: fortran/parse.c:1750 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: Type-bound procedure at %C" -msgstr "Fortran 2003: \"USE :: module\" en %C" +msgstr "Fortran 2003: Procedimiento enlazado a tipo en %C" #: fortran/parse.c:1759 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: GENERIC binding at %C" -msgstr "Fortran 2003: Etiqueta IOMSG en %L" +msgstr "Fortran 2003: Enlace GENERIC en %L" #: fortran/parse.c:1769 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: FINAL procedure declaration at %C" -msgstr "Fortran 2003: Atributo VALUE en %C" +msgstr "Fortran 2003: Declaración de procedimiento FINAL en %C" #: fortran/parse.c:1781 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2008: Derived type definition at %C with empty CONTAINS section" -msgstr "Fortran 2003: La definición de tipo derivado en %C no tiene componentes" +msgstr "Fortran 2003: La definición de tipo derivado en %C tiene una sección CONTAINS vacía" #: fortran/parse.c:1792 fortran/parse.c:1903 #, no-c-format @@ -7824,9 +7805,9 @@ msgid "PRIVATE statement in TYPE at %C must be inside a MODULE" msgstr "La declaración PRIVATE en TYPE en %C debe estar dentro de un MODULE" #: fortran/parse.c:1800 -#, fuzzy, no-c-format +#, no-c-format msgid "PRIVATE statement at %C must precede procedure bindings" -msgstr "La declaración PRIVATE en %C debe preceder a los componentes de la estructura" +msgstr "La declaración PRIVATE en %C debe preceder a los enlaces de procedimiento" #: fortran/parse.c:1808 fortran/parse.c:1919 #, no-c-format @@ -7834,24 +7815,24 @@ msgid "Duplicate PRIVATE statement at %C" msgstr "Declaración PRIVATE duplicada en %C" #: fortran/parse.c:1818 -#, fuzzy, no-c-format +#, no-c-format msgid "SEQUENCE statement at %C must precede CONTAINS" -msgstr "La declaración SEQUENCE en %C debe preceder a los componentes de la estructura" +msgstr "La declaración SEQUENCE en %C debe preceder a CONTAINS" #: fortran/parse.c:1823 #, no-c-format msgid "Already inside a CONTAINS block at %C" -msgstr "" +msgstr "Ya está dentro de un bloque CONTAINS en %C" #: fortran/parse.c:1878 -#, fuzzy, no-c-format +#, no-c-format msgid "PROCEDURE binding at %C must be inside CONTAINS" -msgstr "PROCEDURE en %C debe estar en una interfaz genérica" +msgstr "El enlace PROCEDURE en %C debe estar dentro de CONTAINS" #: fortran/parse.c:1883 -#, fuzzy, no-c-format +#, no-c-format msgid "FINAL declaration at %C must be inside CONTAINS" -msgstr "La declaración ENUM en %C no tiene ENUMERATORS" +msgstr "La declaración FINAL en %C debe estar dentro de CONTAINS" #: fortran/parse.c:1892 #, no-c-format @@ -7879,9 +7860,9 @@ msgid "Duplicate SEQUENCE statement at %C" msgstr "Declaración SEQUENCE duplicada en %C" #: fortran/parse.c:1955 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: CONTAINS block in derived type definition at %C" -msgstr "Fortran 2003: La definición de tipo derivado en %C no tiene componentes" +msgstr "Fortran 2003: Bloque CONTAINS en una definición de tipo derivado en %C" #: fortran/parse.c:2046 #, no-c-format @@ -8014,9 +7995,9 @@ msgid "Unexpected %s statement in CONTAINS section at %C" msgstr "Declaración %s inesperada en la sección CONTAINS en %C" #: fortran/parse.c:3481 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2008: CONTAINS statement without FUNCTION or SUBROUTINE statement at %C" -msgstr "Extensión: Declaración CONTAINS sin una declaración FUNCTION o SUBROUTINE en %C" +msgstr "Fortran 2008: Declaración CONTAINS sin una declaración FUNCTION o SUBROUTINE en %C" #: fortran/parse.c:3552 #, no-c-format @@ -8082,9 +8063,9 @@ msgid "Invalid Hollerith constant: Integer kind at %L should be default" msgstr "Constante Hollerith inválida: El género entero en %L debe ser por defecto" #: fortran/primary.c:286 -#, fuzzy, no-c-format +#, no-c-format msgid "Invalid Hollerith constant at %L contains a wide character" -msgstr "Constante Hollerith inválida: %L debe contener por lo menos un carácter" +msgstr "Una constante Hollerith inválida en %L contiene un carácter ancho" #: fortran/primary.c:367 #, no-c-format @@ -8159,7 +8140,7 @@ msgstr "Constante de carácter sin terminar que comienza en %C" #: fortran/primary.c:997 #, no-c-format msgid "Character '%s' in string at %C is not representable in character kind %d" -msgstr "" +msgstr "El carácter '%s' en la cadena en %C no es representable en el género de carácter %d" #: fortran/primary.c:1080 #, no-c-format @@ -8227,49 +8208,49 @@ msgid "Expected structure component name at %C" msgstr "Se esperaba un nombre de componente de estructura en %C" #: fortran/primary.c:1801 -#, fuzzy, no-c-format +#, no-c-format msgid "Expected argument list at %C" -msgstr "Basura inesperada en la lista de argumentos formales en %C" +msgstr "Se esperaba una lista de argumentos en %C" #: fortran/primary.c:2095 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: Structure constructor with missing optional arguments at %C" -msgstr "Fortran 2003: Intrínseco '%s' con argumento KIND en %L" +msgstr "Fortran 2003: Constructor de estructura con argumentos opcionales faltantes en %C" #: fortran/primary.c:2103 -#, fuzzy, no-c-format +#, no-c-format msgid "No initializer for component '%s' given in the structure constructor at %C!" -msgstr "Faltan componentes en el constructor de estructura en %C" +msgstr "¡No existe un inicializador dado para el componente '%s' en el constructor de estructura en %C!" #: fortran/primary.c:2159 -#, fuzzy, no-c-format +#, no-c-format msgid "Can't construct ABSTRACT type '%s' at %C" -msgstr "Etiqueta construct '%s' duplicada en %C" +msgstr "No se puede construir el tipo ABSTRACT '%s' en %C" #: fortran/primary.c:2187 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: Structure constructor with named arguments at %C" -msgstr "Fortran 2003: Intrínseco '%s' con argumento KIND en %L" +msgstr "Fortran 2003: Constructor de estructura con argumentos nombrados en %C" #: fortran/primary.c:2202 #, no-c-format msgid "Component initializer without name after component named %s at %C!" -msgstr "" +msgstr "¡Inicializador de componente sin nombre después del componente nombrado %s en %C!" #: fortran/primary.c:2205 -#, fuzzy, no-c-format +#, no-c-format msgid "Too many components in structure constructor at %C!" -msgstr "Demasiados componentes en el constructor de estructura en %C" +msgstr "¡Demasiados componentes en el constructor de estructura en %C!" #: fortran/primary.c:2238 -#, fuzzy, no-c-format +#, no-c-format msgid "Component '%s' is initialized twice in the structure constructor at %C!" -msgstr "Faltan componentes en el constructor de estructura en %C" +msgstr "¡El componente '%s' se inicializa dos veces en el constructor de estructura en %C!" #: fortran/primary.c:2294 #, no-c-format msgid "component '%s' at %L has already been set by a parent derived type constructor" -msgstr "" +msgstr "El componente '%s' en %L ya se había definido por un constructor padre de tipo derivado" #: fortran/primary.c:2317 #, no-c-format @@ -8327,24 +8308,24 @@ msgid "'%s' at %C is not a variable" msgstr "'%s' en %C no es una variable" #: fortran/resolve.c:98 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' at %L is of the ABSTRACT type '%s'" -msgstr "La etiqueta %s en %L debe ser de tipo %s" +msgstr "'%s' en %L es del tipo ABSTRACT '%s'" #: fortran/resolve.c:101 -#, fuzzy, no-c-format +#, no-c-format msgid "ABSTRACT type '%s' used at %L" -msgstr "La ABSTRACT INTERFACE '%s' no se debe referenciar en %L" +msgstr "El tipo ABSTRACT '%s' se usa en %L" #: fortran/resolve.c:151 #, no-c-format msgid "Alternate return specifier in elemental subroutine '%s' at %L is not allowed" -msgstr "No se permite el especificador de devolución alternativo en la subrutina elemental '%s' en %L" +msgstr "No se permite el especificador de devolución alternativa en la subrutina elemental '%s' en %L" #: fortran/resolve.c:155 #, no-c-format msgid "Alternate return specifier in function '%s' at %L is not allowed" -msgstr "No se permite el especificador de devolución alternativo en la función '%s' en %L" +msgstr "No se permite el especificador de devolución alternativa en la función '%s' en %L" #: fortran/resolve.c:168 #, no-c-format @@ -8512,9 +8493,9 @@ msgid "The element in the derived type constructor at %L, for pointer component msgstr "El elemento en el constructor de tipo derivado en %L, para el componente puntero '%s', es %s pero debería ser %s" #: fortran/resolve.c:868 -#, fuzzy, no-c-format +#, no-c-format msgid "The NULL in the derived type constructor at %L is being applied to component '%s', which is neither a POINTER nor ALLOCATABLE" -msgstr "El elemento en el constructor de tipo derivado en %L, para el componente puntero '%s', debe ser un POINTER o un TARGET" +msgstr "El NULL en el constructor de tipo derivado en %L se aplica para el componente '%s', el cual no es ni POINTER ni ALLOCATABLE" #: fortran/resolve.c:882 #, no-c-format @@ -8539,7 +8520,7 @@ msgstr "El procedimiento GENERIC '%s' no se permite como un argumento actual en #: fortran/resolve.c:1100 fortran/resolve.c:5928 fortran/resolve.c:6683 #, no-c-format msgid "Label %d referenced at %L is never defined" -msgstr "La etiqueta %d referenciada en %L nunca se definió" +msgstr "La etiqueta %d referenciada en %L nunca se define" #: fortran/resolve.c:1145 #, no-c-format @@ -8562,9 +8543,9 @@ msgid "ELEMENTAL non-INTRINSIC procedure '%s' is not allowed as an actual argume msgstr "El procedimiento ELEMENTAL que no es INTRINSIC '%s' no se permite como un argumento actual en %L" #: fortran/resolve.c:1183 -#, fuzzy, no-c-format +#, no-c-format msgid "Reference to ENTRY '%s' at %L is recursive, but procedure '%s' is not declared as RECURSIVE" -msgstr "La llamada a ENTRY '%s' en %L es recursiva, pero la subrutina '%s' no se declaró como RECURSIVE" +msgstr "La referencia a ENTRY '%s' en %L es recursiva, pero el procedimiento '%s' no se declaró como RECURSIVE" #: fortran/resolve.c:1224 #, no-c-format @@ -8690,9 +8671,9 @@ msgid "Parameter '%s' to '%s' at %L must be BIND(C)" msgstr "El parámetro '%s' para '%s' en %L debe ser BIND(C)" #: fortran/resolve.c:2251 -#, fuzzy, no-c-format +#, no-c-format msgid "Intrinsic subroutine '%s' used as a function at %L" -msgstr "Referencia a la subrutina intrínseca `%A' como si fuera una función en %0" +msgstr "La subrutina intrínseca '%s' se usa como una función en %L" #: fortran/resolve.c:2258 #, no-c-format @@ -8897,7 +8878,7 @@ msgstr "La referencia de matriz superior en %L está fuera de los límites (%ld > #: fortran/resolve.c:3574 #, no-c-format msgid "Rightmost upper bound of assumed size array section not specified at %L" -msgstr "Límite superior a la derecha de la sección de matriz de tamaño asumido sin especificar en %L" +msgstr "No se especificó el límite superior a la derecha de la sección de matriz de tamaño asumido en %L" #: fortran/resolve.c:3584 #, no-c-format @@ -8910,9 +8891,9 @@ msgid "Array index at %L must be scalar" msgstr "El índice de matriz en %L debe ser escalar" #: fortran/resolve.c:3618 -#, fuzzy, no-c-format +#, no-c-format msgid "Array index at %L must be of INTEGER type, found %s" -msgstr "El índice de matriz en %L debe ser de tipo INTEGER" +msgstr "El índice de matriz en %L debe ser de tipo INTEGER, se encontró %s" #: fortran/resolve.c:3624 #, no-c-format @@ -8990,25 +8971,25 @@ msgid "Variable '%s' is used at %L before the ENTRY statement in which it is a p msgstr "La variable '%s' se usa en %L antes de la declaración ENTRY en la cual es un parámetro" #: fortran/resolve.c:4455 -#, fuzzy, no-c-format +#, no-c-format msgid "Passed-object at %L must be scalar" -msgstr "La etiqueta %s en %L debe ser escalar" +msgstr "El objeto pasado en %L debe ser escalar" #. Nothing matching found! #: fortran/resolve.c:4565 #, no-c-format msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L" -msgstr "" +msgstr "No se encontró un enlace específico coincidente para la llamada al GENERIC '%s' en %L" #: fortran/resolve.c:4585 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' at %L should be a SUBROUTINE" -msgstr "'%s' en %L no es un VALUE" +msgstr "'%s' en %L debe ser una SUBROUTINE" #: fortran/resolve.c:4621 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' at %L should be a FUNCTION" -msgstr "El procedimiento de operador de usuario '%s' en %L debe ser FUNCTION" +msgstr "'%s' en %L debe ser una FUNCTION" #: fortran/resolve.c:4757 #, no-c-format @@ -9101,9 +9082,9 @@ msgid "Bad array specification in ALLOCATE statement at %L" msgstr "Especificación de matriz errónea en la declaración ALLOCATE en %L" #: fortran/resolve.c:5248 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated" -msgstr "'%s' no debe aparecer en la especificación de matriz en %L en la misma declaración ALLOCATE donde se debe alojar a sí misma" +msgstr "'%s' no debe aparecer en la especificación de matriz en %L en la misma declaración ALLOCATE donde se aloja a sí misma" #: fortran/resolve.c:5271 #, no-c-format @@ -9135,7 +9116,7 @@ msgid "Expression in CASE statement at %L must be of type %s" msgstr "La expresión en la declaración CASE en %L debe ser de tipo %s" #: fortran/resolve.c:5505 -#, fuzzy, no-c-format +#, no-c-format msgid "Expression in CASE statement at %L must be of kind %d" msgstr "La expresión en la declaración CASE en %L debe ser de género %d" @@ -9210,9 +9191,9 @@ msgid "Statement at %L is not a valid branch target statement for the branch sta msgstr "La declaración en %L no es una declaración de objetivo de ramificación válida para la declaración de ramificación en %L" #: fortran/resolve.c:5944 -#, fuzzy, no-c-format +#, no-c-format msgid "Branch at %L may result in an infinite loop" -msgstr "La ramificación en %L causa un ciclo infinito" +msgstr "La ramificación en %L puede resultar en un ciclo infinito" #. The label is not in an enclosing block, so illegal. This was #. allowed in Fortran 66, so we allow it as extension. No @@ -9253,9 +9234,9 @@ msgid "Assignment to a FORALL index variable at %L" msgstr "Asignación a una variable de índice FORALL en %L" #: fortran/resolve.c:6137 -#, fuzzy, no-c-format +#, no-c-format msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object" -msgstr "El FORALL con índice '%s' causa más de una asignación a este objeto en %L" +msgstr "No se usa el FORALL con índice '%s' en el lado izquierdo de la asignación en %L y podría causar múltiples asignaciones a este objeto" #: fortran/resolve.c:6306 #, no-c-format @@ -9503,215 +9484,215 @@ msgid "CHARACTER(*) function '%s' at %L is obsolescent in fortran 95" msgstr "La función CHARACTER(*) '%s' en %L es obsoleta en fortran 95" #: fortran/resolve.c:7872 -#, fuzzy, no-c-format +#, no-c-format msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L" -msgstr "El atributo PROCEDURE genera un conflicto con el atributo NAMELIST en '%s' en %L" +msgstr "El atributo PROCEDURE genera un conflicto con el atributo SAVE en '%s' en %L" #: fortran/resolve.c:7879 -#, fuzzy, no-c-format +#, no-c-format msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L" -msgstr "El atributo PROCEDURE genera un conflicto con el atributo NAMELIST en '%s' en %L" +msgstr "El atributo PROCEDURE genera un conflicto con el atributo INTENT en '%s' en %L" #: fortran/resolve.c:7923 -#, fuzzy, no-c-format +#, no-c-format msgid "FINAL procedure '%s' at %L is not a SUBROUTINE" -msgstr "El procedimiento de operador de usuario '%s' en %L debe ser FUNCTION" +msgstr "El procedimiento FINAL '%s' en %L no debe ser una SUBROUTINE" #: fortran/resolve.c:7931 -#, fuzzy, no-c-format +#, no-c-format msgid "FINAL procedure at %L must have exactly one argument" -msgstr "El procedimiento de operador de usuario '%s' en %L debe tener al menos un argumento" +msgstr "El procedimiento FINAL en %L debe tener exactamente un argumento" #: fortran/resolve.c:7940 -#, fuzzy, no-c-format +#, no-c-format msgid "Argument of FINAL procedure at %L must be of type '%s'" -msgstr "El argumento de ICHAR en %L debe ser de longitud uno" +msgstr "El argumento del procedimiento FINAL en %L debe ser de tipo '%s'" #: fortran/resolve.c:7948 -#, fuzzy, no-c-format +#, no-c-format msgid "Argument of FINAL procedure at %L must not be a POINTER" -msgstr "El argumento '%s' del intrínseco '%s' en %L debe ser un POINTER" +msgstr "El argumento del procedimiento FINAL en %L no debe ser un POINTER" #: fortran/resolve.c:7954 -#, fuzzy, no-c-format +#, no-c-format msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE" -msgstr "El argumento '%s' del intrínseco '%s' en %L debe ser ALLOCATABLE" +msgstr "El argumento del procedimiento final en %L no debe ser ALLOCATABLE" #: fortran/resolve.c:7960 -#, fuzzy, no-c-format +#, no-c-format msgid "Argument of FINAL procedure at %L must not be OPTIONAL" -msgstr "El argumento '%s' del intrínseco '%s' en %L no debe ser OPTIONAL" +msgstr "El argumento del procedimiento FINAL en %L no debe ser OPTIONAL" #: fortran/resolve.c:7968 -#, fuzzy, no-c-format +#, no-c-format msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)" -msgstr "El primer argumento de la interfaz de operador en %L debe ser INTENT(IN)" +msgstr "El argumento del procedimiento FINAL en %L no debe ser INTENT(OUT)" #: fortran/resolve.c:7976 -#, fuzzy, no-c-format +#, no-c-format msgid "Non-scalar FINAL procedure at %L should have assumed shape argument" -msgstr "El procedimiento de operador de usuario '%s' en %L debe tener al menos un argumento" +msgstr "El procedimiento FINAL que no es escalar en %L debe tener un argumento sharp asumido" #: fortran/resolve.c:7995 -#, fuzzy, no-c-format +#, no-c-format msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'" -msgstr "El procedimiento INTERFACE '%s' en %L tiene el mismo nombre que el procedimiento que lo incluye" +msgstr "El procedimiento FINAL '%s' declarado en %L tiene el mismo rango (%d) que '%s'" #: fortran/resolve.c:8028 #, no-c-format msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one" -msgstr "" +msgstr "Sólo se declaran procedimientos FINAL de matriz para el tipo derivado '%s' definido en %L, se sugiere también uno escalar" #. TODO: Remove this error when finalization is finished. #: fortran/resolve.c:8033 -#, fuzzy, no-c-format +#, no-c-format msgid "Finalization at %L is not yet implemented" -msgstr "aún no se han implementado trampolines" +msgstr "Aún no se admite la finalización en %L" #: fortran/resolve.c:8059 -#, fuzzy, no-c-format +#, no-c-format msgid "Can't overwrite GENERIC '%s' at %L" -msgstr "No se puede convertir %s a %s en %L" +msgstr "No se puede sobreescribir el GENERIC '%s' en %L" #: fortran/resolve.c:8071 #, no-c-format msgid "'%s' at %L overrides a procedure binding declared NON_OVERRIDABLE" -msgstr "" +msgstr "'%s' en %L sobreescribe un enlace de procedimiento declarad como NON_OVERRIDABLE" #: fortran/resolve.c:8079 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' at %L overrides a PURE procedure and must also be PURE" -msgstr "El procedimiento contenido '%s' en %L de un procedimiento PURE tambíén debe ser PURE" +msgstr "'%s' en %L sobreescribe un procedimiento PURE y también debe ser PURE" #: fortran/resolve.c:8088 #, no-c-format msgid "'%s' at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL" -msgstr "" +msgstr "'%s' en %L sobreescribe un procedimiento ELEMENTAL y también debe ser ELEMENTAL" #: fortran/resolve.c:8094 #, no-c-format msgid "'%s' at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, either" -msgstr "" +msgstr "'%s' en %L sobreeescribe un procedimiento que no es ELEMENTAL y tampoco debe ser ELEMENTAL" #: fortran/resolve.c:8103 #, no-c-format msgid "'%s' at %L overrides a SUBROUTINE and must also be a SUBROUTINE" -msgstr "" +msgstr "'%s' en %L sobreescribe una SUBROUTINE y también debe ser una SUBROUTINE" #: fortran/resolve.c:8114 #, no-c-format msgid "'%s' at %L overrides a FUNCTION and must also be a FUNCTION" -msgstr "" +msgstr "'%s' en %L sobreescribe una FUNCTION y también debe ser una FUNCTION" #: fortran/resolve.c:8125 #, no-c-format msgid "'%s' at %L and the overridden FUNCTION should have matching result types" -msgstr "" +msgstr "'%s' en %L y la FUNCION sobreescrita deben tener tipos de resultado coincidentes" #: fortran/resolve.c:8136 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' at %L overrides a PUBLIC procedure and must not be PRIVATE" -msgstr "El procedimiento contenido '%s' en %L de un procedimiento PURE tambíén debe ser PURE" +msgstr "'%s' en %L sobreescribe un procedimiento PUBLIC y no debe ser PRIVATE" #: fortran/resolve.c:8165 #, no-c-format msgid "Dummy argument '%s' of '%s' at %L should be named '%s' as to match the corresponding argument of the overridden procedure" -msgstr "" +msgstr "El argumento dummy '%s' de '%s' en %L se debe llamar '%s' para que coincida con el argumento correspondiente al procedimiento sobreescrito" #: fortran/resolve.c:8178 #, no-c-format msgid "Types mismatch for dummy argument '%s' of '%s' %L in in respect to the overridden procedure" -msgstr "" +msgstr "Los tipos no coinciden para el argumento dummy '%s' de '%s' en %L con respecto al procedimiento sobreescrito" #: fortran/resolve.c:8188 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' at %L must have the same number of formal arguments as the overridden procedure" -msgstr "El procedimiento INTERFACE '%s' en %L tiene el mismo nombre que el procedimiento que lo incluye" +msgstr "'%s' en %L debe tener el mismo nombre de argumentos formales que el procedimiento sobreeescrito" #: fortran/resolve.c:8197 #, no-c-format msgid "'%s' at %L overrides a NOPASS binding and must also be NOPASS" -msgstr "" +msgstr "'%s' en %L sobreescribe un enlace NOPASS y también debe ser NOPASS" #: fortran/resolve.c:8208 #, no-c-format msgid "'%s' at %L overrides a binding with PASS and must also be PASS" -msgstr "" +msgstr "'%s' en %L sobreescribe un enlace con PASS y también debe ser PASS" #: fortran/resolve.c:8215 #, no-c-format msgid "Passed-object dummy argument of '%s' at %L must be at the same position as the passed-object dummy argument of the overridden procedure" -msgstr "" +msgstr "El argumento dummy del objeto pasado de '%s' en %L debe estar en la misma posición que el argumento dummy del objeto pasado del procedimiento sobreescrito" #: fortran/resolve.c:8246 #, no-c-format msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L" -msgstr "" +msgstr "'%s' y '%s' no pueden ser FUNCTION/SUBROUTINE mezcladas para el GENERIC '%s' en %L" #: fortran/resolve.c:8255 #, no-c-format msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous" -msgstr "" +msgstr "'%s' y '%s' para el GENERIC '%s' en %L son ambiguos" #: fortran/resolve.c:8324 #, no-c-format msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L" -msgstr "" +msgstr "El enlace específico '%s' no está definido como objetivo del GENERIC '%s' en %L" #: fortran/resolve.c:8336 #, no-c-format msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too" -msgstr "" +msgstr "El GENERIC '%s' en %L debe apuntar a un enlace específico, '%s' es GENERIC también" #: fortran/resolve.c:8366 #, no-c-format msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name" -msgstr "" +msgstr "El GENERIC '%s' en %L no puede sobreescribir el enlace específico con el mismo nombre" #: fortran/resolve.c:8424 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L" -msgstr "Se llamó al procedimiento '%s' con una interfaz implícita en %L" +msgstr "'%s' debe ser un procedimiento de módulo o un procedimiento externo con una interfaz explícita en %L" #: fortran/resolve.c:8461 -#, fuzzy, no-c-format +#, no-c-format msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'" -msgstr "El procedimiento '%s' en %L no tiene una interfaz explícita" +msgstr "El procedimiento '%s' con PASS(%s) en %L no tiene un argumento '%s'" #: fortran/resolve.c:8475 -#, fuzzy, no-c-format +#, no-c-format msgid "Procedure '%s' with PASS at %L must have at least one argument" -msgstr "El procedimiento de operador de usuario '%s' en %L debe tener al menos un argumento" +msgstr "El procedimiento '%s' con PASS en %L debe tener al menos un argumento" #: fortran/resolve.c:8487 -#, fuzzy, no-c-format +#, no-c-format msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'" -msgstr "El argumento '%s' del intrínseco '%s' en %L debe ser de un tipo no derivado" +msgstr "El argumento '%s' de '%s' con PASS(%s) en %L debe ser del tipo derivado '%s'" #: fortran/resolve.c:8493 #, no-c-format msgid "Polymorphic entities are not yet implemented, non-polymorphic passed-object dummy argument of '%s' at %L accepted" -msgstr "" +msgstr "Aún no se admiten las entidades polimórficas, se aceptó el argumento dummy de '%s' del objeto pasado que no es polimórfico en %L" #: fortran/resolve.c:8518 -#, fuzzy, no-c-format +#, no-c-format msgid "Procedure '%s' at %L has the same name as a component of '%s'" -msgstr "El procedimiento INTERFACE '%s' en %L tiene el mismo nombre que el procedimiento que lo incluye" +msgstr "El procedimiento '%s' en %L tiene el mismo nombre que un componente de '%s'" #: fortran/resolve.c:8527 -#, fuzzy, no-c-format +#, no-c-format msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'" -msgstr "El procedimiento INTERFACE '%s' en %L tiene el mismo nombre que el procedimiento que lo incluye" +msgstr "El procedimiento '%s' en %L tiene el mismo nombre que un componente heredado de '%s'" #: fortran/resolve.c:8595 -#, fuzzy, no-c-format +#, no-c-format msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT" -msgstr "El componente '%s' en el tipo derivado '%s' en %L tal vez no es interoperable con C" +msgstr "El tipo derivado '%s' que no es extensible en %L no debe ser ABSTRACT" #: fortran/resolve.c:8612 -#, fuzzy, no-c-format +#, no-c-format msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure" -msgstr "El procedimiento INTERFACE '%s' en %L tiene el mismo nombre que el procedimiento que lo incluye" +msgstr "El componente '%s' de '%s' en %L tiene el mismo nombre que un procedimiento enlazado a tipo heredado" #: fortran/resolve.c:8624 #, no-c-format @@ -9814,24 +9795,24 @@ msgid "Intrinsic subroutine '%s' at %L shall not have a type specifier" msgstr "La subrutina intrínseca '%s' en %L no debe tener un especificador de tipo" #: fortran/resolve.c:9014 -#, fuzzy, no-c-format +#, no-c-format msgid "'%s' declared INTRINSIC at %L does not exist" -msgstr "El COMMON '%s' en %L no existe" +msgstr "No existe '%s' declarado como INTRINSIC en %L" #: fortran/resolve.c:9023 #, no-c-format msgid "The intrinsic '%s' declared INTRINSIC at %L is not available in the current standard settings but %s. Use an appropriate -std=* option or enable -fall-intrinsics in order to use it." -msgstr "" +msgstr "El intrínseco '%s' declarado como INTRINSIC en %L no está disponible en la configuración actual de estándares pero %s. Use una opción -std=* apropiada o active -fall-intrinsics para poder usarlo." #: fortran/resolve.c:9067 #, no-c-format msgid "Assumed size array at %L must be a dummy argument" -msgstr "El tamaño asumido de matriz en %L debe ser un argumento de prueba" +msgstr "La matriz de tamaño asumido en %L debe ser un argumento de prueba" #: fortran/resolve.c:9070 #, no-c-format msgid "Assumed shape array at %L must be a dummy argument" -msgstr "La forma asumida de matriz en %L debe ser un argumento de prueba" +msgstr "La matriz de forma asumida en %L debe ser un argumento de prueba" #: fortran/resolve.c:9082 #, no-c-format @@ -9984,9 +9965,9 @@ msgid "Substring at %L has length zero" msgstr "La subcadena en %L tiene longitud cero" #: fortran/resolve.c:10188 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'" -msgstr "Fortran 2003: La función PUBLIC %s '%s' en %L es de tipo derivado PRIVATE '%s'" +msgstr "Fortran 2003: La función PUBLIC '%s' en %L es de tipo derivado PRIVATE '%s'" #: fortran/resolve.c:10201 #, no-c-format @@ -10026,7 +10007,7 @@ msgstr "La interfaz de operador en %L debe tener, cuando mucho, dos argumentos" #: fortran/resolve.c:10320 #, no-c-format msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE" -msgstr "El procedimiento contenido '%s' en %L de un procedimiento PURE tambíén debe ser PURE" +msgstr "El procedimiento contenido '%s' en %L de un procedimiento PURE también debe ser PURE" #: fortran/scanner.c:727 #, no-c-format @@ -10104,19 +10085,19 @@ msgid "Invalid KIND parameter of %s at %L" msgstr "El parámetro KIND de %s es inválido en %L" #: fortran/simplify.c:276 -#, fuzzy, no-c-format +#, no-c-format msgid "Argument of %s function at %L is negative" -msgstr "La función de declaración en %L es recursiva" +msgstr "El argumento de la función %s en %L es negativo" #: fortran/simplify.c:283 -#, fuzzy, no-c-format +#, no-c-format msgid "Argument of %s function at %L outside of range [0,127]" -msgstr "El argumento de la función ACHAR en %L está fuera de rango [0,127]" +msgstr "El argumento de la función %s en %L está fuera de rango [0,127]" #: fortran/simplify.c:301 #, no-c-format msgid "Argument of %s function at %L is too large for the collating sequence of kind %d" -msgstr "" +msgstr "El argumento de la función %s en %L es demasiado grande para la secuencia de ordenado de género %d" #: fortran/simplify.c:337 #, no-c-format @@ -10366,7 +10347,7 @@ msgstr "El TRANSFER intrínseco en %L tiene un resultado parcialmente indefinido: #: fortran/simplify.c:4871 #, no-c-format msgid "Character '%s' in string at %L cannot be converted into character kind %d" -msgstr "" +msgstr "El carácter '%s' en la cadena en %L no se puede convertir al género de carácter %d" #: fortran/symbol.c:121 #, no-c-format @@ -10402,7 +10383,7 @@ msgstr "La variable BIND(C) '%s' declarada implícitamente en %L tal vez no es in #. Dummy args to a BIND(C) routine may not be interoperable if #. they are implicitly typed. #: fortran/symbol.c:283 -#, fuzzy, no-c-format +#, no-c-format msgid "Implicitly declared variable '%s' at %L may not be C interoperable but it is a dummy argument to the BIND(C) procedure '%s' at %L" msgstr "La variable declarada implícitamente '%s' en %L tal vez no es interoperable con C pero es un argumento dummy para el procedimiento BIND(C) '%s' en %L" @@ -10417,14 +10398,14 @@ msgid "%s attribute not allowed in BLOCK DATA program unit at %L" msgstr "No se permite el atributo %s en la unidad de programa BLOCK DATA en %L" #: fortran/symbol.c:607 -#, fuzzy, no-c-format +#, no-c-format msgid "%s attribute applied to %s %s at %L" -msgstr "El atributo %s genera un conflicto con el atributo %s en %L" +msgstr "El atributo %s se aplica a %s %s en %L" #: fortran/symbol.c:614 #, no-c-format msgid "BIND(C) applied to %s %s at %L" -msgstr "" +msgstr "Se aplicó BIND(C) a %s %s en %L" #: fortran/symbol.c:711 fortran/symbol.c:1364 #, no-c-format @@ -10459,17 +10440,17 @@ msgstr "No se pueden cambiar los atributos del símbolo asociado con USE %s en %L #: fortran/symbol.c:791 #, no-c-format msgid "Duplicate %s attribute specified at %L" -msgstr "Atributo %s duplicado especificado en %L" +msgstr "Se especificó un atributo %s duplicado en %L" #: fortran/symbol.c:824 #, no-c-format msgid "ALLOCATABLE specified outside of INTERFACE body at %L" -msgstr "" +msgstr "Se especificó ALLOCATABLE fuera de un cuerpo INTERFACE en %L" #: fortran/symbol.c:850 #, no-c-format msgid "DIMENSION specified for '%s' outside its INTERFACE body at %L" -msgstr "" +msgstr "Se especificó DIMENSION para '%s' fuera de su cuerpo INTERFACE en %L" #: fortran/symbol.c:968 #, no-c-format @@ -10479,7 +10460,7 @@ msgstr "El Apuntado Cray en %L aparece en varias declaraciones pointer()" #: fortran/symbol.c:987 #, no-c-format msgid "Duplicate PROTECTED attribute specified at %L" -msgstr "Atributo PROTECTED duplicado especificado en %L" +msgstr "Se especificó un atributo PROTECTED duplicado en %L" #: fortran/symbol.c:1020 #, no-c-format @@ -10489,17 +10470,17 @@ msgstr "El atributo SAVE en %L no se puede especificar en un procedimiento PURE" #: fortran/symbol.c:1028 #, no-c-format msgid "Duplicate SAVE attribute specified at %L" -msgstr "Atributo SAVE duplicado especificado en %L" +msgstr "Se especificó un atributo SAVE duplicado en %L" #: fortran/symbol.c:1049 #, no-c-format msgid "Duplicate VALUE attribute specified at %L" -msgstr "Atributo VALUE duplicado especificado en %L" +msgstr "Se especificó un atributo VALUE duplicado en %L" #: fortran/symbol.c:1069 #, no-c-format msgid "Duplicate VOLATILE attribute specified at %L" -msgstr "Atributo VOLATILE duplicado especificado en %L" +msgstr "Se especificó un atributo VOLATILE duplicado en %L" #: fortran/symbol.c:1360 #, no-c-format @@ -10509,7 +10490,7 @@ msgstr "El atributo %s de '%s' genera un conflicto con el atributo %s en %L" #: fortran/symbol.c:1394 #, no-c-format msgid "%s procedure at %L is already declared as %s procedure" -msgstr "El prcedimiento %s en %L ya sa había declarado como un procedimiento %s" +msgstr "El procedimiento %s en %L ya se había declarado como un procedimiento %s" #: fortran/symbol.c:1429 #, no-c-format @@ -10524,7 +10505,7 @@ msgstr "La especificación ACCESS en %L ya se había especificado" #: fortran/symbol.c:1470 #, no-c-format msgid "Duplicate BIND attribute specified at %L" -msgstr "Atributo BIND duplicado especificado en %L" +msgstr "Se especificó un atributo BIND duplicado en %L" #: fortran/symbol.c:1477 #, no-c-format @@ -10532,14 +10513,14 @@ msgid "Fortran 2003: BIND(C) at %L" msgstr "Fortran 2003: BIND(C) en %L" #: fortran/symbol.c:1494 -#, fuzzy, no-c-format +#, no-c-format msgid "Duplicate EXTENDS attribute specified at %L" -msgstr "Atributo BIND duplicado especificado en %L" +msgstr "Se especificó un atributo EXTENDS duplicado en %L" #: fortran/symbol.c:1498 -#, fuzzy, no-c-format +#, no-c-format msgid "Fortran 2003: EXTENDS at %L" -msgstr "Fortran 2003: BIND(C) en %L" +msgstr "Fortran 2003: EXTENDS en %L" #: fortran/symbol.c:1520 #, no-c-format @@ -10549,7 +10530,7 @@ msgstr "El símbolo '%s' en %L ya tenía una interfaz explícita" #: fortran/symbol.c:1527 #, no-c-format msgid "'%s' at %L has attributes specified outside its INTERFACE body" -msgstr "" +msgstr "'%s' en %L tiene atributos especificados fuera de su cuerpo INTERFACE" #: fortran/symbol.c:1574 #, no-c-format @@ -10562,9 +10543,9 @@ msgid "Component '%s' at %C already declared at %L" msgstr "El componente '%s' en %C ya se había declarado en %L" #: fortran/symbol.c:1744 -#, fuzzy, no-c-format +#, no-c-format msgid "Component '%s' at %C already in the parent type at %L" -msgstr "El componente '%s' en %C ya se había declarado en %L" +msgstr "El componente '%s' en %C ya estaba en el tipo padre en %L" #: fortran/symbol.c:1819 #, no-c-format @@ -10587,9 +10568,9 @@ msgid "Component '%s' at %C is a PRIVATE component of '%s'" msgstr "El componente '%s' en %C es un componente PRIVATE de '%s'" #: fortran/symbol.c:1910 -#, fuzzy, no-c-format +#, no-c-format msgid "All components of '%s' are PRIVATE in structure constructor at %C" -msgstr "Faltan componentes en el constructor de estructura en %C" +msgstr "Todos los componentes de '%s' son PRIVATE en el constructor de estructura en %C" #: fortran/symbol.c:2039 #, no-c-format @@ -10678,19 +10659,19 @@ msgid "Derived type '%s' at %L cannot have the SEQUENCE attribute because it is msgstr "El tipo derivado '%s' en %L no puede tener el atributo SEQUENCE porque es BIND(C)" #: fortran/symbol.c:4261 -#, fuzzy, no-c-format +#, no-c-format msgid "Symbol '%s' is used before it is typed at %L" -msgstr "El símbolo '%s' está presente en múltiples cláusulas en %L" +msgstr "El símbolo '%s' se usa antes de escribirse en %L" #: fortran/symbol.c:4267 -#, fuzzy, no-c-format +#, no-c-format msgid "Extension: Symbol '%s' is used before it is typed at %L" -msgstr "Extensión: Una coma antes de una lista de elementos de e/s en %C" +msgstr "Extensión: Se usa el símbolo '%s' antes de escribirse en %L" #: fortran/symbol.c:4318 #, no-c-format msgid "'%s' of '%s' is PRIVATE at %C" -msgstr "" +msgstr "'%s' de '%s' es PRIVATE en %C" #: fortran/target-memory.c:610 #, no-c-format @@ -10704,21 +10685,21 @@ msgstr "La constante BOZ en %L es demasiado grande (%ld vs %ld bits)" #: fortran/trans-array.c:641 fortran/trans-array.c:4368 #: fortran/trans-array.c:5299 fortran/trans-intrinsic.c:3635 -#, fuzzy, no-c-format +#, no-c-format msgid "Creating array temporary at %L" -msgstr "se crea la matriz de %qT" +msgstr "Se crea una matriz temporal en %L" #. Problems occur when we get something like #. integer :: a(lots) = (/(i, i=1, lots)/) #: fortran/trans-array.c:3951 #, no-c-format msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option" -msgstr "" +msgstr "El número de elementos en el constructor de matriz en %L requiere un incremento del límite superior %d permitido. Vea la opción -fmax-array-constructor" #: fortran/trans-array.c:5296 #, no-c-format msgid "Creating array temporary at %L for argument '%s'" -msgstr "" +msgstr "Se crea una matriz temporal en %L para el argumento '%s'" #: fortran/trans-common.c:399 #, no-c-format @@ -10757,14 +10738,14 @@ msgid "The equivalence set for '%s' cause an invalid extension to COMMON '%s' at msgstr "El conjunto de equivalencia para '%s' causa una extensión inválida al COMMON '%s' en %L" #: fortran/trans-common.c:1116 -#, fuzzy, no-c-format +#, no-c-format msgid "Padding of %d bytes required before '%s' in COMMON '%s' at %L; reorder elements or use -fno-align-commons" -msgstr "Se requiere el relleno de %d bytes antes de '%s' en el COMMON '%s' en %L" +msgstr "Se requiere el relleno de %d bytes antes de '%s' en el COMMON '%s' en %L; reordene los elementos o use -fno-align-commons" #: fortran/trans-common.c:1121 -#, fuzzy, no-c-format +#, no-c-format msgid "Padding of %d bytes required before '%s' in COMMON at %L; reorder elements or use -fno-align-commons" -msgstr "Se requiere el relleno de %d bytes antes de '%s' en el COMMON '%s' en %L" +msgstr "Se requiere el relleno de %d bytes antes de '%s' en COMMON en %L; reordene los elementos o use -fno-align-commons" #: fortran/trans-common.c:1149 #, no-c-format @@ -10772,24 +10753,24 @@ msgid "COMMON '%s' at %L does not exist" msgstr "El COMMON '%s' en %L no existe" #: fortran/trans-common.c:1157 -#, fuzzy, no-c-format +#, no-c-format msgid "COMMON '%s' at %L requires %d bytes of padding at start; reorder elements or use -fno-align-commons" -msgstr "El COMMON '%s' en %L requiere %d bytes de relleno al inicio" +msgstr "El COMMON '%s' en %L requiere %d bytes de relleno al inicio; reordene los elementos o use -fno-align-commons" #: fortran/trans-common.c:1161 -#, fuzzy, no-c-format +#, no-c-format msgid "COMMON at %L requires %d bytes of padding at start; reorder elements or use -fno-align-commons" -msgstr "El COMMON '%s' en %L requiere %d bytes de relleno al inicio" +msgstr "El COMMON en %L requiere %d bytes de relleno al inicio; reordene los elementos o use -fno-align-commons" #: fortran/trans-const.c:290 #, no-c-format msgid "Assigning value other than 0 or 1 to LOGICAL has undefined result at %L" -msgstr "" +msgstr "Asignar un valor diferente de 0 o 1 a LOGICAL tiene un resultado sin definir en %L" #: fortran/trans-decl.c:2835 fortran/trans-decl.c:3858 -#, fuzzy, no-c-format +#, no-c-format msgid "Return value of function '%s' at %L not set" -msgstr "El tipo de devolución de la función BIND(C) '%s' en %L no puede ser una matriz" +msgstr "No se define el valor de devolución de la función '%s' en %L" #: fortran/trans-decl.c:3493 #, no-c-format @@ -10812,9 +10793,9 @@ msgid "Unused parameter '%s' declared at %L" msgstr "Se declaró el parámetro '%s' sin uso en %L" #: fortran/trans-decl.c:3549 -#, fuzzy, no-c-format +#, no-c-format msgid "Return value '%s' of function '%s' declared at %L not set" -msgstr "El tipo de devolución de la función BIND(C) '%s' en %L no puede ser una matriz" +msgstr "No se define el valor de devolución '%s' de la función '%s' declarada en %L" #: fortran/trans-expr.c:2391 #, no-c-format @@ -10865,19 +10846,18 @@ msgid "Out of memory" msgstr "Memoria agotada" #: fortran/trans.c:737 -#, fuzzy, c-format +#, c-format msgid "Attempting to allocate already allocated array '%s'" -msgstr "Se intentó alojar una matriz ya alojada" +msgstr "Se intentó alojar la matriz ya alojada '%s'" #: fortran/trans.c:743 -#, fuzzy msgid "Attempting to allocate already allocatedarray" msgstr "Se intentó alojar una matriz ya alojada" #: fortran/trans.c:852 -#, fuzzy, c-format +#, c-format msgid "Attempt to DEALLOCATE unallocated '%s'" -msgstr "Se intentó DEALLOCATE en memoria sin alojar." +msgstr "Se intentó DEALLOCATE en '%s' sin alojar." #: java/jcf-dump.c:1068 #, c-format @@ -11116,14 +11096,12 @@ msgid "-E or -x required when input is from standard input" msgstr "se requiere -E ó -x cuando la entrada es de entrada estándar" #: fortran/lang-specs.h:45 fortran/lang-specs.h:58 -#, fuzzy msgid "gfortran does not support -E without -cpp" -msgstr "GCC no da soporte a -C sin usar -E" +msgstr "gfortran no admite -E sin usar -cpp" #: config/bfin/elf.h:31 -#, fuzzy msgid "no processor type specified for linking" -msgstr "el fichero de especificación no tiene especificaciones para enlazar" +msgstr "no existe el tipo de procesador especificado para enlazar" #: config/vxworks.h:71 msgid "-Xbind-now and -Xbind-lazy are incompatible" @@ -11207,7 +11185,7 @@ msgstr "no se pueden especificar -march=... y -mcpu=... al mismo tiempo" #: config/vax/vax.h:49 config/vax/vax.h:50 msgid "profiling not supported with -mg\n" -msgstr "la creación de perfil no se admite con -mg\n" +msgstr "el análisis de perfil no se admite con -mg\n" #: config/s390/tpf.h:119 msgid "static is not supported on TPF-OS" @@ -11343,16 +11321,15 @@ msgstr "Avisa sobre posibles aliases de argumentos de relleno" #: fortran/lang.opt:77 msgid "Warn about alignment of COMMON blocks" -msgstr "" +msgstr "Avisa sobre la alineación de bloques COMMON" #: fortran/lang.opt:81 msgid "Warn about missing ampersand in continued character constants" msgstr "Avisa sobre '&' faltantes en las literales de carácter continuadas" #: fortran/lang.opt:85 -#, fuzzy msgid "Warn about creation of array temporaries" -msgstr "Avisa sobre la aritmética de punteros de funciones" +msgstr "Avisa sobre la creación de matrices temporales" #: fortran/lang.opt:89 msgid "Warn about truncated character expressions" @@ -11371,9 +11348,8 @@ msgid "Warn about truncated source lines" msgstr "Avisa sobre líneas de código truncadas" #: fortran/lang.opt:105 -#, fuzzy msgid "Warn on intrinsics not part of the selected standard" -msgstr "El intrínseco '%s' en %L no se incluye en el estándar seleccionado" +msgstr "Avisa sobre intrínsecos que no son parte del estándar seleccionado" #: fortran/lang.opt:113 msgid "Warn about \"suspicious\" constructs" @@ -11389,26 +11365,23 @@ msgstr "Avisa sobre desbordamiento por debajo de expresiones numéricas constante #: fortran/lang.opt:125 msgid "Warn if a user-procedure has the same name as an intrinsic" -msgstr "" +msgstr "Avisa si un procedimiento de usuario tiene el mismo nombre que un intrínseco" #: fortran/lang.opt:129 -#, fuzzy msgid "Enable preprocessing" -msgstr "Habilita el preprocesamiento tradicional" +msgstr "Habilita el preprocesamiento" #: fortran/lang.opt:133 -#, fuzzy msgid "Disable preprocessing" -msgstr "Desactiva el direccionamiento indizado" +msgstr "Desactiva el preprocesamiento" #: fortran/lang.opt:137 msgid "Dump details about macro names and definitions during preprocessing" -msgstr "" +msgstr "Vuelca detalles sobre los nombres de macro y definiciones durante el preprocesado" #: fortran/lang.opt:141 -#, fuzzy msgid "Enable alignment of COMMON blocks" -msgstr "La variable threadprivate en %C es un elemento de un bloque COMMON" +msgstr "Activa la alineación de bloques COMMON" #: fortran/lang.opt:145 msgid "All intrinsics procedures are available regardless of selected standard" @@ -11432,7 +11405,7 @@ msgstr "-fblas-matmul-limit=<n> Tamaño de la matriz más pequeña para la c #: fortran/lang.opt:169 msgid "Produce a warning at runtime if a array temporary has been created for a procedure argument" -msgstr "" +msgstr "Produce un aviso en tiempo de ejecución si se ha creado una matriz temporal para un argumento de procedimiento" #: fortran/lang.opt:173 msgid "Use big-endian format for unformatted files" @@ -11552,7 +11525,7 @@ msgstr "-finit-real=<zero|nan|inf|-inf> Inicializa las variables reales locales" #: fortran/lang.opt:289 msgid "-fmax-array-constructor=<n> Maximum number of objects in an array constructor" -msgstr "" +msgstr "-fmax-array-constructor=<n> Número máximo de objetos en un constructor de matriz" #: fortran/lang.opt:293 msgid "Maximum number of errors to report" @@ -11631,9 +11604,8 @@ msgid "Conform to the ISO Fortran 2003 standard" msgstr "Conforma al estándar ISO Fortran 2003" #: fortran/lang.opt:401 -#, fuzzy msgid "Conform to the ISO Fortran 2008 standard" -msgstr "Conforma al estándar ISO Fortran 2003" +msgstr "Conforma al estándar ISO Fortran 2008" #: fortran/lang.opt:405 msgid "Conform to the ISO Fortran 95 standard" @@ -11772,7 +11744,7 @@ msgstr "Usa 8 acumuladores de medios" #: config/frv/frv.opt:31 msgid "Enable label alignment optimizations" -msgstr "Activa las optimizaciones de alienación de etiquetas" +msgstr "Activa las optimizaciones de alineación de etiquetas" #: config/frv/frv.opt:35 msgid "Dynamically allocate cc registers" @@ -11784,7 +11756,7 @@ msgstr "Establece el costo de las ramificaciones" #: config/frv/frv.opt:46 msgid "Enable conditional execution other than moves/scc" -msgstr "Establece la ejecución condicional en lugar de moves/scc" +msgstr "Activa la ejecución condicional en lugar de moves/scc" #: config/frv/frv.opt:50 msgid "Change the maximum length of conditionally-executed sequences" @@ -12162,25 +12134,24 @@ msgid "Count speculative dependencies while calculating priority of instructions msgstr "Cuenta las dependencias especulativas mientras se calcula la prioridad de las instrucciones" #: config/ia64/ia64.opt:145 -#, fuzzy msgid "Place a stop bit after every cycle when scheduling" -msgstr "Activa la ubicación temprana de bits de paro para mejor calendarización" +msgstr "Coloca un bit de parada después de cada ciclo durante la calendarización" #: config/ia64/ia64.opt:149 msgid "Assume that floating-point stores and loads are not likely to cause conflict when placed into one instruction group" -msgstr "" +msgstr "Asume que los stores y loads de coma flotante no pueden causar conflictos al colocarse en un grupo de instrucción" #: config/ia64/ia64.opt:153 msgid "Soft limit on number of memory insns per instruction group, giving lower priority to subsequent memory insns attempting to schedule in the same insn group. Frequently useful to prevent cache bank conflicts. Default value is 1" -msgstr "" +msgstr "Límite suave en el número de insns de memoria por grupo de instrucción, dando una prioridad más baja a insns de memoria subsecuentes que intenten calendarizar en el mismo grupo insn. Frecuentemente útil para prevenir conflictos en el banco de caché. El valor por defecto es 1" #: config/ia64/ia64.opt:157 msgid "Disallow more than `msched-max-memory-insns' in instruction group. Otherwise, limit is `soft' (prefer non-memory operations when limit is reached)" -msgstr "" +msgstr "Desactiva más de `msched-max-memory-insns' en el grupo de instrucción. De otra forma, el límite es `soft' (se prefieren operaciones que no sean de memoria cuando se alcanza el límite)" #: config/ia64/ia64.opt:161 msgid "Don't generate checks for control speculation in selective scheduling" -msgstr "" +msgstr "No genera revisiones para el control de especulación en la calendarización selectiva" #: config/m32c/m32c.opt:24 config/bfin/bfin.opt:23 msgid "Use simulator runtime" @@ -12505,7 +12476,7 @@ msgstr "Optimiza para el CPU o la arquitectura destino" #: config/m68k/m68k.opt:184 msgid "Support more than 8192 GOT entries on ColdFire" -msgstr "" +msgstr "Admite más de 8192 entradas GOT en ColdFire" #: config/m68k/ieee.opt:24 config/i386/i386.opt:137 msgid "Use IEEE math for fp comparisons" @@ -12517,7 +12488,7 @@ msgstr "Se descarta (obsoleto)" #: config/i386/mingw.opt:23 msgid "Warn about none ISO msvcrt scanf/printf width extensions" -msgstr "" +msgstr "Avisa sobre extensiones de anchura scanf/printf msvcrt que no son ISO" #: config/i386/i386.opt:61 msgid "sizeof(long double) is 16" @@ -12577,7 +12548,7 @@ msgstr "Genera sin, cos, sqrt para FPU" #: config/i386/i386.opt:121 msgid "Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack" -msgstr "" +msgstr "Usar siempre el Puntero de Argumento Realineado Dinámicamente (DRAP) para realinear la pila" #: config/i386/i386.opt:125 msgid "Return values of functions in FPU registers" @@ -12612,9 +12583,8 @@ msgid "Attempt to keep stack aligned to this power of 2" msgstr "Trata de mantenter la pila alineada a esta potencia de 2" #: config/i386/i386.opt:181 -#, fuzzy msgid "Assume incoming stack aligned to this power of 2" -msgstr "Trata de mantenter la pila alineada a esta potencia de 2" +msgstr "Asume que la pila de entrada está alineada a esta potencia de 2" #: config/i386/i386.opt:185 msgid "Use push instructions to save outgoing arguments" @@ -12666,13 +12636,12 @@ msgid "Generate reciprocals instead of divss and sqrtss." msgstr "Genera recíprocos en lugar de divss y sqrtss." #: config/i386/i386.opt:241 -#, fuzzy msgid "Generate cld instruction in the function prologue." -msgstr "No mueve las instrucciones al prólogo de una función" +msgstr "Genera la instrucción cld en el prólogo de función." #: config/i386/i386.opt:248 msgid "Enable automatic generation of fused floating point multiply-add instructions" -msgstr "Permte la generación automática de instrucciones multiply-add de coma flotante de corto circuito" +msgstr "Permite la generación automática de instrucciones multiply-add de coma flotante de corto circuito" #: config/i386/i386.opt:256 msgid "Generate 32bit i386 code" @@ -12684,69 +12653,67 @@ msgstr "Genera código x86-64 de 64bit" #: config/i386/i386.opt:264 msgid "Support MMX built-in functions" -msgstr "Da soporte para funciones internas MMX" +msgstr "Admite funciones internas MMX" #: config/i386/i386.opt:268 msgid "Support 3DNow! built-in functions" -msgstr "Da soporte para funciones internas 3DNow!" +msgstr "Admite funciones internas 3DNow!" #: config/i386/i386.opt:272 msgid "Support Athlon 3Dnow! built-in functions" -msgstr "Da soporte para funciones internas Athlon 3DNow!" +msgstr "Admite funciones internas Athlon 3DNow!" #: config/i386/i386.opt:276 msgid "Support MMX and SSE built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código MMX y SSE" +msgstr "Admite funciones internas y generación de código MMX y SSE" #: config/i386/i386.opt:280 msgid "Support MMX, SSE and SSE2 built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código MMX, SSE y SSE2" +msgstr "Admite funciones internas y generación de código MMX, SSE y SSE2" #: config/i386/i386.opt:284 msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código MMX, SSE, SSE2 y SSE3" +msgstr "Admite funciones internas y generación de código MMX, SSE, SSE2 y SSE3" #: config/i386/i386.opt:288 msgid "Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código MMX, SSE, SSE2, SSE3 y SSSE3" +msgstr "Admite funciones internas y generación de código MMX, SSE, SSE2, SSE3 y SSSE3" #: config/i386/i386.opt:292 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1" +msgstr "Admite funciones internas y generación de código MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1" #: config/i386/i386.opt:296 config/i386/i386.opt:300 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2" +msgstr "Admite funciones internas y generación de código MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2" #: config/i386/i386.opt:304 msgid "Do not support SSE4.1 and SSE4.2 built-in functions and code generation" -msgstr "No da soporte para funciones internas y generación de código SSE4.1 y SSE4.2" +msgstr "No admite funciones internas y generación de código SSE4.1 y SSE4.2" #: config/i386/i386.opt:308 -#, fuzzy msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2" +msgstr "Admite funciones internas y generación de código MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 y AVX" #: config/i386/i386.opt:312 -#, fuzzy msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2" +msgstr "Admite funciones internas y generación de código MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX y FMA" #: config/i386/i386.opt:316 msgid "Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código MMX, SSE, SSE2, SSE3 y SSE4A" +msgstr "Admite funciones internas y generación de código MMX, SSE, SSE2, SSE3 y SSE4A" #: config/i386/i386.opt:320 msgid "Support SSE5 built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código SSE5" +msgstr "Admite funciones internas y generación de código SSE5" #: config/i386/i386.opt:324 msgid "Support code generation of Advanced Bit Manipulation (ABM) instructions." -msgstr "Da soporte para la generación de código de instrucciones Advanced Bit Manipulation (ABM)." +msgstr "Admite la generación de código de instrucciones Advanced Bit Manipulation (ABM)." #: config/i386/i386.opt:328 msgid "Support code generation of popcnt instruction." -msgstr "Da soporte para la generación de código de la instrucción popcnt" +msgstr "Admite la generación de código de la instrucción popcnt." #: config/i386/i386.opt:332 msgid "Support code generation of cmpxchg16b instruction." @@ -12754,21 +12721,19 @@ msgstr "Da soporte para la generación de código de la instrucción cmpxchg16b." #: config/i386/i386.opt:336 msgid "Support code generation of sahf instruction in 64bit x86-64 code." -msgstr "Da soporte para la generación de código de la instrucción sahf en código x86-64 de 64bit." +msgstr "Admite la generación de código de la instrucción sahf en código x86-64 de 64bit." #: config/i386/i386.opt:340 -#, fuzzy msgid "Support AES built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código SSE5" +msgstr "Admite funciones internas y generación de código AES" #: config/i386/i386.opt:344 -#, fuzzy msgid "Support PCLMUL built-in functions and code generation" -msgstr "Da soporte para funciones internas y generación de código SSE5" +msgstr "Admite funciones internas y generación de código PCLMUL" #: config/i386/i386.opt:348 msgid "Encode SSE instructions with VEX prefix" -msgstr "" +msgstr "Codifica las instrucciones SSE con el prefijo VEX" #: config/i386/cygming.opt:23 msgid "Create console application" @@ -13007,14 +12972,12 @@ msgid "Avoid all range limits on call instructions" msgstr "Evita todos los límites de rango en las instrucciones de llamadas" #: config/rs6000/rs6000.opt:238 -#, fuzzy msgid "Generate Cell microcode" -msgstr "Generar código MC" +msgstr "Genera microcódigo Cell" #: config/rs6000/rs6000.opt:242 -#, fuzzy msgid "Warn when a Cell microcoded instruction is emitted" -msgstr "Avisa cuando todos los constructores y destructores son privados" +msgstr "Avisa cuando se emite una instrucción microcodificada Cell" #: config/rs6000/rs6000.opt:246 msgid "Warn about deprecated 'vector long ...' AltiVec type usage" @@ -13045,28 +13008,24 @@ msgid "Specify scheduling priority for dispatch slot restricted insns" msgstr "Especifica la prioridad de calendarización para despachar insns restringidos por ranuras" #: config/rs6000/rs6000.opt:274 -#, fuzzy msgid "Single-precision floating point unit" -msgstr "Coma flotante de precisión cuádruple sin soporte" +msgstr "Unidad de coma flotante de precisión simple" #: config/rs6000/rs6000.opt:278 -#, fuzzy msgid "Double-precision floating point unit" -msgstr "Coma flotante de precisión cuádruple sin soporte" +msgstr "Unidad de coma flotante de precisión doble" #: config/rs6000/rs6000.opt:282 -#, fuzzy msgid "Floating point unit does not support divide & sqrt" -msgstr "no se admite la coma flotante decimal para este objetivo" +msgstr "La unidad de coma flotante no admite divide & sqrt" #: config/rs6000/rs6000.opt:286 msgid "Specify FP (sp, dp, sp-lite, dp-lite) (implies -mxilinx-fpu)" -msgstr "" +msgstr "Especifica FP (sp, dp, sp-lite, dp-lite) (implica -mxilinx-fpu)" #: config/rs6000/rs6000.opt:290 -#, fuzzy msgid "Specify Xilinx FPU." -msgstr "Especifica una ABI" +msgstr "Especifica la FPU de Xilinx." #: config/rs6000/aix64.opt:24 msgid "Compile for 64-bit pointers" @@ -13176,7 +13135,7 @@ msgstr "Se debe especificar volatile en cualquier memoria que sea afectada por D #: config/spu/spu.opt:40 config/spu/spu.opt:44 msgid "Insert nops when it might improve performance by allowing dual issue (default)" -msgstr "" +msgstr "Inserta nops cuando se puede mejorar el rendimiento permitiendo el asunto dual (por defecto)" #: config/spu/spu.opt:48 msgid "Use standard main function as entry for startup" @@ -13187,14 +13146,12 @@ msgid "Generate branch hints for branches" msgstr "Genera pistas de ramificación para las ramificaciones" #: config/spu/spu.opt:56 -#, fuzzy msgid "Maximum number of nops to insert for a hint (Default 2)" -msgstr "Número máximo de errores a reportar" +msgstr "Número máximo de nops a insertar para una pista (Por defecto 2)" #: config/spu/spu.opt:60 -#, fuzzy msgid "Approximate maximum number of instructions to allow between a hint and its branch [125]" -msgstr "El número máximo de instrucciones para considerar el desenrollo en un ciclo" +msgstr "El número máximo aproximado de instrucciones a permitir entre una pista y su ramificación [125]" #: config/spu/spu.opt:64 msgid "Generate code for 18 bit addressing" @@ -13206,7 +13163,7 @@ msgstr "Genera código para direccionamiento de 32 bit" #: config/spu/spu.opt:76 msgid "Insert hbrp instructions after hinted branch targets to avoid the SPU hang issue" -msgstr "" +msgstr "Inserta instrucciones hbrp después de los objetivos ramificados con pista para evitar el problema del colgado de SPU" #: config/mcore/mcore.opt:23 msgid "Generate code for the M*Core M210" @@ -13453,9 +13410,8 @@ msgid "Generate 32-bit offsets in switch tables" msgstr "Genera desplazamientos de 32-bit en las tablas de switch" #: config/sh/sh.opt:217 -#, fuzzy msgid "Generate bit instructions" -msgstr "Genera instrucciones isel" +msgstr "Genera instrucciones bit" #: config/sh/sh.opt:221 msgid "Cost to assume for a branch insn" @@ -13570,9 +13526,8 @@ msgid "Runtime name." msgstr "Nombre del ambiente de ejecución." #: config/arm/eabi.opt:23 -#, fuzzy msgid "Generate code for the Android operating system." -msgstr "Genera código para el ISA dado" +msgstr "Genera código para el sistema operativo Android." #: config/arm/arm.opt:23 msgid "Specify an ABI" @@ -13692,11 +13647,11 @@ msgstr "Usa los registros quad-word Neon (en lugar de double-word) para la vecto #: config/arm/arm.opt:162 msgid "Only generate absolute relocations on word sized values." -msgstr "" +msgstr "Sólo genera reubicaciones absolutas en los valores de tamaño word." #: config/arm/arm.opt:166 msgid "Avoid overlapping destination and address registers on LDRD instructions" -msgstr "" +msgstr "Evita el traslape en registros de destino y dirección en las instrucciones LDRD" #: config/arm/pe.opt:23 msgid "Ignore dllimport attribute for functions" @@ -14021,9 +13976,8 @@ msgid "Work around certain R4400 errata" msgstr "Evita errores de ciertos R4400" #: config/mips/mips.opt:117 -#, fuzzy msgid "Work around certain R10000 errata" -msgstr "Evita errores de ciertos R4000" +msgstr "Evita errores de ciertos R10000" #: config/mips/mips.opt:121 msgid "Work around errata for early SB-1 revision 2 cores" @@ -14074,9 +14028,8 @@ msgid "Use GP-relative addressing to access small data" msgstr "Usa el direccionamiento relativo al GP para acceder a datos small" #: config/mips/mips.opt:169 -#, fuzzy msgid "When generating -mabicalls code, allow executables to use PLTs and copy relocations" -msgstr "Al generar código -mabicalls, hace que el código sea adecuado para su uso en bibliotecas compartidas" +msgstr "Al generar código -mabicalls, permite que los ejecutables usen PLTs y copien reubicaciones" #: config/mips/mips.opt:173 msgid "Allow the use of hardware floating-point ABI and instructions" @@ -14151,9 +14104,8 @@ msgid "Use paired-single floating-point instructions" msgstr "Usa instrucciones apareadas-sencillas de coma flotante" #: config/mips/mips.opt:245 -#, fuzzy msgid "Specify when r10k cache barriers should be inserted" -msgstr "Especifica sí/no si se deben generar las instrucciones isel" +msgstr "Especifica cuando se deben insertar las barreras de caché de r10k" #: config/mips/mips.opt:249 msgid "When generating -mabicalls code, make the code suitable for use in shared libraries" @@ -14590,48 +14542,44 @@ msgid "Do stack checking using bounds in L1 scratch memory" msgstr "Revisa la pila usando límites en la memoria de scratch L1" #: config/bfin/bfin.opt:85 -#, fuzzy msgid "Enable multicore support" -msgstr "Admite la coma flotante decimal de hardware" +msgstr "Activa el soporte multinúcleo" #: config/bfin/bfin.opt:89 msgid "Build for Core A" -msgstr "" +msgstr "Construye par el Core A" #: config/bfin/bfin.opt:93 msgid "Build for Core B" -msgstr "" +msgstr "Construye para el Core B" #: config/bfin/bfin.opt:97 msgid "Build for SDRAM" -msgstr "" +msgstr "Construye para SDRAM" #: config/picochip/picochip.opt:23 msgid "Specify which type of AE to target. This option sets the mul-type" -msgstr "" +msgstr "Especifica a qué tipo de AE se apunta. Esta opción establece el tipo mul" #: config/picochip/picochip.opt:28 msgid "Specify which type of multiplication to use. Can be mem, mac or none." -msgstr "" +msgstr "Especifica cuál tipo de multiplicación se usa. Puede ser mem, mac o none." #: config/picochip/picochip.opt:32 -#, fuzzy msgid "Specify whether the byte access instructions should be used. Enabled by default." -msgstr "Especifica sí/no si se deben generar las instrucciones isel" +msgstr "Especifica si se deben usar las instrucciones de acceso a byte. Activado por defecto." #: config/picochip/picochip.opt:36 -#, fuzzy msgid "Enable debug output to be generated." -msgstr "Activa la salida de depuración" +msgstr "Activa que la salida de depuración se genere." #: config/picochip/picochip.opt:40 msgid "Allow a symbol value to be used as an immediate value in an" -msgstr "" +msgstr "Permite que un valor de símbolo se use como un valor inmediato en an" #: config/picochip/picochip.opt:45 -#, fuzzy msgid "Generate warnings when inefficient code is known to be generated." -msgstr "Emite avisos cuando se generan las reubicaciones de tiempo de ejecución" +msgstr "Emite avisos cuando se sabe que se genera código ineficiente." #: config/vxworks.opt:24 msgid "Assume the VxWorks RTP environment" @@ -14811,7 +14759,7 @@ msgstr "Avisa por funciones de conversión a tipos incompatibles" #: c.opt:136 msgid "Warn when a built-in preprocessor macro is undefined or redefined" -msgstr "" +msgstr "Avisa cuando una macro de preprocesador interna está sin definir o redefinida" #: c.opt:140 msgid "Warn about C constructs that are not in the common subset of C and C++" @@ -14878,9 +14826,8 @@ msgid "Warn about stray tokens after #elif and #endif" msgstr "Avisa sobre elementos sobrantes después de #elif y #endif" #: c.opt:204 -#, fuzzy msgid "Warn about comparison of different enum types" -msgstr "Avisar sobre tipos inconsistentes de devolución" +msgstr "Avisar sobre comparación de tipos enum diferentes" #: c.opt:212 msgid "This switch is deprecated; use -Werror=implicit-function-declaration instead" @@ -15096,7 +15043,7 @@ msgstr "Avisa si los firmas de tipo de los métodos candidatos no coinciden exact #: c.opt:433 msgid "Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used" -msgstr "" +msgstr "Avisa cuando se usan las funciones internas __sync_fetch_and_nand y __sync_nand_and_fetch" #: c.opt:437 msgid "Deprecated. This switch has no effect" @@ -15204,7 +15151,7 @@ msgstr "Permite '$' como un identificador de carácter" #: c.opt:554 msgid "Generate code to check exception specifications" -msgstr "Genera código para revisar excepciones de especificaciones" +msgstr "Genera código para revisar especificaciones de excepciones" #: c.opt:561 msgid "Convert all strings and character constants to character set <cset>" @@ -15303,7 +15250,6 @@ msgid "Enable OpenMP" msgstr "Activa OpenMP" #: c.opt:690 -#, fuzzy msgid "Recognize C++ keywords like \"compl\" and \"xor\"" msgstr "Reconoce palabras clave de C++ como \"compl\" y \"xor\"" @@ -15608,9 +15554,8 @@ msgid "Warn when an optimization pass is disabled" msgstr "Avisa cuando se desactiva un paso de optimización" #: common.opt:99 -#, fuzzy msgid "Warn on calls to these functions" -msgstr "error en los argumentos para la función de especificación '%s'" +msgstr "Avisa en las llamadas a estas funciones" #: common.opt:103 msgid "Treat all warnings as errors" @@ -15630,7 +15575,7 @@ msgstr "Termina cuando sucede el primer error" #: common.opt:119 msgid "-Wframe-larger-than=<number> Warn if a function's stack frame requires more than <number> bytes" -msgstr "" +msgstr "-Wframe-larger-than=<número> Avisa si el marco de la pila de una función requiere más de <número> bytes" #: common.opt:123 msgid "Warn when an inlined function cannot be inlined" @@ -15653,9 +15598,8 @@ msgid "Warn about functions which might be candidates for __attribute__((noretur msgstr "Avisa sobre funciones que pueden ser candidatas para __attribute((noreturn))" #: common.opt:146 -#, fuzzy msgid "Warn about constructs not instrumented by -fmudflap" -msgstr "Avisar acerca de constructores con significados sorprendentes" +msgstr "Avisa sobre constructores que no se instrumentaron por -fmudflap" #: common.opt:150 msgid "Warn about overflow in arithmetic expressions" @@ -15835,7 +15779,7 @@ msgstr "No pone globales sin inicializar en la sección común" #: common.opt:390 msgid "Do not perform optimizations increasing noticeably stack usage" -msgstr "" +msgstr "No realizar optimizaciones que incrementan notablemente el uso de la pila" #: common.opt:394 msgid "Perform a register copy-propagation optimization pass" @@ -15859,7 +15803,7 @@ msgstr "Omite el paso de reducción de rango al realizar divisiones complejas" #: common.opt:414 msgid "Complex multiplication and division follow Fortran rules" -msgstr "" +msgstr "La multiplicación y la división complejas siguen las reglas Fortran" #: common.opt:418 msgid "Place data items into their own section" @@ -15911,7 +15855,7 @@ msgstr "Suprime la salida de números de instrucción, notas de números de linea y #: common.opt:468 msgid "Enable CFI tables via GAS assembler directives." -msgstr "" +msgstr "Activa las tablas CFI a través de directivas del ensamblador GAS." #: common.opt:472 msgid "Perform early inlining" @@ -15987,27 +15931,24 @@ msgid "Perform global common subexpression elimination after register allocation msgstr "Realiza la eliminación de subexpresiones comunes globales despúes del alojamiento de registros" #: common.opt:556 -#, fuzzy msgid "Enable in and out of Graphite representation" -msgstr "Activa la eliminación de almacenamiento muerto" +msgstr "Activa in y out de la representación Graphite" #: common.opt:560 msgid "Enable Loop Strip Mining transformation" -msgstr "" +msgstr "Activa la transformación Loop Strip Mining" #: common.opt:564 msgid "Enable Loop Interchange transformation" -msgstr "" +msgstr "Activa la transformación Loop Interchange" #: common.opt:568 -#, fuzzy msgid "Enable Loop Blocking transformation" -msgstr "Permite la revisión de rango durante la compilación" +msgstr "Activa la transformación Loop Blocking" #: common.opt:572 -#, fuzzy msgid "Enable Graphite Identity transformation" -msgstr "Emite información de grafo de llamadas" +msgstr "Activa la transformación Graphite Identity" #: common.opt:576 msgid "Enable guessing of branch probabilities" @@ -16030,9 +15971,8 @@ msgid "Do not generate .size directives" msgstr "No genera directivas .size" #: common.opt:604 -#, fuzzy msgid "Perform indirect inlining" -msgstr "Realiza la inclusión en línea temprana" +msgstr "Realiza la inclusión en línea indirecta" #: common.opt:613 msgid "Pay attention to the \"inline\" keyword" @@ -16071,9 +16011,8 @@ msgid "Perform Interprocedural constant propagation" msgstr "Realiza la propagación interprocedural de las constantes" #: common.opt:652 -#, fuzzy msgid "Perform cloning to make Interprocedural constant propagation stronger" -msgstr "Realiza la propagación interprocedural de las constantes" +msgstr "Realiza la clonación para hacer la propagación constante Interprocedural más fuerte" #: common.opt:656 msgid "Discover pure and const functions" @@ -16100,30 +16039,28 @@ msgid "Perform structure layout optimizations based" msgstr "Realiza la ubicación de estructuras basada en optimizaciones" #: common.opt:682 -#, fuzzy msgid "Use integrated register allocator." -msgstr "Utilizar coloración de grafos para el alojamiento de registros." +msgstr "Utiliza el alojador de registros integrado." #: common.opt:686 msgid "-fira-algorithm=[regional|CB|mixed] Set the used IRA algorithm" -msgstr "" +msgstr "-fira-algorithm=[regional|CB|mixed] Establece el algoritmo IRA a usar" #: common.opt:690 msgid "Do optimistic coalescing." -msgstr "" +msgstr "Hace coalescencia optimista." #: common.opt:694 -#, fuzzy msgid "Share slots for saving different hard registers." -msgstr "Almacenar los locales en los registros de argumento" +msgstr "Comparte ranuras para ahorrar registros hard diferentes." #: common.opt:698 msgid "Share stack slots for spilled pseudo-registers." -msgstr "" +msgstr "Comparte ranuras de pila para pseudo-registros derramados." #: common.opt:702 msgid "-fira-verbose=<number> Control IRA's level of diagnostic messages." -msgstr "" +msgstr "-fira-verbose=<número> Controla el nivel de mensajes de diagnóstico de IRA" #: common.opt:706 msgid "Optimize induction variables on trees" @@ -16283,29 +16220,27 @@ msgstr "Inserta el código de análisis de perfil de programa basado en arc" #: common.opt:873 msgid "Set the top-level directory for storing the profile data." -msgstr "" +msgstr "Establece el directorio de nivel principal para almacenar los datos de perfilado." #: common.opt:878 msgid "Enable correction of flow inconsistent profile data input" -msgstr "" +msgstr "Activa la corrección de datos de entrada de perfilado inconsistente de flujo" #: common.opt:882 msgid "Enable common options for generating profile info for profile feedback directed optimizations" msgstr "Activa las opciones comunes para generar información de análisis de perfil para optimizaciones dirigidas por retroalimentación de perfil" #: common.opt:886 -#, fuzzy msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=" -msgstr "Activa las opciones comunes para generar información de análisis de perfil para optimizaciones dirigidas por retroalimentación de perfil" +msgstr "Activa las opciones comunes para generar información de análisis de perfil para optimizaciones dirigidas por retroalimentación de perfili, y establece -fprofile-dir=" #: common.opt:890 msgid "Enable common options for performing profile feedback directed optimizations" msgstr "Activa las opciones comunes para realizar optimizaciones dirigidas por retroalimentación de perfil" #: common.opt:894 -#, fuzzy msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=" -msgstr "Activa las opciones comunes para realizar optimizaciones dirigidas por retroalimentación de perfil" +msgstr "Activa las opciones comunes para realizar optimizaciones dirigidas por retroalimentación de perfil, y establece -fprofile-dir=" #: common.opt:898 msgid "Insert code to profile values of expressions" @@ -16389,24 +16324,23 @@ msgstr "Recalendariza las instrucciones después del alojamiento de registros" #: common.opt:994 msgid "Schedule instructions using selective scheduling algorithm" -msgstr "" +msgstr "Calendariza instrucciones usando el algoritmo de calendarización selectivo" #: common.opt:998 -#, fuzzy msgid "Run selective scheduling after reload" -msgstr "Usa la especulación de datos después de recargar" +msgstr "Ejecuta la calendarización selectiva después de recargar" #: common.opt:1002 msgid "Perform software pipelining of inner loops during selective scheduling" -msgstr "" +msgstr "Realiza el `pipelining' de software de los ciclos internos durante la calendarización selectiva" #: common.opt:1006 msgid "Perform software pipelining of outer loops during selective scheduling" -msgstr "" +msgstr "Realiza el `pipelining' de software de los ciclos externos durante la calendarización selectiva" #: common.opt:1010 msgid "Reschedule pipelined regions without pipelining" -msgstr "" +msgstr "Recalendariza las regiones `pipelined' sin `pipelining'" #: common.opt:1016 msgid "Allow premature scheduling of queued insns" @@ -16465,9 +16399,8 @@ msgid "Insert stack checking code into the program" msgstr "Inserta código de revisión de la pila en el programa" #: common.opt:1080 -#, fuzzy msgid "Insert stack checking code into the program. Same as -fstack-check=specific" -msgstr "Inserta código de revisión de la pila en el programa" +msgstr "Inserta código de revisión de la pila en el programai. Igual que -fstach-check=specific" #: common.opt:1087 msgid "Trap if the stack goes past <register>" @@ -16550,9 +16483,8 @@ msgid "Transform condition stores into unconditional ones" msgstr "Transforma los almacenamientos condicionales a incondicionales" #: common.opt:1186 -#, fuzzy msgid "Perform conversions of switch initializations." -msgstr "Realiza la conversión de saltos condicionales a ejecución condicional" +msgstr "Realiza la conversión de las inicializaciones de switch." #: common.opt:1190 msgid "Enable SSA dead code elimination optimization on trees" @@ -16571,9 +16503,8 @@ msgid "Enable Full Redundancy Elimination (FRE) on trees" msgstr "Activa la Eliminación de Redundancia Completa en árboles" #: common.opt:1206 -#, fuzzy msgid "Enable loop distribution on trees" -msgstr "Activa la vectorización de ciclos en árboles" +msgstr "Activa la distribución de ciclos en árboles" #: common.opt:1210 msgid "Enable loop invariant motion on trees" @@ -16704,9 +16635,8 @@ msgid "Construct webs and split unrelated uses of single variable" msgstr "Construye redes y divide usos no relacionados de una sola variable" #: common.opt:1357 -#, fuzzy msgid "Enable conditional dead code elimination for builtin calls" -msgstr "Activa la optimización de eliminación de código muerto SSA en árboles" +msgstr "Activa la eliminación de código muerto condicional para llamadas internas" #: common.opt:1361 msgid "Perform whole program optimizations" @@ -16926,7 +16856,7 @@ msgstr "ambos argumentos de %<__builtin_clear_cache%> deben ser punteros" #: builtins.c:6011 builtins.c:6026 #, gcc-internal-format msgid "%qD changed semantics in GCC 4.4" -msgstr "" +msgstr "%qD cambió su semántica en GCC 4.4" #. All valid uses of __builtin_va_arg_pack () are removed during #. inlining. @@ -16985,7 +16915,7 @@ msgstr "el segundo parámetro de %<va_start%> no es el último argumento nombrado" #: builtins.c:11661 #, gcc-internal-format msgid "undefined behaviour when second parameter of %<va_start%> is declared with %<register%> storage" -msgstr "" +msgstr "la conducta es indefinida cuando el segundo parámetro de %<va_start%> se declara con almacenamiento %<register%>" #: builtins.c:11776 msgid "%Kfirst argument of %D must be a pointer, second integer constant" @@ -17005,11 +16935,11 @@ msgstr "%Kla llamada a %D puede desbordar el almacenamiento temporal destino" #: builtins.c:12077 msgid "%Kattempt to free a non-heap object %qD" -msgstr "" +msgstr "%Kse intenta liberar un objeto %qD que no es de pila" #: builtins.c:12079 msgid "%Kattempt to free a non-heap object" -msgstr "" +msgstr "%Kse intenta liberar un objeto que no es de pila" #: c-common.c:1026 #, gcc-internal-format @@ -17061,20 +16991,26 @@ msgstr "desbordamiento de coma flotante compleja en la expresión" msgid "logical %<%s%> with non-zero constant will always evaluate as true" msgstr "%<%s%> lógico con una constante diferente de cero siempre se evaluará como verdadero" +# No existe una traducción para type-punning. Gracias a Jose María Pérez +# por el comentario. cfuga #: c-common.c:1245 #, gcc-internal-format msgid "type-punning to incomplete type might break strict-aliasing rules" -msgstr "el castigo de tipo a tipo incompleto puede romper las reglas de alias estricto" +msgstr "el uso de %<type punning%> sobre un tipo incompleto puede romper las reglas de alias estricto" +# No existe una traducción para type-punning. Gracias a Jose María Pérez +# por el comentario. cfuga #: c-common.c:1260 #, gcc-internal-format msgid "dereferencing type-punned pointer will break strict-aliasing rules" -msgstr "la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" +msgstr "la dereferencia de punteros %<type-punned%> romperá las reglas de alias estricto" +# No existe una traducción para type-punning. Gracias a Jose María Pérez +# por el comentario. cfuga #: c-common.c:1267 c-common.c:1285 #, gcc-internal-format msgid "dereferencing type-punned pointer might break strict-aliasing rules" -msgstr "la dereferencia de punteros de tipo castigado puede romper las reglas de alias estricto" +msgstr "la dereferencia de punteros %<type-punned%> puede romper las reglas de alias estricto" #: c-common.c:1316 #, gcc-internal-format @@ -17102,9 +17038,9 @@ msgid "use -flax-vector-conversions to permit conversions between vectors with d msgstr "use -flax-vector-conversions para permitir conversiones entre vectores con diferentes tipos de elementos o número de subpartes" #: c-common.c:1548 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion to %qT from boolean expression" -msgstr "la conversión de %qT desde %qT puede alterar su valor" +msgstr "la conversión de %qT desde la expresión booleana" #: c-common.c:1570 #, gcc-internal-format @@ -17440,9 +17376,9 @@ msgid "section of %q+D conflicts with previous declaration" msgstr "la sección de %q+D genera un conflicto con la declaración previa" #: c-common.c:5877 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "section of %q+D cannot be overridden" -msgstr "no se puede sobrecargar %q+#D" +msgstr "no se puede sobreescribir la sección de %q+D" #: c-common.c:5885 #, gcc-internal-format @@ -17485,9 +17421,9 @@ msgid "alignment for %q+D must be at least %d" msgstr "la alineación para %q+D debe ser por lo menos %d" #: c-common.c:5995 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "inline function %q+D cannot be declared weak" -msgstr "la función %qs no se puede declarar %<mutable%>" +msgstr "la función inline %q+D no se puede declarar weak" #: c-common.c:6024 #, gcc-internal-format @@ -17657,15 +17593,15 @@ msgstr "la posición solicitada es menor a cero" #: c-common.c:7036 #, gcc-internal-format msgid "Bad option %s to optimize attribute." -msgstr "" +msgstr "Opción %s errónea para optimizar el atributo." #: c-common.c:7039 #, gcc-internal-format msgid "Bad option %s to pragma attribute" -msgstr "" +msgstr "Opción %s errónea para el atributo pragma" #: c-common.c:7232 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "not enough arguments to function %qE" msgstr "faltan argumentos para la función %qE" @@ -17675,19 +17611,19 @@ msgid "too many arguments to function %qE" msgstr "demasiados argumentos para la función %qE" #: c-common.c:7267 c-common.c:7313 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-floating-point argument in call to function %qE" -msgstr "argumento que no es de coma flotante para la función %qs" +msgstr "argumento que no es de coma flotante en la llamada a la función %qE" #: c-common.c:7290 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-floating-point arguments in call to function %qE" -msgstr "argumento que no es de coma flotante para la función %qs" +msgstr "argumentos que no son de coma flotante en la llamada a la función %qE" #: c-common.c:7306 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-const integer argument %u in call to function %qE" -msgstr "argumento que no es de coma flotante para la función %qs" +msgstr "argumento %u entero que no es constante en la llamada a la función %qE" #: c-common.c:7532 #, gcc-internal-format @@ -17760,89 +17696,89 @@ msgid "array subscript has type %<char%>" msgstr "el subíndice de la matriz es de tipo %<char%>" #: c-common.c:8083 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around %<+%> inside %<<<%>" -msgstr "se sugieren paréntesis alrededor de + o - dentro de shift" +msgstr "se sugieren paréntesis alrededor de %<+%> dentro de %<<<%>" #: c-common.c:8086 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around %<-%> inside %<<<%>" -msgstr "se sugieren paréntesis alrededor de + o - dentro de shift" +msgstr "se sugieren paréntesis alrededor de %<-%> dentro de %<<<%>" #: c-common.c:8092 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around %<+%> inside %<>>%>" -msgstr "se sugieren paréntesis alrededor de + o - dentro de shift" +msgstr "se sugieren paréntesis alrededor de %<+%> dentro de %<>>%>" #: c-common.c:8095 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around %<-%> inside %<>>%>" -msgstr "se sugieren paréntesis alrededor de + o - dentro de shift" +msgstr "se sugieren paréntesis alrededor de %<-%> dentro de %<>>%>" #: c-common.c:8101 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around %<&&%> within %<||%>" -msgstr "se sugieren paréntesis alrededor de && junto con ||" +msgstr "se sugieren paréntesis alrededor de %<&&%> junto con %<||%>" #: c-common.c:8110 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around arithmetic in operand of %<|%>" -msgstr "se sugieren paréntesis alrededor de la aritmética para operandos de |" +msgstr "se sugieren paréntesis alrededor de la aritmética para un operando de %<|%>" #: c-common.c:8115 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<|%>" -msgstr "se sugieren paréntesis alrededor de las comparaciones para operandos de |" +msgstr "se sugieren paréntesis alrededor de la comparación para un operando de %<|%>" #: c-common.c:8119 #, gcc-internal-format msgid "suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!%> to %<~%>" -msgstr "" +msgstr "se sugieren paréntesis alrededor del operando de %<!%> o cambie %<|%> a %<||%> o %<!%> a %<~%>" #: c-common.c:8129 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around arithmetic in operand of %<^%>" -msgstr "se sugieren paréntesis alrededor de la aritmética para operandos de ^" +msgstr "se sugieren paréntesis alrededor de la aritmética para un operando de %<^%>" #: c-common.c:8134 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<^%>" -msgstr "se sugieren paréntesis alrededor de las comparaciones para operandos de ^" +msgstr "se sugieren paréntesis alrededor de la comparación para un operando de %<^%>" #: c-common.c:8140 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around %<+%> in operand of %<&%>" -msgstr "se sugieren paréntesis alrededor de + o - para operandos de &" +msgstr "se sugieren paréntesis alrededor de %<+%> para un operando de %<&%>" #: c-common.c:8143 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around %<-%> in operand of %<&%>" -msgstr "se sugieren paréntesis alrededor de + o - para operandos de &" +msgstr "se sugieren paréntesis alrededor de %<-%> para un operando de %<&%>" #: c-common.c:8148 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<&%>" -msgstr "se sugieren paréntesis alrededor de las comparaciones para operandos de &" +msgstr "se sugieren paréntesis alrededor de la comparación para un operando de %<&%>" #: c-common.c:8152 #, gcc-internal-format msgid "suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!%> to %<~%>" -msgstr "" +msgstr "se sugieren paréntesis alrededor de un operando de %<!%> o cambie %<&%> a %<&&%> o %<!%> a %<~%>" #: c-common.c:8160 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<==%>" -msgstr "se sugieren paréntesis alrededor de la comparación en el operando de %s" +msgstr "se sugieren paréntesis alrededor de la comparación en un operando de %<==%>" #: c-common.c:8166 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<!=%>" -msgstr "se sugieren paréntesis alrededor de la comparación en el operando de %s" +msgstr "se sugieren paréntesis alrededor de la comparación en un operando de %<!=%>" #: c-common.c:8175 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "comparisons like %<X<=Y<=Z%> do not have their mathematical meaning" -msgstr "las comparaciones como X<=Y<=Z no tienen su significado matemático" +msgstr "las comparaciones como %<X<=Y<=Z%> no tienen su significado matemático" #: c-common.c:8190 #, gcc-internal-format @@ -17860,9 +17796,9 @@ msgid "division by zero" msgstr "división por cero" #: c-common.c:8244 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "comparison between types %qT and %qT" -msgstr "comparación entre los tipos %q#T y %q#T" +msgstr "comparación entre los tipos %qT y %qT" #: c-common.c:8295 #, gcc-internal-format @@ -17872,7 +17808,7 @@ msgstr "comparación entre expresiones enteras signed y unsigned" #: c-common.c:8346 #, gcc-internal-format msgid "promoted ~unsigned is always non-zero" -msgstr "" +msgstr "el ~unsigned promovido es siempre diferente de cero" #: c-common.c:8349 #, gcc-internal-format @@ -17918,12 +17854,12 @@ msgstr "se usa la etiqueta %q+D pero no está definida" #: c-decl.c:781 #, gcc-internal-format msgid "nested function %q+D declared but never defined" -msgstr "se declara la función anidada %q+D pero nunca se definió" +msgstr "se declara la función anidada %q+D pero nunca se define" #: c-decl.c:791 #, gcc-internal-format msgid "inline function %q+D declared but never defined" -msgstr "se declara la función inline %q+D pero nunca se definió" +msgstr "se declara la función inline %q+D pero nunca se define" #: c-decl.c:804 cp/decl.c:603 #, gcc-internal-format @@ -18970,9 +18906,9 @@ msgid "promoted argument %qD doesn%'t match prototype" msgstr "el argumento promovido %qD no coincide con el prototipo" #: c-decl.c:6541 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "prototype declaration" -msgstr "%Hdeclaración vacía" +msgstr "declaración de prototipo" #: c-decl.c:6547 #, gcc-internal-format @@ -18993,14 +18929,14 @@ msgstr "no hay una declaración de devolución en la función que no devuelve void" #. the C99 for loop scope. This doesn't make much sense, so don't #. allow it. #: c-decl.c:6833 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<for%> loop initial declarations are only allowed in C99 mode" -msgstr "se usó la declaración inicial del ciclo %<for%> fuera del modo C99" +msgstr "sólo se permiten las declaraciones iniciales del ciclo %<for%> en modo C99" #: c-decl.c:6837 #, gcc-internal-format msgid "use option -std=c99 or -std=gnu99 to compile your code" -msgstr "" +msgstr "use la opción -std=c99 o -std=gnu99 para compilar su código" #: c-decl.c:6868 #, gcc-internal-format @@ -19430,7 +19366,7 @@ msgstr "ISO C no admite tipos enteros complejos" #: c-decl.c:8001 toplev.c:836 #, gcc-internal-format msgid "%q+F used but never defined" -msgstr "se usa %q+F pero nunca se definió" +msgstr "se usa %q+F pero nunca se define" #: c-format.c:98 c-format.c:209 #, gcc-internal-format @@ -19671,7 +19607,7 @@ msgstr "%s no admite el formato %<%%%s%c%> %s" #: c-format.c:2044 #, gcc-internal-format msgid "operand number specified with suppressed assignment" -msgstr "número de operandos especificado con asignación suprimida" +msgstr "se especificó un número de operandos con asignación suprimida" #: c-format.c:2047 #, gcc-internal-format @@ -19721,32 +19657,32 @@ msgstr "el formato %q.*s espera el tipo %<%T%s%>, pero el argumento %d es de tip #: c-format.c:2405 c-format.c:2411 c-format.c:2562 #, gcc-internal-format msgid "%<__gcc_host_wide_int__%> is not defined as a type" -msgstr "%<__gcc_host_wide_int__%> no se definió como un tipo" +msgstr "%<__gcc_host_wide_int__%> no se define como un tipo" #: c-format.c:2418 c-format.c:2572 #, gcc-internal-format msgid "%<__gcc_host_wide_int__%> is not defined as %<long%> or %<long long%>" -msgstr "%<__gcc_host_wide_int__%> no se definió como %<long%> o %<long long%>" +msgstr "%<__gcc_host_wide_int__%> no se define como %<long%> o %<long long%>" #: c-format.c:2468 #, gcc-internal-format msgid "%<locus%> is not defined as a type" -msgstr "%<locus%> no se definió como un tipo" +msgstr "%<locus%> no se define como un tipo" #: c-format.c:2521 #, gcc-internal-format msgid "%<location_t%> is not defined as a type" -msgstr "%<location_t%> no se definió como un tipo" +msgstr "%<location_t%> no se define como un tipo" #: c-format.c:2538 #, gcc-internal-format msgid "%<tree%> is not defined as a type" -msgstr "%<tree%> no se definió como un tipo" +msgstr "%<tree%> no se define como un tipo" #: c-format.c:2543 #, gcc-internal-format msgid "%<tree%> is not defined as a pointer type" -msgstr "%<tree%> no se definió como un tipo puntero" +msgstr "%<tree%> no se define como un tipo puntero" #: c-format.c:2850 #, gcc-internal-format @@ -19830,9 +19766,9 @@ msgid "floating constant truncated to zero" msgstr "constante de coma flotante truncada a cero" #: c-lex.c:888 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unsupported non-standard concatenation of string literals" -msgstr "no se admite el sufijo no estándar en una constante de coma flotante" +msgstr "no se admite la concatenación no estándar de literales de cadena" #: c-lex.c:910 #, gcc-internal-format @@ -19845,34 +19781,34 @@ msgid "invalid expression type for %<#pragma omp atomic%>" msgstr "tipo de expresión inválido para %<#pragma omp atomic%>" #: c-omp.c:245 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid type for iteration variable %qE" -msgstr "%Htipo inválido para la variable de iteración %qE" +msgstr "tipo inválido para la variable de iteración %qE" #: c-omp.c:258 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not initialized" -msgstr "%H%qE no está inicializado" +msgstr "%qE no está inicializado" #: c-omp.c:270 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "missing controlling predicate" -msgstr "%Hfalta el predicado controlador" +msgstr "falta el predicado controlador" #: c-omp.c:331 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid controlling predicate" -msgstr "%Hpredicado controlador inválido" +msgstr "predicado controlador inválido" #: c-omp.c:338 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "missing increment expression" -msgstr "%Hfalta la expresión de incremento" +msgstr "falta la expresión de incremento" #: c-omp.c:404 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid increment expression" -msgstr "%Hfalta la expresión de decremento" +msgstr "expresión de incremento inválida" #: c-opts.c:150 #, gcc-internal-format @@ -20015,9 +19951,9 @@ msgid "to generate dependencies you must specify either -M or -MM" msgstr "para generar dependencias debe especificar -M ó -MM" #: c-opts.c:1394 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-MG may only be used with -M or -MM" -msgstr "se usó -mn sin -mh ó -ms" +msgstr "-MG sólo se puede usar con -M ó -MM" #: c-opts.c:1423 #, gcc-internal-format @@ -20035,29 +19971,29 @@ msgid "too late for # directive to set debug directory" msgstr "demasiado tarde para que la directiva # establezca el directorio de depuración" #: c-parser.c:226 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "identifier %qs conflicts with C++ keyword" -msgstr "el nombre de identificador `%s' causa conflictos con la estrategia interna de nombrado del C++ de GNU" +msgstr "el identificador %qs causa conflictos con la palabra clave de C++" #: c-parser.c:971 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C forbids an empty translation unit" -msgstr "%HISO C prohíbe un fichero fuente vacío" +msgstr "ISO C prohíbe una unidad de traducción vacía" #: c-parser.c:1056 c-parser.c:6085 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C does not allow extra %<;%> outside of a function" -msgstr "%HISO C no permite %<;%> extra fuera de una función" +msgstr "ISO C no permite un %<;%> extra fuera de una función" #: c-parser.c:1158 c-parser.c:6643 #, gcc-internal-format msgid "expected declaration specifiers" -msgstr "se esperaba la declaración de especificadores" +msgstr "se esperaban especificadores de declaración" #: c-parser.c:1206 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "data definition has no type or storage class" -msgstr "%Hla definición de datos no tiene tipo o clase de almacenamiento" +msgstr "la definición de datos no tiene tipo o clase de almacenamiento" #: c-parser.c:1260 #, gcc-internal-format @@ -20073,9 +20009,9 @@ msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>" msgstr "se esperaba %<=%>, %<,%>, %<;%>, %<asm%> o %<__attribute__%>" #: c-parser.c:1275 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C forbids nested functions" -msgstr "%HISO C prohíbe las funciones anidadas" +msgstr "ISO C prohíbe las funciones anidadas" #: c-parser.c:1641 c-parser.c:2454 c-parser.c:3091 c-parser.c:3343 #: c-parser.c:4277 c-parser.c:4877 c-parser.c:5284 c-parser.c:5305 @@ -20103,9 +20039,9 @@ msgid "expected %<{%>" msgstr "se esperaba %<{%>" #: c-parser.c:1706 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C forbids forward references to %<enum%> types" -msgstr "%HISO C prohíbe las referencias hacia adelante a tipos %<enum%>" +msgstr "ISO C prohíbe las referencias hacia adelante a tipos %<enum%>" #: c-parser.c:1812 #, gcc-internal-format @@ -20113,14 +20049,14 @@ msgid "expected class name" msgstr "se esperaba un nombre de clase" #: c-parser.c:1831 c-parser.c:5831 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "extra semicolon in struct or union specified" -msgstr "%Hse especificó un punto y coma extra en un struct o union" +msgstr "se especificó un punto y coma extra en un struct o union" #: c-parser.c:1860 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "no semicolon at end of struct or union" -msgstr "%Hno hay punto y coma al final del struct o union" +msgstr "no hay punto y coma al final del struct o union" #: c-parser.c:1863 #, gcc-internal-format @@ -20133,9 +20069,9 @@ msgid "expected specifier-qualifier-list" msgstr "se esperaba una lista de calificadores-especificadores" #: c-parser.c:1952 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C forbids member declarations with no members" -msgstr "%HISO C prohíbe declaraciones de miembros con no miembros" +msgstr "ISO C prohíbe declaraciones de miembros con no miembros" #: c-parser.c:2028 #, gcc-internal-format @@ -20148,9 +20084,9 @@ msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>" msgstr "se esperaba %<:%>, %<,%>, %<;%>, %<}%> o %<__attribute__%>" #: c-parser.c:2086 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<typeof%> applied to a bit-field" -msgstr "%Hse aplicó %<typeof%> a un campo de bits" +msgstr "se aplicó %<typeof%> a un campo de bits" #: c-parser.c:2322 #, gcc-internal-format @@ -20158,19 +20094,19 @@ msgid "expected identifier or %<(%>" msgstr "se esperaba un identificador o %<(%>" #: c-parser.c:2524 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C requires a named argument before %<...%>" -msgstr "%HISO C requiere un argumento con nombre antes de %<...%>" +msgstr "ISO C requiere un argumento con nombre antes de %<...%>" #: c-parser.c:2630 #, gcc-internal-format msgid "expected declaration specifiers or %<...%>" -msgstr "se esperaba la declaración de especificadores o %<...%>" +msgstr "se esperaban especificadores de declaración o %<...%>" #: c-parser.c:2681 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "wide string literal in %<asm%>" -msgstr "%Hliteral de cadena ancha en %<asm%>" +msgstr "literal de cadena ancha en %<asm%>" #: c-parser.c:2687 c-parser.c:6698 #, gcc-internal-format @@ -20178,29 +20114,29 @@ msgid "expected string literal" msgstr "se esperaba una cadena literal" #: c-parser.c:3012 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C forbids empty initializer braces" -msgstr "%HISO C prohíbe las llaves de inicializador vacías" +msgstr "ISO C prohíbe las llaves de inicializador vacías" #: c-parser.c:3058 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "obsolete use of designated initializer with %<:%>" -msgstr "%Huso obsoleto del inicializador designado con %<:%>" +msgstr "uso obsoleto del inicializador designado con %<:%>" #: c-parser.c:3188 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C forbids specifying range of elements to initialize" -msgstr "%HISO C prohíbe la especificación de rangos de elementos a inicializar" +msgstr "ISO C prohíbe la especificación de rangos de elementos a inicializar" #: c-parser.c:3201 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C90 forbids specifying subobject to initialize" -msgstr "%HISO C90 prohíbe la especificación de subobjetos a inicializar" +msgstr "ISO C90 prohíbe la especificación de subobjetos a inicializar" #: c-parser.c:3208 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "obsolete use of designated initializer without %<=%>" -msgstr "%Huso obsoleto del inicializador designado sin %<=%>" +msgstr "uso obsoleto del inicializador designado sin %<=%>" #: c-parser.c:3214 #, gcc-internal-format @@ -20208,9 +20144,9 @@ msgid "expected %<=%>" msgstr "se esperaba %<=%>" #: c-parser.c:3358 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C forbids label declarations" -msgstr "%HISO C prohíbe las declaraciones etiquetadas" +msgstr "ISO C prohíbe las declaraciones etiquetadas" #: c-parser.c:3363 c-parser.c:3439 #, gcc-internal-format @@ -20218,14 +20154,14 @@ msgid "expected declaration or statement" msgstr "se esperaba una declaración" #: c-parser.c:3393 c-parser.c:3421 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C90 forbids mixed declarations and code" -msgstr "%HISO C90 prohíbe las declaraciones mezcladas y código" +msgstr "ISO C90 prohíbe mezclar declaraciones y código" #: c-parser.c:3446 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %<}%> before %<else%>" -msgstr "%Hse esperaba %<}%> antes de %<else%>" +msgstr "se esperaba %<}%> antes de %<else%>" #: c-parser.c:3451 #, gcc-internal-format @@ -20233,9 +20169,9 @@ msgid "%<else%> without a previous %<if%>" msgstr "%<else%> sin un %<if%> previo" #: c-parser.c:3467 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "label at end of compound statement" -msgstr "%Hetiqueta al final de una declaración compuesta" +msgstr "etiqueta al final de una declaración compuesta" #: c-parser.c:3510 #, gcc-internal-format @@ -20243,9 +20179,9 @@ msgid "expected %<:%> or %<...%>" msgstr "se esperaba %<:%> o %<...%>" #: c-parser.c:3544 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "a label can only be part of a statement and a declaration is not a statement" -msgstr "%Huna etiqueta sólo puede ser parte de una declaración y una declaración no es un enunciado" +msgstr "una etiqueta sólo puede ser parte de una declaración y una declaración no es un enunciado" #: c-parser.c:3706 #, gcc-internal-format @@ -20262,39 +20198,39 @@ msgid "expected statement" msgstr "se esperaba una declaración" #: c-parser.c:3863 cp/parser.c:7228 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest braces around empty body in an %<if%> statement" -msgstr "%Hse sugieren llaves alrededor del cuerpo vacío en una declaración %<if%>" +msgstr "se sugieren llaves alrededor del cuerpo vacío en una declaración %<if%>" #: c-parser.c:3889 cp/parser.c:7249 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest braces around empty body in an %<else%> statement" -msgstr "%Hse sugieren llaves alrededor del cuerpo vacío en una declaración %<else%>" +msgstr "se sugieren llaves alrededor del cuerpo vacío en una declaración %<else%>" #: c-parser.c:4009 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "suggest braces around empty body in %<do%> statement" -msgstr "%Hse sugiere llaves alrededor de un cuerpo vacío en una declaración %<do%>" +msgstr "se sugiere llaves alrededor de un cuerpo vacío en una declaración %<do%>" #: c-parser.c:4162 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%E qualifier ignored on asm" -msgstr "%Hse descarta el calificador %E en asm" +msgstr "se descarta el calificador %E en asm" #: c-parser.c:4450 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C forbids omitting the middle term of a ?: expression" -msgstr "%HISO C prohíbe la omisión del término medio de una expresión ?:" +msgstr "ISO C prohíbe la omisión del término medio de una expresión ?:" #: c-parser.c:4846 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "traditional C rejects the unary plus operator" -msgstr "%HC tradicional rechaza el operador unario mas" +msgstr "C tradicional rechaza el operador unario mas" #: c-parser.c:4970 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<sizeof%> applied to a bit-field" -msgstr "%Hse aplicó %<sizeof%> a un campo de bits" +msgstr "se aplicó %<sizeof%> a un campo de bits" #: c-parser.c:5118 c-parser.c:5464 c-parser.c:5486 #, gcc-internal-format @@ -20302,34 +20238,34 @@ msgid "expected expression" msgstr "se esperaba una expresión" #: c-parser.c:5145 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "braced-group within expression allowed only inside a function" -msgstr "%Hun grupo de llaves dentro de una expresión sólo se permite dentro de una función" +msgstr "un grupo de llaves dentro de una expresión sólo se permite dentro de una función" #: c-parser.c:5159 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C forbids braced-groups within expressions" -msgstr "%HISO C prohíbe grupos de llaves dentro de expresiones" +msgstr "ISO C prohíbe grupos de llaves dentro de expresiones" #: c-parser.c:5346 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "first argument to %<__builtin_choose_expr%> not a constant" -msgstr "%Hel primer argumento de %<__builtin_choose_expr%> no es una constante" +msgstr "el primer argumento de %<__builtin_choose_expr%> no es una constante" #: c-parser.c:5515 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "compound literal has variable size" -msgstr "%Hla literal compuesta tiene tamaño variable" +msgstr "la literal compuesta tiene tamaño variable" #: c-parser.c:5523 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C90 forbids compound literals" -msgstr "%HISO C90 prohíbe las literales compuestas" +msgstr "ISO C90 prohíbe las literales compuestas" #: c-parser.c:6048 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "extra semicolon in method definition specified" -msgstr "%Hse especificó un punto y coma extra en la definición del método" +msgstr "se especificó un punto y coma extra en la definición del método" #: c-parser.c:6592 #, gcc-internal-format @@ -20342,9 +20278,9 @@ msgid "%<#pragma omp flush%> may only be used in compound statements" msgstr "%<#pragma omp flush%> sólo se puede usar en declaraciones compuestas" #: c-parser.c:6614 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<#pragma omp taskwait%> may only be used in compound statements" -msgstr "%<#pragma omp barrier%> sólo se puede usar en declaraciones compuestas" +msgstr "%<#pragma omp taskwait%> sólo se puede usar en declaraciones compuestas" #: c-parser.c:6627 #, gcc-internal-format @@ -20362,9 +20298,9 @@ msgid "too many %qs clauses" msgstr "demasiadas cláusulas %qs" #: c-parser.c:6887 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "collapse argument needs positive constant integer expression" -msgstr "la etiqueta de `case' debe ser una expresión constante discreta" +msgstr "el argumento de collapse necesita una expresión entera constante positiva" #: c-parser.c:6952 #, gcc-internal-format @@ -20382,9 +20318,9 @@ msgid "expected integer expression" msgstr "se esperaba una expresión entera" #: c-parser.c:7049 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<num_threads%> value must be positive" -msgstr "%Hel valor de %<num_threads%> debe ser positivo" +msgstr "el valor de %<num_threads%> debe ser positivo" #: c-parser.c:7129 #, gcc-internal-format @@ -20397,9 +20333,9 @@ msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter" msgstr "el calendarizador %<runtime%> no toma un parámetro %<chunk_size%>" #: c-parser.c:7218 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "schedule %<auto%> does not take a %<chunk_size%> parameter" -msgstr "el calendarizador %<runtime%> no toma un parámetro %<chunk_size%>" +msgstr "el calendarizador %<auto%> no toma un parámetro %<chunk_size%>" #: c-parser.c:7236 #, gcc-internal-format @@ -20439,27 +20375,27 @@ msgstr "se esperaba una declaración de iteración o una inicialización" #: c-parser.c:7684 #, gcc-internal-format msgid "not enough perfectly nested loops" -msgstr "" +msgstr "no hay suficientes ciclos perfectamente anidados" #: c-parser.c:7732 #, gcc-internal-format msgid "collapsed loops not perfectly nested" -msgstr "" +msgstr "los ciclos colapsados no están perfectamente anidados" #: c-parser.c:7769 cp/pt.c:10362 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "iteration variable %qD should not be firstprivate" -msgstr "la variable de iteración %qs no debe ser firstprivate" +msgstr "la variable de iteración %qD no debe ser firstprivate" #: c-parser.c:7919 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %<#pragma omp section%> or %<}%>" -msgstr "%Hse esperaba %<#pragma omp section%> o %<}%>" +msgstr "se esperaba %<#pragma omp section%> o %<}%>" #: c-parser.c:8189 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is not a variable" -msgstr "'%s' en %C no es una variable" +msgstr "%qD no es una variable" #: c-parser.c:8191 cp/semantics.c:3787 #, gcc-internal-format @@ -20757,84 +20693,84 @@ msgid "unknown option after %<#pragma GCC diagnostic%> kind" msgstr "opción desconocida después del tipo %<#pragma GCC diagnostic%>" #: c-pragma.c:879 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "#pragma GCC option is not allowed inside functions" -msgstr "no se permite #pragma GCC diagnostic dentro de funciones" +msgstr "no se permite #pragma GCC option dentro de funciones" #: c-pragma.c:892 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<#pragma GCC option%> is not a string" -msgstr "%<#pragma%> no se permite aquí" +msgstr "%<#pragma GCC option%> no es una cadena" #: c-pragma.c:919 #, gcc-internal-format msgid "%<#pragma GCC target (string [,string]...)%> does not have a final %<)%>." -msgstr "" +msgstr "%<#pragma GCC target (cadena, [,cadena]...)%> no tiene un %<)%> final." #: c-pragma.c:925 #, gcc-internal-format msgid "#pragma GCC target string... is badly formed" -msgstr "" +msgstr "#pragma GCC target cadena... está mal formado" #: c-pragma.c:948 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "#pragma GCC optimize is not allowed inside functions" -msgstr "no se permite #pragma GCC diagnostic dentro de funciones" +msgstr "no se permite #pragma GCC optimize dentro de funciones" #: c-pragma.c:961 #, gcc-internal-format msgid "%<#pragma GCC optimize%> is not a string or number" -msgstr "" +msgstr "%<#pragma GCC optimize%> no es una cadena o un número" #: c-pragma.c:987 #, gcc-internal-format msgid "%<#pragma GCC optimize (string [,string]...)%> does not have a final %<)%>." -msgstr "" +msgstr "%<#pragma GCC optimize (cadena [,string]...)%> no tiene un %<)%> final." #: c-pragma.c:993 #, gcc-internal-format msgid "#pragma GCC optimize string... is badly formed" -msgstr "" +msgstr "#pragma GCC optimize cadena... está mal formado" #: c-pragma.c:1036 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "junk at end of %<#pragma push_options%>" -msgstr "basura al final de %<#pragma push_macro%>" +msgstr "basura al final de %<#pragma push_options%>" #: c-pragma.c:1066 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "junk at end of %<#pragma pop_options%>" -msgstr "basura al final de %<#pragma pop_macro%>" +msgstr "basura al final de %<#pragma pop_options%>" #: c-pragma.c:1073 #, gcc-internal-format msgid "%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC push_options%>" -msgstr "" +msgstr "%<#pragma GCC pop_options%> sin un %<#pragma GCC push_options%> correspondiente" #: c-pragma.c:1114 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "junk at end of %<#pragma reset_options%>" -msgstr "basura al final de '#pragma options'" +msgstr "basura al final de %<#pragma reset_options%>" #: c-pragma.c:1151 c-pragma.c:1158 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected a string after %<#pragma message%>" -msgstr "se esperaba [error|warning|ignored] después de %<#pragma GCC diagnostic%>" +msgstr "se esperaba una cadena después de %<#pragma message%>" #: c-pragma.c:1153 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "malformed %<#pragma message%>, ignored" -msgstr "#pragma weak malformado, descartado" +msgstr "%<#pragma message%> malformado, se descarta" #: c-pragma.c:1163 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "junk at end of %<#pragma message%>" -msgstr "basura al final de %<#pragma weak%>" +msgstr "basura al final de %<#pragma message%>" #: c-pragma.c:1166 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "#pragma message: %s" -msgstr "programas: %s\n" +msgstr "#pragma message: %s" #: c-typeck.c:173 #, gcc-internal-format @@ -20945,7 +20881,7 @@ msgstr "el valor de subíndice es un puntero a función" #: c-typeck.c:2129 #, gcc-internal-format msgid "ISO C forbids subscripting %<register%> array" -msgstr "ISO C prohíbe el subíndice de una matriz %<registe%>" +msgstr "ISO C prohíbe el subíndice de una matriz %<register%>" #: c-typeck.c:2132 #, gcc-internal-format @@ -20953,9 +20889,9 @@ msgid "ISO C90 forbids subscripting non-lvalue array" msgstr "ISO C90 prohíbe el subíndice de una matriz no-lvaluada" #: c-typeck.c:2249 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is static but used in inline function %qD which is not static" -msgstr "%H%qD es estática pero se usa en la función inline %qD la cual no es estática" +msgstr "%qD es estática pero se usa en la función inline %qD la cual no es estática" #: c-typeck.c:2397 #, gcc-internal-format @@ -21301,9 +21237,9 @@ msgstr "ISO C prohíbe la conversión de objeto apuntador a un tipo de apuntador a #. strings are complete sentences, visible to gettext and checked at #. compile time. #: c-typeck.c:4013 c-typeck.c:4446 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %qT but argument is of type %qT" -msgstr "el formato %q.*s espera el tipo %<%T%s%>, pero el argumento %d es de tipo %qT" +msgstr "se esperaba %qT pero el argumento es de tipo %qT" #: c-typeck.c:4092 #, gcc-internal-format @@ -21481,19 +21417,19 @@ msgid "return makes integer from pointer without a cast" msgstr "la devolución crea un entero desde un puntero sin una conversión" #: c-typeck.c:4449 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "incompatible types when assigning to type %qT from type %qT" -msgstr "tipos incompatible en la asignación de %qT a %qT" +msgstr "tipos incompatible en la asignación al tipo %qT del tipo %qT" #: c-typeck.c:4453 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "incompatible types when initializing type %qT using type %qT" -msgstr "tipos incompatibles en la inicialización" +msgstr "tipos incompatibles en la inicialización del tipo %qT usando el tipo %qT" #: c-typeck.c:4457 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "incompatible types when returning type %qT but %qT was expected" -msgstr "tipos incompatible en la asignación de %qT a %qT" +msgstr "tipos incompatible al devolver el tipo %qT pero se esperaba %qT" #: c-typeck.c:4514 #, gcc-internal-format @@ -21753,7 +21689,7 @@ msgstr "la llamada a la función tiene valor agregado" #: cfgexpand.c:298 #, gcc-internal-format msgid "Unrecognized GIMPLE statement during RTL expansion" -msgstr "" +msgstr "No se reconoce la declaración GIMPLE durante la expansión RTL" #: cfgexpand.c:2343 #, gcc-internal-format @@ -22251,7 +22187,7 @@ msgid "failed to reclaim unneeded function" msgstr "falló al reclamar una función innecesaria" #: cgraphunit.c:1343 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "nodes with unreleased memory found" msgstr "se encontraron nodos sin memoria liberada" @@ -22413,7 +22349,7 @@ msgstr " %s" #: dbxout.c:3227 #, gcc-internal-format msgid "common symbol debug info is not structured as symbol+offset" -msgstr "" +msgstr "la información de depuración de símbolos comunes no está estructurada como símbolo+desplazamiento" #: diagnostic.c:712 #, gcc-internal-format @@ -22529,9 +22465,9 @@ msgid "invalid argument %qs to -fdebug-prefix-map" msgstr "argumento inválido %qs para -fdebug-prefix-map" #: final.c:1533 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the frame size of %wd bytes is larger than %wd bytes" -msgstr "el tamaño de %q+D es mayor que %wd bytes" +msgstr "el tamaño de marco de %wd bytes es mayor que %wd bytes" #: fixed-value.c:104 #, gcc-internal-format @@ -22755,9 +22691,9 @@ msgid "can't seek PCH file: %m" msgstr "no se puede buscar en el fichero PCH: %m" #: gimple.c:1111 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d" -msgstr "revisión de árbol: se esperaba la clase %qs, se tiene %qs (%s) en %s, en %s:%d" +msgstr "revisión gimple: se esperaba %s(%s), se tiene %s(%s) en %s, en %s:%d" #: gimplify.c:4660 #, gcc-internal-format @@ -22820,9 +22756,9 @@ msgid "can't open %s: %m" msgstr "no se puede abrir %s: %m" #: graphite.c:5253 toplev.c:1712 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "Graphite loop optimizations cannot be used" -msgstr "Activa las optimizaciones de ciclo a nivel de árbol" +msgstr "No se pueden usar las optimizaciones de ciclo Graphite" #: haifa-sched.c:184 #, gcc-internal-format @@ -22830,24 +22766,24 @@ msgid "fix_sched_param: unknown param: %s" msgstr "fix_sched_param: parámetro desconocido: %s" #: omp-low.c:1817 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region" -msgstr "la región de trabajo compartido puede no estar bien anidada dentro de la región de trabajo compartido, ordenado o maestra" +msgstr "la región de barrera puede no estar bien anidada dentro de la región de trabajo compartido, crítica, ordenada, maestra o de tarea explícita" #: omp-low.c:1822 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region" -msgstr "la región de trabajo compartido puede no estar bien anidada dentro de la región de trabajo compartido, ordenado o maestra" +msgstr "la región de trabajo compartido puede no estar bien anidada dentro de la región de trabajo compartido, crítica, ordenada, maestra o de tarea explícita" #: omp-low.c:1840 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "master region may not be closely nested inside of work-sharing or explicit task region" -msgstr "la región maestra puede no estar bien anidada dentro de la región de trabajo compartido" +msgstr "la región maestra puede no estar bien anidada dentro de la región de trabajo compartido o de tarea explícita" #: omp-low.c:1855 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ordered region may not be closely nested inside of critical or explicit task region" -msgstr "la región ordenada puede no estar bien anidada dentro de la región crítica" +msgstr "la región ordenada puede no estar bien anidada dentro de la región crítica o de tarea explícita" #: omp-low.c:1861 #, gcc-internal-format @@ -22871,9 +22807,9 @@ msgstr "entrada inválida a un bloque estructurado OpenMP" #. Otherwise, be vague and lazy, but efficient. #: omp-low.c:6632 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid branch to/from an OpenMP structured block" -msgstr "salida inválida de un bloque estructurado OpenMP" +msgstr "ramificación inválida desde/para un bloque estructurado OpenMP" #: opts.c:171 #, gcc-internal-format @@ -22917,24 +22853,24 @@ msgid "argument to \"%s\" should be a non-negative integer" msgstr "el argumento para \"%s\" debe ser un entero no negativo" #: opts.c:761 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "disallowed call to %qs" -msgstr " en la llamada a %qD" +msgstr "no se permite la llamada a %qs" #: opts.c:1015 #, gcc-internal-format msgid "Section anchors must be disabled when unit-at-a-time is disabled." -msgstr "" +msgstr "Las anclas de sección se deben desactivar cuando se desactiva unidad-cada-vez." #: opts.c:1019 #, gcc-internal-format msgid "Toplevel reorder must be disabled when unit-at-a-time is disabled." -msgstr "" +msgstr "El reordenamiento de nivel principal se debe desactivar cuando se desactiva unidad-cada-vez." #: opts.c:1034 #, gcc-internal-format msgid "section anchors must be disabled when toplevel reorder is disabled" -msgstr "" +msgstr "las anclas de seccions se deben desactivar cando el reordenamiento de nivel principal se desactiva" #: opts.c:1064 #, gcc-internal-format @@ -22952,9 +22888,9 @@ msgid "-freorder-blocks-and-partition does not work on this architecture" msgstr "-freorder-blocks-and-partition no funciona en esta arquitectura" #: opts.c:1101 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-fira does not work on this architecture" -msgstr "-freorder-blocks-and-partition no funciona en esta arquitectura" +msgstr "-fira no funciona en esta arquitectura" #: opts.c:1406 #, gcc-internal-format @@ -22972,9 +22908,9 @@ msgid "unrecognized visibility value \"%s\"" msgstr "no se reconoce el valor de visibilidad \"%s\"" #: opts.c:1925 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unknown stack check parameter \"%s\"" -msgstr "parámetro %qs sin uso" +msgstr "parámetro de revisión de pila \"%s\" desconocido" #: opts.c:1951 #, gcc-internal-format @@ -22987,9 +22923,9 @@ msgid "unknown tls-model \"%s\"" msgstr "tls-model \"%s\" desconocido" #: opts.c:1986 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unknown ira algorithm \"%s\"" -msgstr "nombre de registro desconocido: %s" +msgstr "algoritmo ira \"%s\" desconocido" #: opts.c:2089 #, gcc-internal-format @@ -23060,12 +22996,12 @@ msgstr "información de análisis de perfil corrupta: sum_all es menor que sum_max #: profile.c:632 #, gcc-internal-format msgid "correcting inconsistent profile data" -msgstr "" +msgstr "se corrige los datos de análisis de perfil inconsistentes" #: profile.c:642 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "corrupted profile info: profile data is not flow-consistent" -msgstr "información de análisis de perfil corrupta: el borde de %i a %i excede la cuenta maximal" +msgstr "información de análisis de perfil corrupta: los datos de análisis de perfil no es consistente en flujo" #: profile.c:660 #, gcc-internal-format @@ -23442,14 +23378,14 @@ msgid "__builtin_saveregs not supported by this target" msgstr "no se admite __builtin_saveregs en este objetivo" #: targhooks.c:728 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "target attribute is not supported on this machine" -msgstr "el atributo %qE no se admite en esta plataforma" +msgstr "el atributo target no se admite en esta plataforma" #: targhooks.c:738 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "#pragma GCC target is not supported for this machine" -msgstr "No se admite #pragma extern_prefix en este objetivo" +msgstr "No se admite #pragma GCC target en este objetivo" #: tlink.c:482 #, gcc-internal-format @@ -23484,12 +23420,12 @@ msgstr "estableciendo el límite del tamaño máximo del fichero core: %m" #: toplev.c:838 #, gcc-internal-format msgid "%q+F declared %<static%> but never defined" -msgstr "%q+F se declaró %<static%> pero nunca se definió" +msgstr "%q+F se declaró %<static%> pero nunca se define" #: toplev.c:866 #, gcc-internal-format msgid "%q+D defined but not used" -msgstr "se definió %q+D pero no se usa" +msgstr "se define %q+D pero no se usa" #: toplev.c:909 #, gcc-internal-format @@ -23672,19 +23608,19 @@ msgid "invalid conditional operand" msgstr "operando condicional inválido" #: tree-cfg.c:2934 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid position or size operand to BIT_FIELD_REF" -msgstr "restricciones inválidas para el operando" +msgstr "posición o tamaño de operando inválido para BIT_FIELD_REF" #: tree-cfg.c:2941 #, gcc-internal-format msgid "integral result type precision does not match field size of BIT_FIELD_REF" -msgstr "" +msgstr "la precisión del tipo de resultado integral no coincide con el tamaño del campo de BIT_FIELD_REF" #: tree-cfg.c:2949 #, gcc-internal-format msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF" -msgstr "" +msgstr "el modo de precisión del resultado que no es integral no coincide con el tamaño del campo de BIT_FIELD_REF" #: tree-cfg.c:2960 #, gcc-internal-format @@ -23747,24 +23683,24 @@ msgid "type mismatch in component reference" msgstr "los tipos de datos no coinciden en la referencia a componente" #: tree-cfg.c:3210 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-function in gimple call" -msgstr "la función no se puede incluir en línea" +msgstr "no es función en la llamada gimple" #: tree-cfg.c:3217 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid LHS in gimple call" -msgstr "PC inválido en la tabla de números de línea" +msgstr "LHS inválido en la llamada gimple" #: tree-cfg.c:3233 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid conversion in gimple call" -msgstr "número de versión `%s' inválido" +msgstr "conversión inválida en la llamada gimple" #: tree-cfg.c:3258 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid operands in gimple comparison" -msgstr "operandos inválidos en la expresión compleja" +msgstr "operandos inválidos en la comparación gimple" #: tree-cfg.c:3276 #, gcc-internal-format @@ -23774,12 +23710,12 @@ msgstr "los tipos de datos no coinciden en la expresión de comparación" #: tree-cfg.c:3302 #, gcc-internal-format msgid "non-register as LHS of unary operation" -msgstr "" +msgstr "el LHS de una operación unaria no es un registro" #: tree-cfg.c:3308 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid operand in unary operation" -msgstr "operando inválido en el not unario" +msgstr "operando inválido en la operación unaria" #: tree-cfg.c:3343 #, gcc-internal-format @@ -23787,9 +23723,9 @@ msgid "invalid types in nop conversion" msgstr "tipos inválidos en la conversión nop" #: tree-cfg.c:3357 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid types in fixed-point conversion" -msgstr "tipos inválidos en la conversión nop" +msgstr "tipos inválidos en la conversión de coma fija" #: tree-cfg.c:3370 #, gcc-internal-format @@ -23802,19 +23738,19 @@ msgid "invalid types in conversion to integer" msgstr "tipos inválidos en la conversión a entero" #: tree-cfg.c:3418 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-trivial conversion in unary operation" -msgstr "conversión que no es trivial en la asignación" +msgstr "conversión que no es trivial en la operación unaria" #: tree-cfg.c:3445 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-register as LHS of binary operation" -msgstr "operación binaria elemental" +msgstr "el LHS de una operación binaria no es un registro" #: tree-cfg.c:3452 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid operands in binary operation" -msgstr "operandos inválidos en la expresión binaria" +msgstr "operandos inválidos en la operación binaria" #: tree-cfg.c:3467 #, gcc-internal-format @@ -23827,9 +23763,9 @@ msgid "type mismatch in shift expression" msgstr "los tipos de datos no coinciden en la expresión shift" #: tree-cfg.c:3506 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "type mismatch in vector shift expression" -msgstr "los tipos de datos no coinciden en la expresión shift" +msgstr "los tipos de datos no coinciden en la expresión shift de vector" #: tree-cfg.c:3522 #, gcc-internal-format @@ -23867,24 +23803,24 @@ msgid "type mismatch in address expression" msgstr "no coincide el tipo en la expresión de dirección" #: tree-cfg.c:3701 tree-cfg.c:3727 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid rhs for gimple memory store" -msgstr "dirección indirecta de memoria inválida" +msgstr "rhs inválido para el almacenamiento de memoria gimple" #: tree-cfg.c:3793 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid operand in return statement" -msgstr "operando inválido para la declaración switch" +msgstr "operando inválido en la declaración return" #: tree-cfg.c:3805 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid conversion in return statement" -msgstr "Declaración de expresión inválida" +msgstr "conversión inválida en la declaración return" #: tree-cfg.c:3829 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "goto destination is neither a label nor a pointer" -msgstr "el valor indicado por el subíndice no es ni matriz ni puntero" +msgstr "el destino de goto no es una etiqueta ni un puntero" #: tree-cfg.c:3844 #, gcc-internal-format @@ -23892,19 +23828,19 @@ msgid "invalid operand to switch statement" msgstr "operando inválido para la declaración switch" #: tree-cfg.c:3864 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "Invalid PHI result" -msgstr "argumento IACC inválido" +msgstr "Resultado PHI inválido" #: tree-cfg.c:3876 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "Invalid PHI argument" -msgstr "argumento IACC inválido" +msgstr "Argumento PHI inválido" #: tree-cfg.c:3882 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "Incompatible types in PHI argument" -msgstr "tipos incompatibles en la asignación" +msgstr "Tipos incompatibles en el argumento PHI" #: tree-cfg.c:4007 #, gcc-internal-format @@ -23912,14 +23848,14 @@ msgid "verify_gimple failed" msgstr "falló verify_gimple" #: tree-cfg.c:4041 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid function in call statement" -msgstr "declaración inválida de función" +msgstr "función inválida en la declaración call" #: tree-cfg.c:4052 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid pure const state for function" -msgstr "clase de almacenamiento inválida para la función %qs" +msgstr "estado const pure inválido para la función" #: tree-cfg.c:4062 tree-ssa.c:845 tree-ssa.c:855 #, gcc-internal-format @@ -23942,9 +23878,9 @@ msgid "Dead STMT in EH table" msgstr "STMT muerto en la tabla EH" #: tree-cfg.c:4191 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "gimple_bb (phi) is set to a wrong basic block" -msgstr "se estableción bb_for_stmt (phi) a un bloque básico erróneo" +msgstr "se estableció gimple_bb (phi) a un bloque básico erróneo" #: tree-cfg.c:4202 #, gcc-internal-format @@ -23952,9 +23888,9 @@ msgid "missing PHI def" msgstr "falta la definición PHI" #: tree-cfg.c:4213 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "PHI argument is not a GIMPLE value" -msgstr "La definición de PHI no es un valor GIMPLE" +msgstr "El argumento PHI no es un valor GIMPLE" #: tree-cfg.c:4222 tree-cfg.c:4267 #, gcc-internal-format @@ -23962,19 +23898,19 @@ msgid "incorrect sharing of tree nodes" msgstr "compartición incorrecta de nodos de árbol" #: tree-cfg.c:4237 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid GIMPLE statement" -msgstr "no es una declaración GIMPLE válida" +msgstr "declaración GIMPLE inválida" #: tree-cfg.c:4246 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "gimple_bb (stmt) is set to a wrong basic block" -msgstr "se estableción bb_for_stmt (stmt) a un bloque básico erróneo" +msgstr "se estableció gimple_bb (stmt) a un bloque básico erróneo" #: tree-cfg.c:4258 #, gcc-internal-format msgid "incorrect entry in label_to_block_map.\n" -msgstr "" +msgstr "entrada incorrecta en label_to_block_map.\n" #: tree-cfg.c:4283 #, gcc-internal-format @@ -24017,9 +23953,9 @@ msgid "fallthru edge after a control statement in bb %d" msgstr "borde de caída después de una sentencia de control en bb %d" #: tree-cfg.c:4419 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "true/false edge after a non-GIMPLE_COND in bb %d" -msgstr "borde verdadero/falso después de una expresión que no es COND_EXPR en bb %d" +msgstr "borde verdadero/falso después de una expresión que no es GIMPLE_COND en bb %d" #: tree-cfg.c:4442 tree-cfg.c:4464 tree-cfg.c:4477 tree-cfg.c:4546 #, gcc-internal-format @@ -24037,9 +23973,9 @@ msgid "return edge does not point to exit in bb %d" msgstr "el borde de devolución no apunta a exit en el bb %d" #: tree-cfg.c:4512 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "found default case not at the start of case vector" -msgstr "se encontró un case por defecto que no está al final del vector case" +msgstr "se encontró un case por defecto que no está al inicio del vector case" #: tree-cfg.c:4520 #, gcc-internal-format @@ -24062,9 +23998,9 @@ msgid "%H%<noreturn%> function does return" msgstr "%Hla función %<noreturn%> devuelve" #: tree-cfg.c:7056 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "control reaches end of non-void function" -msgstr "%Hel control alcanza el final de una función que no es void" +msgstr "el control alcanza el final de una función que no es void" #: tree-cfg.c:7118 #, gcc-internal-format @@ -24243,15 +24179,19 @@ msgstr " No se ejecutaron los stmts pendientes en el borde EXIT (%d, %d)\n" msgid "unimplemented functionality" msgstr "funcionalidad sin implementar" +# No existe una traducción para type-punning. Gracias a Jose María Pérez +# por el comentario. cfuga #: tree-ssa-alias-warnings.c:843 #, gcc-internal-format msgid "%Hlikely type-punning may break strict-aliasing rules: object %<%s%s%> of main type %qT is referenced at or around %s:%d and may be aliased to object %<%s%s%> of main type %qT which is referenced at or around %s:%d." -msgstr "%Hes probable que el castigo a tipo rompa las reglas de alias estricto: el objeto %<%s%s%> del tipo principal %qT se referencía en o cerca de %s:%d y tal vez tenga como alias el objeto %<%s%s%> del tipo principal %qT el cual se referencía en o cerca de %s:%d." +msgstr "%Hes probable que el %<type-punning%> rompa las reglas de alias estricto: el objeto %<%s%s%> del tipo principal %qT se referencía en o cerca de %s:%d y tal vez tenga como alias el objeto %<%s%s%> del tipo principal %qT el cual se referencía en o cerca de %s:%d." +# No existe una traducción para type-punning. Gracias a Jose María Pérez +# por el comentario. cfuga #: tree-ssa-alias-warnings.c:969 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "dereferencing type-punned pointer %D will break strict-aliasing rules" -msgstr "la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" +msgstr "la dereferencia del puntero %D \"type-punned\" romperá las reglas de alias estricto" #: tree-ssa.c:252 #, gcc-internal-format @@ -24429,14 +24369,14 @@ msgid "%J%qD was declared here" msgstr "%J%qD se declaró aquí" #: tree-ssa.c:1517 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is used uninitialized in this function" -msgstr "%Hse utiliza %qD sin inicializar en esta función" +msgstr "se utiliza %qD sin inicializar en esta función" #: tree-ssa.c:1520 tree-ssa.c:1559 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD may be used uninitialized in this function" -msgstr "%Hpuede ser que se utilice %qD sin inicializar en esta función" +msgstr "puede ser que se utilice %qD sin inicializar en esta función" #: tree-vrp.c:4919 #, gcc-internal-format @@ -24464,12 +24404,12 @@ msgid "assuming signed overflow does not occur when simplifying conditional" msgstr "se asume que el desbordamiento con signo no ocurre al simplificar el condicional" #: tree-vrp.c:5620 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "comparison always false due to limited range of data type" msgstr "la comparación siempre es falsa debido al rango limitado del tipo de datos" #: tree-vrp.c:5623 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "comparison always true due to limited range of data type" msgstr "la comparación siempre es verdadera debido al rango limitado del tipo de datos" @@ -24589,9 +24529,9 @@ msgid "Dead histogram" msgstr "Histograma muerto" #: value-prof.c:407 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "Histogram value statement does not correspond to the statement it is associated with" -msgstr "La sentencia de valor del histograma no corresponde a la sentencia con la que está asociado" +msgstr "La sentencia de valor del histograma no corresponde a la sentencia con la que está asociada" #: value-prof.c:420 #, gcc-internal-format @@ -24599,9 +24539,9 @@ msgid "verify_histograms failed" msgstr "falló verify_histograms" #: value-prof.c:467 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "Correcting inconsistent value profile: %s profiler overall count (%d) does not match BB count (%d)" -msgstr "%HValor de perfil corrupto: %s la cuenta general del perfilador (%d) no coincide con la cuenta BB (%d)" +msgstr "Se corrige el valor de perfil inconsistente: %s la cuenta general del perfilador (%d) no coincide con la cuenta BB (%d)" #: value-prof.c:477 #, gcc-internal-format @@ -25294,22 +25234,22 @@ msgstr "no se pueden especificar -msep-data y -mid-shared-library al mismo tiemp #: config/bfin/bfin.c:2631 #, gcc-internal-format msgid "-mmulticore can only be used with BF561" -msgstr "" +msgstr "-mmulticore sólo se puede usar con BF561" #: config/bfin/bfin.c:2634 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-mcorea should be used with -mmulticore" -msgstr "-frepo se debe usar con -c" +msgstr "-mcorea se debe usar con -mmulticore" #: config/bfin/bfin.c:2637 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-mcoreb should be used with -mmulticore" -msgstr "-frepo se debe usar con -c" +msgstr "-mcoreb se debe usar con -mmulticore" #: config/bfin/bfin.c:2640 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-mcorea and -mcoreb can't be used together" -msgstr "no se pueden usar juntos -mips16 y -mdsp" +msgstr "no se pueden usar juntos -mcorea y -mcoreab" #: config/bfin/bfin.c:5178 #, gcc-internal-format @@ -25566,29 +25506,29 @@ msgid "can't set position in PCH file: %m" msgstr "no se puede establecer la posición en el fichero PCH: %m" #: config/i386/i386.c:2656 config/i386/i386.c:2882 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "bad value (%s) for %stune=%s %s" -msgstr "valor erróneo (%s) para el interruptor -tune=" +msgstr "valor erróneo (%s) para %stune=%s %s" #: config/i386/i386.c:2698 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "bad value (%s) for %sstringop-strategy=%s %s" -msgstr "valor erróneo (%s) para la opción -mstringop-strategy=" +msgstr "valor erróneo (%s) para %sstringop-strategy=%s %s" #: config/i386/i386.c:2702 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%stune=x86-64%s is deprecated. Use %stune=k8%s or %stune=generic%s instead as appropriate." -msgstr "-mtune=x86-64 es obsoleto. Use en su lugar -mtune=k8 o -mtune=generic como sea adecuado." +msgstr "%stune=x86-64%s es obsoleto. Use en su lugar %stune=k8%s o %stune=generic%s como sea adecuado." #: config/i386/i386.c:2712 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "generic CPU can be used only for %stune=%s %s" -msgstr "el CPU generic sólo se puede usar para el interruptor -mtune=" +msgstr "el CPU generic sólo se puede usar para %stune=%s %s" #: config/i386/i386.c:2715 config/i386/i386.c:2843 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "bad value (%s) for %sarch=%s %s" -msgstr "valor erróneo (%s) para el interruptor -march=" +msgstr "valor erróneo (%s) para %sarch=%s %s" #: config/i386/i386.c:2727 #, gcc-internal-format @@ -25596,14 +25536,14 @@ msgid "code model %s does not support PIC mode" msgstr "el modelo de código %s no admite el modo PIC" #: config/i386/i386.c:2733 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "bad value (%s) for %scmodel=%s %s" -msgstr "valor erróneo (%s) para el interruptor -mcmodel=" +msgstr "valor erróneo (%s) para el interruptor %scmodel=%s %s" #: config/i386/i386.c:2757 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "bad value (%s) for %sasm=%s %s" -msgstr "valor erróneo (%s) para %s" +msgstr "valor erróneo (%s) para %sasm=%s %s" #: config/i386/i386.c:2761 #, gcc-internal-format @@ -25621,49 +25561,49 @@ msgid "CPU you selected does not support x86-64 instruction set" msgstr "el CPU que seleccionó no admite el conjunto de instrucciones x86-64" #: config/i386/i386.c:2901 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%sregparm%s is ignored in 64-bit mode" -msgstr "se descarta -mregparm en modo de 64-bit" +msgstr "se descarta %sregparm%s en modo de 64-bit" #: config/i386/i386.c:2904 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%sregparm=%d%s is not between 0 and %d" -msgstr "-mregparm=%d no está entre 0 y %d" +msgstr "%sregparm=%d%s no está entre 0 y %d" #: config/i386/i386.c:2917 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%salign-loops%s is obsolete, use %salign-loops%s" -msgstr "-malign-loops es obsoleto, use -falign-loops" +msgstr "%salign-loops%s es obsoleto, use %salign-loops%s" #: config/i386/i386.c:2923 config/i386/i386.c:2938 config/i386/i386.c:2953 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%salign-loops=%d%s is not between 0 and %d" -msgstr "-malign-loops=%d no está entre 0 y %d" +msgstr "%salign-loops=%d%s no está entre 0 y %d" #: config/i386/i386.c:2932 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%salign-jumps%s is obsolete, use %salign-jumps%s" -msgstr "-malign-jumps es obsoleto, use -falign-jumps" +msgstr "%salign-jumps%s es obsoleto, use %salign-jumps%s" #: config/i386/i386.c:2947 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%salign-functions%s is obsolete, use %salign-functions%s" -msgstr "-malign-functions es obsoleto, use -falign-functions" +msgstr "%salign-functions%s es obsoleto, use %salign-functions%s" #: config/i386/i386.c:2982 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%sbranch-cost=%d%s is not between 0 and 5" -msgstr "-mbranch-cost=%d no está entre 0 y 5" +msgstr "%sbranch-cost=%d%s no está entre 0 y 5" #: config/i386/i386.c:2990 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%slarge-data-threshold=%d%s is negative" -msgstr "-mlarge-data-threshold=%d es negativo" +msgstr "%slarge-data-threshold=%d%s es negativo" #: config/i386/i386.c:3004 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "bad value (%s) for %stls-dialect=%s %s" -msgstr "valor erróneo (%s) para la opción -mtls-dialect=" +msgstr "valor erróneo (%s) para %stls-dialect=%s %s" #: config/i386/i386.c:3012 #, gcc-internal-format @@ -25671,24 +25611,24 @@ msgid "pc%d is not valid precision setting (32, 64 or 80)" msgstr "pc%d no es una opción de precisión válida (32, 64 u 80)" #: config/i386/i386.c:3028 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%srtd%s is ignored in 64bit mode" -msgstr "se descarta -mrtd en el modo de 64bit" +msgstr "se descarta %srtd%s en el modo de 64bit" #: config/i386/i386.c:3083 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%spreferred-stack-boundary=%d%s is not between %d and 12" -msgstr "-mpreferred-stack-boundary=%d no está entre %d y 12" +msgstr "%spreferred-stack-boundary=%d%s no está entre %d y 12" #: config/i386/i386.c:3104 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-mincoming-stack-boundary=%d is not between %d and 12" -msgstr "-mpreferred-stack-boundary=%d no está entre %d y 12" +msgstr "-mincoming-stack-boundary=%d no está entre %d y 12" #: config/i386/i386.c:3117 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%ssseregparm%s used without SSE enabled" -msgstr "se usó -msseregparm sin SSE activado" +msgstr "se usó %ssseregparm%s sin SSE activado" #: config/i386/i386.c:3128 config/i386/i386.c:3142 #, gcc-internal-format @@ -25701,34 +25641,34 @@ msgid "387 instruction set disabled, using SSE arithmetics" msgstr "el conjunto de instrucciones 387 está desactivado, usando la aritmética SSE" #: config/i386/i386.c:3154 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "bad value (%s) for %sfpmath=%s %s" -msgstr "valor erróneo (%s) para el interruptor -mfpmath=" +msgstr "valor erróneo (%s) para %sfpmath=%s %s" #: config/i386/i386.c:3170 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unknown vectorization library ABI type (%s) for %sveclibabi=%s %s" -msgstr "tipo de ABI de biblioteca de vectorización desconocida (%s) para la opción -mveclibabi=" +msgstr "tipo de ABI de biblioteca de vectorización desconocida (%s) para %sveclibabi=%s %s" #: config/i386/i386.c:3190 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness" -msgstr "actualmente las tablas de desenredo requieren un puntero de marco o -maccumulate-outgoing-args para ser correctas" +msgstr "actualmente las tablas de desenredo requieren un puntero de marco o %saccumulate-outgoing-args%s para ser correctas" #: config/i386/i386.c:3203 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "stack probing requires %saccumulate-outgoing-args%s for correctness" -msgstr "actualmente las tablas de desenredo requieren un puntero de marco o -maccumulate-outgoing-args para ser correctas" +msgstr "actualmente la prueba de pila requiere un puntero de marco o %saccumulate-outgoing-args%s para ser correctas" #: config/i386/i386.c:3540 #, gcc-internal-format msgid "attribute(target(\"%s\")) is unknown" -msgstr "" +msgstr "se desconoce attribute(target(\"%s\"))" #: config/i386/i386.c:3562 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "option(\"%s\") was already specified" -msgstr "La especificación ACCESS en %L ya se había especificado" +msgstr "ya se había especificado option(\"%s\")" #: config/i386/i386.c:4147 config/i386/i386.c:4191 #, gcc-internal-format @@ -25766,9 +25706,9 @@ msgid "stdcall and fastcall attributes are not compatible" msgstr "los atributos stdcall y fastcall no son compatibles" #: config/i386/i386.c:4294 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "nested functions are limited to 2 register parameters" -msgstr "las funciones %s están limitadas a %d parámetros de registro" +msgstr "las funciones anidadas están limitadas a 2 parámetros de registro" #: config/i386/i386.c:4378 #, gcc-internal-format @@ -25801,9 +25741,9 @@ msgid "SSE vector argument without SSE enabled changes the ABI" msgstr "el argumento de vector SSE sin SSE activado cambia la ABI" #: config/i386/i386.c:5581 config/i386/i386.c:5649 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "AVX vector argument without AVX enabled changes the ABI" -msgstr "el argumento de vector MMX sin MMX activado cambia la ABI" +msgstr "el argumento de vector AVX sin AVX activado cambia la ABI" #: config/i386/i386.c:5600 #, gcc-internal-format @@ -25846,34 +25786,34 @@ msgid "the third argument must be a 8-bit immediate" msgstr "el tercer argumento debe ser un inmediato de 8-bit" #: config/i386/i386.c:23735 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the last argument must be a 4-bit immediate" -msgstr "el tercer argumento debe ser un inmediato de 4-bit" +msgstr "el último argumento debe ser un inmediato de 4-bit" #: config/i386/i386.c:23744 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the last argument must be a 2-bit immediate" -msgstr "el tercer argumento debe ser un inmediato de 4-bit" +msgstr "el tercer argumento debe ser un inmediato de 2-bit" #: config/i386/i386.c:23753 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the last argument must be a 1-bit immediate" -msgstr "el tercer argumento debe ser un inmediato de 4-bit" +msgstr "el último argumento debe ser un inmediato de 1-bit" #: config/i386/i386.c:23762 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the last argument must be a 5-bit immediate" -msgstr "el tercer argumento debe ser un inmediato de 4-bit" +msgstr "el tercer argumento debe ser un inmediato de 5-bit" #: config/i386/i386.c:23771 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the next to last argument must be an 8-bit immediate" -msgstr "el tercer argumento debe ser un inmediato de 8-bit" +msgstr "el penúltimo argumento debe ser un inmediato de 8-bit" #: config/i386/i386.c:23775 config/i386/i386.c:23952 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the last argument must be an 8-bit immediate" -msgstr "el tercer argumento debe ser un inmediato de 8-bit" +msgstr "el último argumento debe ser un inmediato de 8-bit" #: config/i386/i386.c:24010 config/rs6000/rs6000.c:8519 #, gcc-internal-format @@ -25883,22 +25823,22 @@ msgstr "el selector debe ser una constante entera en el rango 0..%wi" #: config/i386/i386.c:24153 #, gcc-internal-format msgid "%qE needs unknown isa option" -msgstr "" +msgstr "%qE necesita la opción isa desconocida" #: config/i386/i386.c:24157 #, gcc-internal-format msgid "%qE needs isa option %s" -msgstr "" +msgstr "%qE necesita la opción isa %s" #: config/i386/i386.c:25800 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs attribute only available for 64-bit" -msgstr "el atributo %qs solamente se aplica a variables" +msgstr "el atributo %qs solamente está disponible para 64-bit" #: config/i386/i386.c:25811 config/i386/i386.c:25820 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ms_abi and sysv_abi attributes are not compatible" -msgstr "los atributos fastcall y stdcall no son compatibles" +msgstr "los atributos ms_abi y sysv_abi no son compatibles" #: config/i386/i386.c:25858 config/rs6000/rs6000.c:20747 #, gcc-internal-format @@ -26153,19 +26093,19 @@ msgid "built-in function %qs not supported for MIPS16" msgstr "no se admite la función interna %qs para MIPS16" #: config/mips/mips.c:12517 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs does not support MIPS16 code" -msgstr "%s no admite %s" +msgstr "%qs no admite código MIPS16" #: config/mips/mips.c:13491 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "MIPS16 PIC for ABIs other than o32 and o64" -msgstr "código MIPS16 de coma flotante hard para ABIs diferentes de o32 y o64" +msgstr "PIC MIPS16 para ABIs diferentes de o32 y o64" #: config/mips/mips.c:13494 #, gcc-internal-format msgid "MIPS16 -mxgot code" -msgstr "" +msgstr "código MIPS16 -mxgot" #: config/mips/mips.c:13497 #, gcc-internal-format @@ -26250,12 +26190,12 @@ msgstr "la arquitectura %qs no admite las instrucciones par-sencillo" #: config/mips/mips.c:13970 #, gcc-internal-format msgid "%qs requires a target that provides the %qs instruction" -msgstr "" +msgstr "%qs requiere un objetivo que provea la instrucción %qs" #: config/mips/mips.c:14049 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs requires branch-likely instructions" -msgstr "la arquitectura %qs no admite las instrucciones con probabilidad de ramificación" +msgstr "%qs requiere instrucciones con probabilidad de ramificación" #. Output assembler code to FILE to increment profiler label # LABELNO #. for profiling a function entry. @@ -26346,95 +26286,95 @@ msgid "-munix=98 option required for C89 Amendment 1 features.\n" msgstr "se requiere la opción -munix=98 para las características C89 Enmienda 1.\n" #: config/picochip/picochip.c:369 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid AE type specified (%s)\n" -msgstr "argumento de tipo inválido de %qs" +msgstr "se especificó un tipo AE inválido (%s)\n" #: config/picochip/picochip.c:392 #, gcc-internal-format msgid "Invalid mul type specified (%s) - expected mac, mul or none" -msgstr "" +msgstr "Se especificó un tipo mul inválido (%s) - se esperaba mac, mul o none" #: config/picochip/picochip.c:624 #, gcc-internal-format msgid "unexpected mode %s encountered in picochip_emit_save_register\n" -msgstr "" +msgstr "se encontró el modo inesperado %s en picochip_emit_save_register\n" #: config/picochip/picochip.c:791 #, gcc-internal-format msgid "Defaulting to stack for %s register creation\n" -msgstr "" +msgstr "Cambiando a pila por defecto para la creación del registro %s\n" #: config/picochip/picochip.c:1330 #, gcc-internal-format msgid "LCFI labels have already been deferred." -msgstr "" +msgstr "Las etiquetas LCFI ya se habían deferenciado." #: config/picochip/picochip.c:1393 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "LM label has already been deferred." -msgstr "`%D' ya ha sido declarado en `%T'" +msgstr "La etiqueta LM ya se había deferenciado." #: config/picochip/picochip.c:1673 #, gcc-internal-format msgid "picochip_asm_output_opcode - Found multiple lines in VLIW packet %s\n" -msgstr "" +msgstr "picochip_asm_output_opcode - Se encontraron múltiples líneas en el paquete VLIW %s\n" #: config/picochip/picochip.c:1776 #, gcc-internal-format msgid "picochip_asm_output_opcode - can't output unknown operator %c\n" -msgstr "" +msgstr "picochip_asm_output_opcode - no se puede mostrar el operador desconocido %c\n" #: config/picochip/picochip.c:2028 config/picochip/picochip.c:2087 #, gcc-internal-format msgid "%s: At least one operand can't be handled" -msgstr "" +msgstr "%s: Por lo menos no se puede manejar un operando" #: config/picochip/picochip.c:2168 #, gcc-internal-format msgid "Unknown short branch in %s (type %d)\n" -msgstr "" +msgstr "Ramificación short desconocida en %s (tipo %d)\n" #: config/picochip/picochip.c:2205 #, gcc-internal-format msgid "Unknown long branch in %s (type %d)\n" -msgstr "" +msgstr "Ramificación long desconocida en %s (tipo %d)\n" #: config/picochip/picochip.c:2245 config/picochip/picochip.c:2313 #, gcc-internal-format msgid "PUT uses port array index %d, which is out of range [%d..%d)" -msgstr "" +msgstr "PUT usa el índice de matriz de puerto %d, el cual está fuera de rango [%d..%d]" #: config/picochip/picochip.c:2279 #, gcc-internal-format msgid "GET uses port array index %d, which is out of range [%d..%d)" -msgstr "" +msgstr "GET usa el índice de matriz de puerto %d, el cual está fuera de rango [%d..%d]" #: config/picochip/picochip.c:3122 #, gcc-internal-format msgid "Too many ALU instructions emitted (%d)\n" -msgstr "" +msgstr "Se emitieron demasiadas instrucciones ALU (%d)\n" #: config/picochip/picochip.c:3753 config/picochip/picochip.c:3846 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%s: Second source operand is not a constant" -msgstr "el operando 'o' no es una constante" +msgstr "%s: El segundo operando fuente no es una constante" #: config/picochip/picochip.c:3756 config/picochip/picochip.c:3807 #: config/picochip/picochip.c:3849 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%s: Third source operand is not a constant" -msgstr "el operando 'o' no es una constante" +msgstr "%s: El tercer operando fuente no es una constante" #: config/picochip/picochip.c:3810 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%s: Fourth source operand is not a constant" -msgstr "el operando 'o' no es una constante" +msgstr "%s: El cuarto operando fuente no es una constante" #: config/picochip/picochip.c:4144 #, gcc-internal-format msgid "%s (disable warning using -mno-inefficient-warnings)" -msgstr "" +msgstr "%s (desactive los avisos utilizando -mno-inefficient-warnings)" #: config/rs6000/host-darwin.c:62 #, gcc-internal-format @@ -26496,29 +26436,29 @@ msgid "junk at end of #pragma longcall" msgstr "basura al final de #pragma longcall" #: config/rs6000/rs6000-c.c:2989 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%s only accepts %d arguments" -msgstr "no coinciden los argumentos" +msgstr "%s sólo acepta %d argumentos" #: config/rs6000/rs6000-c.c:2994 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%s only accepts 1 argument" -msgstr "-split no tiene argumentos." +msgstr "%s sólo acepta 1 argumento" #: config/rs6000/rs6000-c.c:2999 config/rs6000/rs6000-c.c:3006 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%s only accepts 2 arguments" -msgstr "%q+D sólo toma cero o dos argumentos" +msgstr "%s sólo acepta 2 argumentos" #: config/rs6000/rs6000-c.c:3067 #, gcc-internal-format msgid "vec_extract only accepts 2 arguments" -msgstr "" +msgstr "vec_extract sólo acepta 2 argumentos" #: config/rs6000/rs6000-c.c:3124 #, gcc-internal-format msgid "vec_insert only accepts 3 arguments" -msgstr "" +msgstr "vec_insert sólo acepta 3 argumentos" #: config/rs6000/rs6000-c.c:3206 #, gcc-internal-format @@ -26541,24 +26481,24 @@ msgid "-m64 requires PowerPC64 architecture, enabling" msgstr "-m64 requiere la arquitectura PowerPC64, activando" #: config/rs6000/rs6000.c:1605 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "AltiVec not supported in this target" -msgstr "no se admiten límites de la pila en este objetivo" +msgstr "no se admite AltiVec en este objetivo" #: config/rs6000/rs6000.c:1607 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "Spe not supported in this target" -msgstr "no se admiten límites de la pila en este objetivo" +msgstr "no se admite Spe en este objetivo" #: config/rs6000/rs6000.c:1634 #, gcc-internal-format msgid "-mmultiple is not supported on little endian systems" -msgstr "-mmultiple no se admite en sistemas little endian" +msgstr "no se admite -mmultiple en sistemas little endian" #: config/rs6000/rs6000.c:1641 #, gcc-internal-format msgid "-mstring is not supported on little endian systems" -msgstr "-mstring no se admite en sistemas little endian" +msgstr "no se admite -mstring en sistemas little endian" #: config/rs6000/rs6000.c:1655 #, gcc-internal-format @@ -26576,9 +26516,9 @@ msgid "unknown -m%s= option specified: '%s'" msgstr "se desconoce la opción -m%s= especificada: '%s'" #: config/rs6000/rs6000.c:2215 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unknown value %s for -mfpu" -msgstr "valor %qs erróneo para el interruptor -mcpu" +msgstr "valor %s desconocido para -mfpu" #: config/rs6000/rs6000.c:2408 #, gcc-internal-format @@ -26633,12 +26573,12 @@ msgstr "opción -malign-XXXXX especificada desconocida: '%s'" #: config/rs6000/rs6000.c:2517 #, gcc-internal-format msgid "-msingle-float option equivalent to -mhard-float" -msgstr "" +msgstr "la opción -msingle-float es equivalente a -mhard-float" #: config/rs6000/rs6000.c:2533 #, gcc-internal-format msgid "-msimple-fpu option ignored" -msgstr "" +msgstr "se descarta la opción -msimple-fpu" #: config/rs6000/rs6000.c:5355 #, gcc-internal-format @@ -26774,12 +26714,12 @@ msgstr "el uso de tipos de coma flotante decimal en tipos AltiVec es inválido" #: config/rs6000/rs6000.c:22851 #, gcc-internal-format msgid "emitting microcode insn %s\t[%s] #%d" -msgstr "" +msgstr "se emite el insn de microcódigo %s\t[%s] #%d" #: config/rs6000/rs6000.c:22855 #, gcc-internal-format msgid "emitting conditional microcode insn %s\t[%s] #%d" -msgstr "" +msgstr "se emite el insn de microcódigo condicional %s\t[%s] #%d" #: config/rs6000/aix43.h:38 config/rs6000/aix51.h:37 config/rs6000/aix52.h:38 #: config/rs6000/aix53.h:38 config/rs6000/aix61.h:38 @@ -27001,9 +26941,9 @@ msgid "%qs attribute only applies to interrupt functions" msgstr "el atributo %qs se aplica solamente a funciones de interrupción" #: config/sh/sh.c:8121 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs attribute is supported only for SH2A" -msgstr "el atributo %qE no se admite en esta plataforma" +msgstr "el atributo %qs solo se admite para SH2A" #: config/sh/sh.c:8151 #, gcc-internal-format @@ -27011,14 +26951,14 @@ msgid "attribute interrupt_handler is not compatible with -m5-compact" msgstr "el atributo interrupt_handler no es compatible con -m5-compact" #: config/sh/sh.c:8168 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs attribute only applies to SH2A" -msgstr "el atributo %qs se aplica solamente a funciones" +msgstr "el atributo %qs solo se aplica a SH2A" #: config/sh/sh.c:8190 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "`%s' attribute argument should be between 0 to 255" -msgstr "el argumento del atributo `%s' debe estar entre 18 a 255" +msgstr "el argumento del atributo `%s' debe estar entre 0 y 255" #. The argument must be a constant string. #: config/sh/sh.c:8263 @@ -27478,9 +27418,9 @@ msgid "comparison between %q#T and %q#T" msgstr "comparación entre %q#T y %q#T" #: cp/call.c:4406 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "no corresponding deallocation function for %qD" -msgstr "no existe una función de desalojo correspondiente para `%D'" +msgstr "no existe una función de desalojo correspondiente para %qD" #: cp/call.c:4411 #, gcc-internal-format @@ -27515,7 +27455,7 @@ msgstr "se pasó NULL al argumento %P de %qD que no es puntero" #: cp/call.c:4483 #, gcc-internal-format msgid "converting to non-pointer type %qT from NULL" -msgstr "convirtiendo al tipo %qT que no es puntero desde NULL" +msgstr "se convierte al tipo %qT que no es puntero desde NULL" #: cp/call.c:4489 #, gcc-internal-format @@ -27535,7 +27475,7 @@ msgstr " argumento de inicialización %P de %qD" #: cp/call.c:4566 #, gcc-internal-format msgid "converting to %qT from initializer list would use explicit constructor %qD" -msgstr "" +msgstr "la conversión a %qT desde la lista del inicializador usaría el constructor explícito %qD" #: cp/call.c:4723 #, gcc-internal-format @@ -28033,7 +27973,7 @@ msgstr "declaración sin efecto" #: cp/cp-gimplify.c:1150 #, gcc-internal-format msgid "%qE implicitly determined as %<firstprivate%> has reference type" -msgstr "" +msgstr "%qE se determina implícitamente ya que %<firstprivate%> tiene tipo de referencia" #: cp/cvt.c:90 #, gcc-internal-format @@ -28073,7 +28013,7 @@ msgstr "conversión de %q#T a %q#T" #: cp/cvt.c:667 #, gcc-internal-format msgid "the result of the conversion is unspecified because %qE is outside the range of type %qT" -msgstr "" +msgstr "el resultado de la conversión no está especificado porque %qE está fuera del rango del tipo %qT" #: cp/cvt.c:678 cp/cvt.c:698 #, gcc-internal-format @@ -28133,7 +28073,7 @@ msgstr "no se usa el valor calculado" #: cp/cvt.c:1095 #, gcc-internal-format msgid "converting NULL to non-pointer type" -msgstr "convirtiendo NULL a un tipo que no es puntero" +msgstr "se convierte NULL a un tipo que no es puntero" #: cp/cvt.c:1201 #, gcc-internal-format @@ -28275,7 +28215,7 @@ msgstr "declaración previa del espacio de nombres %q+D aquí" #: cp/decl.c:1465 #, gcc-internal-format msgid "%q+#D previously defined here" -msgstr "se definió %q+#D previamente aquí" +msgstr "se define %q+#D previamente aquí" #. Prototype decl follows defn w/o prototype. #: cp/decl.c:1475 @@ -28314,14 +28254,14 @@ msgid "redundant redeclaration of %qD in same scope" msgstr "declaración redundante de %qD en el mismo ámbito" #: cp/decl.c:1610 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "deleted definition of %qD" -msgstr "redefinición de %q+D" +msgstr "se borró la definición de %qD" #: cp/decl.c:1611 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "after previous declaration %q+D" -msgstr "declaración previa de %q+D" +msgstr "después de la declaración previa de %q+D" #. From [temp.expl.spec]: #. @@ -28559,9 +28499,9 @@ msgid "ignoring attributes applied to dependent type %qT without an associated d msgstr "se descartan los atributos aplicados al tipo dependiente %qT sin una declaración asociada" #: cp/decl.c:4032 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "typedef %qD is initialized (use decltype instead)" -msgstr "typedef %qD está inicializado (utilice __typeof__ en su lugar)" +msgstr "typedef %qD está inicializado (utilice decltype en su lugar)" #: cp/decl.c:4050 #, gcc-internal-format @@ -28609,9 +28549,9 @@ msgid "elements of array %q#D have incomplete type" msgstr "elementos de la matriz %q#D con tipo de dato incompleto" #: cp/decl.c:4264 cp/decl.c:5495 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %q#D has no initializer" -msgstr "la declaración de %q#D tiene %<extern%> y está inicializada" +msgstr "la declaración de %q#D no tiene inicializadores" #: cp/decl.c:4266 #, gcc-internal-format @@ -28712,9 +28652,9 @@ msgid "too many initializers for %qT" msgstr "demasiados inicializadores para %qT" #: cp/decl.c:5001 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "elements of array %q#T have incomplete type" -msgstr "elementos de la matriz %q#D con tipo de dato incompleto" +msgstr "elementos de la matriz %q#T tienen tipo de dato incompleto" #: cp/decl.c:5010 #, gcc-internal-format @@ -28722,9 +28662,9 @@ msgid "variable-sized object %qD may not be initialized" msgstr "el objeto de tamaño variable %qD no se puede inicializar" #: cp/decl.c:5012 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variable-sized compound literal" -msgstr "%HISO C90 prohíbe las literales compuestas" +msgstr "literal compuesta de tamaño variable" #: cp/decl.c:5066 #, gcc-internal-format @@ -28737,9 +28677,9 @@ msgid "scalar object %qD requires one element in initializer" msgstr "el objeto escalar %qD requiere un elemento en el inicializador" #: cp/decl.c:5117 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>" -msgstr "%qD debe ser inicializado por un constructor, no por %<{...}%>" +msgstr "en C++98 %qD debe ser inicializado por un constructor, no por %<{...}%>" #: cp/decl.c:5149 #, gcc-internal-format @@ -28792,9 +28732,9 @@ msgid "non-static data member %qD has Java class type" msgstr "el dato miembro que no es estático %qD tiene un tipo de clase Java" #: cp/decl.c:5778 cp/decl2.c:835 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD cannot be defaulted" -msgstr "%q+#D no se puede declarar" +msgstr "%qD no se puede definir por omisión" #: cp/decl.c:5789 #, gcc-internal-format @@ -28834,7 +28774,7 @@ msgstr "%q+D se declaró como friend" #: cp/decl.c:6414 #, gcc-internal-format msgid "%q+D declared with an exception specification" -msgstr "%q+D se declaró con una excepción de especificación" +msgstr "%q+D se declaró con una especificación de excepción" #: cp/decl.c:6448 #, gcc-internal-format @@ -29146,7 +29086,7 @@ msgstr "%<long%> o %<short%> inválidos para %qs" #: cp/decl.c:7887 #, gcc-internal-format msgid "%<long%> or %<short%> specified with char for %qs" -msgstr "%<long%> o %<short%> especificados con char para %qs" +msgstr "se especificó %<long%> o %<short%> con char para %qs" #: cp/decl.c:7889 #, gcc-internal-format @@ -29154,9 +29094,9 @@ msgid "%<long%> and %<short%> specified together for %qs" msgstr "%<long%> y %<short%> se especificaron juntos para %qs" #: cp/decl.c:7895 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<short%> or %<long%> invalid for %qs" -msgstr "%<long%> o %<short%> inválidos para %qs" +msgstr "%<short%> o %<long%> inválidos para %qs" #: cp/decl.c:7903 #, gcc-internal-format @@ -29199,14 +29139,14 @@ msgid "storage class specifiers invalid in parameter declarations" msgstr "especificadores de clase de almacenamiento inválidos en las declaraciones de parámetros" #: cp/decl.c:8059 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "parameter declared %<auto%>" -msgstr "el parámetro %q+D se declaró %<inline%>" +msgstr "el parámetro se declaró %<auto%>" #: cp/decl.c:8068 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<virtual%> outside class declaration" -msgstr "declaración de virtual fuera de clase" +msgstr "declaración de clase fuera de %<virtual%>" #: cp/decl.c:8086 #, gcc-internal-format @@ -29229,24 +29169,24 @@ msgid "storage class specifiers invalid in friend function declarations" msgstr "especificadores de clase de almacenamiento inválidos en las declaraciones de funciones friend" #: cp/decl.c:8257 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid use of %<auto%> in conversion operator" -msgstr "uso inválido de %<this%> en la función que no es miembro" +msgstr "uso inválido de %<auto%> en el operador de conversión" #: cp/decl.c:8262 #, gcc-internal-format msgid "%qs function uses %<auto%> type specifier without late return type" -msgstr "" +msgstr "la función %qs usa el especificador de tipo %<auto%> sin un tipo de devolución late" #: cp/decl.c:8268 #, gcc-internal-format msgid "%qs function with late return type has %qT as its type rather than plain %<auto%>" -msgstr "" +msgstr "la función %qs con tipo de devolución late tiene %T como su tipo en lugar de un simple %<auto%>" #: cp/decl.c:8276 #, gcc-internal-format msgid "%qs function with late return type not declared with %<auto%> type specifier" -msgstr "" +msgstr "no se declaró la función %qs con tipo de devolución late con el especificador de tipo %<auto%>" #: cp/decl.c:8309 #, gcc-internal-format @@ -29848,9 +29788,9 @@ msgid "%Jprevious definition here" msgstr "%Jdefinición previa aquí" #: cp/decl.c:10927 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "underlying type %<%T%> of %<%T%> must be an integral type" -msgstr "el argumento %d para ABSTIME debe ser de tipo entero" +msgstr "el tipo subyacente %<%T%> de %<%T%> debe ser un tipo integral" #. DR 377 #. @@ -29872,9 +29812,9 @@ msgid "overflow in enumeration values at %qD" msgstr "desbordamiento en valores de enumeración en %qD" #: cp/decl.c:11242 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "enumerator value %E is too large for underlying type %<%T%>" -msgstr "el valor de enumerador para %qE no es una constante entera" +msgstr "el valor de enumerador %E es demasiado grande para el tipo subyacente %<%T%>" #: cp/decl.c:11339 #, gcc-internal-format @@ -30039,7 +29979,7 @@ msgstr "struct anónimo no está dentro de un tipo nombrado" #: cp/decl2.c:1335 #, gcc-internal-format msgid "namespace-scope anonymous aggregates must be static" -msgstr "los agregados anónimos de alcance de nombre de espacio deben ser static" +msgstr "los agregados anónimos de alcance de espacio de nombres deben ser static" #: cp/decl2.c:1344 #, gcc-internal-format @@ -30098,7 +30038,7 @@ msgstr "%qT se declaró con mayor visibilidad que su base %qT" #: cp/decl2.c:3582 #, gcc-internal-format msgid "inline function %q+D used but never defined" -msgstr "se usó la función inline %q+D pero nunca se definió" +msgstr "se usó la función inline %q+D pero nunca se define" #: cp/decl2.c:3731 #, gcc-internal-format @@ -30106,14 +30046,14 @@ msgid "default argument missing for parameter %P of %q+#D" msgstr "falta el argumento por defecto para el parámetro %P de %q+#D" #: cp/decl2.c:3780 cp/search.c:1919 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "deleted function %q+D" -msgstr "se repitió usando la declaración %q+D" +msgstr "se borró la función %q+D" #: cp/decl2.c:3781 #, gcc-internal-format msgid "used here" -msgstr "" +msgstr "se usó aquí" #. We really want to suppress this warning in system headers, #. because libstdc++ uses variadic templates even when we aren't @@ -30121,7 +30061,7 @@ msgstr "" #: cp/error.c:2701 #, gcc-internal-format msgid "%s only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "%s sólo está disponible con -std=c++0x o -std=gnu++0x" #. Can't throw a reference. #: cp/except.c:286 @@ -30382,9 +30322,9 @@ msgid "bad array initializer" msgstr "inicializador de matriz erróneo" #: cp/init.c:1457 cp/semantics.c:2490 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qT is not a class type" -msgstr "%q#T no es una clase" +msgstr "%qT no es un tipo de clase" #: cp/init.c:1511 #, gcc-internal-format @@ -30561,7 +30501,7 @@ msgstr "se decodifica typeof, utilice decltype en su lugar" #: cp/mangle.c:2282 #, gcc-internal-format msgid "mangling function-style cast with more than one argument" -msgstr "" +msgstr "decodificación de una conversión de estilo función con más de un argumento" #: cp/mangle.c:2310 #, gcc-internal-format @@ -30589,9 +30529,9 @@ msgid "non-static reference member %q#D, can't use default assignment operator" msgstr "el miembro de referencia %q#D que no es static, no puede usar el operador de asignación por defecto" #: cp/method.c:816 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "synthesized method %qD first required here " -msgstr "%Hse requirió primero el método sintetizado %qD aquí " +msgstr "se requirió primero el método sintetizado %qD aquí " #: cp/method.c:1159 #, gcc-internal-format @@ -30620,14 +30560,14 @@ msgid "as %qD" msgstr "como %qD" #: cp/name-lookup.c:805 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %q#D with C language linkage" -msgstr "redeclaración de %q+D sin enlazado" +msgstr "redeclaración de %q#D con enlazado de lenguaje C" #: cp/name-lookup.c:809 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "due to different exception specifications" -msgstr "Genera código para revisar excepciones de especificaciones" +msgstr "debido a diferentes especificaciones de excepciones" #: cp/name-lookup.c:899 #, gcc-internal-format @@ -30686,7 +30626,7 @@ msgid " matches this %q+D under old rules" msgstr " coincide con este %q+D bajo las reglas antiguas" #: cp/name-lookup.c:1218 cp/name-lookup.c:1226 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "name lookup of %qD changed for ISO %<for%> scoping" msgstr "la búsqueda de nombre de %qD cambió por el nuevo alcance ISO de %<for%>" @@ -30701,9 +30641,9 @@ msgid " using obsolete binding at %q+D" msgstr " se usa la asignación obsoleta en %q+D" #: cp/name-lookup.c:1235 cp/parser.c:10068 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "(if you use %<-fpermissive%> G++ will accept your code)" -msgstr "(si utiliza -fpermissive, G++ aceptará su código)" +msgstr "(si utiliza %<-fpermissive%>, G++ aceptará su código)" #: cp/name-lookup.c:1291 #, gcc-internal-format @@ -30871,54 +30811,54 @@ msgid "identifier %<%s%> will become a keyword in C++0x" msgstr "el identificador %<%s%> se convertirá en una palabra clave en C++0x" #: cp/parser.c:2081 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<#pragma%> is not allowed here" -msgstr "%<#pragma%> no se permite aquí" +msgstr "%H%<#pragma%> no se permite aquí" #: cp/parser.c:2112 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<%E::%E%> has not been declared" -msgstr "%<%E::%E%> no se ha declarado" +msgstr "%H%<%E::%E%> no se ha declarado" #: cp/parser.c:2115 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<::%E%> has not been declared" -msgstr "%<::%E%> no se ha declarado" +msgstr "%H%<::%E%> no se ha declarado" #: cp/parser.c:2118 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hrequest for member %qE in non-class type %qT" -msgstr "solicitud por el miembro %qE en el tipo %qT que no es clase" +msgstr "%Hsolicitud por el miembro %qE en el tipo %qT que no es clase" #: cp/parser.c:2121 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<%T::%E%> has not been declared" -msgstr "%<%T::%E%> no se ha declarado" +msgstr "%H%<%T::%E%> no se ha declarado" #: cp/parser.c:2124 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qE has not been declared" -msgstr "%qE no se ha declarado" +msgstr "%H%qE no se ha declarado" #: cp/parser.c:2127 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<%E::%E%> %s" -msgstr "%<%E::%E%> %s" +msgstr "%H%<%E::%E%> %s" #: cp/parser.c:2129 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<::%E%> %s" -msgstr "%<::%E%> %s" +msgstr "%H%<::%E%> %s" #: cp/parser.c:2131 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qE %s" -msgstr "%qE %s" +msgstr "%H%qE %s" #: cp/parser.c:2166 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<long long long%> is too long for GCC" -msgstr "%<long long long%> es demasiado largo para GCC" +msgstr "%H%<long long long%> es demasiado largo para GCC" #: cp/parser.c:2170 #, gcc-internal-format @@ -30926,14 +30866,14 @@ msgid "ISO C++ 1998 does not support %<long long%>" msgstr "ISO C++ 1998 no admite %<long long%>" #: cp/parser.c:2190 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hduplicate %qs" -msgstr "%qs duplicado" +msgstr "%H%qs duplicado" #: cp/parser.c:2234 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hnew types may not be defined in a return type" -msgstr "no se pueden definir tipos nuevos en una devolución de tipo" +msgstr "%Hno se pueden definir tipos nuevos en un tipo de devolución" #: cp/parser.c:2236 #, gcc-internal-format @@ -30941,41 +30881,41 @@ msgid "(perhaps a semicolon is missing after the definition of %qT)" msgstr "(tal vez falta un punto y coma después de la definición de %qT)" #: cp/parser.c:2256 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qT is not a template" -msgstr "%qT no es una plantilla" +msgstr "%H%qT no es una plantilla" #: cp/parser.c:2258 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qE is not a template" -msgstr "%qE no es una plantilla" +msgstr "%H%qE no es una plantilla" #: cp/parser.c:2260 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid template-id" -msgstr "id de plantilla inválido" +msgstr "%Hid de plantilla inválido" #: cp/parser.c:2322 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid use of template-name %qE without an argument list" -msgstr "uso inválido del nombre de plantilla %qE sin una lista de argumentos" +msgstr "%Huso inválido del nombre de plantilla %qE sin una lista de argumentos" #: cp/parser.c:2325 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid use of destructor %qD as a type" -msgstr "uso inválido del destructor %qD como un tipo" +msgstr "%Huso inválido del destructor %qD como un tipo" #. Something like 'unsigned A a;' #: cp/parser.c:2328 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid combination of multiple type-specifiers" -msgstr "combinación inválida de especificadores de tipo múltiples" +msgstr "%Hcombinación inválida de especificadores de tipo múltiples" #. Issue an error message. #: cp/parser.c:2333 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qE does not name a type" -msgstr "%qE no nombra a un tipo" +msgstr "%H%qE no nombra a un tipo" #: cp/parser.c:2366 #, gcc-internal-format @@ -30983,19 +30923,19 @@ msgid "(perhaps %<typename %T::%E%> was intended)" msgstr "(tal vez intentó %<typename %T::%E%>)" #: cp/parser.c:2381 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qE in namespace %qE does not name a type" -msgstr "%qE en el espacio de nombres %qE no nombra un tipo" +msgstr "%H%qE en el espacio de nombres %qE no nombra un tipo" #: cp/parser.c:2384 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qE in class %qT does not name a type" -msgstr "%qE en la clase %qT no nombra un tipo" +msgstr "%H%qE en la clase %qT no nombra un tipo" #: cp/parser.c:2946 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hunsupported non-standard concatenation of string literals" -msgstr "no se admite el sufijo no estándar en una constante de coma flotante" +msgstr "%Hno se admite la concatenació no estándar de literales de cadena" #: cp/parser.c:3224 #, gcc-internal-format @@ -31003,44 +30943,44 @@ msgid "ISO C++ forbids braced-groups within expressions" msgstr "ISO C++ prohíbe grupos de llaves dentro de expresiones" #: cp/parser.c:3235 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hstatement-expressions are not allowed outside functions nor in template-argument lists" -msgstr "las expresiones de declaraciones no se permiten fuera de funciones ni en listas de argumentos plantilla" +msgstr "%Hlas expresiones de declaraciones no se permiten fuera de funciones ni en listas de argumentos plantilla" #: cp/parser.c:3294 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<this%> may not be used in this context" -msgstr "no se puede usar %<this%> en este contexto" +msgstr "%Hno se puede usar %<this%> en este contexto" #: cp/parser.c:3480 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hlocal variable %qD may not appear in this context" -msgstr "la variable local %qD no puede aparecer en este contexto" +msgstr "%Hla variable local %qD no puede aparecer en este contexto" #: cp/parser.c:3780 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hscope %qT before %<~%> is not a class-name" -msgstr "el ámbito %qT antes de %<~%> no es un nombre de clase" +msgstr "%Hel ámbito %qT antes de %<~%> no es un nombre de clase" #: cp/parser.c:3882 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hdeclaration of %<~%T%> as member of %qT" -msgstr "declaración de %<~%T%> como miembro de %qT" +msgstr "%Hdeclaración de %<~%T%> como miembro de %qT" #: cp/parser.c:3896 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htypedef-name %qD used as destructor declarator" -msgstr "se usa el nombre de definición de tipo %qD como un declarador de destructor" +msgstr "%Hse usa el nombre de definición de tipo %qD como un declarador de destructor" #: cp/parser.c:4110 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qD used without template parameters" -msgstr "se usa %qD sin parámetros de plantilla" +msgstr "%Hse usa %qD sin parámetros de plantilla" #: cp/parser.c:4114 cp/parser.c:14760 cp/parser.c:17038 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hreference to %qD is ambiguous" -msgstr "la referencia a %qD es ambigua" +msgstr "%Hla referencia a %qD es ambigua" #: cp/parser.c:4160 cp/pt.c:5599 #, gcc-internal-format @@ -31055,19 +30995,19 @@ msgid "ISO C++ forbids compound-literals" msgstr "ISO C++ prohíbe las literales compuestas" #: cp/parser.c:4951 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qE does not have class type" -msgstr "%qE no tiene un tipo de clase" +msgstr "%H%qE no tiene un tipo de clase" #: cp/parser.c:5035 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid use of %qD" -msgstr "uso inválido de %qD" +msgstr "%Huso inválido de %qD" #: cp/parser.c:5612 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Harray bound forbidden after parenthesized type-id" -msgstr "se prohíbe el límite de matriz después del id de tipo entre paréntesis" +msgstr "%Hse prohíbe el límite de matriz después del id de tipo entre paréntesis" #: cp/parser.c:5615 #, gcc-internal-format @@ -31075,9 +31015,9 @@ msgid "try removing the parentheses around the type-id" msgstr "intente borrar los paréntesis alrededor del id de tipo" #: cp/parser.c:5808 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hexpression in new-declarator must have integral or enumeration type" -msgstr "la expresión en el declarador new debe tener un tipo integral o de enumeración" +msgstr "%Hla expresión en el declarador new debe tener un tipo integral o de enumeración" #: cp/parser.c:6062 #, gcc-internal-format @@ -31095,14 +31035,14 @@ msgid "suggest parentheses around %<>>%> expression" msgstr "se sugieren paréntesis alrededor de la expresión %<>>%>" #: cp/parser.c:7016 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hcase label %qE not within a switch statement" -msgstr "la etiqueta case %qE no está dentro de una declaración switch" +msgstr "%Hla etiqueta case %qE no está dentro de una declaración switch" #: cp/parser.c:7028 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hcase label not within a switch statement" -msgstr "la etiqueta case no se encuentra dentro de una declaración switch" +msgstr "%Hla etiqueta case no se encuentra dentro de una declaración switch" #: cp/parser.c:7146 #, gcc-internal-format @@ -31110,24 +31050,24 @@ msgid "%H%<else%> without a previous %<if%>" msgstr "%H%<else%> sin un %<if%> previo" #: cp/parser.c:7625 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hbreak statement not within loop or switch" -msgstr "la declaración break no está dentro de un ciclo o switch" +msgstr "%Hla declaración break no está dentro de un ciclo o switch" #: cp/parser.c:7633 cp/parser.c:7653 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid exit from OpenMP structured block" -msgstr "salida inválida de un bloque estructurado OpenMP" +msgstr "%Hsalida inválida de un bloque estructurado OpenMP" #: cp/parser.c:7636 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hbreak statement used with OpenMP for loop" -msgstr "se usó la declaración break en un ciclo for de OpenMP" +msgstr "%Hse usó la declaración break con un ciclo for de OpenMP" #: cp/parser.c:7646 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hcontinue statement not within a loop" -msgstr "la declaración continue no está dentro de un ciclo" +msgstr "%Hla declaración continue no está dentro de un ciclo" #. Issue a warning about this use of a GNU extension. #: cp/parser.c:7689 @@ -31141,44 +31081,44 @@ msgid "extra %<;%>" msgstr "<;%> extra" #: cp/parser.c:8050 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<__label__%> not at the beginning of a block" -msgstr "%<__label%> no está al inicio de un bloque" +msgstr "%H%<__label%> no está al inicio de un bloque" #: cp/parser.c:8187 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hmixing declarations and function-definitions is forbidden" -msgstr "se prohíbe mezclar declaraciones y definiciones de función" +msgstr "%Hse prohíbe mezclar declaraciones y definiciones de función" #: cp/parser.c:8327 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<friend%> used outside of class" -msgstr "se usó %<friend%> fuera de la clase" +msgstr "%Hse usó %<friend%> fuera de la clase" #: cp/parser.c:8383 #, gcc-internal-format msgid "%H%<auto%> will change meaning in C++0x; please remove it" -msgstr "" +msgstr "%H%<auto%> cambiará su significado en C++0x; por favor bórrelo" #: cp/parser.c:8502 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hclass definition may not be declared a friend" -msgstr "la definición de clase no se puede declarar como friend" +msgstr "%Hla definición de clase no se puede declarar como friend" #: cp/parser.c:8572 cp/parser.c:15946 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htemplates may not be %<virtual%>" -msgstr "las plantillas no pueden ser %<virtual%>" +msgstr "%Hlas plantillas no pueden ser %<virtual%>" #: cp/parser.c:9049 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Honly constructors take base initializers" -msgstr "solamente los constructores toman inicializadores base" +msgstr "%Hsolamente los constructores toman inicializadores base" #: cp/parser.c:9071 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hcannot expand initializer for member %<%D%>" -msgstr "no se puede expandir el inicializador para el miembro %<%D%>" +msgstr "%Hno se puede expandir el inicializador para el miembro %<%D%>" #: cp/parser.c:9126 #, gcc-internal-format @@ -31186,9 +31126,9 @@ msgid "anachronistic old-style base class initializer" msgstr "inicializador de clase base de estilo antiguo anacrónico" #: cp/parser.c:9182 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hkeyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)" -msgstr "no se permite la palabra clave %<typename%> en este contexto (un inicializador de miembro calificado es implícitamente un tipo)" +msgstr "%Hno se permite la palabra clave %<typename%> en este contexto (un inicializador de miembro calificado es implícitamente un tipo)" #. Warn that we do not support `export'. #: cp/parser.c:9528 @@ -31197,19 +31137,19 @@ msgid "keyword %<export%> not implemented, and will be ignored" msgstr "no se admite la palabra clave %<export%>, y se descartará" #: cp/parser.c:9710 cp/parser.c:9808 cp/parser.c:9914 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htemplate parameter pack %qD cannot have a default argument" -msgstr "el paquete de parámetros plantilla %qD no puede tener un argumento por defecto" +msgstr "%Hel paquete de parámetros plantilla %qD no puede tener un argumento por defecto" #: cp/parser.c:9713 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htemplate parameter pack cannot have a default argument" -msgstr "el paquete de parámetros plantilla no puede tener un argumento por defecto" +msgstr "%Hel paquete de parámetros plantilla no puede tener un argumento por defecto" #: cp/parser.c:9811 cp/parser.c:9918 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htemplate parameter packs cannot have default arguments" -msgstr "los paquetes de parámetro de plantilla no pueden tener argumentos por defecto" +msgstr "%Hlos paquetes de parámetro de plantilla no pueden tener argumentos por defecto" #: cp/parser.c:10060 #, gcc-internal-format @@ -31222,15 +31162,15 @@ msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<% msgstr "%<<:%> es una forma alternativa para %<[%>. Inserte espacios en blanco entre %<<%> y %<::%>" #: cp/parser.c:10142 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hparse error in template argument list" -msgstr "error de decodificación en la lista de argumentos de plantilla" +msgstr "%Herror de decodificación en la lista de argumentos de plantilla" #. Explain what went wrong. #: cp/parser.c:10257 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hnon-template %qD used as template" -msgstr "se usó %qD que no es plantilla como plantilla" +msgstr "%Hse usó %qD que no es plantilla como plantilla" #: cp/parser.c:10259 #, gcc-internal-format @@ -31238,9 +31178,9 @@ msgid "use %<%T::template %D%> to indicate that it is a template" msgstr "utilice %<%T::template %D%> para indicar que es una plantilla" #: cp/parser.c:10796 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htemplate specialization with C linkage" -msgstr "especialización de plantilla con enlazado C" +msgstr "%Hespecialización de plantilla con enlazado C" #: cp/parser.c:11442 #, gcc-internal-format @@ -31265,40 +31205,40 @@ msgstr "se descartan los atributos en la instanciación de una plantilla" #: cp/parser.c:11700 #, gcc-internal-format msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration" -msgstr "se descartan los atributos en un especificador de tipo anidado que no es una declaración adelantada" +msgstr "se descartan los atributos en un especificador de tipo elaborado que no es una declaración adelantada" #: cp/parser.c:11977 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qD is not a namespace-name" -msgstr "%qD no es un nombre de espacio de nombres" +msgstr "%H%qD no es un nombre de espacio de nombres" #: cp/parser.c:12104 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<namespace%> definition is not allowed here" -msgstr "la definición %<namespace%> no se permite aquí" +msgstr "%Hla definición %<namespace%> no se permite aquí" #. [namespace.udecl] #. #. A using declaration shall not name a template-id. #: cp/parser.c:12244 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Ha template-id may not appear in a using-declaration" -msgstr "un id de plantilla no puede aparecer en una declaración using" +msgstr "%Hun id de plantilla no puede aparecer en una declaración using" #: cp/parser.c:12621 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Han asm-specification is not allowed on a function-definition" -msgstr "no se permite una especificación de asm en una definición de función" +msgstr "%Hno se permite una especificación de asm en una definición de función" #: cp/parser.c:12625 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hattributes are not allowed on a function-definition" -msgstr "no se permiten atributos en una definición de función" +msgstr "%Hno se permiten atributos en una definición de función" #: cp/parser.c:12778 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinitializer provided for function" -msgstr "se proporciona un inicializador para la función" +msgstr "%Hse proporciona un inicializador para la función" #: cp/parser.c:12800 #, gcc-internal-format @@ -31306,19 +31246,19 @@ msgid "attributes after parenthesized initializer ignored" msgstr "se descartan los atributos después del inicializador entre paréntesis" #: cp/parser.c:13198 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Harray bound is not an integer constant" -msgstr "el límite de la matriz no es una constante entera" +msgstr "%Hel límite de la matriz no es una constante entera" #: cp/parser.c:13310 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<%T::%E%> is not a type" -msgstr "%<%T::%E%> no es un tipo" +msgstr "%H%<%T::%E%> no es un tipo" #: cp/parser.c:13337 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid use of constructor as a template" -msgstr "uso inválido del constructor como una plantilla" +msgstr "%Huso inválido del constructor como una plantilla" #: cp/parser.c:13339 #, gcc-internal-format @@ -31326,24 +31266,24 @@ msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualifi msgstr "use %<%T::%D%> en lugar de %<%T::%D%> para nombrar el constructor en un nombre calificado" #: cp/parser.c:13512 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qD is a namespace" -msgstr "%qD es un nombre de espacio" +msgstr "%H%qD es un espacio de nombres" #: cp/parser.c:13587 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hduplicate cv-qualifier" -msgstr "calificador-cv duplicado" +msgstr "%Hcalificador-cv duplicado" #: cp/parser.c:13699 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid use of %<auto%>" -msgstr "uso inválido de %<::%>" +msgstr "uso inválido de %<auto%>" #: cp/parser.c:14273 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hfile ends in default argument" -msgstr "el fichero termina en el argumento por defecto" +msgstr "%Hel fichero termina en el argumento por defecto" #: cp/parser.c:14319 #, gcc-internal-format @@ -31351,19 +31291,19 @@ msgid "deprecated use of default argument for parameter of non-function" msgstr "uso obsoleto del argumento por defecto para el parámetro de una no función" #: cp/parser.c:14322 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hdefault arguments are only permitted for function parameters" -msgstr "los argumentos por defecto sólo se permiten para parámetros de función" +msgstr "%Hlos argumentos por defecto sólo se permiten para parámetros de función" #: cp/parser.c:14340 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%sparameter pack %qD cannot have a default argument" -msgstr "%sel paquete de parámetros plantilla %qD no puede tener un argumento por defecto" +msgstr "%H%sel paquete de parámetros plantilla %qD no puede tener un argumento por defecto" #: cp/parser.c:14344 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%sparameter pack cannot have a default argument" -msgstr "%sel paquete de parámetros plantilla no puede tener un argumento por defecto" +msgstr "%H%sel paquete de parámetros plantilla no puede tener un argumento por defecto" #: cp/parser.c:14607 #, gcc-internal-format @@ -31371,112 +31311,112 @@ msgid "ISO C++ does not allow designated initializers" msgstr "ISO C++ no permite inicializadores designados" #: cp/parser.c:15223 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid class name in declaration of %qD" -msgstr "nombre de clase inválido en la declaración de %qD" +msgstr "%Hnombre de clase inválido en la declaración de %qD" #: cp/parser.c:15236 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hdeclaration of %qD in namespace %qD which does not enclose %qD" -msgstr "la declaración de %qD en el espacio de nombres %qD el cual no incluye a %qD" +msgstr "%Hla declaración de %qD en el espacio de nombres %qD el cual no incluye a %qD" #: cp/parser.c:15241 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hdeclaration of %qD in %qD which does not enclose %qD" -msgstr "la declaración de %qD en %qD la cual no incluye a %qD" +msgstr "%Hla declaración de %qD en %qD la cual no incluye a %qD" #: cp/parser.c:15255 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hextra qualification not allowed" -msgstr "se descarta la calificación extra" +msgstr "%Hno se permite la calificación extra" #: cp/parser.c:15267 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Han explicit specialization must be preceded by %<template <>%>" -msgstr "una especialización explícita debe ser precedida por %<template <>%>" +msgstr "%Huna especialización explícita se debe preceder con %<template <>%>" #: cp/parser.c:15296 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hfunction template %qD redeclared as a class template" -msgstr "la función plantilla %qD se redeclaró commo una plantilla de clase" +msgstr "%Hla función plantilla %qD se redeclaró commo una plantilla de clase" #: cp/parser.c:15378 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hredefinition of %q#T" -msgstr "redefinición de %q#T" +msgstr "%Hredefinición de %q#T" #: cp/parser.c:15380 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hprevious definition of %q+#T" -msgstr "definición previa de %q+#T" +msgstr "%Hdefinición previa de %q+#T" #: cp/parser.c:15648 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Ha class-key must be used when declaring a friend" -msgstr "se debe usar una llave clase cuando se declara un friend" +msgstr "%Hse debe usar una llave clase cuando se declara un friend" #: cp/parser.c:15663 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hfriend declaration does not name a class or function" -msgstr "la declaración friend no nombra una clase o función" +msgstr "%Hla declaración friend no nombra una clase o función" #: cp/parser.c:15843 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hpure-specifier on function-definition" -msgstr "especificador pure en la definición de función" +msgstr "%Hespecificador pure en la definición de función" #: cp/parser.c:16150 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hkeyword %<typename%> not allowed outside of templates" -msgstr "no se permite la palabra clave %<typename%> fuera de las plantillas" +msgstr "%Hno se permite la palabra clave %<typename%> fuera de las plantillas" #: cp/parser.c:16153 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hkeyword %<typename%> not allowed in this context (the base class is implicitly a type)" -msgstr "no se permite la palabra clave %<typename%> en este contexto (la clase base es implícitamente un tipo)" +msgstr "%Hno se permite la palabra clave %<typename%> en este contexto (la clase base es implícitamente un tipo)" #: cp/parser.c:17216 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htoo few template-parameter-lists" -msgstr "faltan listas de parámetros de plantilla" +msgstr "%Hfaltan listas de parámetros de plantilla" #. Otherwise, there are too many template parameter lists. We have #. something like: #. #. template <class T> template <class U> void S::f(); #: cp/parser.c:17231 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htoo many template-parameter-lists" -msgstr "demasiadas listas de parámetros de plantilla" +msgstr "%Hdemasiadas listas de parámetros de plantilla" #. Issue an error message. #: cp/parser.c:17505 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hnamed return values are no longer supported" -msgstr "ya no se admiten los valores de devolución nombrados" +msgstr "%Hya no se admiten los valores de devolución nombrados" #. 14.5.2.2 [temp.mem] #. #. A local class shall not have member templates. #: cp/parser.c:17580 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid declaration of member template in local class" -msgstr "declaración inválida de plantilla miembro en la clase local" +msgstr "%Hdeclaración inválida de plantilla miembro en la clase local" #: cp/parser.c:17590 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htemplate with C linkage" -msgstr "plantilla con enlazado C" +msgstr "%Hplantilla con enlazado C" #: cp/parser.c:17737 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htemplate declaration of %qs" -msgstr "declaración de plantilla de %qs" +msgstr "%Hdeclaración de plantilla de %qs" #: cp/parser.c:17801 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hexplicit template specialization cannot have a storage class" -msgstr "la especialización de plantilla explícita no puede tener una clase de almacenamiento" +msgstr "%Hla especialización de plantilla explícita no puede tener una clase de almacenamiento" #: cp/parser.c:18019 #, gcc-internal-format @@ -31484,19 +31424,19 @@ msgid "%H%<>>%> should be %<> >%> within a nested template argument list" msgstr "%H%<>>%> debe ser %<> >%> dentro de una lista de argumentos de plantilla anidada" #: cp/parser.c:18032 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hspurious %<>>%>, use %<>%> to terminate a template argument list" -msgstr "%<>>%> sobrante, use %<>%> para terminar la lista de argumentos de plantilla" +msgstr "%H%<>>%> sobrante, use %<>%> para terminar la lista de argumentos de plantilla" #: cp/parser.c:18361 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid use of %qD in linkage specification" -msgstr "uso inválido de %qD en la especificación de enlazado" +msgstr "%Huso inválido de %qD en la especificación de enlazado" #: cp/parser.c:18374 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<__thread%> before %qD" -msgstr "%<__thread%> antes de %qD" +msgstr "%H%<__thread%> antes de %qD" #: cp/parser.c:18695 #, gcc-internal-format @@ -31504,44 +31444,44 @@ msgid "%qs tag used in naming %q#T" msgstr "se usó la etiqueta %qs al nombrar a %q#T" #: cp/parser.c:18716 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qD redeclared with different access" -msgstr "%qD se redeclaró con acceso diferente" +msgstr "%H%qD se redeclaró con acceso diferente" #: cp/parser.c:18734 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<template%> (as a disambiguator) is only allowed within templates" -msgstr "%<template%> (como desambiguador) sólo se permite dentro de plantillas" +msgstr "%H%<template%> (como desambiguador) sólo se permite dentro de plantillas" #: cp/parser.c:19000 cp/parser.c:19927 cp/parser.c:20059 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hmisplaced %<@%D%> Objective-C++ construct" -msgstr "construct Objective-C++ %<@%D%> mal colocado" +msgstr "%Hconstruct Objective-C++ %<@%D%> mal colocado" #: cp/parser.c:19144 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<@encode%> must specify a type as an argument" -msgstr "%<@encode%> debe especificar un tipo como un argumento" +msgstr "%H%<@encode%> debe especificar un tipo como un argumento" #: cp/parser.c:19460 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hinvalid Objective-C++ selector name" -msgstr "nombre de selector Objective-C++ inválido" +msgstr "%Hnombre de selector Objective-C++ inválido" #: cp/parser.c:19791 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hidentifier expected after %<@protocol%>" -msgstr "se esperaba un identificador después de %<@protocol%>" +msgstr "%Hse esperaba un identificador después de %<@protocol%>" #: cp/parser.c:20152 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Htoo many %qs clauses" -msgstr "demasiadas cláusulas %qs" +msgstr "%Hdemasiadas cláusulas %qs" #: cp/parser.c:20266 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hcollapse argument needs positive constant integer expression" -msgstr "la etiqueta de `case' debe ser una expresión constante discreta" +msgstr "%Hel argumento de collapse necesita ser una expresión entera constante positiva" #: cp/parser.c:20555 #, gcc-internal-format @@ -31549,9 +31489,9 @@ msgid "%Hschedule %<runtime%> does not take a %<chunk_size%> parameter" msgstr "%Hel calendarizador %<runtime%> no toma un parámetro %<chunk_size%>" #: cp/parser.c:20558 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hschedule %<auto%> does not take a %<chunk_size%> parameter" -msgstr "%Hel calendarizador %<runtime%> no toma un parámetro %<chunk_size%>" +msgstr "%Hel calendarizador %<auto%> no toma un parámetro %<chunk_size%>" #: cp/parser.c:20706 #, gcc-internal-format @@ -31561,57 +31501,57 @@ msgstr "%H%qs no es válido para %qs" #: cp/parser.c:21130 #, gcc-internal-format msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop" -msgstr "" +msgstr "no se permite la inicialización entre paréntesis para el ciclo %<for%> en OpenMP" #: cp/parser.c:21242 cp/parser.c:21280 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hiteration variable %qD should not be firstprivate" -msgstr "la variable de iteración %qs no debe ser firstprivate" +msgstr "%Hla variable de iteración %qD no debe ser firstprivate" #: cp/parser.c:21284 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hiteration variable %qD should not be reduction" -msgstr "la variable de iteración %qs no debe ser reduction" +msgstr "%Hla variable de iteración %qD no debe ser reduction" #: cp/parser.c:21360 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hnot enough collapsed for loops" -msgstr "no hay suficiente información de tipo" +msgstr "%Hno se colapsó lo suficiente para los ciclos" #: cp/parser.c:21406 #, gcc-internal-format msgid "%Hcollapsed loops not perfectly nested" -msgstr "" +msgstr "%Hlos ciclos colapsados no están perfectamente anidados" #: cp/parser.c:21817 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hjunk at end of %<#pragma GCC pch_preprocess%>" -msgstr "basura al final de %<#pragma GCC pch_preprocess%>" +msgstr "%Hbasura al final de %<#pragma GCC pch_preprocess%>" #: cp/parser.c:21821 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hexpected string literal" -msgstr "se esperaba una cadena literal" +msgstr "%Hse esperaba una cadena literal" #: cp/parser.c:21854 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<#pragma GCC pch_preprocess%> must be first" -msgstr "%<#pragma GCC pch_preprocess%> debe ser primero" +msgstr "%H%<#pragma GCC pch_preprocess%> debe ser primero" #: cp/parser.c:21865 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<#pragma omp barrier%> may only be used in compound statements" -msgstr "%<#pragma omp barrier%> sólo se puede usar en declaraciones compuestas" +msgstr "%H%<#pragma omp barrier%> sólo se puede usar en declaraciones compuestas" #: cp/parser.c:21880 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<#pragma omp flush%> may only be used in compound statements" -msgstr "%<#pragma omp flush%> sólo se puede usar en declaraciones compuestas" +msgstr "%H%<#pragma omp flush%> sólo se puede usar en declaraciones compuestas" #: cp/parser.c:21895 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<#pragma omp taskwait%> may only be used in compound statements" -msgstr "%<#pragma omp barrier%> sólo se puede usar en declaraciones compuestas" +msgstr "%H%<#pragma omp taskwait%> sólo se puede usar en declaraciones compuestas" #: cp/parser.c:21923 #, gcc-internal-format @@ -31789,9 +31729,9 @@ msgid "expansion pattern %<%E%> contains no argument packs" msgstr "el patrón de expansión %<%E%> no contiene paquetes de argumento" #: cp/pt.c:2729 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "parameter packs not expanded with %<...%>:" -msgstr "no se expanden los paquetes de argumento con `...'" +msgstr "no se expanden los paquetes de parámetro con %<...%>" #: cp/pt.c:2744 cp/pt.c:3365 #, gcc-internal-format @@ -32264,9 +32204,9 @@ msgid "use %<...%> to expand argument pack" msgstr "use %<...%> para expandir el paquete de argumentos" #: cp/pt.c:10365 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "iteration variable %qD should not be reduction" -msgstr "la variable de iteración %qs no debe ser reduction" +msgstr "la variable de iteración %qD no debe ser reduction" #: cp/pt.c:11034 #, gcc-internal-format @@ -32349,9 +32289,9 @@ msgid "duplicate explicit instantiation of %q#D" msgstr "instanciación explícita duplicada de %q#D" #: cp/pt.c:14650 cp/pt.c:14742 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations" -msgstr "ISO C++ prohíbe el uso de %<extern%> en instanciaciones explícitas" +msgstr "ISO C++ 1998 prohíbe el uso de %<extern%> en instanciaciones explícitas" #: cp/pt.c:14655 cp/pt.c:14759 #, gcc-internal-format @@ -32401,14 +32341,14 @@ msgid "%q#T is not a valid type for a template constant parameter" msgstr "%q#T no es un tipo válido para un parámetro constante de plantilla" #: cp/pt.c:16749 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "deducing auto from brace-enclosed initializer list requires #include <initializer_list>" -msgstr "se utilizó un inicializador encerrado entre llaves para inicializar a %qT" +msgstr "la deducción de auto de una lista inicializadora encerrada entre llaves requiere #include <initializer_list>" #: cp/pt.c:16790 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unable to deduce %qT from %qE" -msgstr "no se puede emular %qs" +msgstr "no se puede deducir %qT de %qE" #: cp/repo.c:111 #, gcc-internal-format @@ -32483,7 +32423,7 @@ msgstr "tipo de devolución covariante inválido para %q+#D" #: cp/search.c:1890 #, gcc-internal-format msgid "conflicting return type specified for %q+#D" -msgstr "tipos de devolución en conflicto especificados para %q+#D" +msgstr "se especificaron tipos de devolución en conflicto para %q+#D" #: cp/search.c:1900 #, gcc-internal-format @@ -32498,22 +32438,22 @@ msgstr " se sustituye %q+#F" #: cp/search.c:1909 #, gcc-internal-format msgid "conflicting type attributes specified for %q+#D" -msgstr "atributos de tipo en conflicto especificados para %q+#D" +msgstr "se especificaron atributos de tipo en conflicto para %q+#D" #: cp/search.c:1920 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "overriding non-deleted function %q+D" -msgstr "función virtual %qs que no es clase" +msgstr "se sobreescribe la función %q+D que no se borró" #: cp/search.c:1924 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-deleted function %q+D" -msgstr "llamada a %qD que no es función" +msgstr "la función %q+D que no se borró" #: cp/search.c:1925 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "overriding deleted function %q+D" -msgstr "oscureciendo la función %s %q#D" +msgstr "se sobreescribe la función borrada %q+D" #. A static member function cannot match an inherited #. virtual member function. @@ -32638,29 +32578,29 @@ msgid "base class %qT has cv qualifiers" msgstr "la clase base %qT tiene calificadores cv" #: cp/semantics.c:2522 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hincomplete type %qT used in nested name specifier" -msgstr "se utilizó el tipo incompleto %qT en un especificador de nombre anidado" +msgstr "%Hse utilizó el tipo incompleto %qT en un especificador de nombre anidado" #: cp/semantics.c:2526 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hreference to %<%T::%D%> is ambiguous" -msgstr "la referencia a %<%T::%D%> es ambigua" +msgstr "%Hla referencia a %<%T::%D%> es ambigua" #: cp/semantics.c:2530 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qD is not a member of %qT" -msgstr "%qD no es un miembro de %qT" +msgstr "%H%qD no es un miembro de %qT" #: cp/semantics.c:2533 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%qD is not a member of %qD" -msgstr "%qD no es un miembro de %qD" +msgstr "%H%qD no es un miembro de %qD" #: cp/semantics.c:2535 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%H%<::%D%> has not been declared" -msgstr "%<::%D%> no se ha declarado" +msgstr "%H%<::%D%> no se ha declarado" #: cp/semantics.c:2676 #, gcc-internal-format @@ -32724,14 +32664,14 @@ msgid "%qD appears more than once in data clauses" msgstr "%qD aparece más de una vez en las cláusulas de datos" #: cp/semantics.c:3511 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is not a variable in clause %<firstprivate%>" -msgstr "%qE no es una variable en la cláusula %<firstprivate%>" +msgstr "%qD no es una variable en la cláusula %<firstprivate%>" #: cp/semantics.c:3533 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is not a variable in clause %<lastprivate%>" -msgstr "%qE no es una variable en la cláusula %<lastprivate%>" +msgstr "%qD no es una variable en la cláusula %<lastprivate%>" #: cp/semantics.c:3563 #, gcc-internal-format @@ -32749,14 +32689,14 @@ msgid "%qE has reference type for %qs" msgstr "%qE tiene tipo de referencia para %qs" #: cp/semantics.c:3780 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<threadprivate%> %qD is not file, namespace or block scope variable" -msgstr "%<threadprivate%> %qE no es un fichero, espacio de nombres o variable de ámbito de bloque" +msgstr "%<threadprivate%> %qD no es un fichero, espacio de nombres o variable de ámbito de bloque" #: cp/semantics.c:3794 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<threadprivate%> %qE directive not in %qT definition" -msgstr "%<threadprivate%> %qE tiene tipo incompleto" +msgstr "la directiva %<threadprivate%> %qE no está en la definición %qT" #: cp/semantics.c:3926 #, gcc-internal-format @@ -32766,7 +32706,7 @@ msgstr "%Hpredicado controlador inválido" #: cp/semantics.c:3936 #, gcc-internal-format msgid "%Hdifference between %qE and %qD does not have integer type" -msgstr "" +msgstr "%Hla diferencia entre %qE y %qD no tiene tipo entero" #: cp/semantics.c:4031 #, gcc-internal-format @@ -32774,9 +32714,9 @@ msgid "%Hinvalid increment expression" msgstr "%Hfalta la expresión de decremento" #: cp/semantics.c:4157 cp/semantics.c:4228 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%Hexpected iteration declaration or initialization" -msgstr "se esperaba una declaración de iteración o una inicialización" +msgstr "%Hse esperaba una declaración de iteración o una inicialización" #: cp/semantics.c:4168 #, gcc-internal-format @@ -32817,7 +32757,7 @@ msgstr "%qE refiere a un conjunto de funciones sobrecargadas" #: cp/semantics.c:4589 #, gcc-internal-format msgid "unable to determine the declared type of expression %<%E%>" -msgstr "" +msgstr "no se puede determinar el tipo declarado de la expresión %<%E%>" #: cp/semantics.c:4802 #, gcc-internal-format @@ -32960,9 +32900,9 @@ msgid "(perhaps the %<offsetof%> macro was used incorrectly)" msgstr "(tal vez se utilizó incorrectamente la macro %<offsetof%>)" #: cp/typeck.c:2000 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid access to non-static data member %qD of NULL object" -msgstr "acceso inválido a datos del miembro que no es static %qD del objeto NULL" +msgstr "acceso inválido a datos del miembro que no es static %qD del objeto NULL" #: cp/typeck.c:2090 #, gcc-internal-format @@ -33045,9 +32985,9 @@ msgid "ISO C++ forbids calling %<::main%> from within program" msgstr "ISO C++ prohíbe la llamada %<::main%> dentro del mismo programa" #: cp/typeck.c:2878 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>" -msgstr "se debe usar %<.*%> o %<->*%> en la llamada a la función puntero-a-miembro en %<%E (...)%>" +msgstr "se debe usar %<.*%> o %<->*%> en la llamada a la función puntero-a-miembro en %<%E (...)%>, p.e. %<(... ->* %E) (...)%>" #: cp/typeck.c:2893 #, gcc-internal-format @@ -33265,19 +33205,19 @@ msgid "%s expression list treated as compound expression" msgstr "se trata la lista de expresiones %s como una expresión compuesta" #: cp/typeck.c:4971 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cast from type %qT to type %qT casts away constness" -msgstr "%s del tipo %qT al tipo %qT proscribe la constancia" +msgstr "la conversión del tipo %qT al tipo %qT proscribe la constancia" #: cp/typeck.c:4976 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "static_cast from type %qT to type %qT casts away constness" -msgstr "%s del tipo %qT al tipo %qT proscribe la constancia" +msgstr "static_cast del tipo %qT al tipo %qT proscribe la constancia" #: cp/typeck.c:4981 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "reinterpret_cast from type %qT to type %qT casts away constness" -msgstr "%s del tipo %qT al tipo %qT proscribe la constancia" +msgstr "reinterpret_cast del tipo %qT al tipo %qT proscribe la constancia" #: cp/typeck.c:5301 #, gcc-internal-format @@ -33287,7 +33227,7 @@ msgstr "static_cast inválido del tipo %qT al tipo %qT" #: cp/typeck.c:5324 #, gcc-internal-format msgid "converting from %qT to %qT" -msgstr "convirtiendo de %qT a %qT" +msgstr "se convierte de %qT a %qT" #: cp/typeck.c:5373 #, gcc-internal-format @@ -33558,9 +33498,9 @@ msgid "cannot initialize arrays using this syntax" msgstr "no se puede inicializar matrices usando esta sintaxis" #: cp/typeck2.c:707 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "narrowing conversion of %qE from %qT to %qT inside { }" -msgstr "la conversión de %qE desde %qT a %qT es ambigua" +msgstr "conversión estrechadora de %qE desde %qT a %qT dentro de { }" #: cp/typeck2.c:765 #, gcc-internal-format @@ -33568,9 +33508,9 @@ msgid "int-array initialized from non-wide string" msgstr "matriz de enteros inicializada con una cadena que no es ancha" #: cp/typeck2.c:770 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "int-array initialized from incompatible wide string" -msgstr "matriz de enteros inicializada con una cadena que no es ancha" +msgstr "matriz de enteros inicializada con una cadena ancha incompatible" #: cp/typeck2.c:829 #, gcc-internal-format @@ -43748,7 +43688,7 @@ msgstr "la declaración local de %qs oculta la variable de instancia" #~ msgstr "se envió una señal sin una prioridad" #~ msgid " and no default priority was set." -#~ msgstr " y no se estableción una prioridad por omisión." +#~ msgstr " y no se estableció una prioridad por omisión." #~ msgid " PRIORITY defaulted to 0" #~ msgstr " PRIORITY es 0 por omisión" diff --git a/gcc/regmove.c b/gcc/regmove.c index 2a638197a7a..8ce0ea00da7 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -58,10 +58,6 @@ struct match { int early_clobber[MAX_RECOG_OPERANDS]; }; -static rtx discover_flags_reg (void); -static void mark_flags_life_zones (rtx); -static void flags_set_1 (rtx, const_rtx, void *); - static int find_matches (rtx, struct match *); static int regclass_compatible_p (int, int); static int fixup_match_2 (rtx, rtx, rtx, rtx); @@ -79,171 +75,6 @@ regclass_compatible_p (int class0, int class1) } -/* Determine if the pattern generated by add_optab has a clobber, - such as might be issued for a flags hard register. To make the - code elsewhere simpler, we handle cc0 in this same framework. - - Return the register if one was discovered. Return NULL_RTX if - if no flags were found. Return pc_rtx if we got confused. */ - -static rtx -discover_flags_reg (void) -{ - rtx tmp; - tmp = gen_rtx_REG (word_mode, 10000); - tmp = gen_add3_insn (tmp, tmp, const2_rtx); - - /* If we get something that isn't a simple set, or a - [(set ..) (clobber ..)], this whole function will go wrong. */ - if (GET_CODE (tmp) == SET) - return NULL_RTX; - else if (GET_CODE (tmp) == PARALLEL) - { - int found; - - if (XVECLEN (tmp, 0) != 2) - return pc_rtx; - tmp = XVECEXP (tmp, 0, 1); - if (GET_CODE (tmp) != CLOBBER) - return pc_rtx; - tmp = XEXP (tmp, 0); - - /* Don't do anything foolish if the md wanted to clobber a - scratch or something. We only care about hard regs. - Moreover we don't like the notion of subregs of hard regs. */ - if (GET_CODE (tmp) == SUBREG - && REG_P (SUBREG_REG (tmp)) - && REGNO (SUBREG_REG (tmp)) < FIRST_PSEUDO_REGISTER) - return pc_rtx; - found = (REG_P (tmp) && REGNO (tmp) < FIRST_PSEUDO_REGISTER); - - return (found ? tmp : NULL_RTX); - } - - return pc_rtx; -} - -/* It is a tedious task identifying when the flags register is live and - when it is safe to optimize. Since we process the instruction stream - multiple times, locate and record these live zones by marking the - mode of the instructions -- - - QImode is used on the instruction at which the flags becomes live. - - HImode is used within the range (exclusive) that the flags are - live. Thus the user of the flags is not marked. - - All other instructions are cleared to VOIDmode. */ - -/* Used to communicate with flags_set_1. */ -static rtx flags_set_1_rtx; -static int flags_set_1_set; - -static void -mark_flags_life_zones (rtx flags) -{ - int flags_regno; - int flags_nregs; - basic_block block; - -#ifdef HAVE_cc0 - /* If we found a flags register on a cc0 host, bail. */ - if (flags == NULL_RTX) - flags = cc0_rtx; - else if (flags != cc0_rtx) - flags = pc_rtx; -#endif - - /* Simple cases first: if no flags, clear all modes. If confusing, - mark the entire function as being in a flags shadow. */ - if (flags == NULL_RTX || flags == pc_rtx) - { - enum machine_mode mode = (flags ? HImode : VOIDmode); - rtx insn; - for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) - PUT_MODE (insn, mode); - return; - } - -#ifdef HAVE_cc0 - flags_regno = -1; - flags_nregs = 1; -#else - flags_regno = REGNO (flags); - flags_nregs = hard_regno_nregs[flags_regno][GET_MODE (flags)]; -#endif - flags_set_1_rtx = flags; - - /* Process each basic block. */ - FOR_EACH_BB_REVERSE (block) - { - rtx insn, end; - int live; - - insn = BB_HEAD (block); - end = BB_END (block); - - /* Look out for the (unlikely) case of flags being live across - basic block boundaries. */ - live = 0; -#ifndef HAVE_cc0 - { - int i; - for (i = 0; i < flags_nregs; ++i) - live |= REGNO_REG_SET_P (df_get_live_in (block), flags_regno + i); - } -#endif - - while (1) - { - /* Process liveness in reverse order of importance -- - alive, death, birth. This lets more important info - overwrite the mode of lesser info. */ - - if (INSN_P (insn)) - { -#ifdef HAVE_cc0 - /* In the cc0 case, death is not marked in reg notes, - but is instead the mere use of cc0 when it is alive. */ - if (live && reg_mentioned_p (cc0_rtx, PATTERN (insn))) - live = 0; -#else - /* In the hard reg case, we watch death notes. */ - if (live && find_regno_note (insn, REG_DEAD, flags_regno)) - live = 0; -#endif - PUT_MODE (insn, (live ? HImode : VOIDmode)); - - /* In either case, birth is denoted simply by its presence - as the destination of a set. */ - flags_set_1_set = 0; - note_stores (PATTERN (insn), flags_set_1, NULL); - if (flags_set_1_set) - { - live = 1; - PUT_MODE (insn, QImode); - } - } - else - PUT_MODE (insn, (live ? HImode : VOIDmode)); - - if (insn == end) - break; - insn = NEXT_INSN (insn); - } - } -} - -/* A subroutine of mark_flags_life_zones, called through note_stores. */ - -static void -flags_set_1 (rtx x, const_rtx pat, void *data ATTRIBUTE_UNUSED) -{ - if (GET_CODE (pat) == SET - && reg_overlap_mentioned_p (x, flags_set_1_rtx)) - flags_set_1_set = 1; -} - #ifdef AUTO_INC_DEC /* Find the place in the rtx X where REG is used as a memory address. @@ -1051,25 +882,21 @@ fixup_match_2 (rtx insn, rtx dst, rtx src, rtx offset) return 0; } -/* Main entry for the register move optimization. - F is the first instruction. - NREGS is one plus the highest pseudo-reg number used in the instruction. - REGMOVE_DUMP_FILE is a stream for output of a trace of actions taken - (or 0 if none should be output). */ +/* Main entry for the register move optimization. */ -static void -regmove_optimize (rtx f, int nregs) +static unsigned int +regmove_optimize (void) { rtx insn; struct match match; - int pass; int i; rtx copy_src, copy_dst; + int nregs = max_reg_num (); /* ??? Hack. Regmove doesn't examine the CFG, and gets mightily confused by non-call exceptions ending blocks. */ if (flag_non_call_exceptions) - return; + return 0; df_note_add_problem (); df_analyze (); @@ -1077,43 +904,30 @@ regmove_optimize (rtx f, int nregs) regstat_init_n_sets_and_refs (); regstat_compute_ri (); - /* Find out where a potential flags register is live, and so that we - can suppress some optimizations in those zones. */ - mark_flags_life_zones (discover_flags_reg ()); - regno_src_regno = XNEWVEC (int, nregs); for (i = nregs; --i >= 0; ) regno_src_regno[i] = -1; - /* A forward/backward pass. Replace output operands with input operands. */ + /* A forward pass. Replace output operands with input operands. */ - for (pass = 0; pass <= 2; pass++) + if (flag_expensive_optimizations) { - if (! flag_regmove && pass >= flag_expensive_optimizations) - goto done; - if (dump_file) - fprintf (dump_file, "Starting %s pass...\n", - pass ? "backward" : "forward"); + fprintf (dump_file, "Starting forward pass...\n"); - for (insn = pass ? get_last_insn () : f; insn; - insn = pass ? PREV_INSN (insn) : NEXT_INSN (insn)) + for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) { - rtx set; - - set = single_set (insn); + rtx set = single_set (insn); if (! set) continue; - if (flag_expensive_optimizations && ! pass - && (GET_CODE (SET_SRC (set)) == SIGN_EXTEND - || GET_CODE (SET_SRC (set)) == ZERO_EXTEND) + if ((GET_CODE (SET_SRC (set)) == SIGN_EXTEND + || GET_CODE (SET_SRC (set)) == ZERO_EXTEND) && REG_P (XEXP (SET_SRC (set), 0)) && REG_P (SET_DEST (set))) optimize_reg_copy_3 (insn, SET_DEST (set), SET_SRC (set)); - if (flag_expensive_optimizations && ! pass - && REG_P (SET_SRC (set)) + if (REG_P (SET_SRC (set)) && REG_P (SET_DEST (set))) { /* If this is a register-register copy where SRC is not dead, @@ -1418,7 +1232,6 @@ regmove_optimize (rtx f, int nregs) } } - done: /* Clean up. */ free (regno_src_regno); if (reg_set_in_bb) @@ -1428,6 +1241,7 @@ regmove_optimize (rtx f, int nregs) } regstat_free_n_sets_and_refs (); regstat_free_ri (); + return 0; } /* Returns nonzero if INSN's pattern has matching constraints for any operand. @@ -1529,14 +1343,6 @@ gate_handle_regmove (void) return (optimize > 0 && flag_regmove); } -/* Register allocation pre-pass, to reduce number of moves necessary - for two-address machines. */ -static unsigned int -rest_of_handle_regmove (void) -{ - regmove_optimize (get_insns (), max_reg_num ()); - return 0; -} struct rtl_opt_pass pass_regmove = { @@ -1544,7 +1350,7 @@ struct rtl_opt_pass pass_regmove = RTL_PASS, "regmove", /* name */ gate_handle_regmove, /* gate */ - rest_of_handle_regmove, /* execute */ + regmove_optimize, /* execute */ NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ diff --git a/gcc/stmt.c b/gcc/stmt.c index c5369061e9d..96e63fa88f1 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -1724,38 +1724,6 @@ expand_return (tree retval) } } -/* Given a pointer to a BLOCK node return nonzero if (and only if) the node - in question represents the outermost pair of curly braces (i.e. the "body - block") of a function or method. - - For any BLOCK node representing a "body block" of a function or method, the - BLOCK_SUPERCONTEXT of the node will point to another BLOCK node which - represents the outermost (function) scope for the function or method (i.e. - the one which includes the formal parameters). The BLOCK_SUPERCONTEXT of - *that* node in turn will point to the relevant FUNCTION_DECL node. */ - -int -is_body_block (const_tree stmt) -{ - if (lang_hooks.no_body_blocks) - return 0; - - if (TREE_CODE (stmt) == BLOCK) - { - tree parent = BLOCK_SUPERCONTEXT (stmt); - - if (parent && TREE_CODE (parent) == BLOCK) - { - tree grandparent = BLOCK_SUPERCONTEXT (parent); - - if (grandparent && TREE_CODE (grandparent) == FUNCTION_DECL) - return 1; - } - } - - return 0; -} - /* Emit code to restore vital registers at the beginning of a nonlocal goto handler. */ static void diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9c63dbf6448..fc081f5ecc4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,4 +1,124 @@ -2008-02-21 Thomas Koenig <tkoenig@gcc.gnu.org> +2009-03-04 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/39339 + * gcc.c-torture/execute/pr39339.c: New testcase. + +2009-03-03 Joseph Myers <joseph@codesourcery.com> + + * gcc.c-torture/compile/20090303-1.c, + gcc.c-torture/compile/20090303-2.c: New tests. + +2009-03-03 Jakub Jelinek <jakub@redhat.com> + + PR fortran/39354 + * gfortran.dg/gomp/pr39354.f90: New test. + + PR tree-optimization/39343 + * gcc.dg/pr39343.c: New test. + +2009-03-03 Ira Rosen <irar@il.ibm.com> + + PR tree-optimization/39248 + * gcc.dg/vect/vect-complex-1.c: Add attribute aligned + to the arrays. + * gcc.dg/vect/vect-iv-6.c: Don't expect to fail to vectorize + on targets without vector misalignment support. + * lib/target-supports.exp + (check_effective_target_vect_short_mult): Add + check_effective_target_arm32. + +2009-03-02 Sebastian Pop <sebastian.pop@amd.com> + + PR middle-end/39335 + * testsuite/gcc.dg/graphite/pr39335_1.c: New. + * testsuite/gcc.dg/graphite/pr39335.c: New. + +2009-03-02 H.J. Lu <hongjiu.lu@intel.com> + + * gcc.target/i386/stackalign/return-4.c: Scan andl/andq instead + of andl. + * gcc.target/i386/stackalign/return-5.c: Likewise. + * gcc.target/i386/stackalign/return-6.c: Likewise. + +2009-03-02 Richard Guenther <rguenther@suse.de> + Ira Rosen <irar@il.ibm.com> + + PR tree-optimization/39318 + * gfortran.dg/vect/pr39318.f90: New test. + +2009-03-01 Jan Hubicka <jh@suse.cz> + + * gcc.dg/debug/dwarf2/ipa-cp1.c: New testcase. + +2009-03-01 Jan Hubicka <jh@suse.cz> + + PR debug/39267 + * gcc.dg/debug/dwarf2/inline1.c: New testcase. + +2009-03-01 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/pack12.adb: New test. + +2009-02-26 H.J. Lu <hongjiu.lu@intel.com> + + PR c++/37789 + * other/pr37789.C: New. + +2009-02-26 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/39295 + * gfortran.dg/interface_25.f90: New test. + * gfortran.dg/interface_26.f90: New test. + +2009-02-26 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/39292 + * gfortran.dg/initialization_22.f90: New test. + +2009-02-25 H.J. Lu <hongjiu.lu@intel.com> + + PR rtl-optimization/39241 + * gcc.dg/torture/pr39241.c: New. + +2009-02-25 Martin Jambor <mjambor@suse.cz> + + PR tree-optimizations/39259 + * g++.dg/torture/pr39259.C: New testcase. + +2009-02-24 Richard Guenther <rguenther@suse.de> + + PR c++/39242 + * g++.dg/template/instantiate10.C: New testcase. + +2009-02-24 Richard Guenther <rguenther@suse.de> + Zdenek Dvorak <ook@ucw.cz> + + PR tree-optimization/39233 + * gcc.c-torture/execute/pr39233.c: New testcase. + +2009-02-23 Sebastian Pop <sebastian.pop@amd.com> + + PR tree-optimization/39260 + * gcc.dg/graphite/pr39260.c: New. + +2009-02-23 H.J. Lu <hongjiu.lu@intel.com> + + * g++.dg/init/static-init1.C: Replace int with __PTRDIFF_TYPE__. + +2009-02-23 H.J. Lu <hongjiu.lu@intel.com> + + PR c++/36411 + * g++.dg/template/void14.C: New. + +2009-02-23 Jason Merrill <jason@redhat.com> + + PR c++/38880 + * g++.dg/init/const7.C: Remove XFAIL. + * g++.dg/init/static-init1.C: New test. + + * g++.dg/cpp0x/initlist14.C: New test. + +2009-02-21 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/38914 * bound_simplification_2.f90: New test case. @@ -8,7 +128,7 @@ * gcc.dg/cpp/include4.c: New test. -2008-02-21 Uros Bizjak <ubizjak@gmail.com> +2009-02-21 Uros Bizjak <ubizjak@gmail.com> PR target/39256 * gcc.target/i386/abi-2.c: New. @@ -729,7 +849,7 @@ * gcc.target/arm/neon-cond-1.c: New test. -2008-01-23 Paolo Bonzini <bonzini@gnu.org> +2009-01-23 Paolo Bonzini <bonzini@gnu.org> PR tree-optimization/38932 * gcc.dg/pr38932.c: New. @@ -819,7 +939,7 @@ PR target/38902 * gcc.dg/pr38902.c: New. -2008-01-20 Paolo Bonzini <bonzini@gnu.org> +2009-01-20 Paolo Bonzini <bonzini@gnu.org> PR target/38868 * gfortran.dg/pr38868.f: New testcase. @@ -936,7 +1056,7 @@ PR c++/37646 * g++.dg/conversion/memfn2.C: New test. -2008-01-15 Steve Ellcey <sje@cup.hp.com> +2009-01-15 Steve Ellcey <sje@cup.hp.com> PR c++/38357 * g++.dg/template/crash87.C: New test. diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist14.C b/gcc/testsuite/g++.dg/cpp0x/initlist14.C new file mode 100644 index 00000000000..bb67f3e54da --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist14.C @@ -0,0 +1,19 @@ +// Bug: We weren't doing the normal replacement of array with pointer +// for deduction in the context of a call because of the initializer list. +// { dg-options "-std=c++0x" } + +#include <initializer_list> + +struct string +{ + string (const char *); +}; + +template <class T> +struct vector +{ + template <class U> + vector (std::initializer_list<U>); +}; + +vector<string> v = { "a", "b", "c" }; diff --git a/gcc/testsuite/g++.dg/init/const7.C b/gcc/testsuite/g++.dg/init/const7.C index 348bd58d690..18d04625db2 100644 --- a/gcc/testsuite/g++.dg/init/const7.C +++ b/gcc/testsuite/g++.dg/init/const7.C @@ -9,5 +9,5 @@ short offsets[1] = { // This ensures that we get a dump whether or not the bug is present. void fn() { } -// { dg-final { scan-tree-dump-not "initialization" "gimple" { xfail *-*-* } } } +// { dg-final { scan-tree-dump-not "initialization" "gimple" } } // { dg-final { cleanup-tree-dump "gimple" } } diff --git a/gcc/testsuite/g++.dg/init/static-init1.C b/gcc/testsuite/g++.dg/init/static-init1.C new file mode 100644 index 00000000000..298d1714002 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/static-init1.C @@ -0,0 +1,5 @@ +// Related to the patch for 38880. +// Make sure we don't think we can initialize a at compile time. + +char c; +short a[] = { (short)((__PTRDIFF_TYPE__)&c + (__PTRDIFF_TYPE__)&c) }; diff --git a/gcc/testsuite/g++.dg/other/pr37789.C b/gcc/testsuite/g++.dg/other/pr37789.C new file mode 100644 index 00000000000..728c2fcc6f2 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/pr37789.C @@ -0,0 +1,7 @@ +// PR c++/37789 +// { dg-do compile } + +void foo(): +{ // { dg-error "initializers|identifier" } + __FUNCTION__; +} diff --git a/gcc/testsuite/g++.dg/template/instantiate10.C b/gcc/testsuite/g++.dg/template/instantiate10.C new file mode 100644 index 00000000000..678e0194ae8 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/instantiate10.C @@ -0,0 +1,37 @@ +/* PR c++/39242, xplicit instantiation declaration prohibits implicit + instantiation of non-inline functions. */ +/* { dg-do compile } */ +/* { dg-options "-O" } */ + +class Rep { +public: + void unref() const { } + static void unref (const Rep * obj_r) { obj_r->unref(); } +}; +template<typename _Tp, typename _Bt = _Tp> +class RepPtrStore { + _Tp * _obj; + void _assign( _Tp * new_r ); +public: + ~RepPtrStore() { _assign( 0 ); } +}; +template<typename _Tp,typename _Bt> +void RepPtrStore<_Tp,_Bt>::_assign( _Tp * new_r ) +{ + Rep::unref( _obj ); +} +class RepPtrBase { }; +template<typename _Bt> class PtrBase : public RepPtrBase { }; +template<typename _Tp, typename _Bt = _Tp> +class Ptr : public PtrBase<_Bt> { + RepPtrStore<_Tp,_Bt> _ptr; +}; +class YCode; +class YStatement; +typedef Ptr<YStatement,YCode> YStatementPtr; +extern template class RepPtrStore<YStatement,YCode>; +class ExecutionEnvironment { + YStatementPtr m_statement; + ~ExecutionEnvironment() { }; +}; + diff --git a/gcc/testsuite/g++.dg/template/void14.C b/gcc/testsuite/g++.dg/template/void14.C new file mode 100644 index 00000000000..7781c618779 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/void14.C @@ -0,0 +1,7 @@ +// PR c++/36411 +// { dg-do compile } + +template<template<void> class> struct A // { dg-error "not a valid type" } +{ + template<template<int> class T> A<T> foo(); // { dg-error "mismatch|expected|invalid" } +}; diff --git a/gcc/testsuite/g++.dg/torture/pr39259.C b/gcc/testsuite/g++.dg/torture/pr39259.C new file mode 100644 index 00000000000..256181fa655 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr39259.C @@ -0,0 +1,40 @@ +// PR tree-optimization/39259 +// { dg-do compile } +// { dg-options "-O2" } + + +extern "C" int __mysetjmp () __attribute__ ((__returns_twice__)); + +class TContStatus {}; + +class TContEvent +{ +public: + inline void Execute () throw(); +}; + +class TCont +{ +public: + TContStatus ReadD (void* buf, int deadline) + { + TContEvent event; + event.Execute (); + return TContStatus(); + } + TContStatus ReadI (void *buf) + { + return ReadD (buf, 1); + } +}; + +void TContEvent::Execute () throw () +{ + __mysetjmp(); +} + +void Broken (TCont *mCont) +{ + mCont->ReadI(0); + mCont->ReadI(0); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/20090303-1.c b/gcc/testsuite/gcc.c-torture/compile/20090303-1.c new file mode 100644 index 00000000000..18a3d91fd1c --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20090303-1.c @@ -0,0 +1,20 @@ +/* The array offset became 0x1ffffffffffffffe via a conversion from + signed to unsigned HOST_WIDE_INT, causing an ICE compiling for + Thumb. */ + +int r (unsigned short *); +void s (unsigned short *, unsigned short *); + +int +f (int x) +{ + unsigned short a[1], c[1]; + + if (r (a)) + return x; + + if (c[-1]) + s (a, c); + + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/20090303-2.c b/gcc/testsuite/gcc.c-torture/compile/20090303-2.c new file mode 100644 index 00000000000..69cee36e0b9 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20090303-2.c @@ -0,0 +1,20 @@ +/* The array offset became 0x1ffffffffffffffe via a conversion from + signed to unsigned HOST_WIDE_INT, causing an ICE compiling for + Thumb. */ + +int r (unsigned short *); +void s (unsigned short *, unsigned short *); + +int +f (int x) +{ + unsigned short a[1], c[1]; + + if (r (a)) + return x; + + if (c[0x7fffffff]) + s (a, c); + + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr39233.c b/gcc/testsuite/gcc.c-torture/execute/pr39233.c new file mode 100644 index 00000000000..29f722395cf --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr39233.c @@ -0,0 +1,18 @@ +extern void abort (void); + +__attribute__((noinline)) void +foo (void *p) +{ + long l = (long) p; + if (l < 0 || l > 6) + abort (); +} + +int +main () +{ + short i; + for (i = 6; i >= 0; i--) + foo ((void *) (long) i); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr39339.c b/gcc/testsuite/gcc.c-torture/execute/pr39339.c new file mode 100644 index 00000000000..539ac0646ef --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr39339.c @@ -0,0 +1,81 @@ +struct C +{ + unsigned int c; + struct D + { + unsigned int columns : 4; + unsigned int fore : 9; + unsigned int back : 9; + unsigned int fragment : 1; + unsigned int standout : 1; + unsigned int underline : 1; + unsigned int strikethrough : 1; + unsigned int reverse : 1; + unsigned int blink : 1; + unsigned int half : 1; + unsigned int bold : 1; + unsigned int invisible : 1; + unsigned int pad : 1; + } attr; +}; + +struct A +{ + struct C *data; + unsigned int len; +}; + +struct B +{ + struct A *cells; + unsigned char soft_wrapped : 1; +}; + +struct E +{ + long row, col; + struct C defaults; +}; + +__attribute__ ((noinline)) +void foo (struct E *screen, unsigned int c, int columns, struct B *row) +{ + struct D attr; + long col; + int i; + col = screen->col; + attr = screen->defaults.attr; + attr.columns = columns; + row->cells->data[col].c = c; + row->cells->data[col].attr = attr; + col++; + attr.fragment = 1; + for (i = 1; i < columns; i++) + { + row->cells->data[col].c = c; + row->cells->data[col].attr = attr; + col++; + } +} + +int +main (void) +{ + struct E e = {.row = 5,.col = 0,.defaults = + {6, {-1, -1, -1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}} }; + struct C c[4]; + struct A a = { c, 4 }; + struct B b = { &a, 1 }; + struct D d; + __builtin_memset (&c, 0, sizeof c); + foo (&e, 65, 2, &b); + d = e.defaults.attr; + d.columns = 2; + if (__builtin_memcmp (&d, &c[0].attr, sizeof d)) + __builtin_abort (); + d.fragment = 1; + if (__builtin_memcmp (&d, &c[1].attr, sizeof d)) + __builtin_abort (); + return 0; +} + diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/inline1.c b/gcc/testsuite/gcc.dg/debug/dwarf2/inline1.c new file mode 100644 index 00000000000..11c8fad7841 --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/inline1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -gdwarf-2 -dA" } */ +void e(int); +__attribute__ ((always_inline)) inline int +t(int function_parameter) +{ + e(function_parameter); +} + +void test (int function_parameter2) +{ + t(function_parameter2); +} + +/* Verify that we get both function_parameter and function_parameter2 declared + in test. Overall we should have 3 variables with location defined (also + function_parameter in offline copy of t. */ +/* { dg-final { scan-assembler-times " DW_AT_location" 3 } } */ diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c b/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c new file mode 100644 index 00000000000..7442dab19f9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -gdwarf-2 -dA" } */ +void q(int p); +static void +t(int constant_propagated_par) +{ + int local_var = constant_propagated_par + 1; + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); +} +main() +{ + t(5); + t(5); + t(5); + t(5); + t(5); + t(5); + t(5); +} +/* { dg-final { scan-assembler "local_var" } } */ diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/static1.c b/gcc/testsuite/gcc.dg/debug/dwarf2/static1.c new file mode 100644 index 00000000000..b9b5d0b3743 --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/static1.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -gdwarf-2" } */ +void +main(void) +{ + static int unused_local_var; +} +/* { dg-final { scan-assembler "unused_local_var" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/pr39260.c b/gcc/testsuite/gcc.dg/graphite/pr39260.c new file mode 100644 index 00000000000..066b5bde8c2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr39260.c @@ -0,0 +1,17 @@ +/* { dg-options "-O2 -fgraphite-identity -ffast-math" } */ + +VBR_encode_frame (int mode_gr, int channels_out, int max_bits[2][2]) +{ + int max_nbits_ch[2][2]; + int gr, ch; + for (gr = 0; gr < mode_gr; ++gr) + { + float f[2], s = 0; + for (ch = 0; ch < channels_out; ++ch) + if (max_nbits_ch[gr][ch] > 0) + s += f[ch]; + for (ch = 0; ch < channels_out; ++ch) + if (s > 0) + max_nbits_ch[gr][ch] = 7680 * f[ch] / s; + } +} diff --git a/gcc/testsuite/gcc.dg/graphite/pr39335.c b/gcc/testsuite/gcc.dg/graphite/pr39335.c new file mode 100644 index 00000000000..c86e03ab73a --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr39335.c @@ -0,0 +1,20 @@ +/* { dg-options "-O2 -floop-interchange" } */ + +typedef unsigned char byte; +typedef struct gx_device_s gx_device; +typedef struct gs_devn_params_s gs_devn_params; +typedef struct gs_devn_params_s { + struct compressed_color_list_s * compressed_color_list; +} gs_devn_params_t; +int devn_unpack_row(gx_device * dev, int num_comp, + gs_devn_params * pdevn_params, int width, byte * in, + byte * out) +{ + int i, comp_num, pixel_num; + if (pdevn_params->compressed_color_list == ((void *)0)) + { + for (pixel_num = 0; pixel_num < width; pixel_num++) + for (i = 0; i < num_comp; i++) + *out++ = *in++; + } +} diff --git a/gcc/testsuite/gcc.dg/graphite/pr39335_1.c b/gcc/testsuite/gcc.dg/graphite/pr39335_1.c new file mode 100644 index 00000000000..257c2c99436 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr39335_1.c @@ -0,0 +1,9 @@ +/* { dg-options "-O2 -floop-interchange" } */ + +void crash_me(int num1, int num2, char * in, char * out) +{ + int i, j; + for (j = 0; j < num1; j++) + for (i = 0; i < num2; i++) + *out++ = *in++; +} diff --git a/gcc/testsuite/gcc.dg/pr39343.c b/gcc/testsuite/gcc.dg/pr39343.c new file mode 100644 index 00000000000..70df59ef098 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr39343.c @@ -0,0 +1,29 @@ +/* PR tree-optimization/39343 */ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +extern void abort (void); + +extern inline __attribute__ ((__always_inline__)) int +foo (char *dest) +{ + return __builtin_object_size (dest, 1); +} + +struct S +{ + union + { + struct { int a, b; char c, d; } f; + struct { struct { int a, b; char c, d[255]; } e; } g; + } u; +}; + +int +main (void) +{ + struct S s; + if (foo (s.u.g.e.d) != 255) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr39241.c b/gcc/testsuite/gcc.dg/torture/pr39241.c new file mode 100644 index 00000000000..860a04d738a --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr39241.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-w" } */ + +static inline int +foo (float f) +{ + return *((int *) &f) - 1; +} + +float +bar (float x, float y, float *z) +{ + float c = y < 0.002f ? 0.002f : y; + float d = x < c ? c : x; + return z[foo (c)] + z[foo (d * 255.0f)]; +} diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-1.c b/gcc/testsuite/gcc.dg/vect/vect-complex-1.c index 9be88644b63..e2d0adcf9fb 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-complex-1.c +++ b/gcc/testsuite/gcc.dg/vect/vect-complex-1.c @@ -6,19 +6,19 @@ #define N 16 -_Complex float a[N] = +_Complex float a[N] __attribute__ ((__aligned__(16))) = { 10.0F + 20.0iF, 11.0F + 21.0iF, 12.0F + 22.0iF, 13.0F + 23.0iF, 14.0F + 24.0iF, 15.0F + 25.0iF, 16.0F + 26.0iF, 17.0F + 27.0iF, 18.0F + 28.0iF, 19.0F + 29.0iF, 20.0F + 30.0iF, 21.0F + 31.0iF, 22.0F + 32.0iF, 23.0F + 33.0iF, 24.0F + 34.0iF, 25.0F + 35.0iF }; -_Complex float b[N] = +_Complex float b[N] __attribute__ ((__aligned__(16))) = { 30.0F + 40.0iF, 31.0F + 41.0iF, 32.0F + 42.0iF, 33.0F + 43.0iF, 34.0F + 44.0iF, 35.0F + 45.0iF, 36.0F + 46.0iF, 37.0F + 47.0iF, 38.0F + 48.0iF, 39.0F + 49.0iF, 40.0F + 50.0iF, 41.0F + 51.0iF, 42.0F + 52.0iF, 43.0F + 53.0iF, 44.0F + 54.0iF, 45.0F + 55.0iF }; -_Complex float c[N]; -_Complex float res[N] = +_Complex float c[N] __attribute__ ((__aligned__(16))); +_Complex float res[N] __attribute__ ((__aligned__(16))) = { 40.0F + 60.0iF, 42.0F + 62.0iF, 44.0F + 64.0iF, 46.0F + 66.0iF, 48.0F + 68.0iF, 50.0F + 70.0iF, 52.0F + 72.0iF, 54.0F + 74.0iF, 56.0F + 76.0iF, 58.0F + 78.0iF, 60.0F + 80.0iF, 62.0F + 82.0iF, diff --git a/gcc/testsuite/gcc.dg/vect/vect-iv-6.c b/gcc/testsuite/gcc.dg/vect/vect-iv-6.c index b1a0d53e7e2..a0863cfe064 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-iv-6.c +++ b/gcc/testsuite/gcc.dg/vect/vect-iv-6.c @@ -46,5 +46,5 @@ int main (void) return main1 (3); } -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {xfail vect_no_align } } } */ +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.target/i386/stackalign/return-4.c b/gcc/testsuite/gcc.target/i386/stackalign/return-4.c index c66c369c8fc..a1e35dcc213 100644 --- a/gcc/testsuite/gcc.target/i386/stackalign/return-4.c +++ b/gcc/testsuite/gcc.target/i386/stackalign/return-4.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mpreferred-stack-boundary=4" } */ -/* { dg-final { scan-assembler-not "andl\[^\\n\]*-64,\[^\\n\]*sp" } } */ +/* { dg-final { scan-assembler-not "and\[lq\]?\[^\\n\]*-64,\[^\\n\]*sp" } } */ /* This compile only test is to detect an assertion failure in stack branch development. */ diff --git a/gcc/testsuite/gcc.target/i386/stackalign/return-5.c b/gcc/testsuite/gcc.target/i386/stackalign/return-5.c index 84531ddfe29..208bc0d8ad6 100644 --- a/gcc/testsuite/gcc.target/i386/stackalign/return-5.c +++ b/gcc/testsuite/gcc.target/i386/stackalign/return-5.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mpreferred-stack-boundary=4" } */ -/* { dg-final { scan-assembler-not "andl\[^\\n\]*-64,\[^\\n\]*sp" } } */ +/* { dg-final { scan-assembler-not "and\[lq\]?\[^\\n\]*-64,\[^\\n\]*sp" } } */ /* This compile only test is to detect an assertion failure in stack branch development. */ diff --git a/gcc/testsuite/gcc.target/i386/stackalign/return-6.c b/gcc/testsuite/gcc.target/i386/stackalign/return-6.c index ceadbad1acf..b1aa1eac888 100644 --- a/gcc/testsuite/gcc.target/i386/stackalign/return-6.c +++ b/gcc/testsuite/gcc.target/i386/stackalign/return-6.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mpreferred-stack-boundary=4" } */ -/* { dg-final { scan-assembler-not "andl\[^\\n\]*-64,\[^\\n\]*sp" } } */ +/* { dg-final { scan-assembler-not "and\[lq\]?\[^\\n\]*-64,\[^\\n\]*sp" } } */ /* This compile only test is to detect an assertion failure in stack branch development. */ diff --git a/gcc/testsuite/gfortran.dg/gomp/pr39354.f90 b/gcc/testsuite/gfortran.dg/gomp/pr39354.f90 new file mode 100644 index 00000000000..3b9c327849a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/pr39354.f90 @@ -0,0 +1,37 @@ +! PR fortran/39354 +! { dg-do compile } +! { dg-options "-fopenmp" } + SUBROUTINE ltest(l1, l2, l3, l4, r1, r2, r3, r4) + LOGICAL l1, l2, l3, l4, r1, r2, r3, r4 +!$OMP ATOMIC + l1 = l1 .and. r1 +!$OMP ATOMIC + l2 = l2 .or. r2 +!$OMP ATOMIC + l3 = l3 .eqv. r3 +!$OMP ATOMIC + l4 = l4 .neqv. r4 + END + SUBROUTINE itest(l1, l2, l3, l4, l5, l6, l7, l8, l9, & +& r1, r2, r3, r4, r5, r6, r7, r8, r9) + INTEGER l1, l2, l3, l4, l5, l6, l7, l8, l9, & +& r1, r2, r3, r4, r5, r6, r7, r8, r9 +!$OMP ATOMIC + l1 = l1 + r1 +!$OMP ATOMIC + l2 = l2 - r2 +!$OMP ATOMIC + l3 = l3 * r3 +!$OMP ATOMIC + l4 = l4 / r4 +!$OMP ATOMIC + l5 = max (l5, r1, r5) +!$OMP ATOMIC + l6 = min (r1, r6, l6) +!$OMP ATOMIC + l7 = iand (l7, r7) +!$OMP ATOMIC + l8 = ior (r8, l8) +!$OMP ATOMIC + l9 = ieor (l9, r9) + END diff --git a/gcc/testsuite/gfortran.dg/initialization_22.f90 b/gcc/testsuite/gfortran.dg/initialization_22.f90 new file mode 100644 index 00000000000..f788109e66a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/initialization_22.f90 @@ -0,0 +1,10 @@ +! { dg-do run } +! tests the fix for PR39292, where the intitialization expression +! did not simplify and caused an ICE in gfc_conv_array_initializer. +! +! Contributed by Richard Guenther <rguenth@gcc.gnu.org> +! + integer :: n + real, dimension(2) :: a = (/ ( (float(n))**(1.0), n=1,2) /) + if (any (a .ne. (/ ( (float(n))**(1.0), n=1,2) /))) call abort +end diff --git a/gcc/testsuite/gfortran.dg/interface_25.f90 b/gcc/testsuite/gfortran.dg/interface_25.f90 new file mode 100644 index 00000000000..0118cd563c7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/interface_25.f90 @@ -0,0 +1,45 @@ +! { dg-do compile } +! Tests the fix for PR39295, in which the check of the interfaces +! at lines 25 and 42 failed because opfunc1 is identified as a +! function by usage, whereas opfunc2 is not. +! +! Contributed by Jon Hurst <jhurst@ucar.edu> +! +MODULE funcs +CONTAINS + INTEGER FUNCTION test1(a,b,opfunc1) + INTEGER :: a,b + INTEGER, EXTERNAL :: opfunc1 + test1 = opfunc1( a, b ) + END FUNCTION test1 + INTEGER FUNCTION sumInts(a,b) + INTEGER :: a,b + sumInts = a + b + END FUNCTION sumInts +END MODULE funcs + +PROGRAM test + USE funcs + INTEGER :: rs + INTEGER, PARAMETER :: a = 2, b = 1 + rs = recSum( a, b, test1, sumInts ) + write(*,*) "Results", rs +CONTAINS + RECURSIVE INTEGER FUNCTION recSum( a,b,UserFunction,UserOp ) RESULT( res ) + IMPLICIT NONE + INTEGER :: a,b + INTERFACE + INTEGER FUNCTION UserFunction(a,b,opfunc2) + INTEGER :: a,b + INTEGER, EXTERNAL :: opfunc2 + END FUNCTION UserFunction + END INTERFACE + INTEGER, EXTERNAL :: UserOp + + res = UserFunction( a,b, UserOp ) + + if( res .lt. 10 ) then + res = recSum( a, res, UserFunction, UserOp ) + end if + END FUNCTION recSum +END PROGRAM test diff --git a/gcc/testsuite/gfortran.dg/interface_26.f90 b/gcc/testsuite/gfortran.dg/interface_26.f90 new file mode 100644 index 00000000000..9f7fa4ef3f6 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/interface_26.f90 @@ -0,0 +1,46 @@ +! { dg-do compile } +! Tests the fix for PR39295, in which the check of the interfaces +! at lines 26 and 43 failed because opfunc1 is identified as a +! function by usage, whereas opfunc2 is not. This testcase checks +! that TKR is stll OK in these cases. +! +! Contributed by Jon Hurst <jhurst@ucar.edu> +! +MODULE funcs +CONTAINS + INTEGER FUNCTION test1(a,b,opfunc1) + INTEGER :: a,b + INTEGER, EXTERNAL :: opfunc1 + test1 = opfunc1( a, b ) + END FUNCTION test1 + INTEGER FUNCTION sumInts(a,b) + INTEGER :: a,b + sumInts = a + b + END FUNCTION sumInts +END MODULE funcs + +PROGRAM test + USE funcs + INTEGER :: rs + INTEGER, PARAMETER :: a = 2, b = 1 + rs = recSum( a, b, test1, sumInts ) ! { dg-error "Type/rank mismatch in argument" } + write(*,*) "Results", rs +CONTAINS + RECURSIVE INTEGER FUNCTION recSum( a,b,UserFunction,UserOp ) RESULT( res ) + IMPLICIT NONE + INTEGER :: a,b + INTERFACE + INTEGER FUNCTION UserFunction(a,b,opfunc2) + INTEGER :: a,b + REAL, EXTERNAL :: opfunc2 + END FUNCTION UserFunction + END INTERFACE + INTEGER, EXTERNAL :: UserOp + + res = UserFunction( a,b, UserOp ) + + if( res .lt. 10 ) then + res = recSum( a, res, UserFunction, UserOp ) + end if + END FUNCTION recSum +END PROGRAM test diff --git a/gcc/testsuite/gfortran.dg/vect/pr39318.f90 b/gcc/testsuite/gfortran.dg/vect/pr39318.f90 new file mode 100644 index 00000000000..9e58a17b526 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/vect/pr39318.f90 @@ -0,0 +1,21 @@ +! { dg-do compile } +! { dg-options "-c -fopenmp -fexceptions -O2 -ftree-vectorize" } + + subroutine adw_trajsp (F_u,i0,in,j0,jn) + implicit none + real F_u(*) + integer i0,in,j0,jn + integer n,i,j + real*8 xsin(i0:in,j0:jn) +!$omp parallel do private(xsin) + do j=j0,jn + do i=i0,in + xsin(i,j) = sqrt(F_u(n)) + end do + end do +!$omp end parallel do + return + end + +! { dg-final { cleanup-tree-dump "vect" } } + diff --git a/gcc/testsuite/gnat.dg/pack12.adb b/gcc/testsuite/gnat.dg/pack12.adb new file mode 100644 index 00000000000..640ace325de --- /dev/null +++ b/gcc/testsuite/gnat.dg/pack12.adb @@ -0,0 +1,31 @@ +-- { dg-do run } + +procedure Pack12 is + + type U16 is mod 2 ** 16; + + type Key is record + Value : U16; + Valid : Boolean; + end record; + + type Key_Buffer is record + Current, Latch : Key; + end record; + + type Block is record + Keys : Key_Buffer; + Stamp : U16; + end record; + pragma Pack (Block); + + My_Block : Block; + My_Stamp : constant := 16#1234#; + +begin + My_Block.Stamp := My_Stamp; + My_Block.Keys.Latch := My_Block.Keys.Current; + if My_Block.Stamp /= My_Stamp then + raise Program_Error; + end if; +end; diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 03c1779a600..115f992ee03 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2288,7 +2288,8 @@ proc check_effective_target_vect_short_mult { } { || [istarget spu-*-*] || [istarget i?86-*-*] || [istarget x86_64-*-*] - || [istarget powerpc*-*-*] } { + || [istarget powerpc*-*-*] + || [check_effective_target_arm32] } { set et_vect_short_mult_saved 1 } } diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 106c58fd46d..5632a8930bc 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -221,6 +221,11 @@ execute_build_cfg (void) build_gimple_cfg (body); gimple_set_body (current_function_decl, NULL); + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "Scope blocks:\n"); + dump_scope_blocks (dump_file, dump_flags); + } return 0; } diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 96c098ec376..01953b59332 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -991,7 +991,7 @@ unsigned int tree_ssa_prefetch_arrays (void); unsigned int remove_empty_loops (void); void tree_ssa_iv_optimize (void); unsigned tree_predictive_commoning (void); -tree canonicalize_loop_ivs (struct loop *, htab_t, tree); +tree canonicalize_loop_ivs (struct loop *, htab_t, tree *); bool parallelize_loops (void); bool loop_only_exit_p (const struct loop *, const_edge); @@ -1153,6 +1153,7 @@ void compute_call_used_vars (void); /* In tree-ssa-live.c */ extern void remove_unused_locals (void); +extern void dump_scope_blocks (FILE *, int); /* In tree-ssa-address.c */ diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 075e575d11b..63392e21c4b 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -122,7 +122,6 @@ eni_weights eni_time_weights; static tree declare_return_variable (copy_body_data *, tree, tree, tree *); static bool inlinable_function_p (tree); static void remap_block (tree *, copy_body_data *); -static tree remap_decls (tree, copy_body_data *); static void copy_bind_expr (tree *, int *, copy_body_data *); static tree mark_local_for_remap_r (tree *, int *, void *); static void unsave_expr_1 (tree); @@ -427,8 +426,65 @@ remap_type (tree type, copy_body_data *id) return tmp; } +/* Return previously remapped type of TYPE in ID. Return NULL if TYPE + is NULL or TYPE has not been remapped before. */ + +static tree +remapped_type (tree type, copy_body_data *id) +{ + tree *node; + + if (type == NULL) + return type; + + /* See if we have remapped this type. */ + node = (tree *) pointer_map_contains (id->decl_map, type); + if (node) + return *node; + else + return NULL; +} + + /* The type only needs remapping if it's variably modified. */ +/* Decide if DECL can be put into BLOCK_NONLOCAL_VARs. */ + +static bool +can_be_nonlocal (tree decl, copy_body_data *id) +{ + /* We can not duplicate function decls. */ + if (TREE_CODE (decl) == FUNCTION_DECL) + return true; + + /* Local static vars must be non-local or we get multiple declaration + problems. */ + if (TREE_CODE (decl) == VAR_DECL + && !auto_var_in_fn_p (decl, id->src_fn)) + return true; + + /* At the moment dwarf2out can handle only these types of nodes. We + can support more later. */ + if (TREE_CODE (decl) != VAR_DECL && TREE_CODE (decl) != PARM_DECL) + return false; + + /* We must use global type. We call remapped_type instead of + remap_type since we don't want to remap this type here if it + hasn't been remapped before. */ + if (TREE_TYPE (decl) != remapped_type (TREE_TYPE (decl), id)) + return false; + + /* Wihtout SSA we can't tell if variable is used. */ + if (!gimple_in_ssa_p (cfun)) + return false; + + /* Live variables must be copied so we can attach DECL_RTL. */ + if (var_ann (decl)) + return false; + + return true; +} + static tree -remap_decls (tree decls, copy_body_data *id) +remap_decls (tree decls, VEC(tree,gc) **nonlocalized_list, copy_body_data *id) { tree old_var; tree new_decls = NULL_TREE; @@ -437,16 +493,18 @@ remap_decls (tree decls, copy_body_data *id) for (old_var = decls; old_var; old_var = TREE_CHAIN (old_var)) { tree new_var; + tree origin_var = DECL_ORIGIN (old_var); - /* We cannot chain the local static declarations into the local_decls - as we can't duplicate them or break one decl rule. Go ahead - and link them into local_decls. */ - - if (!auto_var_in_fn_p (old_var, id->src_fn) - && !DECL_EXTERNAL (old_var)) + if (can_be_nonlocal (old_var, id)) { - cfun->local_decls = tree_cons (NULL_TREE, old_var, - cfun->local_decls); + if (TREE_CODE (old_var) == VAR_DECL + && (var_ann (old_var) || !gimple_in_ssa_p (cfun))) + cfun->local_decls = tree_cons (NULL_TREE, old_var, + cfun->local_decls); + if (debug_info_level > DINFO_LEVEL_TERSE + && !DECL_IGNORED_P (old_var) + && nonlocalized_list) + VEC_safe_push (tree, gc, *nonlocalized_list, origin_var); continue; } @@ -456,8 +514,16 @@ remap_decls (tree decls, copy_body_data *id) /* If we didn't remap this variable, we can't mess with its TREE_CHAIN. If we remapped this variable to the return slot, it's already declared somewhere else, so don't declare it here. */ - if (!new_var || new_var == id->retvar) + + if (new_var == id->retvar) ; + else if (!new_var) + { + if (debug_info_level > DINFO_LEVEL_TERSE + && !DECL_IGNORED_P (old_var) + && nonlocalized_list) + VEC_safe_push (tree, gc, *nonlocalized_list, origin_var); + } else { gcc_assert (DECL_P (new_var)); @@ -485,10 +551,14 @@ remap_block (tree *block, copy_body_data *id) TREE_USED (new_block) = TREE_USED (old_block); BLOCK_ABSTRACT_ORIGIN (new_block) = old_block; BLOCK_SOURCE_LOCATION (new_block) = BLOCK_SOURCE_LOCATION (old_block); + BLOCK_NONLOCALIZED_VARS (new_block) + = VEC_copy (tree, gc, BLOCK_NONLOCALIZED_VARS (old_block)); *block = new_block; /* Remap its variables. */ - BLOCK_VARS (new_block) = remap_decls (BLOCK_VARS (old_block), id); + BLOCK_VARS (new_block) = remap_decls (BLOCK_VARS (old_block), + &BLOCK_NONLOCALIZED_VARS (new_block), + id); fn = id->dst_fn; @@ -549,7 +619,7 @@ copy_bind_expr (tree *tp, int *walk_subtrees, copy_body_data *id) if (BIND_EXPR_VARS (*tp)) /* This will remap a lot of the same decls again, but this should be harmless. */ - BIND_EXPR_VARS (*tp) = remap_decls (BIND_EXPR_VARS (*tp), id); + BIND_EXPR_VARS (*tp) = remap_decls (BIND_EXPR_VARS (*tp), NULL, id); } @@ -595,7 +665,7 @@ copy_gimple_bind (gimple stmt, copy_body_data *id) harmless. */ new_vars = gimple_bind_vars (stmt); if (new_vars) - new_vars = remap_decls (new_vars, id); + new_vars = remap_decls (new_vars, NULL, id); new_bind = gimple_build_bind (new_vars, new_body, new_block); @@ -1398,6 +1468,7 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale, { struct cgraph_node *node; struct cgraph_edge *edge; + int flags; switch (id->transform_call_graph_edges) { @@ -1429,6 +1500,13 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale, default: gcc_unreachable (); } + + flags = gimple_call_flags (stmt); + + if (flags & ECF_MAY_BE_ALLOCA) + cfun->calls_alloca = true; + if (flags & ECF_RETURNS_TWICE) + cfun->calls_setjmp = true; } /* If you think we can abort here, you are wrong. @@ -1745,10 +1823,6 @@ initialize_cfun (tree new_fndecl, tree callee_fndecl, gcov_type count, gcc_assert (cfun->cfg == NULL); gcc_assert (cfun->decl == new_fndecl); - /* No need to copy; this is initialized later in compilation. */ - gcc_assert (!src_cfun->calls_setjmp); - gcc_assert (!src_cfun->calls_alloca); - /* Copy items we preserve during clonning. */ cfun->static_chain_decl = src_cfun->static_chain_decl; cfun->nonlocal_goto_save_area = src_cfun->nonlocal_goto_save_area; @@ -2044,6 +2118,7 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn, We might want to introduce a notion that single SSA_NAME might represent multiple variables for purposes of debugging. */ if (gimple_in_ssa_p (cfun) && rhs && def && is_gimple_reg (p) + && optimize && (TREE_CODE (rhs) == SSA_NAME || is_gimple_min_invariant (rhs)) && !SSA_NAME_OCCURS_IN_ABNORMAL_PHI (def)) @@ -2054,7 +2129,7 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn, /* If the value of argument is never used, don't care about initializing it. */ - if (gimple_in_ssa_p (cfun) && !def && is_gimple_reg (p)) + if (optimize && gimple_in_ssa_p (cfun) && !def && is_gimple_reg (p)) { gcc_assert (!value || !TREE_SIDE_EFFECTS (value)); return NULL; @@ -3301,26 +3376,29 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id) DECL_NO_TBAA_P (retvar) = 1; } - /* This is it. Duplicate the callee body. Assume callee is - pre-gimplified. Note that we must not alter the caller - function in any way before this point, as this CALL_EXPR may be - a self-referential call; if we're calling ourselves, we need to - duplicate our body before altering anything. */ - copy_body (id, bb->count, bb->frequency, bb, return_block); - /* Add local vars in this inlined callee to caller. */ t_step = id->src_cfun->local_decls; for (; t_step; t_step = TREE_CHAIN (t_step)) { var = TREE_VALUE (t_step); if (TREE_STATIC (var) && !TREE_ASM_WRITTEN (var)) - cfun->local_decls = tree_cons (NULL_TREE, var, - cfun->local_decls); - else + { + if (var_ann (var) && referenced_var_check_and_insert (var)) + cfun->local_decls = tree_cons (NULL_TREE, var, + cfun->local_decls); + } + else if (!can_be_nonlocal (var, id)) cfun->local_decls = tree_cons (NULL_TREE, remap_decl (var, id), - cfun->local_decls); + cfun->local_decls); } + /* This is it. Duplicate the callee body. Assume callee is + pre-gimplified. Note that we must not alter the caller + function in any way before this point, as this CALL_EXPR may be + a self-referential call; if we're calling ourselves, we need to + duplicate our body before altering anything. */ + copy_body (id, bb->count, bb->frequency, bb, return_block); + /* Clean up. */ pointer_map_destroy (id->decl_map); id->decl_map = st; @@ -3901,7 +3979,7 @@ replace_locals_stmt (gimple_stmt_iterator *gsip, /* This will remap a lot of the same decls again, but this should be harmless. */ if (gimple_bind_vars (stmt)) - gimple_bind_set_vars (stmt, remap_decls (gimple_bind_vars (stmt), id)); + gimple_bind_set_vars (stmt, remap_decls (gimple_bind_vars (stmt), NULL, id)); } /* Keep iterating. */ @@ -4136,7 +4214,7 @@ copy_arguments_for_versioning (tree orig_parm, copy_body_data * id, *parg = new_tree; parg = &TREE_CHAIN (new_tree); } - else + else if (!pointer_map_contains (id->decl_map, arg)) { /* Make an equivalent VAR_DECL. If the argument was used as temporary variable later in function, the uses will be @@ -4216,6 +4294,12 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, old_version_node = cgraph_node (old_decl); new_version_node = cgraph_node (new_decl); + /* Output the inlining info for this abstract function, since it has been + inlined. If we don't do this now, we can lose the information about the + variables in the function when the blocks get blown away as soon as we + remove the cgraph node. */ + (*debug_hooks->outlining_inline_function) (old_decl); + DECL_ARTIFICIAL (new_decl) = 1; DECL_ABSTRACT_ORIGIN (new_decl) = DECL_ORIGIN (old_decl); @@ -4259,16 +4343,6 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, DECL_STRUCT_FUNCTION (new_decl)->static_chain_decl = copy_static_chain (DECL_STRUCT_FUNCTION (old_decl)->static_chain_decl, &id); - /* Copy the function's arguments. */ - if (DECL_ARGUMENTS (old_decl) != NULL_TREE) - DECL_ARGUMENTS (new_decl) = - copy_arguments_for_versioning (DECL_ARGUMENTS (old_decl), &id, - args_to_skip, &vars); - - DECL_INITIAL (new_decl) = remap_blocks (DECL_INITIAL (id.src_fn), &id); - - /* Renumber the lexical scoping (non-code) blocks consecutively. */ - number_blocks (id.dst_fn); /* If there's a tree_map, prepare for substitution. */ if (tree_map) @@ -4303,6 +4377,16 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, VEC_safe_push (gimple, heap, init_stmts, init); } } + /* Copy the function's arguments. */ + if (DECL_ARGUMENTS (old_decl) != NULL_TREE) + DECL_ARGUMENTS (new_decl) = + copy_arguments_for_versioning (DECL_ARGUMENTS (old_decl), &id, + args_to_skip, &vars); + + DECL_INITIAL (new_decl) = remap_blocks (DECL_INITIAL (id.src_fn), &id); + + /* Renumber the lexical scoping (non-code) blocks consecutively. */ + number_blocks (id.dst_fn); declare_inline_vars (DECL_INITIAL (new_decl), vars); if (DECL_STRUCT_FUNCTION (old_decl)->local_decls != NULL_TREE) @@ -4313,7 +4397,7 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, tree var = TREE_VALUE (t_step); if (TREE_STATIC (var) && !TREE_ASM_WRITTEN (var)) cfun->local_decls = tree_cons (NULL_TREE, var, cfun->local_decls); - else + else if (!can_be_nonlocal (var, &id)) cfun->local_decls = tree_cons (NULL_TREE, remap_decl (var, &id), cfun->local_decls); diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index f1d7227e4c1..f2d0ff63f17 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -1321,16 +1321,20 @@ create_loop_fn (void) return decl; } -/* Bases all the induction variables in LOOP on a single induction variable - (unsigned with base 0 and step 1), whose final value is compared with - NIT. The induction variable is incremented in the loop latch. - REDUCTION_LIST describes the reductions in LOOP. Return the induction - variable that was created. */ +/* Bases all the induction variables in LOOP on a single induction + variable (unsigned with base 0 and step 1), whose final value is + compared with *NIT. When the IV type precision has to be larger + than *NIT type precision, *NIT is converted to the larger type, the + conversion code is inserted before the loop, and *NIT is updated to + the new definition. The induction variable is incremented in the + loop latch. REDUCTION_LIST describes the reductions in LOOP. + Return the induction variable that was created. */ tree -canonicalize_loop_ivs (struct loop *loop, htab_t reduction_list, tree nit) +canonicalize_loop_ivs (struct loop *loop, htab_t reduction_list, tree *nit) { - unsigned precision = TYPE_PRECISION (TREE_TYPE (nit)); + unsigned precision = TYPE_PRECISION (TREE_TYPE (*nit)); + unsigned original_precision = precision; tree res, type, var_before, val, atype, mtype; gimple_stmt_iterator gsi, psi; gimple phi, stmt; @@ -1338,6 +1342,7 @@ canonicalize_loop_ivs (struct loop *loop, htab_t reduction_list, tree nit) affine_iv iv; edge exit = single_dom_exit (loop); struct reduction_info *red; + gimple_seq stmts; for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi)) @@ -1351,6 +1356,14 @@ canonicalize_loop_ivs (struct loop *loop, htab_t reduction_list, tree nit) type = lang_hooks.types.type_for_size (precision, 1); + if (original_precision != precision) + { + *nit = fold_convert (type, *nit); + *nit = force_gimple_operand (*nit, &stmts, true, NULL_TREE); + if (stmts) + gsi_insert_seq_on_edge_immediate (loop_preheader_edge (loop), stmts); + } + gsi = gsi_last_bb (loop->latch); create_iv (build_int_cst_type (type, 0), build_int_cst (type, 1), NULL_TREE, loop, &gsi, true, &var_before, NULL); @@ -1410,7 +1423,7 @@ canonicalize_loop_ivs (struct loop *loop, htab_t reduction_list, tree nit) } gimple_cond_set_code (stmt, LT_EXPR); gimple_cond_set_lhs (stmt, var_before); - gimple_cond_set_rhs (stmt, nit); + gimple_cond_set_rhs (stmt, *nit); update_stmt (stmt); return var_before; @@ -1760,7 +1773,7 @@ gen_parallel_loop (struct loop *loop, htab_t reduction_list, free_original_copy_tables (); /* Base all the induction variables in LOOP on a single control one. */ - canonicalize_loop_ivs (loop, reduction_list, nit); + canonicalize_loop_ivs (loop, reduction_list, &nit); /* Ensure that the exit condition is the first statement in the loop. */ transform_to_exit_first_loop (loop, reduction_list, nit); diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 636e30b8f88..6149ff551f9 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -1713,16 +1713,6 @@ try_instantiate_multiple_fields (struct sra_elt *elt, tree f) gcc_assert (block && block->is_scalar); var = block->replacement; - - if ((bit & ~alchk) - || (HOST_WIDE_INT)size != tree_low_cst (DECL_SIZE (var), 1)) - { - block->replacement = fold_build3 (BIT_FIELD_REF, - TREE_TYPE (block->element), var, - bitsize_int (size), - bitsize_int (bit & ~alchk)); - } - block->in_bitfld_block = 2; /* Add the member fields to the group, such that they access @@ -1736,12 +1726,14 @@ try_instantiate_multiple_fields (struct sra_elt *elt, tree f) gcc_assert (fld && fld->is_scalar && !fld->replacement); fld->replacement = fold_build3 (BIT_FIELD_REF, field_type, var, - DECL_SIZE (f), + bitsize_int (TYPE_PRECISION (field_type)), bitsize_int ((TREE_INT_CST_LOW (DECL_FIELD_OFFSET (f)) * BITS_PER_UNIT + (TREE_INT_CST_LOW - (DECL_FIELD_BIT_OFFSET (f)))) + (DECL_FIELD_BIT_OFFSET (f))) + - (TREE_INT_CST_LOW + (TREE_OPERAND (block->element, 2)))) & ~alchk)); fld->in_bitfld_block = 1; } diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index d6027268a7d..5080cc32ce7 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -1942,8 +1942,7 @@ maybe_fold_offset_to_address (tree addr, tree offset, tree orig_type) || (TREE_CODE (orig) == COMPONENT_REF && TREE_CODE (TREE_TYPE (TREE_OPERAND (orig, 1))) == ARRAY_TYPE)) && (TREE_CODE (t) == ARRAY_REF - || (TREE_CODE (t) == COMPONENT_REF - && TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 1))) == ARRAY_TYPE)) + || TREE_CODE (t) == COMPONENT_REF) && !operand_equal_p (TREE_CODE (orig) == ARRAY_REF ? TREE_OPERAND (orig, 0) : orig, TREE_CODE (t) == ARRAY_REF diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index 8ebf30ec926..28a829caedf 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -485,10 +485,13 @@ remove_unused_scope_block_p (tree scope) next = &TREE_CHAIN (*t); /* Debug info of nested function refers to the block of the - function. */ + function. We might stil call it even if all statements + of function it was nested into was elliminated. + + TODO: We can actually look into cgraph to see if function + will be output to file. */ if (TREE_CODE (*t) == FUNCTION_DECL) unused = false; - /* Remove everything we don't generate debug info for. */ else if (DECL_IGNORED_P (*t)) { @@ -506,15 +509,24 @@ remove_unused_scope_block_p (tree scope) /* When we are not doing full debug info, we however can keep around only the used variables for cfgexpand's memory packing saving quite - a lot of memory. */ + a lot of memory. + + For sake of -g3, we keep around those vars but we don't count this as + use of block, so innermost block with no used vars and no instructions + can be considered dead. We only want to keep around blocks user can + breakpoint into and ask about value of optimized out variables. + + Similarly we need to keep around types at least until all variables of + all nested blocks are gone. We track no information on whether given + type is used or not. */ + else if (debug_info_level == DINFO_LEVEL_NORMAL || debug_info_level == DINFO_LEVEL_VERBOSE /* Removing declarations before inlining is going to affect DECL_UID that in turn is going to affect hashtables and code generation. */ || !cfun->after_inlining) - unused = false; - + ; else { *t = TREE_CHAIN (*t); @@ -529,41 +541,60 @@ remove_unused_scope_block_p (tree scope) { tree next = BLOCK_CHAIN (*t); tree supercontext = BLOCK_SUPERCONTEXT (*t); + *t = BLOCK_SUBBLOCKS (*t); - gcc_assert (!BLOCK_CHAIN (*t)); + while (BLOCK_CHAIN (*t)) + { + BLOCK_SUPERCONTEXT (*t) = supercontext; + t = &BLOCK_CHAIN (*t); + } BLOCK_CHAIN (*t) = next; BLOCK_SUPERCONTEXT (*t) = supercontext; t = &BLOCK_CHAIN (*t); nsubblocks ++; } else - { - gcc_assert (!BLOCK_VARS (*t)); - *t = BLOCK_CHAIN (*t); - } + *t = BLOCK_CHAIN (*t); } else { t = &BLOCK_CHAIN (*t); nsubblocks ++; } + + + if (!unused) + ; /* Outer scope is always used. */ - if (!BLOCK_SUPERCONTEXT (scope) - || TREE_CODE (BLOCK_SUPERCONTEXT (scope)) == FUNCTION_DECL) + else if (!BLOCK_SUPERCONTEXT (scope) + || TREE_CODE (BLOCK_SUPERCONTEXT (scope)) == FUNCTION_DECL) unused = false; - /* If there are more than one live subblocks, it is used. */ - else if (nsubblocks > 1) + /* Innermost blocks with no live variables nor statements can be always + eliminated. */ + else if (!nsubblocks) + ; + /* If there are live subblocks and we still have some unused variables + or types declared, we must keep them. + Before inliing we must not depend on debug info verbosity to keep + DECL_UIDs stable. */ + else if (!cfun->after_inlining && BLOCK_VARS (scope)) unused = false; - /* When there is only one subblock, see if it is just wrapper we can - ignore. Wrappers are not declaring any variables and not changing - abstract origin. */ - else if (nsubblocks == 1 - && (BLOCK_VARS (scope) - || ((debug_info_level == DINFO_LEVEL_NORMAL - || debug_info_level == DINFO_LEVEL_VERBOSE) - && ((BLOCK_ABSTRACT_ORIGIN (scope) - != BLOCK_ABSTRACT_ORIGIN (BLOCK_SUPERCONTEXT (scope))))))) + /* For terse debug info we can eliminate info on unused variables. */ + else if (debug_info_level == DINFO_LEVEL_NONE + || debug_info_level == DINFO_LEVEL_TERSE) + ; + else if (BLOCK_VARS (scope) || BLOCK_NUM_NONLOCALIZED_VARS (scope)) unused = false; + /* See if this block is important for representation of inlined function. + Inlined functions are always represented by block with + block_ultimate_origin being set to FUNCTION_DECL and DECL_SOURCE_LOCATION + set... */ + else if (inlined_function_outer_scope_p (scope)) + unused = false; + else + /* Verfify that only blocks with source location set + are entry points to the inlined functions. */ + gcc_assert (BLOCK_SOURCE_LOCATION (scope) == UNKNOWN_LOCATION); return unused; } @@ -576,6 +607,65 @@ mark_all_vars_used (tree *expr_p, void *data) walk_tree (expr_p, mark_all_vars_used_1, data, NULL); } +/* Dump scope blocks. */ + +static void +dump_scope_block (FILE *file, int indent, tree scope, int flags) +{ + tree var, t; + unsigned int i; + + fprintf (file, "\n%*s{ Scope block #%i%s%s",indent, "" , BLOCK_NUMBER (scope), + TREE_USED (scope) ? "" : " (unused)", + BLOCK_ABSTRACT (scope) ? " (abstract)": ""); + if (BLOCK_SOURCE_LOCATION (scope) != UNKNOWN_LOCATION) + { + expanded_location s = expand_location (BLOCK_SOURCE_LOCATION (scope)); + fprintf (file, " %s:%i", s.file, s.line); + } + if (BLOCK_ABSTRACT_ORIGIN (scope)) + { + tree origin = block_ultimate_origin (scope); + if (origin) + { + fprintf (file, " Originating from :"); + if (DECL_P (origin)) + print_generic_decl (file, origin, flags); + else + fprintf (file, "#%i", BLOCK_NUMBER (origin)); + } + } + fprintf (file, " \n"); + for (var = BLOCK_VARS (scope); var; var = TREE_CHAIN (var)) + { + bool used = false; + var_ann_t ann; + + if ((ann = var_ann (var)) + && ann->used) + used = true; + + fprintf (file, "%*s",indent, ""); + print_generic_decl (file, var, flags); + fprintf (file, "%s\n", used ? "" : " (unused)"); + } + for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (scope); i++) + { + fprintf (file, "%*s",indent, ""); + print_generic_decl (file, BLOCK_NONLOCALIZED_VAR (scope, i), + flags); + fprintf (file, " (nonlocalized)\n"); + } + for (t = BLOCK_SUBBLOCKS (scope); t ; t = BLOCK_CHAIN (t)) + dump_scope_block (file, indent + 2, t, flags); + fprintf (file, "\n%*s}\n",indent, ""); +} + +void +dump_scope_blocks (FILE *file, int flags) +{ + dump_scope_block (file, 0, DECL_INITIAL (current_function_decl), flags); +} /* Remove local variables that are not referenced in the IL. */ @@ -588,8 +678,7 @@ remove_unused_locals (void) var_ann_t ann; bitmap global_unused_vars = NULL; - if (optimize) - mark_scope_block_unused (DECL_INITIAL (current_function_decl)); + mark_scope_block_unused (DECL_INITIAL (current_function_decl)); /* Assume all locals are unused. */ FOR_EACH_REFERENCED_VAR (t, rvi) @@ -716,8 +805,12 @@ remove_unused_locals (void) && !TREE_ADDRESSABLE (t) && (optimize || DECL_ARTIFICIAL (t))) remove_referenced_var (t); - if (optimize) - remove_unused_scope_block_p (DECL_INITIAL (current_function_decl)); + remove_unused_scope_block_p (DECL_INITIAL (current_function_decl)); + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "Scope blocks after cleanups:\n"); + dump_scope_blocks (dump_file, dump_flags); + } } diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index ca1ab98b85a..b1813d373dc 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -2071,9 +2071,7 @@ add_candidate_1 (struct ivopts_data *data, { orig_type = TREE_TYPE (base); type = generic_type_for (orig_type); - /* Don't convert the base to the generic type for pointers as the generic - type is an integer type with the same size as the pointer type. */ - if (type != orig_type && !POINTER_TYPE_P (orig_type)) + if (type != orig_type) { base = fold_convert (type, base); step = fold_convert (type, step); diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index abb33e251ac..5f9884f0010 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -3450,6 +3450,10 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt) VEC_free (tree, heap, vargs); + /* Update the exception handling table with the vector stmt if necessary. */ + if (maybe_clean_or_replace_eh_stmt (stmt, *vec_stmt)) + gimple_purge_dead_eh_edges (gimple_bb (stmt)); + /* The call in STMT might prevent it from being removed in dce. We however cannot remove it here, due to the way the ssa name it defines is mapped to the new definition. So just replace diff --git a/gcc/tree.c b/gcc/tree.c index 03c54cc1cb1..d0117a0a4fe 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -9071,6 +9071,42 @@ block_nonartificial_location (tree block) return ret; } + +/* If EXP is inlined from an __attribute__((__artificial__)) + function, return the location of the original call expression. */ + +location_t +tree_nonartificial_location (tree exp) +{ + tree block = TREE_BLOCK (exp); + + while (block + && TREE_CODE (block) == BLOCK + && BLOCK_ABSTRACT_ORIGIN (block)) + { + tree ao = BLOCK_ABSTRACT_ORIGIN (block); + + do + { + if (TREE_CODE (ao) == FUNCTION_DECL + && DECL_DECLARED_INLINE_P (ao) + && lookup_attribute ("artificial", DECL_ATTRIBUTES (ao))) + return BLOCK_SOURCE_LOCATION (block); + else if (TREE_CODE (ao) == BLOCK + && BLOCK_SUPERCONTEXT (ao) != ao) + ao = BLOCK_SUPERCONTEXT (ao); + else + break; + } + while (ao); + + block = BLOCK_SUPERCONTEXT (block); + } + + return EXPR_LOCATION (exp); +} + + /* These are the hash table functions for the hash table of OPTIMIZATION_NODEq nodes. */ @@ -9199,4 +9235,49 @@ build_target_option_node (void) return t; } +/* Determine the "ultimate origin" of a block. The block may be an inlined + instance of an inlined instance of a block which is local to an inline + function, so we have to trace all of the way back through the origin chain + to find out what sort of node actually served as the original seed for the + given block. */ + +tree +block_ultimate_origin (const_tree block) +{ + tree immediate_origin = BLOCK_ABSTRACT_ORIGIN (block); + + /* output_inline_function sets BLOCK_ABSTRACT_ORIGIN for all the + nodes in the function to point to themselves; ignore that if + we're trying to output the abstract instance of this function. */ + if (BLOCK_ABSTRACT (block) && immediate_origin == block) + return NULL_TREE; + + if (immediate_origin == NULL_TREE) + return NULL_TREE; + else + { + tree ret_val; + tree lookahead = immediate_origin; + + do + { + ret_val = lookahead; + lookahead = (TREE_CODE (ret_val) == BLOCK + ? BLOCK_ABSTRACT_ORIGIN (ret_val) : NULL); + } + while (lookahead != NULL && lookahead != ret_val); + + /* The block's abstract origin chain may not be the *ultimate* origin of + the block. It could lead to a DECL that has an abstract origin set. + If so, we want that DECL's abstract origin (which is what DECL_ORIGIN + will give us if it has one). Note that DECL's abstract origins are + supposed to be the most distant ancestor (or so decl_ultimate_origin + claims), so we don't need to loop following the DECL origins. */ + if (DECL_P (ret_val)) + return DECL_ORIGIN (ret_val); + + return ret_val; + } +} + #include "gt-tree.h" diff --git a/gcc/tree.h b/gcc/tree.h index 5a7e765784f..1f70e0461ea 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -1324,8 +1324,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, /* Used in classes in C++. */ #define TREE_PRIVATE(NODE) ((NODE)->base.private_flag) -/* Used in classes in C++. - In a BLOCK node, this is BLOCK_HANDLER_BLOCK. */ +/* Used in classes in C++. */ #define TREE_PROTECTED(NODE) ((NODE)->base.protected_flag) /* Nonzero in a _DECL if the use of the name is defined as a @@ -1969,6 +1968,9 @@ struct varray_head_tag; /* In a BLOCK node. */ #define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars) +#define BLOCK_NONLOCALIZED_VARS(NODE) (BLOCK_CHECK (NODE)->block.nonlocalized_vars) +#define BLOCK_NUM_NONLOCALIZED_VARS(NODE) VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE)) +#define BLOCK_NONLOCALIZED_VAR(NODE,N) VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N) #define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks) #define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext) /* Note: when changing this, make sure to find the places @@ -1977,11 +1979,6 @@ struct varray_head_tag; #define BLOCK_ABSTRACT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.abstract_origin) #define BLOCK_ABSTRACT(NODE) (BLOCK_CHECK (NODE)->block.abstract_flag) -/* Nonzero means that this block is prepared to handle exceptions - listed in the BLOCK_VARS slot. */ -#define BLOCK_HANDLER_BLOCK(NODE) \ - (BLOCK_CHECK (NODE)->block.handler_block_flag) - /* An index number for this block. These values are not guaranteed to be unique across functions -- whether or not they are depends on the debugging output format in use. */ @@ -2022,13 +2019,14 @@ struct tree_block GTY(()) { struct tree_common common; - unsigned handler_block_flag : 1; unsigned abstract_flag : 1; - unsigned block_num : 30; + unsigned block_num : 31; location_t locus; tree vars; + VEC(tree,gc) *nonlocalized_vars; + tree subblocks; tree supercontext; tree abstract_origin; @@ -4657,6 +4655,14 @@ function_args_iter_next (function_args_iterator *i) i->next = TREE_CHAIN (i->next); } +/* We set BLOCK_SOURCE_LOCATION only to inlined function entry points. */ + +static inline bool +inlined_function_outer_scope_p (const_tree block) +{ + return BLOCK_SOURCE_LOCATION (block) != UNKNOWN_LOCATION; +} + /* Loop over all function arguments of FNTYPE. In each iteration, PTR is set to point to the next tree element. ITER is an instance of function_args_iterator used to iterate the arguments. */ @@ -4710,7 +4716,6 @@ extern void expand_goto (tree); extern rtx expand_stack_save (void); extern void expand_stack_restore (tree); extern void expand_return (tree); -extern int is_body_block (const_tree); /* In tree-eh.c */ extern void using_eh_for_cleanups (void); @@ -4941,6 +4946,7 @@ extern void set_expr_locus (tree, source_location *); extern tree *tree_block (tree); extern location_t *block_nonartificial_location (tree); +extern location_t tree_nonartificial_location (tree); /* In function.c */ extern void expand_main_function (void); @@ -5022,6 +5028,7 @@ extern bool gimple_alloca_call_p (const_gimple); extern bool alloca_call_p (const_tree); extern bool must_pass_in_stack_var_size (enum machine_mode, const_tree); extern bool must_pass_in_stack_var_size_or_pad (enum machine_mode, const_tree); +extern tree block_ultimate_origin (const_tree); /* In attribs.c. */ diff --git a/gcc/varasm.c b/gcc/varasm.c index 0589fc93e49..c724fcd721e 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -4070,8 +4070,8 @@ constructor_static_from_elts_p (const_tree ctor) && !VEC_empty (constructor_elt, CONSTRUCTOR_ELTS (ctor))); } -/* A subroutine of initializer_constant_valid_p. VALUE is either a - MINUS_EXPR or a POINTER_PLUS_EXPR. This looks for cases of VALUE +/* A subroutine of initializer_constant_valid_p. VALUE is a MINUS_EXPR, + PLUS_EXPR or POINTER_PLUS_EXPR. This looks for cases of VALUE which are valid when ENDTYPE is an integer of any size; in particular, this does not accept a pointer minus a constant. This returns null_pointer_node if the VALUE is an absolute constant @@ -4124,7 +4124,9 @@ narrowing_initializer_constant_valid_p (tree value, tree endtype) /* Both initializers must be known. */ if (op0 && op1) { - if (op0 == op1) + if (op0 == op1 + && (op0 == null_pointer_node + || TREE_CODE (value) == MINUS_EXPR)) return null_pointer_node; /* Support differences between labels. */ @@ -4315,12 +4317,10 @@ initializer_constant_valid_p (tree value, tree endtype) } /* Support narrowing pointer differences. */ - if (TREE_CODE (value) == POINTER_PLUS_EXPR) - { - ret = narrowing_initializer_constant_valid_p (value, endtype); - if (ret != NULL_TREE) - return ret; - } + ret = narrowing_initializer_constant_valid_p (value, endtype); + if (ret != NULL_TREE) + return ret; + break; case MINUS_EXPR: diff --git a/gcc/varpool.c b/gcc/varpool.c index 8b9821a9503..8c1259b14ec 100644 --- a/gcc/varpool.c +++ b/gcc/varpool.c @@ -456,29 +456,6 @@ varpool_empty_needed_queue (void) varpool_last_needed_node = NULL; } -/* Output all variables enqueued to be assembled. */ -void -varpool_output_debug_info (void) -{ - timevar_push (TV_SYMOUT); - if (errorcount == 0 && sorrycount == 0) - while (varpool_assembled_nodes_queue) - { - struct varpool_node *node = varpool_assembled_nodes_queue; - - /* Local static variables are never seen by check_global_declarations - so we need to output debug info by hand. */ - if (DECL_CONTEXT (node->decl) - && (TREE_CODE (DECL_CONTEXT (node->decl)) == BLOCK - || TREE_CODE (DECL_CONTEXT (node->decl)) == FUNCTION_DECL) - && errorcount == 0 && sorrycount == 0) - (*debug_hooks->global_decl) (node->decl); - varpool_assembled_nodes_queue = node->next_needed; - node->next_needed = 0; - } - timevar_pop (TV_SYMOUT); -} - /* Create a new global variable of type TYPE. */ tree add_new_static_var (tree type) diff --git a/gnattools/ChangeLog b/gnattools/ChangeLog index 169a0143f99..c68380bf27a 100644 --- a/gnattools/ChangeLog +++ b/gnattools/ChangeLog @@ -1,3 +1,10 @@ +2009-02-26 Andreas Schwab <schwab@suse.de> + + PR ada/39172 + * Makefile.in (fsrcdir): Point to gcc directory, not gcc/ada. + (INCLUDES_FOR_SUBDIR): Adjust. + (ADA_INCLUDES_FOR_SUBDIR): Adjust. + 2008-08-01 Paolo Bonzini <bonzini@gnu.org> * configure.ac (warn_cflags): Substitute. @@ -105,8 +112,8 @@ 2005-02-02 Nathanael Nerode <neroden@gcc.gnu.org> - * Makefile.in: Remove use of cc_set_by_configure; just use - plain old CC from the top level in this case. + * Makefile.in: Remove use of cc_set_by_configure; just use + plain old CC from the top level in this case. 2005-01-30 Nathanael Nerode <neroden@gcc.gnu.org> Merge from mainline at tag libada-gnattools-merge-20050129: @@ -115,7 +122,7 @@ 2004-12-13 Nathanael Nerode <neroden@gcc.gnu.org> - * Makefile.in: Reinstate stamp-gnatlib check. + * Makefile.in: Reinstate stamp-gnatlib check. 2004-12-02 Nathanael Nerode <neroden@gcc.gnu.org> @@ -146,4 +153,3 @@ Copyright 2004, 2005 Free Software Foundation, Inc. This ChangeLog is free software; the Free Software Foundation gives unlimited permission to copy, distribute, and modify it. - diff --git a/gnattools/Makefile.in b/gnattools/Makefile.in index ed40ba54411..de887c0a537 100644 --- a/gnattools/Makefile.in +++ b/gnattools/Makefile.in @@ -56,13 +56,13 @@ ADAFLAGS= -gnatpg -gnata # For finding the GCC build dir, which is used far too much GCC_DIR=../gcc -# Absolute srcdir for gcc/ada (why do we want absolute? I dunno) -fsrcdir := $(shell cd $(srcdir)/../gcc/ada/; ${PWD_COMMAND}) +# Absolute srcdir for gcc (why do we want absolute? I dunno) +fsrcdir := $(shell cd $(srcdir)/../gcc/; ${PWD_COMMAND}) # Useful "subroutines" for the excess includes -INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir) -I$(fsrcdir)/../config \ - -I$(fsrcdir)/../../include -I$(fsrcdir)/.. -ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir) +INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir)/ada -I$(fsrcdir)/config \ + -I$(fsrcdir)/../include -I$(fsrcdir) +ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir)/ada # Variables for gnattools1, native TOOLS_FLAGS_TO_PASS_1= \ diff --git a/libffi/ChangeLog b/libffi/ChangeLog index 52ab411bda7..2f44895e282 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -1,3 +1,7 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + 2008-12-18 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> PR libffi/26048 diff --git a/libffi/configure b/libffi/configure index c40a859ddd5..a1ec40bfe72 100755 --- a/libffi/configure +++ b/libffi/configure @@ -4192,7 +4192,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -6846,7 +6846,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -7407,7 +7407,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -8956,7 +8956,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 96fd675bf0e..9da50d9d67f 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,7 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + 2009-01-21 Daniel Kraft <d@domob.eu> PR fortran/38887 diff --git a/libgfortran/configure b/libgfortran/configure index 95a980d5e2c..4032b208bd3 100755 --- a/libgfortran/configure +++ b/libgfortran/configure @@ -4712,7 +4712,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -6686,7 +6686,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' @@ -7227,7 +7227,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -8792,7 +8792,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -11083,7 +11083,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_FC='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_FC='-Wl,' @@ -11609,7 +11609,7 @@ _LT_EOF archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -13000,7 +13000,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 3d0d3e8ad12..26b6457ff23 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,7 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + 2009-02-11 Jakub Jelinek <jakub@redhat.com> PR middle-end/39154 @@ -107,7 +111,7 @@ 2008-08-21 Nathan Froyd <froydnj@codesourcery.com> - * testsuite/libgomp.exp (libgomp_init): Only set things that + * testsuite/lib/libgomp.exp (libgomp_init): Only set things that depend on blddir if blddir exists. (libgomp_target_compile): Likewise. * testsuite/libgomp.c++/c++.exp: Likewise. diff --git a/libgomp/configure b/libgomp/configure index 948fd3e4105..deef6733405 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -4616,7 +4616,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -7270,7 +7270,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -7831,7 +7831,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -9380,7 +9380,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -11668,7 +11668,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_FC='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -12214,7 +12214,7 @@ _LT_EOF archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -13589,7 +13589,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 3cb487a5b09..2408ebffd74 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,64 @@ +2009-03-03 Andrew John Hughes <ahughes@redhat.com> + + * Makefile.am: + Remove dangling src.zip and javac symlinks. + Fix java.security symlink to use toolexeclibdir + as classpath/resource/Makefile.am does. + * Makefile.in, + * configure: Regenerated. + * configure.ac: Drop hard-coded prefix, + thus removing sdk_dir and making jre_dir="jre". + Map x86_64 to amd64 as used by OpenJDK. + * gcj/Makefile.in, + * include/Makefile.in, + * testsuite/Makefile.in: Regenerated. + +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + +2009-02-13 Andrew John Hughes <ahughes@redhat.com> + + Import GNU Classpath (classpath-0_98-release). + + * Makefile.am: Add natVMSecureRandom.cc. + * Makefile.in: Regenerated. + * classpath/ChangeLog, + * classpath/Makefile.am: Merged. + * classpath/Makefile.in: Regenerated. + * classpath/NEWS: Merged. + * classpath/config.guess, + * classpath/config.sub, + * classpath/configure: Regenerated. + * classpath/configure.ac: Merged. + * classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java, + * classpath/gnu/java/security/jce/prng/SecureRandomAdapter.java, + * classpath/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.java, + * classpath/gnu/javax/crypto/jce/prng/CSPRNGSpi.java, + * classpath/gnu/javax/crypto/jce/prng/FortunaImpl.java, + * classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java, + * classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java, + * classpath/gnu/javax/crypto/prng/ICMGenerator.java, + * classpath/gnu/xml/stream/XMLParser.java, + * classpath/java/security/SecureRandom.java, + * classpath/native/jni/native-lib/cpproc.c, + * classpath/native/plugin/gcjwebplugin.cc, + * classpath/tools/gnu/classpath/tools/gjdoc/Main.java: Merged. + * configure: Regenerated. + * configure.ac: Add symlink for natVMSecureRandomPosix.cc to natVMSecureRandom.cc + * gnu/classpath/Configuration.java: Change version to 0.98. + * gnu/java/security/jce/prng/SecureRandomAdapter.h: Regenerated. + * gnu/java/security/jce/prng/VMSecureRandom.h: Generated. + * gnu/java/security/jce/prng/VMSecureRandom.java: Added native implementation. + * gnu/java/security/jce/prng/natVMSecureRandomPosix.cc: Wrapper around /dev/random. + * gnu/javax/crypto/jce/prng/CSPRNGSpi.h, + * gnu/javax/crypto/jce/prng/FortunaImpl.h, + * java/security/SecureRandom.h: Regenerated. + * java/security/VMSecureRandom$Spinner.h, + * java/security/VMSecureRandom.h, + * java/security/VMSecureRandom.java: Removed. + * sources.am: Move VMSecureRandom to gnu.java.security.jce.prng. + 2009-02-10 Mark Mitchell <mark@codesourcery.com> * Makefile.am (AM_MAKEFLAGS): Pass down datadir. diff --git a/libjava/Makefile.am b/libjava/Makefile.am index 2078a8734df..c4746bfd854 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -586,7 +586,6 @@ if CREATE_JAVA_HOME $(DESTDIR)$(SDK_BIN_DIR)/rmic; \ ln -sf $$RELATIVE/`echo gjavah | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ $(DESTDIR)$(SDK_BIN_DIR)/javah; \ - ln -sf $$RELATIVE/ecj $(DESTDIR)$(SDK_BIN_DIR)/javac; \ ln -sf $$RELATIVE/`echo gappletviewer | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ $(DESTDIR)$(SDK_BIN_DIR)/appletviewer; \ ln -sf $$RELATIVE/`echo gjarsigner | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ @@ -638,7 +637,7 @@ if CREATE_JAVA_HOME done; \ cd $$working_dir; \ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/security; \ - RELATIVE=$$(relative $(DESTDIR)$(libdir)/security \ + RELATIVE=$$(relative $(DESTDIR)$(toolexeclibdir)/security \ $(DESTDIR)$(JRE_LIB_DIR)/security); \ cd $(DESTDIR)$(JRE_LIB_DIR)/security; \ ln -sf $$RELATIVE/classpath.security java.security; \ @@ -684,9 +683,7 @@ if CREATE_JAVA_HOME $(DESTDIR)$(SDK_INCLUDE_DIR)/linux/$$headername.h; \ done; \ RELATIVE=$$(relative $(DESTDIR)$(datadir)/java \ - $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)); \ - ln -sf $$RELATIVE/src-$(gcc_version).zip \ - $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)/src.zip; + $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)); endif ## ################################################################ @@ -1091,6 +1088,7 @@ gnu/java/nio/natVMSelector.cc \ gnu/java/nio/natNIOServerSocket.cc \ gnu/java/nio/natVMChannel.cc \ gnu/java/nio/channels/natFileChannelImpl.cc \ +gnu/java/security/jce/prng/natVMSecureRandom.cc \ java/io/natFile.cc \ java/io/natVMObjectInputStream.cc \ java/io/natVMObjectStreamClass.cc \ diff --git a/libjava/Makefile.in b/libjava/Makefile.in index cea890f04d5..4de0b3142c0 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -117,7 +117,8 @@ CONFIG_CLEAN_FILES = libgcj.pc libgcj.spec libgcj-test.spec \ gnu/java/net/natPlainSocketImpl.cc \ gnu/java/net/natPlainDatagramSocketImpl.cc \ gnu/java/nio/natVMPipe.cc gnu/java/nio/natVMSelector.cc \ - gnu/java/nio/channels/natFileChannelImpl.cc sysdep/locks.h \ + gnu/java/nio/channels/natFileChannelImpl.cc \ + gnu/java/security/jce/prng/natVMSecureRandom.cc sysdep/locks.h \ sysdep/backtrace.h sysdep/descriptor.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -342,8 +343,9 @@ am__libgcj_la_SOURCES_DIST = prims.cc jni.cc exception.cc \ gnu/java/nio/natVMPipe.cc gnu/java/nio/natVMSelector.cc \ gnu/java/nio/natNIOServerSocket.cc \ gnu/java/nio/natVMChannel.cc \ - gnu/java/nio/channels/natFileChannelImpl.cc java/io/natFile.cc \ - java/io/natVMObjectInputStream.cc \ + gnu/java/nio/channels/natFileChannelImpl.cc \ + gnu/java/security/jce/prng/natVMSecureRandom.cc \ + java/io/natFile.cc java/io/natVMObjectInputStream.cc \ java/io/natVMObjectStreamClass.cc java/lang/natCharacter.cc \ java/lang/natClass.cc java/lang/natClassLoader.cc \ java/lang/natConcreteProcess.cc java/lang/natVMDouble.cc \ @@ -406,8 +408,9 @@ am__objects_5 = $(am__objects_3) gnu/classpath/natConfiguration.lo \ gnu/java/nio/natVMPipe.lo gnu/java/nio/natVMSelector.lo \ gnu/java/nio/natNIOServerSocket.lo \ gnu/java/nio/natVMChannel.lo \ - gnu/java/nio/channels/natFileChannelImpl.lo java/io/natFile.lo \ - java/io/natVMObjectInputStream.lo \ + gnu/java/nio/channels/natFileChannelImpl.lo \ + gnu/java/security/jce/prng/natVMSecureRandom.lo \ + java/io/natFile.lo java/io/natVMObjectInputStream.lo \ java/io/natVMObjectStreamClass.lo java/lang/natCharacter.lo \ java/lang/natClass.lo java/lang/natClassLoader.lo \ java/lang/natConcreteProcess.lo java/lang/natVMDouble.lo \ @@ -740,7 +743,6 @@ PKG_CONFIG = @PKG_CONFIG@ PLATFORM = @PLATFORM@ RANLIB = @RANLIB@ SDK_BIN_DIR = @SDK_BIN_DIR@ -SDK_DIR = @SDK_DIR@ SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@ SDK_LIB_DIR = @SDK_LIB_DIR@ SDK_LNK = @SDK_LNK@ @@ -2267,6 +2269,7 @@ classpath/gnu/java/security/jce/prng/Sha256RandomSpi.java \ classpath/gnu/java/security/jce/prng/Sha384RandomSpi.java \ classpath/gnu/java/security/jce/prng/Sha512RandomSpi.java \ classpath/gnu/java/security/jce/prng/TigerRandomSpi.java \ +gnu/java/security/jce/prng/VMSecureRandom.java \ classpath/gnu/java/security/jce/prng/WhirlpoolRandomSpi.java gnu_java_security_jce_prng_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_jce_prng_source_files))) @@ -4748,8 +4751,7 @@ classpath/java/security/Signer.java \ classpath/java/security/UnrecoverableKeyException.java \ classpath/java/security/UnresolvedPermission.java \ java/security/VMAccessControlState.java \ -java/security/VMAccessController.java \ -java/security/VMSecureRandom.java +java/security/VMAccessController.java java_security_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_security_source_files))) java_security_acl_source_files = \ @@ -8513,6 +8515,7 @@ gnu/java/nio/natVMSelector.cc \ gnu/java/nio/natNIOServerSocket.cc \ gnu/java/nio/natVMChannel.cc \ gnu/java/nio/channels/natFileChannelImpl.cc \ +gnu/java/security/jce/prng/natVMSecureRandom.cc \ java/io/natFile.cc \ java/io/natVMObjectInputStream.cc \ java/io/natVMObjectStreamClass.cc \ @@ -9006,6 +9009,15 @@ gnu/java/nio/channels/$(DEPDIR)/$(am__dirstamp): gnu/java/nio/channels/natFileChannelImpl.lo: \ gnu/java/nio/channels/$(am__dirstamp) \ gnu/java/nio/channels/$(DEPDIR)/$(am__dirstamp) +gnu/java/security/jce/prng/$(am__dirstamp): + @$(mkdir_p) gnu/java/security/jce/prng + @: > gnu/java/security/jce/prng/$(am__dirstamp) +gnu/java/security/jce/prng/$(DEPDIR)/$(am__dirstamp): + @$(mkdir_p) gnu/java/security/jce/prng/$(DEPDIR) + @: > gnu/java/security/jce/prng/$(DEPDIR)/$(am__dirstamp) +gnu/java/security/jce/prng/natVMSecureRandom.lo: \ + gnu/java/security/jce/prng/$(am__dirstamp) \ + gnu/java/security/jce/prng/$(DEPDIR)/$(am__dirstamp) java/io/$(am__dirstamp): @$(mkdir_p) java/io @: > java/io/$(am__dirstamp) @@ -9471,6 +9483,8 @@ mostlyclean-compile: -rm -f gnu/java/nio/natVMPipe.lo -rm -f gnu/java/nio/natVMSelector.$(OBJEXT) -rm -f gnu/java/nio/natVMSelector.lo + -rm -f gnu/java/security/jce/prng/natVMSecureRandom.$(OBJEXT) + -rm -f gnu/java/security/jce/prng/natVMSecureRandom.lo -rm -f java/io/natFile.$(OBJEXT) -rm -f java/io/natFile.lo -rm -f java/io/natVMObjectInputStream.$(OBJEXT) @@ -9645,6 +9659,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/nio/$(DEPDIR)/natVMPipe.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/nio/$(DEPDIR)/natVMSelector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/nio/channels/$(DEPDIR)/natFileChannelImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/security/jce/prng/$(DEPDIR)/natVMSecureRandom.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/io/$(DEPDIR)/natFile.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/io/$(DEPDIR)/natVMObjectInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/io/$(DEPDIR)/natVMObjectStreamClass.Plo@am__quote@ @@ -9951,6 +9966,7 @@ clean-libtool: -rm -rf gnu/java/net/protocol/core/.libs gnu/java/net/protocol/core/_libs -rm -rf gnu/java/nio/.libs gnu/java/nio/_libs -rm -rf gnu/java/nio/channels/.libs gnu/java/nio/channels/_libs + -rm -rf gnu/java/security/jce/prng/.libs gnu/java/security/jce/prng/_libs -rm -rf java/io/.libs java/io/_libs -rm -rf java/lang/.libs java/lang/_libs -rm -rf java/lang/ref/.libs java/lang/ref/_libs @@ -10359,6 +10375,8 @@ distclean-generic: -rm -f gnu/java/nio/$(am__dirstamp) -rm -f gnu/java/nio/channels/$(DEPDIR)/$(am__dirstamp) -rm -f gnu/java/nio/channels/$(am__dirstamp) + -rm -f gnu/java/security/jce/prng/$(DEPDIR)/$(am__dirstamp) + -rm -f gnu/java/security/jce/prng/$(am__dirstamp) -rm -f java/io/$(DEPDIR)/$(am__dirstamp) -rm -f java/io/$(am__dirstamp) -rm -f java/lang/$(DEPDIR)/$(am__dirstamp) @@ -10400,7 +10418,7 @@ clean-am: clean-binPROGRAMS clean-dbexecLTLIBRARIES clean-generic \ distclean: distclean-multi distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) classpath/tools/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/classpath/jdwp/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/jvmti/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/management/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/security/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/concurrent/atomic/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/zip/$(DEPDIR) sun/misc/$(DEPDIR) + -rm -rf ./$(DEPDIR) classpath/tools/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/classpath/jdwp/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/jvmti/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/management/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/security/jce/prng/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/security/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/concurrent/atomic/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/zip/$(DEPDIR) sun/misc/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-local distclean-tags @@ -10433,7 +10451,7 @@ installcheck-am: maintainer-clean: maintainer-clean-multi maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) classpath/tools/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/classpath/jdwp/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/jvmti/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/management/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/security/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/concurrent/atomic/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/zip/$(DEPDIR) sun/misc/$(DEPDIR) + -rm -rf ./$(DEPDIR) classpath/tools/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/classpath/jdwp/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/jvmti/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/management/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/security/jce/prng/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/security/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/concurrent/atomic/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/zip/$(DEPDIR) sun/misc/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -12415,7 +12433,6 @@ install-data-local: @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/rmic; \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gjavah | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/javah; \ -@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/ecj $(DESTDIR)$(SDK_BIN_DIR)/javac; \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gappletviewer | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/appletviewer; \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gjarsigner | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ @@ -12467,7 +12484,7 @@ install-data-local: @CREATE_JAVA_HOME_TRUE@ done; \ @CREATE_JAVA_HOME_TRUE@ cd $$working_dir; \ @CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/security; \ -@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(libdir)/security \ +@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(toolexeclibdir)/security \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/security); \ @CREATE_JAVA_HOME_TRUE@ cd $(DESTDIR)$(JRE_LIB_DIR)/security; \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/classpath.security java.security; \ @@ -12513,9 +12530,7 @@ install-data-local: @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_INCLUDE_DIR)/linux/$$headername.h; \ @CREATE_JAVA_HOME_TRUE@ done; \ @CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datadir)/java \ -@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)); \ -@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/src-$(gcc_version).zip \ -@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)/src.zip; +@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)); maintainer-check: libgcj.la $(NM) .libs/libgcj.a | grep ' T ' \ diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index b76807c13c6..c6ec810e0e8 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,10 +1,100 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + +2009-02-05 Andrew John Hughes <ahughes@redhat.com> + + * NEWS: Add VM updates. + +2009-02-05 Andrew John Hughes <ahughes@redhat.com> + + * NEWS: Updated. + * configure.ac: + Bump to 0.98 proper. + 2009-02-05 Andrew Haley <aph@redhat.com> + PR libgcj/38861 * native/plugin/gcjwebplugin.cc: Cope with the changed header file format. https://bugzilla.mozilla.org/show_bug.cgi?id=455458 (GCJ_GetJavaClass): Likewise. (NP_Initialize): Likewise. +2009-02-05 Mark Wielaard <mark@klomp.org> + + PR classpath/38912: + * gnu/xml/stream/XMLParser.java: + (getLocalName()): Respect stringInterning. + (getName()): Likewise. + (getPrefix()): Likewise. + +2009-02-04 Andrew John Hughes <ahughes@redhat.com> + + * native/jni/native-lib/cpproc.c: + (cpproc_forkAndExec): Don't return on a -1 + result from chdir as this may be valid in + some cases. A better fix is needed. + +2009-02-03 Andrew John Hughes <ahughes@redhat.com> + + * native/jni/native-lib/cpproc.c: + (cpproc_forkAndExec): Handle return of + chdir. + +2009-02-03 Andrew John Hughes <ahughes@redhat.com> + + PR classpath/38417: + * gnu/java/security/jce/prng/SecureRandomAdapter.java: + Remove unneeded import. + * gnu/javax/crypto/jce/prng/FortunaImpl.java: + Fix typo. + * java/security/SecureRandom.java: + Remove duplicate use of VMSecureRandom, + call SecureRandomAdapter instead. + * vm/reference/gnu/java/security/jce/prng/VMSecureRandom.java: + Moved from java/security so SecureRandomAdapter can + access it. + +2009-01-22 Mario Torre <neugens@aicas.com> + + PR classpath/38417: + * gnu/java/security/jce/prng/SecureRandomAdapter.java: + (getSeed(int)): New; retrieve seed from source specified + by securerandom.source property or failing that, use + VMSecureRandom. + * gnu/javax/crypto/jce/prng/ARCFourRandomSpi.java: + (engineGenerateSeed(int)): Use SecureRandomAdapter. + (engineNextBytes(byte[])): Initialise using new seed. + * gnu/javax/crypto/jce/prng/CSPRNGSpi.java: + (engineGenerateSeed(int)): Use SecureRandomAdapter. + (engineNextBytes(byte[])): Initialise using new seed. + * gnu/javax/crypto/jce/prng/FortunaImpl.java: + (engineSetSeed(byte[])): Initialise with new seed if unused. + (engineGenerateSeed(int)): Use SecureRandomAdapter. + * gnu/javax/crypto/jce/prng/ICMRandomSpi.java: + (engineGenerateSeed(int)): Use SecureRandomAdapter. + (engineNextBytes(byte[])): Initialise using new seed. + * gnu/javax/crypto/jce/prng/UMacRandomSpi.java: + (engineGenerateSeed(int)): Use SecureRandomAdapter. + (engineNextBytes(byte[])): Initialise using new seed. + * gnu/javax/crypto/prng/ICMGenerator.java: + (setup(Map)): Call fillBlock(). + +2009-01-22 Mark Wielaard <mark@klomp.org> + + * tools/gnu/classpath/tools/gjdoc/Main.java (getGjdocVersion): + Read version.properties from package. + +2009-01-05 Robert Schuster <robertschuster@fsfe.org> + + * gnu/java/awt/peer/gtk/CairoGraphics2D.java: + (drawPolyline): Rewritten. + +2009-01-05 Andrew John Hughes <gnu_andrew@member.fsf.org> + + * Makefile.am: + Add ChangeLog-2008 to EXTRA_DIST. + 2009-01-02 Andrew John Hughes <gnu_andrew@member.fsf.org> * ChangeLog-2008: New file. diff --git a/libjava/classpath/Makefile.am b/libjava/classpath/Makefile.am index af47684b185..454b2e96023 100644 --- a/libjava/classpath/Makefile.am +++ b/libjava/classpath/Makefile.am @@ -14,7 +14,7 @@ native: lib EXTRA_DIST = HACKING BUGS THANKYOU mauve-classpath LICENSE ChangeLog-2007 \ ChangeLog-2003 ChangeLog-2004 ChangeLog-2005 ChangeLog-2006 \ ChangeLog.gnujaxp.1 ChangeLog.gnujaxp.2 ChangeLog.libxmlj \ - autogen.sh + autogen.sh ChangeLog-2008 DISTCHECK_CONFIGURE_FLAGS = --with-gjdoc --enable-gstreamer-peer \ --enable-xmlj --enable-qt-peer diff --git a/libjava/classpath/Makefile.in b/libjava/classpath/Makefile.in index dcc346b7743..35f1dd788e5 100644 --- a/libjava/classpath/Makefile.in +++ b/libjava/classpath/Makefile.in @@ -395,7 +395,7 @@ ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config ${LOCAL_AUTORECONF_FLAGS} EXTRA_DIST = HACKING BUGS THANKYOU mauve-classpath LICENSE ChangeLog-2007 \ ChangeLog-2003 ChangeLog-2004 ChangeLog-2005 ChangeLog-2006 \ ChangeLog.gnujaxp.1 ChangeLog.gnujaxp.2 ChangeLog.libxmlj \ - autogen.sh + autogen.sh ChangeLog-2008 DISTCHECK_CONFIGURE_FLAGS = --with-gjdoc --enable-gstreamer-peer \ --enable-xmlj --enable-qt-peer diff --git a/libjava/classpath/NEWS b/libjava/classpath/NEWS index 4be4d60434c..4ae10d710d9 100644 --- a/libjava/classpath/NEWS +++ b/libjava/classpath/NEWS @@ -1,4 +1,4 @@ -New in release 0.98 +New in release 0.98 (Feb 05, 2009) * Native support for BigInteger is now provided using the GMP library. A new option, --enable/disable-gmp is provided, and @@ -11,8 +11,41 @@ always retain their own array, which is only altered during resizing, CPStringBuilder gives away its array when the result is generated by toString()/substring() and starts afresh. The default capacity of CPStringBuilder can also be configured using the -gnu.classpath.cpstringbuilder.capacity property. +gnu.classpath.cpstringbuilder.capacity property. (PR21869) * gjdoc is now built as part of tools.zip. +* Import of the Java Activation Framework from ClasspathX to provide +javax.activation (part of 1.6). +* Preliminary version of java.util.Scanner (PR30436) +* Reduce cost of ThreadLocal(s) to improve Jython performance (PR33690) +* Updated to use CLDR 1.5.1 (PR35237) +* Many bug fixes including: + - PR22851: zoneStrings in gnu/java/locale/LocaleInformation* + - PR31895: setCurrency(Currency) does not actually change the currency. + - PR32028: Make fails at gjdoc + - PR34840: Mismatch between Sun and Classpath's java.lang.Appendable + - PR35487: gcj causes ConcurrentModificationException during tomcat5 + - PR35690: javax.tools.FileObject.toUri is in wrong case + - PR36085: java.util.regex escape-sequence handling + - PR36147: Apache Tomcat fails to read descriptors using GNU XML + - PR36219: gnu.xml.transform.SortKey isn't subclass + - PR36220: NPEs in gnu.xml.transform.* clone methods + - PR36221: DomDOMException running SPEC jvm 2008 xml.transform + - PR36477: OOME in CPStringBuilder when running Eclipse + - PR36522: Policy file is not read at all + - PR36636: gjar -u doesn't work + - PR36637: --without-fastjar doesn't wor + - PR36677: Omission bug in JDWP VirtualMachineCommandSet + - PR38417: gnu.java.security.util.PRNG produces easily predictable values + - PR38473: Segmentation fault in retrieving font outline decomposition + - PR38861: Support XULRunner 1.9.1. + - PR38912: XMLParser not interning element names + +Runtime interface changes: + + * VMSecureRandom has moved to gnu.java.security.jce.prng.VMSecureRandom + as part of the fix for PR38417. + * gnu.java.lang.VMCPStringBuilder has been added and should be added to + avoid the inefficency of reflection when creating non-copied String objects. Bug fixes in release 0.97.2 (Jun 06, 2007) diff --git a/libjava/classpath/config.guess b/libjava/classpath/config.guess index c7607c74f1b..aeb53233ecb 100755 --- a/libjava/classpath/config.guess +++ b/libjava/classpath/config.guess @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. -timestamp='2008-04-14' +timestamp='2008-12-18' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -331,7 +331,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize @@ -796,7 +809,7 @@ EOF x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; - EM64T | authenticamd) + EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) @@ -935,6 +948,9 @@ EOF if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in diff --git a/libjava/classpath/config.sub b/libjava/classpath/config.sub index 63bfff03070..9489dc7867b 100755 --- a/libjava/classpath/config.sub +++ b/libjava/classpath/config.sub @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. -timestamp='2008-04-14' +timestamp='2008-12-11' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -249,6 +249,7 @@ case $basic_machine in | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ @@ -279,7 +280,7 @@ case $basic_machine in | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -288,7 +289,7 @@ case $basic_machine in | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) + | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) @@ -331,6 +332,7 @@ case $basic_machine in | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ @@ -362,7 +364,7 @@ case $basic_machine in | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ @@ -375,7 +377,7 @@ case $basic_machine in | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ - | z8k-*) + | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) @@ -463,6 +465,10 @@ case $basic_machine in basic_machine=c90-cray os=-unicos ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -1136,6 +1142,10 @@ case $basic_machine in basic_machine=z8k-unknown os=-sim ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -1174,7 +1184,7 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) @@ -1256,7 +1266,7 @@ case $os in | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ + | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ diff --git a/libjava/classpath/configure b/libjava/classpath/configure index 8a4c6b1ded9..be3eb9153c7 100755 --- a/libjava/classpath/configure +++ b/libjava/classpath/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for GNU Classpath 0.98-pre. +# Generated by GNU Autoconf 2.59 for GNU Classpath 0.98. # # Report bugs to <classpath@gnu.org>. # @@ -418,8 +418,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='GNU Classpath' PACKAGE_TARNAME='classpath' -PACKAGE_VERSION='0.98-pre' -PACKAGE_STRING='GNU Classpath 0.98-pre' +PACKAGE_VERSION='0.98' +PACKAGE_STRING='GNU Classpath 0.98' PACKAGE_BUGREPORT='classpath@gnu.org' ac_unique_file="java/lang/System.java" @@ -943,7 +943,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GNU Classpath 0.98-pre to adapt to many kinds of systems. +\`configure' configures GNU Classpath 0.98 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1014,7 +1014,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Classpath 0.98-pre:";; + short | recursive ) echo "Configuration of GNU Classpath 0.98:";; esac cat <<\_ACEOF @@ -1231,7 +1231,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -GNU Classpath configure 0.98-pre +GNU Classpath configure 0.98 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -1245,7 +1245,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GNU Classpath $as_me 0.98-pre, which was +It was created by GNU Classpath $as_me 0.98, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -2117,7 +2117,7 @@ fi # Define the identity of the package. PACKAGE='classpath' - VERSION='0.98-pre' + VERSION='0.98' cat >>confdefs.h <<_ACEOF @@ -6202,7 +6202,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -8360,7 +8360,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -8921,7 +8921,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -10485,7 +10485,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -15068,7 +15068,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi inherit_rpath_CXX=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -15896,7 +15896,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -16816,7 +16816,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -30773,7 +30773,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by GNU Classpath $as_me 0.98-pre, which was +This file was extended by GNU Classpath $as_me 0.98, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -30839,7 +30839,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -GNU Classpath config.status 0.98-pre +GNU Classpath config.status 0.98 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff --git a/libjava/classpath/configure.ac b/libjava/classpath/configure.ac index b3187cca7e7..faf3ab7ce36 100644 --- a/libjava/classpath/configure.ac +++ b/libjava/classpath/configure.ac @@ -6,7 +6,7 @@ dnl ----------------------------------------------------------- dnl define([AC_CACHE_LOAD], )dnl dnl define([AC_CACHE_SAVE], )dnl -AC_INIT([GNU Classpath],[0.98-pre],[classpath@gnu.org],[classpath]) +AC_INIT([GNU Classpath],[0.98],[classpath@gnu.org],[classpath]) AC_CONFIG_SRCDIR(java/lang/System.java) dnl GCJ LOCAL diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java b/libjava/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java index bc8c91a2b03..8f8d7ea8bbb 100644 --- a/libjava/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java +++ b/libjava/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java @@ -1246,7 +1246,9 @@ public abstract class CairoGraphics2D extends Graphics2D public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) { - draw(new Polygon(xPoints, yPoints, nPoints)); + for (int i = 1; i < nPoints; i++) + draw(new Line2D.Double(xPoints[i - 1], yPoints[i - 1], + xPoints[i], yPoints[i])); } public void drawOval(int x, int y, int width, int height) diff --git a/libjava/classpath/gnu/java/security/jce/prng/SecureRandomAdapter.java b/libjava/classpath/gnu/java/security/jce/prng/SecureRandomAdapter.java index 5be402ff005..5877e3edb6c 100644 --- a/libjava/classpath/gnu/java/security/jce/prng/SecureRandomAdapter.java +++ b/libjava/classpath/gnu/java/security/jce/prng/SecureRandomAdapter.java @@ -38,35 +38,57 @@ exception statement from your version. */ package gnu.java.security.jce.prng; +import gnu.java.security.action.GetSecurityPropertyAction; +import gnu.classpath.SystemProperties; import gnu.java.security.prng.LimitReachedException; import gnu.java.security.prng.MDGenerator; +import java.security.AccessController; +import java.security.SecureRandom; import java.security.SecureRandomSpi; + import java.util.Collections; +import java.util.logging.Level; +import java.util.logging.Logger; + +import java.io.InputStream; +import java.io.IOException; + +import java.net.MalformedURLException; +import java.net.URL; /** - * The implementation of a generic {@link java.security.SecureRandom} adapter - * class to wrap GNU PRNG instances based on Message Digest algorithms. - * <p> - * This class defines the <i>Service Provider Interface</i> (<b>SPI</b>) for + * <p>The implementation of a generic {@link java.security.SecureRandom} adapter + * class to wrap gnu.crypto prng instances based on Message Digest algorithms.</p> + * + * <p>This class defines the <i>Service Provider Interface</i> (<b>SPI</b>) for * the {@link java.security.SecureRandom} class, which provides the - * functionality of a cryptographically strong pseudo-random number generator. - * <p> - * All the abstract methods in the {@link SecureRandomSpi} class are implemented - * by this class and all its sub-classes. + * functionality of a cryptographically strong pseudo-random number generator.</p> + * + * <p>All the abstract methods in the {@link SecureRandomSpi} class are + * implemented by this class and all its sub-classes.</p> */ -abstract class SecureRandomAdapter - extends SecureRandomSpi +public abstract class SecureRandomAdapter + extends SecureRandomSpi { + + private boolean isSeeded = false; + /** Our underlying prng instance. */ private MDGenerator adaptee = new MDGenerator(); /** The name of the message digest algorithm used by the adaptee. */ private String mdName; + private static final Logger logger = + Logger.getLogger(SecureRandom.class.getName()); + + private static final String SECURERANDOM_SOURCE = "securerandom.source"; + private static final String JAVA_SECURITY_EGD = "java.security.egd"; + /** - * Trivial protected constructor. - * + * <p>Trivial protected constructor.</p> + * * @param mdName the canonical name of the underlying hash algorithm. */ protected SecureRandomAdapter(String mdName) @@ -74,23 +96,77 @@ abstract class SecureRandomAdapter super(); this.mdName = mdName; - adaptee.init(Collections.singletonMap(MDGenerator.MD_NAME, mdName)); + adaptee.init (Collections.singletonMap (MDGenerator.MD_NAME, mdName)); + } + + public static final byte[] getSeed(int numBytes) + { + URL sourceUrl = null; + String urlStr = null; + + byte[] buffer = new byte[numBytes]; + + GetSecurityPropertyAction action = + new GetSecurityPropertyAction(SECURERANDOM_SOURCE); + try + { + urlStr = (String) AccessController.doPrivileged(action); + if (urlStr != null) + sourceUrl = new URL(urlStr); + } + catch (MalformedURLException ignored) + { + logger.log(Level.WARNING, + SECURERANDOM_SOURCE + " property is malformed: {0}", + urlStr); + } + + if (sourceUrl == null) + { + try + { + urlStr = SystemProperties.getProperty(JAVA_SECURITY_EGD); + if (urlStr != null) + sourceUrl = new URL(urlStr); + } + catch (MalformedURLException mue) + { + logger.log(Level.WARNING, + JAVA_SECURITY_EGD + " property is malformed: {0}", + urlStr); + } + } + + if (sourceUrl != null) + { + try + { + InputStream in = sourceUrl.openStream(); + in.read(buffer); + return buffer; + } + catch (IOException ioe) + { + logger.log(Level.FINE, "error reading random bytes", ioe); + } + } + + // If we get here, we did not get any seed from a property URL. + VMSecureRandom.generateSeed(buffer, 0, buffer.length); + return buffer; } public byte[] engineGenerateSeed(int numBytes) { - if (numBytes < 1) - return new byte[0]; - - byte[] result = new byte[numBytes]; - this.engineNextBytes(result); - return result; + return getSeed(numBytes); } public void engineNextBytes(byte[] bytes) { - if (! adaptee.isInitialised()) - this.engineSetSeed(new byte[0]); + if (!isSeeded) + { + engineSetSeed(engineGenerateSeed(32)); + } try { adaptee.nextBytes(bytes, 0, bytes.length); @@ -102,6 +178,7 @@ abstract class SecureRandomAdapter public void engineSetSeed(byte[] seed) { - adaptee.addRandomBytes(seed); + adaptee.addRandomBytes (seed); + isSeeded = true; } } diff --git a/libjava/classpath/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.java b/libjava/classpath/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.java index 652793b04ff..1129d5dfb1b 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.java +++ b/libjava/classpath/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.java @@ -39,12 +39,17 @@ exception statement from your version. */ package gnu.javax.crypto.jce.prng; import gnu.java.security.Registry; -import gnu.javax.crypto.prng.ARCFour; + +import gnu.java.security.jce.prng.SecureRandomAdapter; + import gnu.java.security.prng.IRandom; import gnu.java.security.prng.LimitReachedException; + +import gnu.javax.crypto.prng.ARCFour; import gnu.javax.crypto.prng.PRNGFactory; import java.security.SecureRandomSpi; + import java.util.HashMap; /** @@ -71,17 +76,13 @@ public class ARCFourRandomSpi public byte[] engineGenerateSeed(int numBytes) { - if (numBytes < 1) - return new byte[0]; - byte[] result = new byte[numBytes]; - this.engineNextBytes(result); - return result; + return SecureRandomAdapter.getSeed(numBytes); } public void engineNextBytes(byte[] bytes) { if (virgin) - this.engineSetSeed(new byte[0]); + this.engineSetSeed(engineGenerateSeed(32)); try { adaptee.nextBytes(bytes, 0, bytes.length); diff --git a/libjava/classpath/gnu/javax/crypto/jce/prng/CSPRNGSpi.java b/libjava/classpath/gnu/javax/crypto/jce/prng/CSPRNGSpi.java index 6ded636aaf3..96d66f05200 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/prng/CSPRNGSpi.java +++ b/libjava/classpath/gnu/javax/crypto/jce/prng/CSPRNGSpi.java @@ -40,6 +40,7 @@ package gnu.javax.crypto.jce.prng; import gnu.java.security.prng.IRandom; import gnu.java.security.prng.LimitReachedException; +import gnu.java.security.jce.prng.SecureRandomAdapter; import gnu.javax.crypto.prng.CSPRNG; import java.net.MalformedURLException; @@ -53,6 +54,7 @@ public class CSPRNGSpi extends SecureRandomSpi { private final IRandom adaptee; + private boolean virgin = true; public CSPRNGSpi() throws ClassNotFoundException, MalformedURLException, NumberFormatException @@ -62,21 +64,19 @@ public class CSPRNGSpi adaptee = CSPRNG.getSystemInstance(); } - protected byte[] engineGenerateSeed(final int count) + protected byte[] engineGenerateSeed(final int numBytes) { - if (count < 0) - throw new IllegalArgumentException("count must be nonnegative"); - byte[] buf = new byte[count]; - if (count == 0) - return buf; - engineNextBytes(buf); - return buf; + return SecureRandomAdapter.getSeed(numBytes); } protected void engineNextBytes(final byte[] buffer) { if (buffer == null) throw new NullPointerException(); + if (virgin) + { + engineSetSeed(engineGenerateSeed(32)); + } try { adaptee.nextBytes(buffer, 0, buffer.length); @@ -92,5 +92,6 @@ public class CSPRNGSpi if (seed == null) throw new NullPointerException(); adaptee.addRandomBytes(seed, 0, seed.length); + virgin = false; } } diff --git a/libjava/classpath/gnu/javax/crypto/jce/prng/FortunaImpl.java b/libjava/classpath/gnu/javax/crypto/jce/prng/FortunaImpl.java index 8e3782ef055..b18410c09f0 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/prng/FortunaImpl.java +++ b/libjava/classpath/gnu/javax/crypto/jce/prng/FortunaImpl.java @@ -39,6 +39,9 @@ exception statement from your version. */ package gnu.javax.crypto.jce.prng; import gnu.java.security.prng.LimitReachedException; + +import gnu.java.security.jce.prng.SecureRandomAdapter; + import gnu.javax.crypto.prng.Fortuna; import java.security.SecureRandomSpi; @@ -47,19 +50,27 @@ import java.util.Collections; public final class FortunaImpl extends SecureRandomSpi { + private boolean virgin = true; private final Fortuna adaptee; public FortunaImpl() { adaptee = new Fortuna(); - adaptee.init(Collections.singletonMap(Fortuna.SEED, new byte[0])); } protected void engineSetSeed(byte[] seed) { synchronized (adaptee) { - adaptee.addRandomBytes(seed); + if (virgin) + { + adaptee.init (Collections.singletonMap (Fortuna.SEED, seed)); + virgin = false; + } + else + { + adaptee.addRandomBytes (seed); + } } } @@ -67,6 +78,10 @@ public final class FortunaImpl { synchronized (adaptee) { + if (virgin) + { + this.engineSetSeed(engineGenerateSeed(32)); + } try { adaptee.nextBytes(buffer); @@ -78,10 +93,8 @@ public final class FortunaImpl } } - protected byte[] engineGenerateSeed(int numbytes) + protected byte[] engineGenerateSeed(int numBytes) { - byte[] seed = new byte[numbytes]; - engineNextBytes(seed); - return seed; + return SecureRandomAdapter.getSeed(numBytes); } } diff --git a/libjava/classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java b/libjava/classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java index 9855f95bd98..a02fd147e89 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java +++ b/libjava/classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java @@ -40,6 +40,7 @@ package gnu.javax.crypto.jce.prng; import gnu.java.security.Configuration; import gnu.java.security.Registry; +import gnu.java.security.jce.prng.SecureRandomAdapter; import gnu.java.security.prng.LimitReachedException; import gnu.javax.crypto.cipher.IBlockCipher; import gnu.javax.crypto.prng.ICMGenerator; @@ -107,19 +108,7 @@ public class ICMRandomSpi public byte[] engineGenerateSeed(int numBytes) { - if (Configuration.DEBUG) - log.entering(this.getClass().getName(), "engineGenerateSeed"); - if (numBytes < 1) - { - if (Configuration.DEBUG) - log.exiting(this.getClass().getName(), "engineGenerateSeed"); - return new byte[0]; - } - byte[] result = new byte[numBytes]; - this.engineNextBytes(result); - if (Configuration.DEBUG) - log.exiting(this.getClass().getName(), "engineGenerateSeed"); - return result; + return SecureRandomAdapter.getSeed(numBytes); } public void engineNextBytes(byte[] bytes) @@ -127,7 +116,7 @@ public class ICMRandomSpi if (Configuration.DEBUG) log.entering(this.getClass().getName(), "engineNextBytes"); if (! adaptee.isInitialised()) - this.engineSetSeed(new byte[0]); + this.engineSetSeed(engineGenerateSeed(32)); while (true) { try @@ -207,8 +196,8 @@ public class ICMRandomSpi System.arraycopy(material, 16, offset, 0, 16); attributes.put(ICMGenerator.OFFSET, offset); // specify the index - byte[] index = new byte[8]; - System.arraycopy(material, 32, index, 0, 8); + byte[] index = new byte[4]; + System.arraycopy(material, 32, index, 0, 4); attributes.put(ICMGenerator.SEGMENT_INDEX, new BigInteger(1, index)); adaptee.init(attributes); if (Configuration.DEBUG) diff --git a/libjava/classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java b/libjava/classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java index f6949dd8d71..2faebe8eb04 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java +++ b/libjava/classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java @@ -41,6 +41,7 @@ package gnu.javax.crypto.jce.prng; import gnu.java.security.Configuration; import gnu.java.security.Registry; import gnu.java.security.prng.LimitReachedException; +import gnu.java.security.jce.prng.SecureRandomAdapter; import gnu.javax.crypto.cipher.IBlockCipher; import gnu.javax.crypto.prng.UMacGenerator; @@ -57,6 +58,7 @@ public class UMacRandomSpi extends SecureRandomSpi { private static final Logger log = Logger.getLogger(UMacRandomSpi.class.getName()); + /** Class-wide prng to generate random material for the underlying prng. */ private static final UMacGenerator prng; // blank final static @@ -88,17 +90,13 @@ public class UMacRandomSpi public byte[] engineGenerateSeed(int numBytes) { - if (numBytes < 1) - return new byte[0]; - byte[] result = new byte[numBytes]; - this.engineNextBytes(result); - return result; + return SecureRandomAdapter.getSeed(numBytes); } public void engineNextBytes(byte[] bytes) { if (! adaptee.isInitialised()) - this.engineSetSeed(new byte[0]); + engineSetSeed(engineGenerateSeed(32)); while (true) { try diff --git a/libjava/classpath/gnu/javax/crypto/prng/ICMGenerator.java b/libjava/classpath/gnu/javax/crypto/prng/ICMGenerator.java index 5b0bd4f8b1e..d8205cfb4ad 100644 --- a/libjava/classpath/gnu/javax/crypto/prng/ICMGenerator.java +++ b/libjava/classpath/gnu/javax/crypto/prng/ICMGenerator.java @@ -263,6 +263,15 @@ public class ICMGenerator // C[0] = (s * (256^BLOCK_INDEX_LENGTH) + r) modulo (256^BLOCK_LENGTH) C0 = segmentNdx.multiply(TWO_FIFTY_SIX.pow(blockNdxLength)) .add(r).modPow(BigInteger.ONE, counterRange); + try + { + fillBlock(); + } + catch (LimitReachedException impossible) + { + throw (InternalError) + new InternalError().initCause(impossible); + } } public void fillBlock() throws LimitReachedException diff --git a/libjava/classpath/gnu/xml/stream/XMLParser.java b/libjava/classpath/gnu/xml/stream/XMLParser.java index 27aaa734dd6..6072a9c730f 100644 --- a/libjava/classpath/gnu/xml/stream/XMLParser.java +++ b/libjava/classpath/gnu/xml/stream/XMLParser.java @@ -725,7 +725,10 @@ public class XMLParser case XMLStreamConstants.END_ELEMENT: String qName = buf.toString(); int ci = qName.indexOf(':'); - return (ci == -1) ? qName : qName.substring(ci + 1); + String localName = (ci == -1) ? qName : qName.substring(ci + 1); + if (stringInterning) + localName = localName.intern(); + return localName; default: return null; } @@ -745,9 +748,13 @@ public class XMLParser String qName = buf.toString(); int ci = qName.indexOf(':'); String localName = (ci == -1) ? qName : qName.substring(ci + 1); + if (stringInterning) + localName = localName.intern(); String prefix = (ci == -1) ? (namespaceAware ? XMLConstants.DEFAULT_NS_PREFIX : null) : qName.substring(0, ci); + if (stringInterning && prefix != null) + prefix = prefix.intern(); String namespaceURI = getNamespaceURI(prefix); return new QName(namespaceURI, localName, prefix); default: @@ -831,9 +838,12 @@ public class XMLParser case XMLStreamConstants.END_ELEMENT: String qName = buf.toString(); int ci = qName.indexOf(':'); - return (ci == -1) ? + String prefix = (ci == -1) ? (namespaceAware ? XMLConstants.DEFAULT_NS_PREFIX : null) : qName.substring(0, ci); + if (stringInterning && prefix != null) + prefix = prefix.intern(); + return prefix; default: return null; } diff --git a/libjava/classpath/java/security/SecureRandom.java b/libjava/classpath/java/security/SecureRandom.java index f965782369c..0c7183879ce 100644 --- a/libjava/classpath/java/security/SecureRandom.java +++ b/libjava/classpath/java/security/SecureRandom.java @@ -42,6 +42,7 @@ import gnu.classpath.SystemProperties; import gnu.java.lang.CPStringBuilder; import gnu.java.security.Engine; import gnu.java.security.action.GetSecurityPropertyAction; +import gnu.java.security.jce.prng.SecureRandomAdapter; import gnu.java.security.jce.prng.Sha160RandomSpi; import java.io.IOException; @@ -401,9 +402,7 @@ public class SecureRandom extends Random */ public static byte[] getSeed(int numBytes) { - byte[] tmp = new byte[numBytes]; - generateSeed(tmp); - return tmp; + return SecureRandomAdapter.getSeed(numBytes); } /** @@ -418,64 +417,4 @@ public class SecureRandom extends Random return secureRandomSpi.engineGenerateSeed(numBytes); } - // Seed methods. - - private static final String SECURERANDOM_SOURCE = "securerandom.source"; - private static final String JAVA_SECURITY_EGD = "java.security.egd"; - private static final Logger logger = Logger.getLogger(SecureRandom.class.getName()); - - private static int generateSeed(byte[] buffer) - { - return generateSeed(buffer, 0, buffer.length); - } - - private static int generateSeed(byte[] buffer, int offset, int length) - { - URL sourceUrl = null; - String urlStr = null; - - GetSecurityPropertyAction action = new GetSecurityPropertyAction(SECURERANDOM_SOURCE); - try - { - urlStr = (String) AccessController.doPrivileged(action); - if (urlStr != null) - sourceUrl = new URL(urlStr); - } - catch (MalformedURLException ignored) - { - logger.log(Level.WARNING, SECURERANDOM_SOURCE + " property is malformed: {0}", - urlStr); - } - - if (sourceUrl == null) - { - try - { - urlStr = SystemProperties.getProperty(JAVA_SECURITY_EGD); - if (urlStr != null) - sourceUrl = new URL(urlStr); - } - catch (MalformedURLException mue) - { - logger.log(Level.WARNING, JAVA_SECURITY_EGD + " property is malformed: {0}", - urlStr); - } - } - - if (sourceUrl != null) - { - try - { - InputStream in = sourceUrl.openStream(); - return in.read(buffer, offset, length); - } - catch (IOException ioe) - { - logger.log(Level.FINE, "error reading random bytes", ioe); - } - } - - // If we get here, we did not get any seed from a property URL. - return VMSecureRandom.generateSeed(buffer, offset, length); - } } diff --git a/libjava/classpath/lib/gnu/classpath/Configuration.class b/libjava/classpath/lib/gnu/classpath/Configuration.class Binary files differindex 1b3fe05043c..27c31f26e17 100644 --- a/libjava/classpath/lib/gnu/classpath/Configuration.class +++ b/libjava/classpath/lib/gnu/classpath/Configuration.class diff --git a/libjava/classpath/lib/gnu/classpath/SystemProperties.class b/libjava/classpath/lib/gnu/classpath/SystemProperties.class Binary files differindex b430d0761a5..b0359303db5 100644 --- a/libjava/classpath/lib/gnu/classpath/SystemProperties.class +++ b/libjava/classpath/lib/gnu/classpath/SystemProperties.class diff --git a/libjava/classpath/lib/gnu/gcj/convert/Convert.class b/libjava/classpath/lib/gnu/gcj/convert/Convert.class Binary files differindex 89dc4556c23..15917dba993 100644 --- a/libjava/classpath/lib/gnu/gcj/convert/Convert.class +++ b/libjava/classpath/lib/gnu/gcj/convert/Convert.class diff --git a/libjava/classpath/lib/gnu/gcj/tools/gcj_dbtool/Main.class b/libjava/classpath/lib/gnu/gcj/tools/gcj_dbtool/Main.class Binary files differindex 10f6cb36a47..a11c8f974c3 100644 --- a/libjava/classpath/lib/gnu/gcj/tools/gcj_dbtool/Main.class +++ b/libjava/classpath/lib/gnu/gcj/tools/gcj_dbtool/Main.class diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/CairoGraphics2D.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/CairoGraphics2D.class Binary files differindex 6e09628a3ad..017314c5b0b 100644 --- a/libjava/classpath/lib/gnu/java/awt/peer/gtk/CairoGraphics2D.class +++ b/libjava/classpath/lib/gnu/java/awt/peer/gtk/CairoGraphics2D.class diff --git a/libjava/classpath/lib/gnu/java/rmi/registry/RegistryImpl.class b/libjava/classpath/lib/gnu/java/rmi/registry/RegistryImpl.class Binary files differindex 95e721095bc..d8b3cae4250 100644 --- a/libjava/classpath/lib/gnu/java/rmi/registry/RegistryImpl.class +++ b/libjava/classpath/lib/gnu/java/rmi/registry/RegistryImpl.class diff --git a/libjava/classpath/lib/gnu/java/security/jce/prng/SecureRandomAdapter.class b/libjava/classpath/lib/gnu/java/security/jce/prng/SecureRandomAdapter.class Binary files differindex 7bacedb0d5e..c781278a659 100644 --- a/libjava/classpath/lib/gnu/java/security/jce/prng/SecureRandomAdapter.class +++ b/libjava/classpath/lib/gnu/java/security/jce/prng/SecureRandomAdapter.class diff --git a/libjava/classpath/lib/gnu/java/security/jce/prng/VMSecureRandom.class b/libjava/classpath/lib/gnu/java/security/jce/prng/VMSecureRandom.class Binary files differnew file mode 100644 index 00000000000..a37ea32ca99 --- /dev/null +++ b/libjava/classpath/lib/gnu/java/security/jce/prng/VMSecureRandom.class diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.class b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.class Binary files differindex 1adddb1be0c..6993b3a0f3e 100644 --- a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.class +++ b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.class diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/CSPRNGSpi.class b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/CSPRNGSpi.class Binary files differindex c10db7a1e0d..b73add56309 100644 --- a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/CSPRNGSpi.class +++ b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/CSPRNGSpi.class diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/FortunaImpl.class b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/FortunaImpl.class Binary files differindex 817c972c95d..bf61fb49fb8 100644 --- a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/FortunaImpl.class +++ b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/FortunaImpl.class diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ICMRandomSpi.class b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ICMRandomSpi.class Binary files differindex 747f0032817..5fca78ef177 100644 --- a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ICMRandomSpi.class +++ b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ICMRandomSpi.class diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/UMacRandomSpi.class b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/UMacRandomSpi.class Binary files differindex 214773133bf..9c760ea3324 100644 --- a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/UMacRandomSpi.class +++ b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/UMacRandomSpi.class diff --git a/libjava/classpath/lib/gnu/javax/crypto/prng/ICMGenerator.class b/libjava/classpath/lib/gnu/javax/crypto/prng/ICMGenerator.class Binary files differindex 9c38cdf1799..53776d6de50 100644 --- a/libjava/classpath/lib/gnu/javax/crypto/prng/ICMGenerator.class +++ b/libjava/classpath/lib/gnu/javax/crypto/prng/ICMGenerator.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$AnyContentModel.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$AnyContentModel.class Binary files differindex 7e64954f56d..31381bdd6a4 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$AnyContentModel.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$AnyContentModel.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$Attribute.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$Attribute.class Binary files differindex 45f6ab83b81..bc9f56ce98f 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$Attribute.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$Attribute.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$AttributeDecl.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$AttributeDecl.class Binary files differindex f0ca4f00295..7c578d44bca 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$AttributeDecl.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$AttributeDecl.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$ContentModel.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$ContentModel.class Binary files differindex 86cba0fe9f4..5d2f9918879 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$ContentModel.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$ContentModel.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$ContentParticle.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$ContentParticle.class Binary files differindex cd7acfe30cc..4ced06152ab 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$ContentParticle.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$ContentParticle.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$Doctype.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$Doctype.class Binary files differindex 3c17511cd36..f05bfcae545 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$Doctype.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$Doctype.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$ElementContentModel.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$ElementContentModel.class Binary files differindex 5eeed5aca99..5ee2d8cff10 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$ElementContentModel.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$ElementContentModel.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$EmptyContentModel.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$EmptyContentModel.class Binary files differindex 0275f802ac7..64ba55704fc 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$EmptyContentModel.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$EmptyContentModel.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$ExternalIds.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$ExternalIds.class Binary files differindex e2d9b966367..97ac508cfdf 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$ExternalIds.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$ExternalIds.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$Input.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$Input.class Binary files differindex 0a37ec3d4fc..2e283aee151 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$Input.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$Input.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser$MixedContentModel.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser$MixedContentModel.class Binary files differindex 28888f642f6..f5309b07ab6 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser$MixedContentModel.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser$MixedContentModel.class diff --git a/libjava/classpath/lib/gnu/xml/stream/XMLParser.class b/libjava/classpath/lib/gnu/xml/stream/XMLParser.class Binary files differindex f9f823ad36b..84113a5baab 100644 --- a/libjava/classpath/lib/gnu/xml/stream/XMLParser.class +++ b/libjava/classpath/lib/gnu/xml/stream/XMLParser.class diff --git a/libjava/classpath/lib/java/security/SecureRandom.class b/libjava/classpath/lib/java/security/SecureRandom.class Binary files differindex e99049bbff0..ef74e5aae7b 100644 --- a/libjava/classpath/lib/java/security/SecureRandom.class +++ b/libjava/classpath/lib/java/security/SecureRandom.class diff --git a/libjava/classpath/native/jni/native-lib/cpproc.c b/libjava/classpath/native/jni/native-lib/cpproc.c index bb34f6d6e38..0c80703d636 100644 --- a/libjava/classpath/native/jni/native-lib/cpproc.c +++ b/libjava/classpath/native/jni/native-lib/cpproc.c @@ -86,7 +86,8 @@ int cpproc_forkAndExec (char * const *commandLine, char * const * newEnviron, close_all_fds(local_fds, pipe_count * 2); - chdir(wd); + i = chdir(wd); + /* FIXME: Handle the return value */ if (newEnviron == NULL) execvp(commandLine[0], commandLine); else diff --git a/libjava/classpath/tools/classes/gnu/classpath/tools/common/ClasspathToolParser.class b/libjava/classpath/tools/classes/gnu/classpath/tools/common/ClasspathToolParser.class Binary files differindex 2c8a74dc3b5..67c15788fc2 100644 --- a/libjava/classpath/tools/classes/gnu/classpath/tools/common/ClasspathToolParser.class +++ b/libjava/classpath/tools/classes/gnu/classpath/tools/common/ClasspathToolParser.class diff --git a/libjava/classpath/tools/classes/gnu/classpath/tools/gjdoc/Main.class b/libjava/classpath/tools/classes/gnu/classpath/tools/gjdoc/Main.class Binary files differindex 48b5bc82371..1ce24d1d49c 100644 --- a/libjava/classpath/tools/classes/gnu/classpath/tools/gjdoc/Main.class +++ b/libjava/classpath/tools/classes/gnu/classpath/tools/gjdoc/Main.class diff --git a/libjava/classpath/tools/classes/gnu/classpath/tools/orbd/Main.class b/libjava/classpath/tools/classes/gnu/classpath/tools/orbd/Main.class Binary files differindex f7c264b2d86..6608af7770b 100644 --- a/libjava/classpath/tools/classes/gnu/classpath/tools/orbd/Main.class +++ b/libjava/classpath/tools/classes/gnu/classpath/tools/orbd/Main.class diff --git a/libjava/classpath/tools/gnu/classpath/tools/gjdoc/Main.java b/libjava/classpath/tools/gnu/classpath/tools/gjdoc/Main.java index 6c2c77e5bfd..d1316b34183 100644 --- a/libjava/classpath/tools/gnu/classpath/tools/gjdoc/Main.java +++ b/libjava/classpath/tools/gnu/classpath/tools/gjdoc/Main.java @@ -1827,7 +1827,7 @@ public final class Main if (null == gjdocVersion) { try { Properties versionProperties = new Properties(); - versionProperties.load(getClass().getResourceAsStream("/version.properties")); + versionProperties.load(getClass().getResourceAsStream("version.properties")); gjdocVersion = versionProperties.getProperty("gjdoc.version"); } catch (IOException ignore) { diff --git a/libjava/java/security/VMSecureRandom.java b/libjava/classpath/vm/reference/gnu/java/security/jce/prng/VMSecureRandom.java index 5eeb158bc81..28a02102706 100644 --- a/libjava/java/security/VMSecureRandom.java +++ b/libjava/classpath/vm/reference/gnu/java/security/jce/prng/VMSecureRandom.java @@ -36,7 +36,7 @@ obligated to do so. If you do not wish to do so, delete this exception statement from your version. */ -package java.security; +package gnu.java.security.jce.prng; /** * VM-specific methods for generating real (or almost real) random diff --git a/libjava/configure b/libjava/configure index e379e248dfb..d2676ee23c5 100755 --- a/libjava/configure +++ b/libjava/configure @@ -459,7 +459,7 @@ ac_includes_default="\ #endif" ac_subdirs_all="$ac_subdirs_all classpath libltdl" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir multi_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs ANTLR_JAR CREATE_GJDOC_TRUE CREATE_GJDOC_FALSE JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJ_LD_SYMBOLIC_FUNCTIONS LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE X_AWT_TRUE X_AWT_FALSE GCJ_FOR_ECJX GCJH host_exeext INCLTDL LIBLTDL DIRLTDL LIBTOOL SED EGREP FGREP GREP DUMPBIN ac_ct_DUMPBIN NM OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CPP CPPFLAGS CXXCPP GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE ECJ_BUILD_JAR ECJ_JAR BUILD_ECJ1_TRUE BUILD_ECJ1_FALSE INSTALL_ECJ_JAR_TRUE INSTALL_ECJ_JAR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME SUPPRESS_LIBGCJ_BC_TRUE SUPPRESS_LIBGCJ_BC_FALSE BUILD_LIBGCJ_REDUCED_REFLECTION_TRUE BUILD_LIBGCJ_REDUCED_REFLECTION_FALSE INTERPRETER INTERPRETER_TRUE INTERPRETER_FALSE LIBFFI LIBFFIINCS PLATFORM USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava extra_gij_ldflags extra_ldflags LIBSTDCXXSPEC LIBGCJTESTSPEC GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE ENABLE_SHARED_TRUE ENABLE_SHARED_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE INSTALL_BINARIES_TRUE INSTALL_BINARIES_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir GCJVERSION dbexecdir gcjsubdir gxx_include_dir libstdcxx_incdir PERL SYSDEP_SOURCES ANONVERSCRIPT_TRUE ANONVERSCRIPT_FALSE LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here python_mod_dir python_mod_dir_expanded MAKE INSTALL_AOT_RPM_TRUE INSTALL_AOT_RPM_FALSE CREATE_JAVA_HOME_TRUE CREATE_JAVA_HOME_FALSE gcc_suffix JAVA_VERSION BUILD_VERSION JVM_ROOT_DIR JVM_JAR_ROOT_DIR JVM_JAR_DIR JRE_DIR SDK_DIR JRE_LNK SDK_LNK SDK_BIN_DIR SDK_LIB_DIR SDK_INCLUDE_DIR JRE_BIN_DIR JRE_LIB_DIR GCJ_BIN_DIR CPU OS LIBDIR LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir multi_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs ANTLR_JAR CREATE_GJDOC_TRUE CREATE_GJDOC_FALSE JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJ_LD_SYMBOLIC_FUNCTIONS LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE X_AWT_TRUE X_AWT_FALSE GCJ_FOR_ECJX GCJH host_exeext INCLTDL LIBLTDL DIRLTDL LIBTOOL SED EGREP FGREP GREP DUMPBIN ac_ct_DUMPBIN NM OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CPP CPPFLAGS CXXCPP GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE ECJ_BUILD_JAR ECJ_JAR BUILD_ECJ1_TRUE BUILD_ECJ1_FALSE INSTALL_ECJ_JAR_TRUE INSTALL_ECJ_JAR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME SUPPRESS_LIBGCJ_BC_TRUE SUPPRESS_LIBGCJ_BC_FALSE BUILD_LIBGCJ_REDUCED_REFLECTION_TRUE BUILD_LIBGCJ_REDUCED_REFLECTION_FALSE INTERPRETER INTERPRETER_TRUE INTERPRETER_FALSE LIBFFI LIBFFIINCS PLATFORM USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava extra_gij_ldflags extra_ldflags LIBSTDCXXSPEC LIBGCJTESTSPEC GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE ENABLE_SHARED_TRUE ENABLE_SHARED_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE INSTALL_BINARIES_TRUE INSTALL_BINARIES_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir GCJVERSION dbexecdir gcjsubdir gxx_include_dir libstdcxx_incdir PERL SYSDEP_SOURCES ANONVERSCRIPT_TRUE ANONVERSCRIPT_FALSE LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here python_mod_dir python_mod_dir_expanded MAKE INSTALL_AOT_RPM_TRUE INSTALL_AOT_RPM_FALSE CREATE_JAVA_HOME_TRUE CREATE_JAVA_HOME_FALSE gcc_suffix JAVA_VERSION BUILD_VERSION JVM_ROOT_DIR JVM_JAR_ROOT_DIR JVM_JAR_DIR JRE_DIR JRE_LNK SDK_LNK SDK_BIN_DIR SDK_LIB_DIR SDK_INCLUDE_DIR JRE_BIN_DIR JRE_LIB_DIR GCJ_BIN_DIR CPU OS LIBDIR LIBOBJS LTLIBOBJS' ac_subst_files='' ac_pwd=`pwd` @@ -6452,7 +6452,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -9708,7 +9708,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -10269,7 +10269,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -11833,7 +11833,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -14011,7 +14011,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi inherit_rpath_CXX=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -14839,7 +14839,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -15759,7 +15759,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -16761,7 +16761,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_GCJ='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -17307,7 +17307,7 @@ _LT_EOF archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -19140,6 +19140,11 @@ test -d gnu/java/nio/channels || mkdir gnu/java/nio/channels ac_config_links="$ac_config_links gnu/java/nio/channels/natFileChannelImpl.cc:gnu/java/nio/channels/natFileChannel${FILE-${PLATFORM}}.cc" +# Likewise for natVMSecureRandom.cc +test -d gnu/java/security/jce/prng || mkdir gnu/java/security/jce/prng + ac_config_links="$ac_config_links gnu/java/security/jce/prng/natVMSecureRandom.cc:gnu/java/security/jce/prng/natVMSecureRandom${FILE-${PLATFORM}}.cc" + + case "${host}" in *mingw*) SYSTEMSPEC="-lgdi32 -lws2_32" @@ -28194,8 +28199,7 @@ echo "${ECHO_T}JAR root installation directory: ${jvm_jar_dir}" >&6 echo "$as_me:$LINENO: result: Java version: ${JAVA_VERSION}" >&5 echo "${ECHO_T}Java version: ${JAVA_VERSION}" >&6 - jre_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix}/jre - sdk_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix} + jre_dir=jre jre_lnk=jre-${JAVA_VERSION}-${origin_name} sdk_lnk=java-${JAVA_VERSION}-${origin_name} @@ -28209,7 +28213,7 @@ echo "${ECHO_T}JVM ROOT directory: ${JVM_ROOT_DIR}" >&6 echo "$as_me:$LINENO: result: JVM JAR ROOT directory: ${JVM_JAR_ROOT_DIR}" >&5 echo "${ECHO_T}JVM JAR ROOT directory: ${JVM_JAR_ROOT_DIR}" >&6 - JVM_JAR_DIR=${jvm_jar_dir}/${sdk_dir} + JVM_JAR_DIR=${jvm_jar_dir} echo "$as_me:$LINENO: result: JVM JAR directory: ${JVM_JAR_DIR}" >&5 echo "${ECHO_T}JVM JAR directory: ${JVM_JAR_DIR}" >&6 @@ -28217,26 +28221,23 @@ echo "${ECHO_T}JVM JAR directory: ${JVM_JAR_DIR}" >&6 JRE_DIR=${jre_dir} - SDK_DIR=${sdk_dir} - - JRE_LNK=${jre_lnk} SDK_LNK=${sdk_lnk} - SDK_BIN_DIR=${jvm_root_dir}/${sdk_dir}/bin + SDK_BIN_DIR=${jvm_root_dir}/bin echo "$as_me:$LINENO: result: SDK tools directory: ${SDK_BIN_DIR}" >&5 echo "${ECHO_T}SDK tools directory: ${SDK_BIN_DIR}" >&6 - SDK_LIB_DIR=${jvm_root_dir}/${sdk_dir}/lib + SDK_LIB_DIR=${jvm_root_dir}/lib echo "$as_me:$LINENO: result: SDK jar directory: ${SDK_LIB_DIR}" >&5 echo "${ECHO_T}SDK jar directory: ${SDK_LIB_DIR}" >&6 - SDK_INCLUDE_DIR=${jvm_root_dir}/${sdk_dir}/include + SDK_INCLUDE_DIR=${jvm_root_dir}/include echo "$as_me:$LINENO: result: SDK include directory: ${SDK_INCLUDE_DIR}" >&5 echo "${ECHO_T}SDK include directory: ${SDK_INCLUDE_DIR}" >&6 @@ -28262,7 +28263,8 @@ echo "${ECHO_T}JRE lib directory: ${JRE_LIB_DIR}" >&6 echo "$as_me:$LINENO: result: GCJ tools directory: ${GCJ_BIN_DIR}" >&5 echo "${ECHO_T}GCJ tools directory: ${GCJ_BIN_DIR}" >&6 - echo host is ${host} + echo "$as_me:$LINENO: result: host is ${host}" >&5 +echo "${ECHO_T}host is ${host}" >&6 if test "x${host_cpu}" = "x" then case ${host} in @@ -28270,6 +28272,8 @@ echo "${ECHO_T}GCJ tools directory: ${GCJ_BIN_DIR}" >&6 host_cpu=x86;; i486-* | i586-* | i686-*) host_cpu=i386;; + x86_64-*) + host_cpu=amd64;; *) host_cpu=${host_cpu};; esac @@ -29569,6 +29573,7 @@ do "gnu/java/nio/natVMPipe.cc" ) CONFIG_LINKS="$CONFIG_LINKS gnu/java/nio/natVMPipe.cc:gnu/java/nio/natVMPipe${PLATFORM}.cc" ;; "gnu/java/nio/natVMSelector.cc" ) CONFIG_LINKS="$CONFIG_LINKS gnu/java/nio/natVMSelector.cc:gnu/java/nio/natVMSelector${PLATFORM}.cc" ;; "gnu/java/nio/channels/natFileChannelImpl.cc" ) CONFIG_LINKS="$CONFIG_LINKS gnu/java/nio/channels/natFileChannelImpl.cc:gnu/java/nio/channels/natFileChannel${FILE-${PLATFORM}}.cc" ;; + "gnu/java/security/jce/prng/natVMSecureRandom.cc" ) CONFIG_LINKS="$CONFIG_LINKS gnu/java/security/jce/prng/natVMSecureRandom.cc:gnu/java/security/jce/prng/natVMSecureRandom${FILE-${PLATFORM}}.cc" ;; "include/java-gc.h" ) CONFIG_LINKS="$CONFIG_LINKS include/java-gc.h:include/$GCHDR" ;; "include/java-threads.h" ) CONFIG_LINKS="$CONFIG_LINKS include/java-threads.h:include/$THREADH" ;; "sysdep/locks.h" ) CONFIG_LINKS="$CONFIG_LINKS sysdep/locks.h:sysdep/$sysdeps_dir/locks.h" ;; @@ -29920,7 +29925,6 @@ s,@JVM_ROOT_DIR@,$JVM_ROOT_DIR,;t t s,@JVM_JAR_ROOT_DIR@,$JVM_JAR_ROOT_DIR,;t t s,@JVM_JAR_DIR@,$JVM_JAR_DIR,;t t s,@JRE_DIR@,$JRE_DIR,;t t -s,@SDK_DIR@,$SDK_DIR,;t t s,@JRE_LNK@,$JRE_LNK,;t t s,@SDK_LNK@,$SDK_LNK,;t t s,@SDK_BIN_DIR@,$SDK_BIN_DIR,;t t diff --git a/libjava/configure.ac b/libjava/configure.ac index 87194312104..2a6b78276fa 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -833,6 +833,10 @@ AC_CONFIG_LINKS(gnu/java/nio/natVMSelector.cc:gnu/java/nio/natVMSelector${PLATFO test -d gnu/java/nio/channels || mkdir gnu/java/nio/channels AC_CONFIG_LINKS(gnu/java/nio/channels/natFileChannelImpl.cc:gnu/java/nio/channels/natFileChannel${FILE-${PLATFORM}}.cc) +# Likewise for natVMSecureRandom.cc +test -d gnu/java/security/jce/prng || mkdir gnu/java/security/jce/prng +AC_CONFIG_LINKS(gnu/java/security/jce/prng/natVMSecureRandom.cc:gnu/java/security/jce/prng/natVMSecureRandom${FILE-${PLATFORM}}.cc) + case "${host}" in *mingw*) SYSTEMSPEC="-lgdi32 -lws2_32" @@ -1805,8 +1809,7 @@ then AC_SUBST(BUILD_VERSION) AC_MSG_RESULT(Java version: ${JAVA_VERSION}) - jre_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix}/jre - sdk_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix} + jre_dir=jre jre_lnk=jre-${JAVA_VERSION}-${origin_name} sdk_lnk=java-${JAVA_VERSION}-${origin_name} @@ -1818,31 +1821,28 @@ then AC_SUBST(JVM_JAR_ROOT_DIR) AC_MSG_RESULT(JVM JAR ROOT directory: ${JVM_JAR_ROOT_DIR}) - JVM_JAR_DIR=${jvm_jar_dir}/${sdk_dir} + JVM_JAR_DIR=${jvm_jar_dir} AC_SUBST(JVM_JAR_DIR) AC_MSG_RESULT(JVM JAR directory: ${JVM_JAR_DIR}) JRE_DIR=${jre_dir} AC_SUBST(JRE_DIR) - SDK_DIR=${sdk_dir} - AC_SUBST(SDK_DIR) - JRE_LNK=${jre_lnk} AC_SUBST(JRE_LNK) SDK_LNK=${sdk_lnk} AC_SUBST(SDK_LNK) - SDK_BIN_DIR=${jvm_root_dir}/${sdk_dir}/bin + SDK_BIN_DIR=${jvm_root_dir}/bin AC_SUBST(SDK_BIN_DIR) AC_MSG_RESULT(SDK tools directory: ${SDK_BIN_DIR}) - SDK_LIB_DIR=${jvm_root_dir}/${sdk_dir}/lib + SDK_LIB_DIR=${jvm_root_dir}/lib AC_SUBST(SDK_LIB_DIR) AC_MSG_RESULT(SDK jar directory: ${SDK_LIB_DIR}) - SDK_INCLUDE_DIR=${jvm_root_dir}/${sdk_dir}/include + SDK_INCLUDE_DIR=${jvm_root_dir}/include AC_SUBST(SDK_INCLUDE_DIR) AC_MSG_RESULT(SDK include directory: ${SDK_INCLUDE_DIR}) @@ -1864,7 +1864,7 @@ then AC_SUBST(GCJ_BIN_DIR) AC_MSG_RESULT(GCJ tools directory: ${GCJ_BIN_DIR}) - echo host is ${host} + AC_MSG_RESULT(host is ${host}) if test "x${host_cpu}" = "x" then case ${host} in @@ -1872,6 +1872,8 @@ then host_cpu=x86;; i486-* | i586-* | i686-*) host_cpu=i386;; + x86_64-*) + host_cpu=amd64;; *) host_cpu=${host_cpu};; esac diff --git a/libjava/gcj/Makefile.in b/libjava/gcj/Makefile.in index e31f3f1d6e3..220f9b056c9 100644 --- a/libjava/gcj/Makefile.in +++ b/libjava/gcj/Makefile.in @@ -241,7 +241,6 @@ PKG_CONFIG = @PKG_CONFIG@ PLATFORM = @PLATFORM@ RANLIB = @RANLIB@ SDK_BIN_DIR = @SDK_BIN_DIR@ -SDK_DIR = @SDK_DIR@ SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@ SDK_LIB_DIR = @SDK_LIB_DIR@ SDK_LNK = @SDK_LNK@ diff --git a/libjava/gnu/classpath/Configuration.java b/libjava/gnu/classpath/Configuration.java index 2420878fbce..b0c57332ddc 100644 --- a/libjava/gnu/classpath/Configuration.java +++ b/libjava/gnu/classpath/Configuration.java @@ -66,7 +66,7 @@ public final class Configuration * It is set according to the value of 'version' in the configure[.in] file * and used to set the System property gnu.classpath.version. */ - public static final String CLASSPATH_VERSION = "0.98-pre"; + public static final String CLASSPATH_VERSION = "0.98"; /** * The value of DEBUG is substituted according to whether the diff --git a/libjava/gnu/java/security/jce/prng/SecureRandomAdapter.h b/libjava/gnu/java/security/jce/prng/SecureRandomAdapter.h index 71b29f7734d..7495038c735 100644 --- a/libjava/gnu/java/security/jce/prng/SecureRandomAdapter.h +++ b/libjava/gnu/java/security/jce/prng/SecureRandomAdapter.h @@ -39,12 +39,17 @@ class gnu::java::security::jce::prng::SecureRandomAdapter : public ::java::secur public: // actually protected SecureRandomAdapter(::java::lang::String *); public: + static JArray< jbyte > * getSeed(jint); virtual JArray< jbyte > * engineGenerateSeed(jint); virtual void engineNextBytes(JArray< jbyte > *); virtual void engineSetSeed(JArray< jbyte > *); private: - ::gnu::java::security::prng::MDGenerator * __attribute__((aligned(__alignof__( ::java::security::SecureRandomSpi)))) adaptee; + jboolean __attribute__((aligned(__alignof__( ::java::security::SecureRandomSpi)))) isSeeded; + ::gnu::java::security::prng::MDGenerator * adaptee; ::java::lang::String * mdName; + static ::java::util::logging::Logger * logger; + static ::java::lang::String * SECURERANDOM_SOURCE; + static ::java::lang::String * JAVA_SECURITY_EGD; public: static ::java::lang::Class class$; }; diff --git a/libjava/gnu/java/security/jce/prng/VMSecureRandom.h b/libjava/gnu/java/security/jce/prng/VMSecureRandom.h new file mode 100644 index 00000000000..b24c805141a --- /dev/null +++ b/libjava/gnu/java/security/jce/prng/VMSecureRandom.h @@ -0,0 +1,43 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __gnu_java_security_jce_prng_VMSecureRandom__ +#define __gnu_java_security_jce_prng_VMSecureRandom__ + +#pragma interface + +#include <java/lang/Object.h> +#include <gcj/array.h> + +extern "Java" +{ + namespace gnu + { + namespace java + { + namespace security + { + namespace jce + { + namespace prng + { + class VMSecureRandom; + } + } + } + } + } +} + +class gnu::java::security::jce::prng::VMSecureRandom : public ::java::lang::Object +{ + +public: // actually package-private + VMSecureRandom(); + static jint generateSeed(JArray< jbyte > *, jint, jint); + static jint natGenerateSeed(JArray< jbyte > *, jint, jint); +public: + static ::java::lang::Class class$; +}; + +#endif // __gnu_java_security_jce_prng_VMSecureRandom__ diff --git a/libjava/gnu/java/security/jce/prng/VMSecureRandom.java b/libjava/gnu/java/security/jce/prng/VMSecureRandom.java new file mode 100644 index 00000000000..62ff8b7aa93 --- /dev/null +++ b/libjava/gnu/java/security/jce/prng/VMSecureRandom.java @@ -0,0 +1,78 @@ +/* VMSecureRandom.java -- random seed generator. + Copyright (C) 2006, 2009 Free Software Foundation, Inc. + +This file is a part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package gnu.java.security.jce.prng; + +/** + * VM-specific methods for generating real (or almost real) random + * seeds. VM implementors should write a version of this class that + * reads random bytes from some system source. + */ +final class VMSecureRandom +{ + + /** + * <p> + * Generate a random seed. Implementations are free to generate + * fewer random bytes than are requested, and leave the remaining + * bytes of the destination buffer as zeros. Implementations SHOULD, + * however, make a best-effort attempt to satisfy the request. + * </p> + * <p> + * The GCJ implementation uses a native method to read bytes from + * a system random source (e.g. /dev/random). + * </p> + * + * @param buffer The destination buffer. + * @param offset The offset in the buffer to start putting bytes. + * @param length The number of random bytes to generate. + * @return the number of bytes generated. + */ + static int generateSeed(byte[] buffer, int offset, int length) + { + if (length < 0) + throw new IllegalArgumentException("length must be nonnegative"); + if (offset < 0 || offset + length > buffer.length) + throw new IndexOutOfBoundsException(); + + return natGenerateSeed(buffer, offset, length); + } + + static native int natGenerateSeed(byte[] buffer, int offset, int length); + +}
\ No newline at end of file diff --git a/libjava/gnu/java/security/jce/prng/natVMSecureRandomPosix.cc b/libjava/gnu/java/security/jce/prng/natVMSecureRandomPosix.cc new file mode 100644 index 00000000000..a44f3f4573b --- /dev/null +++ b/libjava/gnu/java/security/jce/prng/natVMSecureRandomPosix.cc @@ -0,0 +1,54 @@ +// natVMSecureRandomPosix.cc - Native part of VMSecureRandom class for POSIX. + +/* Copyright (C) 2009 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +#include <config.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> + +#include <gcj/cni.h> +#include <java/lang/InternalError.h> +#include <gnu/java/security/jce/prng/VMSecureRandom.h> + +jint +gnu::java::security::jce::prng::VMSecureRandom::natGenerateSeed(jbyteArray byte_array, jint offset, jint length) +{ + int a, fd; + jbyte *bytes = elements (byte_array); + ssize_t count; + + for (a = 0; a < offset; ++a) + bytes++; + fd = open ("/dev/random", O_RDONLY); + + if (fd == -1) + { + jstring oserr = JvNewStringLatin1 (strerror (errno)); + throw new ::java::lang::InternalError + (JvNewStringLatin1 ("Error opening /dev/random: ")->concat(oserr)); + } + + count = read (fd, bytes, length); + close (fd); + + if (count == -1) + { + jstring oserr = JvNewStringLatin1 (strerror (errno)); + throw new ::java::lang::InternalError + (JvNewStringLatin1 ("Error reading /dev/random: ")->concat(oserr)); + } + + return count; +} + diff --git a/libjava/gnu/javax/crypto/jce/prng/CSPRNGSpi.h b/libjava/gnu/javax/crypto/jce/prng/CSPRNGSpi.h index c499fa86962..6abf9be9e3b 100644 --- a/libjava/gnu/javax/crypto/jce/prng/CSPRNGSpi.h +++ b/libjava/gnu/javax/crypto/jce/prng/CSPRNGSpi.h @@ -50,6 +50,7 @@ public: // actually protected virtual void engineSetSeed(JArray< jbyte > *); private: ::gnu::java::security::prng::IRandom * __attribute__((aligned(__alignof__( ::java::security::SecureRandomSpi)))) adaptee; + jboolean virgin; public: static ::java::lang::Class class$; }; diff --git a/libjava/gnu/javax/crypto/jce/prng/FortunaImpl.h b/libjava/gnu/javax/crypto/jce/prng/FortunaImpl.h index fefea283199..d684e366a1b 100644 --- a/libjava/gnu/javax/crypto/jce/prng/FortunaImpl.h +++ b/libjava/gnu/javax/crypto/jce/prng/FortunaImpl.h @@ -43,7 +43,8 @@ public: // actually protected void engineNextBytes(JArray< jbyte > *); JArray< jbyte > * engineGenerateSeed(jint); private: - ::gnu::javax::crypto::prng::Fortuna * __attribute__((aligned(__alignof__( ::java::security::SecureRandomSpi)))) adaptee; + jboolean __attribute__((aligned(__alignof__( ::java::security::SecureRandomSpi)))) virgin; + ::gnu::javax::crypto::prng::Fortuna * adaptee; public: static ::java::lang::Class class$; }; diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in index 1b94fcfc571..e262cdab997 100644 --- a/libjava/include/Makefile.in +++ b/libjava/include/Makefile.in @@ -240,7 +240,6 @@ PKG_CONFIG = @PKG_CONFIG@ PLATFORM = @PLATFORM@ RANLIB = @RANLIB@ SDK_BIN_DIR = @SDK_BIN_DIR@ -SDK_DIR = @SDK_DIR@ SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@ SDK_LIB_DIR = @SDK_LIB_DIR@ SDK_LNK = @SDK_LNK@ diff --git a/libjava/java/security/SecureRandom.h b/libjava/java/security/SecureRandom.h index 58561abbc1c..b54318c4406 100644 --- a/libjava/java/security/SecureRandom.h +++ b/libjava/java/security/SecureRandom.h @@ -47,8 +47,6 @@ public: static JArray< jbyte > * getSeed(jint); virtual JArray< jbyte > * generateSeed(jint); private: - static jint generateSeed(JArray< jbyte > *); - static jint generateSeed(JArray< jbyte > *, jint, jint); static ::java::lang::String * SECURE_RANDOM; static const jlong serialVersionUID = 4940670005562187LL; public: // actually package-private @@ -61,9 +59,6 @@ public: // actually package-private private: ::java::lang::String * algorithm; jboolean isSeeded; - static ::java::lang::String * SECURERANDOM_SOURCE; - static ::java::lang::String * JAVA_SECURITY_EGD; - static ::java::util::logging::Logger * logger; public: static ::java::lang::Class class$; }; diff --git a/libjava/java/security/VMSecureRandom$Spinner.h b/libjava/java/security/VMSecureRandom$Spinner.h deleted file mode 100644 index 0013a3fc8ca..00000000000 --- a/libjava/java/security/VMSecureRandom$Spinner.h +++ /dev/null @@ -1,38 +0,0 @@ - -// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- - -#ifndef __java_security_VMSecureRandom$Spinner__ -#define __java_security_VMSecureRandom$Spinner__ - -#pragma interface - -#include <java/lang/Object.h> -extern "Java" -{ - namespace java - { - namespace security - { - class VMSecureRandom$Spinner; - } - } -} - -class java::security::VMSecureRandom$Spinner : public ::java::lang::Object -{ - -public: // actually package-private - VMSecureRandom$Spinner(jbyte); -public: - virtual void run(); -private: - void stop(); -public: // actually package-private - static void access$0(::java::security::VMSecureRandom$Spinner *); - jbyte volatile __attribute__((aligned(__alignof__( ::java::lang::Object)))) value; - jboolean volatile running; -public: - static ::java::lang::Class class$; -}; - -#endif // __java_security_VMSecureRandom$Spinner__ diff --git a/libjava/java/security/VMSecureRandom.h b/libjava/java/security/VMSecureRandom.h deleted file mode 100644 index 982bc0f1a88..00000000000 --- a/libjava/java/security/VMSecureRandom.h +++ /dev/null @@ -1,33 +0,0 @@ - -// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- - -#ifndef __java_security_VMSecureRandom__ -#define __java_security_VMSecureRandom__ - -#pragma interface - -#include <java/lang/Object.h> -#include <gcj/array.h> - -extern "Java" -{ - namespace java - { - namespace security - { - class VMSecureRandom; - } - } -} - -class java::security::VMSecureRandom : public ::java::lang::Object -{ - -public: // actually package-private - VMSecureRandom(); - static jint generateSeed(JArray< jbyte > *, jint, jint); -public: - static ::java::lang::Class class$; -}; - -#endif // __java_security_VMSecureRandom__ diff --git a/libjava/sources.am b/libjava/sources.am index b108484277d..3f33a905738 100644 --- a/libjava/sources.am +++ b/libjava/sources.am @@ -1748,6 +1748,7 @@ classpath/gnu/java/security/jce/prng/Sha256RandomSpi.java \ classpath/gnu/java/security/jce/prng/Sha384RandomSpi.java \ classpath/gnu/java/security/jce/prng/Sha512RandomSpi.java \ classpath/gnu/java/security/jce/prng/TigerRandomSpi.java \ +gnu/java/security/jce/prng/VMSecureRandom.java \ classpath/gnu/java/security/jce/prng/WhirlpoolRandomSpi.java gnu_java_security_jce_prng_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_jce_prng_source_files))) @@ -5246,8 +5247,7 @@ classpath/java/security/Signer.java \ classpath/java/security/UnrecoverableKeyException.java \ classpath/java/security/UnresolvedPermission.java \ java/security/VMAccessControlState.java \ -java/security/VMAccessController.java \ -java/security/VMSecureRandom.java +java/security/VMAccessController.java java_security_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_security_source_files))) diff --git a/libjava/testsuite/Makefile.in b/libjava/testsuite/Makefile.in index 4c3e86c03e1..22a726e5de7 100644 --- a/libjava/testsuite/Makefile.in +++ b/libjava/testsuite/Makefile.in @@ -229,7 +229,6 @@ PKG_CONFIG = @PKG_CONFIG@ PLATFORM = @PLATFORM@ RANLIB = @RANLIB@ SDK_BIN_DIR = @SDK_BIN_DIR@ -SDK_DIR = @SDK_DIR@ SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@ SDK_LIB_DIR = @SDK_LIB_DIR@ SDK_LNK = @SDK_LNK@ diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog index d291462db3c..1afd85642c6 100644 --- a/libmudflap/ChangeLog +++ b/libmudflap/ChangeLog @@ -1,3 +1,7 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + 2009-02-03 Jakub Jelinek <jakub@redhat.com> * mf-runtime.c (__mf_usage): Update copyright notice dates. diff --git a/libmudflap/configure b/libmudflap/configure index 758ac8f0a30..ae1be92e207 100755 --- a/libmudflap/configure +++ b/libmudflap/configure @@ -6225,7 +6225,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -8401,7 +8401,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -8962,7 +8962,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -10511,7 +10511,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog index 3187a4945f0..6b7c07e7bd1 100644 --- a/libobjc/ChangeLog +++ b/libobjc/ChangeLog @@ -1,3 +1,7 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + 2008-12-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * configure: Regenerate. diff --git a/libobjc/configure b/libobjc/configure index ee538a5b48f..5f75083bd74 100755 --- a/libobjc/configure +++ b/libobjc/configure @@ -4309,7 +4309,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -6971,7 +6971,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -7532,7 +7532,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -9096,7 +9096,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no diff --git a/libssp/ChangeLog b/libssp/ChangeLog index 241f9e88065..92fa4d32fe8 100644 --- a/libssp/ChangeLog +++ b/libssp/ChangeLog @@ -1,3 +1,7 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + 2009-02-02 Danny Smith <dannysmith@users.sourcforge.net> * ssp.c (_PATH_TTY): Define as "CONOUT$" for _WIN32. diff --git a/libssp/configure b/libssp/configure index 01089b7d011..ee2a41fd495 100755 --- a/libssp/configure +++ b/libssp/configure @@ -5199,7 +5199,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -7387,7 +7387,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -7948,7 +7948,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -9512,7 +9512,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index fd8bf05c784..7b9ca756276 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,42 @@ +2009-03-02 Benjamin Kosnik <bkoz@redhat.com> + + * testsuite/thread/pthread4.cc: Move... + * testsuite/21_strings/basic_string/pthread4.cc: ...here. + * testsuite/thread/pthread5.cc: Move... + * testsuite/23_containers/list/pthread5.cc: ...here. + * testsuite/thread/pthread6.cc: Move... + * testsuite/23_containers/map/pthread6.cc: ...here. + * testsuite/thread/pthread7-rope.cc: Move... + * testsuite/ext/rope/pthread7-rope.cc: ...here. + * testsuite/thread/guard.cc: Move... + * testsuite/18_support/pthread_guard.cc: ...here. + * testsuite/thread/18185.cc: Move... + * testsuite/21_strings/basic_string/pthread18185.cc: ...here. + * testsuite/thread/pthread1.cc: Move... + * testsuite/23_containers/list/pthread1.cc: ...here. + * testsuite/thread/pthread2.cc: Move... + * testsuite/27_io/basic_ofstream/pthread2.cc: ...here. + * testsuite/thread/pthread3.cc: Move... + * testsuite/27_io/basic_ostringstream/pthread3.cc: ...here. + + * testsuite/libstdc++-dg/conformance.exp: Remove thread directory. + * testsuite/thread: Remove. + +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + +2009-02-23 Adam Nemet <anemet@caviumnetworks.com> + + * testsuite/libstdc++-abi/abi.exp: Add multilib support. + * acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Remove MULTISUBDIR + from baseline_dir. + * configure: Regenerate. + * testsuite/Makefile.am (baseline_file): Remove variable. + (site.exp): Set baseline_dir rather than baseline_file. + (check-abi): Pass AM_RUNTESTFLAGS and RUNTESTFLAGS to runtest. + * testsuite/Makefile.in: Regenerate. + 2009-02-20 Benjamin Kosnik <bkoz@redhat.com> * testsuite/30_threads/thread/this_thread: Move... diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 22e6bc49c5a..186916c2e47 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -638,7 +638,7 @@ AC_DEFUN([GLIBCXX_CONFIGURE_TESTSUITE], [ fi # Export file names for ABI checking. - baseline_dir="$glibcxx_srcdir/config/abi/post/${abi_baseline_pair}\$(MULTISUBDIR)" + baseline_dir="$glibcxx_srcdir/config/abi/post/${abi_baseline_pair}" AC_SUBST(baseline_dir) ]) diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index d11accaf082..31678ebf212 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -5027,7 +5027,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -8045,7 +8045,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -8606,7 +8606,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -10170,7 +10170,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -12348,7 +12348,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi inherit_rpath_CXX=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -13176,7 +13176,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -14096,7 +14096,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -117983,7 +117983,7 @@ done fi # Export file names for ABI checking. - baseline_dir="$glibcxx_srcdir/config/abi/post/${abi_baseline_pair}\$(MULTISUBDIR)" + baseline_dir="$glibcxx_srcdir/config/abi/post/${abi_baseline_pair}" diff --git a/libstdc++-v3/testsuite/thread/guard.cc b/libstdc++-v3/testsuite/18_support/pthread_guard.cc index a509321f83f..a509321f83f 100644 --- a/libstdc++-v3/testsuite/thread/guard.cc +++ b/libstdc++-v3/testsuite/18_support/pthread_guard.cc diff --git a/libstdc++-v3/testsuite/thread/18185.cc b/libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc index 56d0965fee0..56d0965fee0 100644 --- a/libstdc++-v3/testsuite/thread/18185.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc diff --git a/libstdc++-v3/testsuite/thread/pthread4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/pthread4.cc index 146d8c7a594..146d8c7a594 100644 --- a/libstdc++-v3/testsuite/thread/pthread4.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/pthread4.cc diff --git a/libstdc++-v3/testsuite/thread/pthread1.cc b/libstdc++-v3/testsuite/23_containers/list/pthread1.cc index 66a0eab5bed..66a0eab5bed 100644 --- a/libstdc++-v3/testsuite/thread/pthread1.cc +++ b/libstdc++-v3/testsuite/23_containers/list/pthread1.cc diff --git a/libstdc++-v3/testsuite/thread/pthread5.cc b/libstdc++-v3/testsuite/23_containers/list/pthread5.cc index 643373148de..643373148de 100644 --- a/libstdc++-v3/testsuite/thread/pthread5.cc +++ b/libstdc++-v3/testsuite/23_containers/list/pthread5.cc diff --git a/libstdc++-v3/testsuite/thread/pthread6.cc b/libstdc++-v3/testsuite/23_containers/map/pthread6.cc index 5b24f18f0b6..5b24f18f0b6 100644 --- a/libstdc++-v3/testsuite/thread/pthread6.cc +++ b/libstdc++-v3/testsuite/23_containers/map/pthread6.cc diff --git a/libstdc++-v3/testsuite/thread/pthread2.cc b/libstdc++-v3/testsuite/27_io/basic_ofstream/pthread2.cc index 1e03a9fad37..1e03a9fad37 100644 --- a/libstdc++-v3/testsuite/thread/pthread2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ofstream/pthread2.cc diff --git a/libstdc++-v3/testsuite/thread/pthread3.cc b/libstdc++-v3/testsuite/27_io/basic_ostringstream/pthread3.cc index 936fd5271aa..936fd5271aa 100644 --- a/libstdc++-v3/testsuite/thread/pthread3.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ostringstream/pthread3.cc diff --git a/libstdc++-v3/testsuite/Makefile.am b/libstdc++-v3/testsuite/Makefile.am index 14ce3b7bf4c..2f239ff99cb 100644 --- a/libstdc++-v3/testsuite/Makefile.am +++ b/libstdc++-v3/testsuite/Makefile.am @@ -58,7 +58,7 @@ site.exp: Makefile @echo 'set target_triplet $(target_triplet)' >>site.tmp @echo 'set target_triplet $(target_triplet)' >>site.tmp @echo 'set libiconv "$(LIBICONV)"' >>site.tmp - @echo 'set baseline_file "$(baseline_file)"' >> site.tmp + @echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp @test ! -f site.exp || \ sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp @@ -67,7 +67,6 @@ site.exp: Makefile @mv site.tmp site.exp -baseline_file = ${baseline_dir}/baseline_symbols.txt extract_symvers = $(glibcxx_srcdir)/scripts/extract_symvers baseline_symbols: @@ -165,7 +164,7 @@ check-am: # Use 'new-abi-baseline' to create an initial symbol file. Then run # 'check-abi' to test for changes against that file. check-abi: site.exp baseline_symbols - -@runtest --tool libstdc++ abi.exp + -@runtest $(AM_RUNTESTFLAGS) --tool libstdc++ $(RUNTESTFLAGS) abi.exp # Runs the testsuite, but in compile only mode. # Can be used to test sources with non-GNU FE's at various warning diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in index f92f3f276a6..0ff110fe588 100644 --- a/libstdc++-v3/testsuite/Makefile.in +++ b/libstdc++-v3/testsuite/Makefile.in @@ -290,7 +290,6 @@ lists_of_files = \ testsuite_files_interactive \ testsuite_files_performance -baseline_file = ${baseline_dir}/baseline_symbols.txt extract_symvers = $(glibcxx_srcdir)/scripts/extract_symvers check_DEJAGNU_normal_targets = $(patsubst %,check-DEJAGNUnormal%,0 1 2 3) @@ -508,7 +507,7 @@ site.exp: Makefile @echo 'set target_triplet $(target_triplet)' >>site.tmp @echo 'set target_triplet $(target_triplet)' >>site.tmp @echo 'set libiconv "$(LIBICONV)"' >>site.tmp - @echo 'set baseline_file "$(baseline_file)"' >> site.tmp + @echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp @test ! -f site.exp || \ sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp @@ -609,7 +608,7 @@ check-am: # Use 'new-abi-baseline' to create an initial symbol file. Then run # 'check-abi' to test for changes against that file. check-abi: site.exp baseline_symbols - -@runtest --tool libstdc++ abi.exp + -@runtest $(AM_RUNTESTFLAGS) --tool libstdc++ $(RUNTESTFLAGS) abi.exp check-compile: testsuite_files ${compile_script} -@(chmod + ${compile_script}; \ ${compile_script} ${glibcxx_srcdir} ${glibcxx_builddir}) diff --git a/libstdc++-v3/testsuite/thread/pthread7-rope.cc b/libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc index 93bfe088cfa..93bfe088cfa 100644 --- a/libstdc++-v3/testsuite/thread/pthread7-rope.cc +++ b/libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc diff --git a/libstdc++-v3/testsuite/libstdc++-abi/abi.exp b/libstdc++-v3/testsuite/libstdc++-abi/abi.exp index b3f5b3b59be..2c8da227a99 100644 --- a/libstdc++-v3/testsuite/libstdc++-abi/abi.exp +++ b/libstdc++-v3/testsuite/libstdc++-abi/abi.exp @@ -18,18 +18,32 @@ # this test. Or, hey, if we don't support this kind of symbol # versioning test: don't run it. +set lib $blddir/src/.libs/libstdc++.so +set baseline_subdir "[eval exec $cxx --print-multi-dir]" + # Build the support objects. v3-build_support -if { (${v3-symver} == 0) || ![info exists baseline_file] \ - || ![file exists $baseline_file] \ - || ![file exists "../src/.libs/libstdc++.so"] } { +if { (${v3-symver} == 0) || ![info exists baseline_dir] \ + || ![file exists $baseline_dir] \ + || ![file exists $lib] } { + return +} + +set baseline_file \ + [file join $baseline_dir $baseline_subdir "baseline_symbols.txt"] +# If there is no ABI-specific reference file use that of the default ABI. +if ![file exists $baseline_file] { + set baseline_file [file join $baseline_dir "baseline_symbols.txt"] +} +if ![file exists $baseline_file] { return } +send_log "Checking $lib against $baseline_file\n" # Figure out what symbols are defined by the active build of the library. remote_exec "build" "$srcdir/../scripts/extract_symvers" \ - [list "../src/.libs/libstdc++.so" "current_symbols.txt"] + [list $lib "current_symbols.txt"] # Build the abi_check program. if { [v3_target_compile "$srcdir/util/testsuite_abi_check.cc" "abi_check" \ diff --git a/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp b/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp index 6a05a27ff8d..d8441953550 100644 --- a/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp +++ b/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp @@ -1,6 +1,6 @@ # Functional and regression tests in C++ for libstdc++. -# Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2004, 2009 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -14,7 +14,8 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. # libstdc++-v3 testsuite that uses the 'dg.exp' driver. @@ -57,7 +58,6 @@ if {[info exists tests_file] && [file exists $tests_file]} { lappend subdirs "$srcdir/backward" lappend subdirs "$srcdir/ext" lappend subdirs "$srcdir/performance" - lappend subdirs "$srcdir/thread" lappend subdirs "$srcdir/tr1" verbose "subdirs are $subdirs" diff --git a/libtool.m4 b/libtool.m4 index 66b1a3fbd25..c17514b9260 100644 --- a/libtool.m4 +++ b/libtool.m4 @@ -2445,7 +2445,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -3077,7 +3077,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -3698,7 +3698,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -3982,7 +3982,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -4363,7 +4363,7 @@ _LT_EOF _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -5848,7 +5848,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(inherit_rpath, $1)=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler diff --git a/zlib/ChangeLog.gcj b/zlib/ChangeLog.gcj index 02814a99cd4..eee68cdf60b 100644 --- a/zlib/ChangeLog.gcj +++ b/zlib/ChangeLog.gcj @@ -1,3 +1,7 @@ +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + 2008-12-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * configure: Regenerate. diff --git a/zlib/configure b/zlib/configure index b16f2820ddc..40eeec233eb 100755 --- a/zlib/configure +++ b/zlib/configure @@ -4934,7 +4934,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -6952,7 +6952,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' @@ -7493,7 +7493,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -9052,7 +9052,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be Linux ELF. -linux* | k*bsd*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no |