Alan Modra [Sun, 8 Feb 2004 12:11:25 +0000 (12:11 +0000)]
ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct long double function return and long double arg handling.
* src/powerpc/ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct
long double function return and long double arg handling.
(ffi_closure_helper_LINUX64): Formatting. Delete unused "ng" var.
Use "end_pfr" instead of "nf". Correct long double handling.
Localise "temp".
* src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double
return value.
* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate
space for long double return value. Adjust stack frame and offsets.
Load f2 long double return.
Makefile.in, [...]: Use the top level mkinstalldirs, not the one in the gcc subdir.
* Makefile.in, config/t-slibgcc-darwin, config/t-slibgcc-elf-ver,
config/t-slibgcc-sld, config/mips/t-iris5-6, config/sh/t-linux:
Use the top level mkinstalldirs, not the one in the gcc subdir.
* mkinstalldirs: Remove (from the gcc subdir).
Roger Sayle [Sat, 7 Feb 2004 18:57:35 +0000 (18:57 +0000)]
re PR middle-end/13696 (enum not useable as array index?)
PR middle-end/13696
* fold-const.c (fold_convert): New function to provide type
conversion to the middle-end without using convert.
(negate_expr, associate_trees, size_diffop, omit_one_operand,
operand_equal_for_comparison_p, pedantic_omit_one_operand,
invert_truthvalue, optimize_bit_field_compare, range_binop,
decode_field_reference, make_range, build_range_check, unextend,
fold_truthop, extract_muldiv_1, fold_mathfn_compare,
fold_binary_op_with_conditional_arg, fold_inf_compare,
fold_single_bit_test, fold, multiple_of_p): Replace all calls to
convert with calls to fold_convert.
Roger Sayle [Sat, 7 Feb 2004 15:35:40 +0000 (15:35 +0000)]
fold-const.c (negate_expr_p, [...]): Optimize -(A+B) into either (-A)-B or (-B)-A...
* fold-const.c (negate_expr_p, negate_expr): Optimize -(A+B) into
either (-A)-B or (-B)-A, if A or B is easily negated respectively.
(fold) <MINUS_EXPR>: Optimize (A*C) - (B*C) -> (A-B)*C for both
integer types and floating point with unsafe_math_optimizations.
Add similar optimization for (A*C1) - (A*C2) -> A*(C1-C2).
Optimize A - B as A + (-B), if B is easily negated.
* config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Add darwin-ldouble.c.
(SHLIB_MAPFILES): Add libgcc-ppc64.ver.
(SHLIB_MKMAP_OPTS): Delete.
(TARGET_LIBGCC2_CFLAGS): Add -specs.
(bispecs): Add rule.
* config/rs6000/libgcc-ppc64.ver: New file.
* config/rs6000/ppc64-fp.c (__fixtfdi, __floatditf): New functions.
(__floatdidf, __floatdisf): Optimize multiply.
(__fixunstfdi): New function.
* config/rs6000/rs6000.c (rs6000_complex_function_value): Allow for
real and imag parts larger than one register.
(function_arg): Correct type of reg used when fp arg split partially
to stack.
* config/rs6000/darwin-ldouble.c: Protect with #if !_SOFT_FLOAT
and __MACH__ or __powerpc64__.
Roger Sayle [Sat, 7 Feb 2004 03:00:16 +0000 (03:00 +0000)]
builtins.c (expand_builtin_signbit): Use extract_bit_field instead of gen_highpart or gen_lowpart when...
* builtins.c (expand_builtin_signbit): Use extract_bit_field instead
of gen_highpart or gen_lowpart when the floating point format is
wider than the result mode.
Ziemowit Laski [Fri, 6 Feb 2004 23:54:30 +0000 (23:54 +0000)]
[gcc/ChangeLog]
2004-02-06 Ziemowit Laski <zlaski@apple.com>
* objc/objc-act.c (build_super_template) the 'class' field of
'struct _objc_super' shall be named 'super_class' #ifdef OBJCPLUS.
(get_super_receiver): Likewise.
[gcc/libobjc/ChangeLog]
2004-02-06 Ziemowit Laski <zlaski@apple.com>
* objc/objc-api.h (objc_super): The 'class' field shall
be named 'super_class' #ifdef __cplusplus.
Daniel Berlin [Fri, 6 Feb 2004 20:17:00 +0000 (20:17 +0000)]
dwarf2out.c (struct gcc_debug_hooks): Call dwarf2out_begin_function at the beginning of function...
* dwarf2out.c (struct gcc_debug_hooks): Call dwarf2out_begin_function
at the beginning of function, call dwarf2out_var_location for
NOTE_INSN_VAR_LOCATION note.
(struct var_loc_node, struct var_loc_list_def, loclabel_num,
decl_loc_table): New.
(lookup_decl_loc): New function.
(add_var_loc_to_decl): New function.
(based_loc_descr): Added parameter can_use_fbreg, DW_OP_fbreg is used
only if can_use_fbreg.
(mem_loc_descriptor): Added parameter can_use_fbreg, pass it to other
functions.
(loc_descriptor): Likewise. Process VAR_LOCATION.
(concat_loc_descriptor): Call loc_descriptor with can_use_fbreg == true.
(loc_descriptor_from_tree): Call mem_loc_descriptor with
can_use_fbreg == true.
(add_location_or_const_value_attribute): Added parameter enum
dwarf_attribute attr, generate attribute ATTR. Create the location list.
(add_bound_info): Call loc_descriptor with can_use_fbreg == true.
(gen_formal_parameter_die): Call add_location_or_const_value_attribute
with attr == DW_AT_location.
(gen_subprogram_die): Generate the location list for DW_AT_frame_base
if frame_base_decl is defined and has a location list.
(gen_variable_die): Call add_location_or_const_value_attribute with
attr == DW_AT_location.
(dwarf2out_var_location): New function.
(dwarf2out_begin_function): New function.
(dwarf2out_init): Create decl_loc_table.
Co-Authored-By: Josef Zlomek <zlomekj@suse.cz>
From-SVN: r77421
Daniel Berlin [Fri, 6 Feb 2004 18:25:16 +0000 (18:25 +0000)]
dwarf2out.c (output_loc_list): Don't use deltas if we have a separate line info table in use.
* dwarf2out.c (output_loc_list): Don't use deltas if we have
a separate line info table in use.
Use the correct size for terminators.
(output_die): Use offset, not delta.
Jan Hubicka [Fri, 6 Feb 2004 13:57:15 +0000 (14:57 +0100)]
recog.c (split_all_insns): Do not update reg info.
* recog.c (split_all_insns): Do not update reg info.
* regrename.c (regrename_optimize): Likewise.
* toplev.c (rest_of_handle_reorder_blocks): Likewise.
* flow.c (struct propagate_block_info): Add insn_num field.
(reg_deaths): New array.
(life_analysis): Free reg_deaths info.
(allocate_reg_life_data): Allocate reg_deaths array.
(propagate_one_insn): Use new array.
(init_propagate_block): Initialize it.
(free_propagate_block_info): Finish compuation of
REG_LIVE_LENGTH
(attempt_auto_inc): Sanity check that REG_INFO is not
computed at same time.
(mark_used_regs): Update new array.
* reg-stack.c (subst_stack_regs): Unshare clobbers before
substitution.
Jeroen Frijters [Fri, 6 Feb 2004 13:27:36 +0000 (13:27 +0000)]
ObjectInputStream.java: Made all calls to dumpElement[ln] conditional on dump flag.
2004-02-06 Jeroen Frijters <jeroen@frijters.net>
* java/io/ObjectInputStream.java: Made all calls
to dumpElement[ln] conditional on dump flag. (readObject): Changed to
use cached info from ObjectStreamClass. (readClassDescriptor):
Cache more information in ObjectStreamClass. (processResolution,
readFields): Use cached info from ObjectStreamClass.
(newObject): Throw exception instead of returning null for failure.
(getField, getMethod, callReadMethod, setBooleanField, setByteField,
setCharField, setDoubleField, setFloatField, setIntField,
setLongField, setShortField, setObjectField, readObjectParams):
Removed. (dumpElement, dumpElementln): Removed dump flag condition
check.
* java/io/ObjectStreamField.java (hasReadMethod): Removed.
(setClass): Added call to cacheMethods() (findMethod): New method.
(cacheMethods): New method. (ObjectStreamClass): Added call to
cacheMethods(). (setFields): Cache fields. (getClassUID): Use
AccessController.doPrivileged to invoke setAccessible.
(readObjectMethod, readResolveMethod, realClassIsSerializable,
realClassIsExternalizable, fieldMapping, firstNonSerializableParent):
New fields.
* java/io/ObjectStreamField.java (ObjectStreamField): New constructor.
(ObjectStreamField): Removed FIXME workaround. (getTypeString,
isPrimitive): Made safe for cases where type == null.
(setBooleanField, setByteField, setCharField, setShortField,
setIntField, setLongField, setFloatField, setDoubleField,
setObjectField): New methods.
Kazu Hirata [Fri, 6 Feb 2004 05:58:11 +0000 (05:58 +0000)]
reload1.c (eliminate_regs_in_insn): If a set has a REG_EQUAL note containing (plus (reg) (const_int))...
* reload1.c (eliminate_regs_in_insn): If a set has a REG_EQUAL
note containing (plus (reg) (const_int)), where reg is an
eliminable reg, then perform the register elimination without
depending on eliminate_regs().
Kazu Hirata [Fri, 6 Feb 2004 05:52:02 +0000 (05:52 +0000)]
frv-protos.h: Remove the prototype for frv_setup_incoming_varargs.
* config/frv/frv-protos.h: Remove the prototype for
frv_setup_incoming_varargs.
* config/frv/frv.c (TARGET_SETUP_INCOMING_VARARGS): New.
(frv_setup_incoming_varargs): Make it static.
* config/frv/frv.h (SETUP_INCOMING_VARARGS): Remove.
Kazu Hirata [Fri, 6 Feb 2004 05:48:34 +0000 (05:48 +0000)]
fr30-protos.h: Remove the prototype for fr30_setup_incoming_varargs.
* config/fr30/fr30-protos.h: Remove the prototype for
fr30_setup_incoming_varargs.
Update the prototypes for fr30_num_arg_regs and
fr30_function_arg_partial_nregs.
* config/fr30/fr30.c (TARGET_STRUCT_VALUE_RTX): New.
(TARGET_SETUP_INCOMING_VARARGS): Likewise.
(fr30_setup_incoming_varargs): Make it static.
Add argument second_time. Don't do anything when second_time
is nonzero.
(fr30_num_arg_regs): Change the type of the first argument to
enum machine_mode.
(fr30_function_arg_partial_nregs): Change the type of the
second argument to enum machine_mode.
* config/fr30/fr30.h (STRUCT_VALUE): Remove.
(SETUP_INCOMING_VARARGS): Remove.
Kazu Hirata [Fri, 6 Feb 2004 05:41:12 +0000 (05:41 +0000)]
arc-protos.h: Remove the prototype for arc_setup_incoming_varargs.
* config/arc/arc-protos.h: Remove the prototype for
arc_setup_incoming_varargs.
* config/arc/arc.c (TARGET_ASM_EXTERNAL_LIBCALL): New.
(TARGET_SETUP_INCOMING_VARARGS): Likewise.
(arc_setup_incoming_varargs): Make it static.
(arc_external_libcall): Likewise.
* config/arc/arc.h (SETUP_INCOMING_VARARGS): Remove.
Remove the commented-out definition of
ASM_OUTPUT_EXTERNAL_LIBCALL.
acinclude.m4: Quote names of macros to be defined by AC_DEFUN throughout.
2004-01-14 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
* acinclude.m4: Quote names of macros to be defined by AC_DEFUN
throughout.
* aclocal.m4: Regenerate.
* configure: Regenerate.
Index: libf2c/ChangeLog
Thu Feb 5 15:08:08 2004 Geoffrey Keating <geoffk@apple.com>
PR 12179
* aclocal.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Use 'gcc', not 'gcc-lib'.
Add comment about poorly-named variables.
* Makefile.in (libsubdir): Use 'gcc', not 'gcc-lib'.
* configure: Regenerate.
Andreas Krebbel [Thu, 5 Feb 2004 22:48:53 +0000 (22:48 +0000)]
s390.md ("*tmqidi_ext"): New insn.
2004-02-04 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.md ("*tmqidi_ext"): New insn.
("*extendqidi2_short_displ", "*extendsiqi2_short_displ"): Old
pre-reload splitters are transformed to post-reload
define_insn_and_split patterns.
("*tmqisi_ext"): Renamed old "*tmqi_ext".
* config/os/irix/irix6.5/os_defines.h (_GLIBCXX_FIONREAD_TAKES_OFF_T):
Define.
* config/io/basic_file_stdio.cc (__basic_file<char>::showmanyc): Use
it to decide whether FIONREAD should take an off_t or int argument.
Scrollbar.java (next_scrollbar_number): New field.
2004-02-05 Thomas Fitzsimmons <fitzsim@redhat.com>
* java/awt/Scrollbar.java (next_scrollbar_number): New field.
(Scrollbar (int, int, int, int, int)): Make default page
increment 10.
(setValues): Only call peer.setValues if one of the values has
changed.
(generateName): New method.
(getUniqueLong): New method.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c
(range_scrollbar): Remove structure.
(post_adjustment_event): Remove function.
(post_change_event): Accept jobject argument.
(create): Cast jints to gdoubles. Round scrollbar values to the
nearest integer. Clamp min, max and value settings.
(connectJObject): Connect hook to widget->window.
(connectSignals): Remove range_scrollbar structure variables.
Remove "move-slider" connection. Pass global peer reference to
"value-changed" callback.
(setLineIncrement): Cast jint value to gdouble.
(setPageIncrement): Likewise.
(setValues): Likewise. Clamp min, max and value settings.
Dorit Naishlos [Thu, 5 Feb 2004 18:07:39 +0000 (18:07 +0000)]
altivec.md (*movv4si_internal): At least one operand must be altivec_register_operand.
2004-02-05 Dorit Naishlos <dorit@il.ibm.com>
* config/rs6000/altivec.md (*movv4si_internal): At least one
operand must be altivec_register_operand.
(*movv8hi_internal1): Likewise.
(*movv16qi_internal1): Likewise.
(*movv4sf_internal1): Likewise.
Giovanni Bajo [Thu, 5 Feb 2004 16:48:54 +0000 (16:48 +0000)]
re PR c++/14008 (Confusing diagnostic when omitting a template parameter)
PR c++/14008
* parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
code, only emits the diagnostic now. Added lookup of the identifier
and support for qualified ids.
(cp_parser_parse_and_diagnose_invalid_type_name): New function.
Parse an (invalid) type name as id-expression within a declarator.
(cp_parser_simple_declaration): Use it.
(cp_parser_member_declaration): Likewise.
(cp_parser_make_typename_type): New function. Handle errors through
cp_parser_diagnose_invalid_typename.
(cp_parser_elaborated_type_specifier): Use it.
Michael Koch [Thu, 5 Feb 2004 15:57:01 +0000 (15:57 +0000)]
2004-02-05 Michael Koch <konqueror@gmx.de>
* gnu/java/nio/NIOServerSocket.java
(impl): Unused, removed.
* gnu/java/nio/SocketChannelImpl.java
(finnishConnect): Don't throw NoConnectionPendingException if not
connected or no connection pending.
* c-ppoutput.c (pp_dir_change): New function.
* c-common.h (pp_dir_change): New declaration.
* cpplib.h (struct cpp_options): Remove working_directory field.
* cppinit.c (cpp_find_main_file, cpp_push_main_file): Merge back to
(cpp_read_main_file): as before 10-01. Call _cpp_stack_file.
Don't handle -fworking_directory here, but in c_common_post_options.
(read_original_directory): Don't back up when done.
Don't clear no-longer used working_directory flag.
* cpplib.h: Update declarations to match.
* c-lex.c (cb_dir_change): Move to c-opts.c.
(init_c_lex): Don't set dir_change callback here, since we want
to set it even if flag_preprocess_only.
* c-opts.c (cb_dir_change): Function moved from c-lex.c.
(c_common_post_options): Set dir_change callback.
Call pp_dir_change if approporiate.
(finish_options): Don't call cpp_find_main_file here. Hence remove
unneeded parameter and result. Do LC_RENAME for <built-in>.
(c_common_post_options): Call cpp_read_main_file here instead.
(c_common_init): Update accordingly.
(push_command_line_include): Don't cpp_push_main_file.
Do LC_RENAME rather than LC_LEASE to get back to main file.
Compared to pre-10-01 version, inline cpp_rename_to_main_file.
(c_common_parse_file): Call cpp_read_main_file for subsequent main
files, but call finish_options for all files.
* c-opts.c (sanitize_cpp_opts): Don't set cpp_opts->working_directory.
* fix-header.c (read_scan_file): Call cpp_read_main_file instead of
cpp_find_main_file + cpp_push_main_file.
* c-lex.c (fe_file_change): Don't set main_input_filename here.
* opts.c (handle_options): Only set main_input_filename first time.