expr.c (emit_move_via_integer): Add force argument, pass it on to emit_move_change_mode.
* expr.c (emit_move_via_integer): Add force argument, pass it on
to emit_move_change_mode. Update callers.
(emit_move_complex): Pass true to new force argument.
* function.c (expand_function_end): Move expand_eh_return call
earlier. Merge sub-word complex values into a pseudo before
copying to the return hard register.
Tom Tromey [Thu, 15 Sep 2005 20:17:05 +0000 (20:17 +0000)]
For PR libgcj/23288:
* java/net/URLClassLoader.java (definePackage): Correctly order
arguments to definePackage. Look up per-entry Attributes.
(getAttributeValue): New method.
Benjamin Kosnik [Thu, 15 Sep 2005 18:58:02 +0000 (18:58 +0000)]
re PR libstdc++/21674 (basic_string vs debug_mode)
2005-09-15 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/21674
PR libstdc++/22205
PR libstdc++/22222
* include/bits/c++config: Set _GLIBCXX_STD regardless of __GXX_WEAK__.
Add in check for __NO_INLINE__ for warning.
* testsuite/lib/dg-options.exp (dg-require-debug-mode): New.
* testsuite/lib/libstdc++.exp (check_v3_target_debug_mode): New.
* testsuite/21_strings/basic_string/element_access/char/21674.cc:
Use it.
* testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc:
Use it.
Mark Mitchell [Thu, 15 Sep 2005 16:03:32 +0000 (16:03 +0000)]
re PR c++/13140 (declaration in global namespace, definition inside named or anon namespace)
PR c++/13140
* decl.c (check_class_member_definition_namespace): New function.
(grokfndecl): Use it.
(grokvardecl): Likewise.
(grokdecl): Improve documentation.
* pt.c (check_explicit_instantiation_namespace): New function.
(register_specialization): Call check_specialization_namespace
when replacing an implicitly instantiated function.
(check_explicit_specialization): Ensure that DECL_CONTEXT is set
correctly for namespace-scope specializations.
(do_decl_instantiation): Use
check_explicit_instantiation_namespace.
(do_type_instantiation): Likewise.
re PR java/23891 (Problem folding static fields across packages)
2005-09-14 Bryce McKinlay <mckinlay@redhat.com>
PR java/23891
* parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for
the newly created type. Set import lists here, not in create_class.
(jdep_resolve_class): Set current_class.
(do_resolve_class): Use current_class's TYPE_PACKAGE to determine
the current package context, not ctxp->package.
(cicp_cache): Removed.
(class_in_current_package): Simplify implementation using
TYPE_PACKAGE.
* jcf-parse.c (give_name_to_class): Set TYPE_PACKAGE.
* java-tree.h (TYPE_PACKAGE): New macro.
(struct lang_type): New member 'package'.
* pex-win32.c: Include "windows.h".
(backslashify): New function.
(fix_argv): Use backslashify to convert path to windows format. Allocate one
more place in new argv for potential executable from '#!' parsing.
(tack_on_executable): New function. Conditional on USE_MINGW_MSYS
(openkey): Ditto.
(mingw_rootify): Ditto.
(msys_rootify): Ditto.
(spawn_script): New function.
(pex_win32_exec_child): Save translated argv in newargv. Pass to spawn_script
if spawnv* fails.
(main): New function. Conditional on MAIN. Useful for testing.
Jerry DeLisle [Wed, 14 Sep 2005 20:25:56 +0000 (20:25 +0000)]
PR fortran/21875 Internal Unit Array I/O, NIST
2005-09-14 Jerry DeLisle <jvdelisle@verizon.net>
PR fortran/21875 Internal Unit Array I/O, NIST
* gfortran.dg/arrayio_1.f90: New test.
* gfortran.dg/arrayio_1.f90: New test.
* gfortran.dg/arrayio_1.f90: New test.
* gfortran.dg/arrayio_1.f90: New test.
* gfortran.dg/arrayio_1.f90: New test.
Paul Thomas [Wed, 14 Sep 2005 20:19:37 +0000 (20:19 +0000)]
PR fortran/21875 Internal Unit Array I/O, NIST
2005-09-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/21875 Internal Unit Array I/O, NIST
* fortran/trans-io.c (gfc_build_io_library_fndecls): Add field for
array descriptor to IOPARM structure.
* fortran/trans-io.c (set_internal_unit): New function to generate code
to store the character (array) and the character length for an internal
unit.
* fortran/trans-io (build_dt): Use the new function set_internal_unit.
Jerry DeLisle [Wed, 14 Sep 2005 20:18:19 +0000 (20:18 +0000)]
PR fortran/21875 Internal Unit Array I/O, NIST
2005-09-14 Jerry DeLisle <jvdelisle@verizon.net
PR fortran/21875 Internal Unit Array I/O, NIST
* libgfortran.h: Add run time error code for array stride.
* runtime/error.c (translate_error): Add error message for
array stride.
* io/io.h: Add array descriptor pointer to IOPARM structure.
Add prtotypes for two new functions.
* io/transfer.c (data_transfer_init): Removed initialization and
moved to unit.c (get_unit)
* io/transfer.c (next_record_r): Include internal unit read
functionality.
* io/transfer.c (next_record_w): Include internal unit write
functionality, including padding of character array records.
* io/unit.c (get_array_unit_len): New function to return the number
of records in the character array 'file' from the array descriptor.
* io/unit.c (get_unit): Gathered initialization code from
init_data_transfer for internal units and added initialization of
character array unit.
* io/unit.c (is_array_io): New function to determine if internal unit
is an array.
* io/unix.c (mem_alloc_w_at): Add error checks for bad record length
and end of file.
re PR middle-end/22480 (ICE in convert_move, at expr.c:390 with -ftree-vectorize)
2005-09-14 Uros Bizjak <uros@kss-loka.si>
PR middle-end/22480
* tree-vect-transform.c (vectorizable_operation): Return false for
scalar shift operations and for vector shift operations with
non-invariant shift arguments. Use scalar tree operand op1 as
a shift operand when vector shift insn pattern uses scalar shift
operand.
* Makefile.in (tree-vect-transform.o): Depend on recog.h.
* lib/gcc-dg.exp: Load scanipa.exp.
(cleanup-dump): New procedure.
(cleanup-rtl-dump, cleanup-tree-dump, cleanup-ipa-dump): Use it.
* lib/scandump.exp: New file.
* lib/scantree.exp: Use it.
* lib/scanipa.exp: New file.
Erik Edelmann [Tue, 13 Sep 2005 21:46:04 +0000 (00:46 +0300)]
re PR fortran/17740 (ICE in gfc_trans_arrayfunc_assign, at fortran/trans-expr.c:2011)
2005-09-13 Erik Edelmann <erik.edelmann@iki.fi>
fortran/
PR fortran/17740
* trans-expr.c (gfc_trans_arrayfunc_assign): Check value
of attr.elemental for specific function instead of generic name.
testsuite/
PR fortran/17740
* gfortran.dg/generic_4.f90: New test.
re PR c++/16171 ([ABI] Problems with standard names in different namespaces)
PR c++/16171
* mangle.c (find_substitution): Do not use special substitutions
for identifiers not in std::.
PR c++/16171
* g++.dg/abi/mangle26.C: New test.
* g++.dg/abi/mangle27.C: New test.
* g++.dg/abi/mangle28.C: New test.
* g++.dg/abi/mangle29.C: New test.
re PR fortran/18899 ([gfortran] ubound wrongly calculated for passed array)
PR fortran/18899
* trans-intrinsic.c (gfc_conv_intrinsic_bound): Move initialization
of argse. Remove now-redundant want_pointer assignment.
* trans-array.c (gfc_conv_expr_descriptor): When not assigning to
a pointer, keep the original bounds of a full array reference.
re PR fortran/19269 (transpose(reshape(...)) of character array segfaults.)
gcc/fortran/
PR target/19269
* iresolve.c (gfc_resolve_cshift, gfc_resolve_eoshift)
(gfc_resolve_pack, gfc_resolve_reshape, gfc_resolve_spread)
(gfc_resolve_transpose, gfc_resolve_unpack): Add "_char" to the name
for character-based operations.
(gfc_resolve_pack): Remove ATTRIBUTE_UNUSED from array argument.
(gfc_resolve_unpack): Copy the whole typespec from the vector.
* trans-array.c (gfc_conv_expr_descriptor): In the EXPR_FUNCTION
case, get the string length from the scalarization state.
libgfortran/
PR target/19269
* intrinsics/cshift0.c (cshift0): Add an extra size argument.
(cshift0_1, cshift0_2, cshift0_4, cshift0_8): Replace explicit
implementations with...
(DEFINE_CSHIFT): ...this new macro. Define character versions too.
* intrinsics/eoshift0.c (zeros): Delete.
(eoshift0): Add extra size and filler arguments. Use memset if no
bound is provided.
(eoshift0_1, eoshift0_2, eoshift0_4, eoshift0_8): Replace explicit
implementations with...
(DEFINE_EOSHIFT): ...this new macro. Define character versions too.
* intrinsics/eoshift2.c (zeros): Delete.
(eoshift2): Add extra size and filler arguments. Use memset if no
bound is provided.
(eoshift2_1, eoshift2_2, eoshift2_4, eoshift2_8): Replace explicit
implementations with...
(DEFINE_EOSHIFT): ...this new macro. Define character versions too.
* intrinsics/pack.c (pack_internal): New static function, reusing
the contents of pack and adding an extra size argument. Change
"mptr" rather than "m" when calculating the array size.
(pack): Redefine as a forwarder to pack_internal.
(pack_s_internal): New static function, reusing the contents of
pack_s and adding an extra size argument.
(pack_s): Redefine as a forwarder to pack_s_internal.
(pack_char, pack_s_char): New functions.
* intrinsics/reshape.c (reshape_internal): New static function,
reusing the contents of reshape and adding an extra size argument.
(reshape): Redefine as a forwarder to reshape_internal.
(reshape_char): New function.
* intrinsics/spread.c (spread_internal): New static function,
reusing the contents of spread and adding an extra size argument.
(spread): Redefine as a forwarder to spread_internal.
(spread_char): New function.
* intrinsics/transpose.c (transpose_internal): New static function,
reusing the contents of transpose and adding an extra size argument.
(transpose): Redefine as a forwarder to transpose_internal.
(transpose_char): New function.
* intrinsics/unpack.c (unpack_internal): New static function, reusing
the contents of unpack1 and adding extra size and fsize arguments.
(unpack1): Redefine as a forwarder to unpack_internal.
(unpack0): Call unpack_internal instead of unpack1.
(unpack1_char, unpack0_char): New functions.
* m4/cshift1.m4 (cshift1): New static function, reusing the contents
of cshift1_<kind> and adding an extra size argument.
(cshift1_<kind>): Redefine as a forwarder to cshift1.
(cshift1_<kind>_char): New function.
* m4/eoshift1.m4 (zeros): Delete.
(eoshift1): New static function, reusing the contents of
eoshift1_<kind> and adding extra size and filler arguments.
Fix calculation of hstride. Use memset if no bound is provided.
(eoshift1_<kind>): Redefine as a forwarder to eoshift1.
(eoshift1_<kind>_char): New function.
* m4/eoshift3.m4 (zeros): Delete.
(eoshift3): New static function, reusing the contents of
eoshift3_<kind> and adding extra size and filler arguments.
Use memset if no bound is provided.
(eoshift3_<kind>): Redefine as a forwarder to eoshift3.
(eoshift3_<kind>_char): New function.
* generated/cshift1_4.c, generated/cshift1_8.c,
* generated/eoshift1_4.c, generated/eoshift1_8.c,
* generated/eoshift3_4.c, generated/eoshift3_8.c: Regenerate.
configure.in: Recognize f95 in the --enable-languages option...
* configure.in: Recognize f95 in the --enable-languages option,
and substitute it for fortran, issuing a warning.
* configure: Regenerate.
* Make-lang.in: Change targets prefixes from f95 to fortran.
* config-lang.in: Change language name to "fortran".
* lang.opt: Change language name to "fortran".
* options.c: Change CL_F95 to CL_Fortran.
Mark Mitchell [Tue, 13 Sep 2005 02:41:07 +0000 (02:41 +0000)]
re PR c++/23841 (Floating-point literals cast to integral types should be accepted in integer constant expressions)
PR c++/23841
* parser.c (cp_parser_primary_expression): Recognize the closing
">" of a template-argument-list after a floating-point literal as
the end of a cast expression.
PR c++/23841
* g++.dg/parse/template17.C: New test.
Alan Modra [Tue, 13 Sep 2005 02:00:53 +0000 (02:00 +0000)]
re PR target/23774 (dealloc of dynamic stack space breaks backchain)
PR target/23774
* config/rs6000/rs6000.md (restore_stack_block): Write the backchain
word before changing the stack pointer. Use gen_frame_mem for MEMs.
Use UNSPEC_TIE to prevent insn scheduling reordering the insns.
(restore_stack_nonlocal): Likewise.
(save_stack_nonlocal): Use template to emit insns, and gen_frame_mem.
re PR libgcj/23762 (java.library.path should default to value of environment variable specified by LTDL_SHLIBPATH_VAR)
2005-09-12 Thomas Fitzsimmons <fitzsim@redhat.com>
PR libgcj/23762
* shlibpath.m4: New file.
* configure.ac: If libltdl is being used call AC_LTDL_SHLIBPATH
macro.
* gnu/classpath/natSystemProperties.cc (insertSystemProperties)
[USE_LTDL]: If it was not defined with -D set java.library.path to
the value of LTDL_SHLIBPATH_VAR.
Benjamin Kosnik [Mon, 12 Sep 2005 23:09:41 +0000 (23:09 +0000)]
re PR libstdc++/22554 (pb_assoc header build and install overflows exec)
2005-09-12 Benjamin Kosnik <bkoz@redhat.com>
David Edelsohn <dje@gcc.gnu.org>
PR libstdc++/22554
PR libstdc++/23734
* include/Makefile.am (assoc_headers): Break into five sub values.
(install-headers): Use them.
(stamp-assoc): Same.
* include/Makefile.in: Regenerate.
Paolo Carlini [Mon, 12 Sep 2005 21:13:04 +0000 (21:13 +0000)]
[multiple changes]
2005-09-12 Chris Jefferson <chris@bubblescope.net>
* include/bits/stl_algo.h (search_n): Delegate to specializations.
(search_n(,,,,binary_predicate)): Likewise.
(__search_n(forward_iterator_tag)): Original search_n, tweak to
remove an unnecessary comparison.
(__search_n(,,,,binary_predicate,forward_iterator_tag)): Likewise.
Benjamin Kosnik [Mon, 12 Sep 2005 20:32:54 +0000 (20:32 +0000)]
re PR libstdc++/23417 (bits/stl_tree.h isn't -Weffc++ clean)
2005-09-12 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/23417
* include/bits/stl_list.h (_List_impl): Use member initialization
list for -Weffc++.
* include/bits/stl_tree.h (_Rb_tree_impl): Same.
Ian Lance Taylor [Mon, 12 Sep 2005 19:54:23 +0000 (19:54 +0000)]
re PR c++/7874 (g++ finds friend functions defined in class-definition but not declared in the enclosing namespace)
./ PR g++/7874
* c.opt (ffriend-injection): New C++ option.
* doc/invoke.texi (Option Summary): Mention -ffriend-injection.
(C++ Dialect Options): Document -ffriend-injection.
cp/
PR g++/7874
* cp-tree.h (struct lang_decl_flags): Add hidden_friend_p
bitfield. Make dummy bitfield one bit smaller.
(DECL_HIDDEN_FRIEND_P): Define.
(pushdecl_maybe_friend): Declare.
(pushdecl_top_level_maybe_friend): Declare.
* decl.c (duplicate_decls): Add newdecl_is_friend parameter.
Change prototype and all callers. Add assertion that a
DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P. Set
DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if
appropriate.
* name-lookup.c (supplement_binding): Don't ignore a
DECL_HIDDEN_FRIEND_P.
(pushdecl_maybe_friend): Break out contents of pushdecl. Add
is_friend parameter. Set DECL_ANTICIPATED and
DECL_HIDDEN_FRIEND_P for a friend function.
(pushdecl): Just call pushdecl_maybe_friend.
(pushdecl_with_scope): Add is_friend parameter. Change prototype
and all callers.
(pushdecl_namespace_level): Likewise.
(push_overloaded_decl): Likewise. Check DECL_HIDDEN_FRIEND_P as
well as DECL_ANTICIPATED when checking for a builtin.
(do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as
DECL_ANTICIPATED when checking for a builtin.
(do_nonmember_using_decl): Likewise.
(pushdecl_top_level_1): Add is_friend parameter. Change all
callers.
(pushdecl_top_level_maybe_friend): New function.
(remove_hidden_names): New function.
(struct arg_lookup): Add args field.
(friend_of_associated_class_p): New static function.
(arg_assoc_namespace): Ignore hidden functions which are not
friends of an associated class of some argument.
(lookup_arg_dependent): Remove hidden functions from list passed
in. Initialize k.args.
* name-lookup.h (remove_hidden_names): Declare.
* friend.c (do_friend): Call pushdecl_maybe_friend instead of
pushdecl.
* call.c (add_function_candidate): Change DECL_ANTICIPATED test to
an assertion, with a check for DECL_HIDDEN_FRIEND_P.
(build_new_function_call): Add koenig_p parameter. Change
prototype and callers.
* pt.c (register_specialization): Add is_friend parameter. Change
all callers.
(push_template_decl_real): Change is_friend parameter to bool.
Change prototype and all callers.
(tsubst_friend_class): Call pushdecl_top_level_maybe_friend
instead of pushdecl_top_level.
testsuite/
PR g++/7874
* g++.dg/lookup/friend7.C: New test.
* g++.dg/lookup/friend8.C: New test.
* g++.dg/parse/defarg4.C: Add a parameter to the friend function,
so that it will be found via argument dependent lookup.
* g++.old-deja/g++.brendan/crash56.C: Don't expect errors for
friend functions which will no longer be found.
* g++.old-deja/g++.jason/friend.C: Add a parameter to the friend
function g, so that it will be found via argument dependent
lookup.
* g++.old-deja/g++.jason/scoping15.C: Use -ffriend-injection.
* g++.old-deja/g++.mike/net43.C: Likewise.
Andrew Pinski [Mon, 12 Sep 2005 13:56:07 +0000 (13:56 +0000)]
tree-ssa-dse.c (dse_optimize_stmt): Fix up all of V_MAY_DEF and V_MUST_DEF instead of just the first_use_p.
2005-09-12 Andrew Pinski <pinskia@physics.uc.edu>
* tree-ssa-dse.c (dse_optimize_stmt): Fix up all of V_MAY_DEF and
V_MUST_DEF instead of just the first_use_p.
Don't mark the virtual variables for renaming on the statement which
is being removed.
(pass_dse): Remove TODO_update_ssa.
re PR middle-end/23290 (Layout changed for structure with single complex field)
PR middle-end/23290
* stor-layout.c (compute_record_mode): For records with a single
field, actually check the field's mode size against the type size.
sh.h (HARD_REGNO_MODE_OK): Allow V4SFmode in general purpose registers for TARGET_SHMEDIA.
* sh.h (HARD_REGNO_MODE_OK): Allow V4SFmode in general purpose
registers for TARGET_SHMEDIA.
(enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Rename
GENERAL_FP_REGS to GENERAL_DF_REGS. Add GENERAL_FP_REGS as union
of GENERAL_REGS and FP_REGS.