Jerry DeLisle [Fri, 16 Dec 2005 19:32:21 +0000 (19:32 +0000)]
re PR fortran/25264 (write to internal unit from the string itself gives wrong result ?)
2005-12-16 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/25264
PR libgfortran/25349
* io/unit.c (get_unit): Delete code that cleared the string when the
unit was opened, which is too soon.
* io/transfer.c (next_record_w): Pass done flag in. Change logic for
setting max_pos. Add code to position unit and pad record as needed.
Steven Bosscher [Fri, 16 Dec 2005 15:38:19 +0000 (15:38 +0000)]
reorg.c (mostly_true_jump): Clean up code depending on LABEL_OUTSIDE_LOOP_P and loop notes.
* reorg.c (mostly_true_jump): Clean up code depending on
LABEL_OUTSIDE_LOOP_P and loop notes. Remove code doing
poor man's branch prediction, instead rely on REG_BR_PROB
notes to be available.
Alan Modra [Fri, 16 Dec 2005 09:46:22 +0000 (09:46 +0000)]
re PR driver/20425 (-print-search-dirs doesn't honor mutil-os/multilib settings)
PR driver/20425
* gcc.c (for_each_path): New function.
(add_to_obstack, file_at_path): New functions.
(struct file_at_path_info, struct add_to_obstack_info): New.
(build_search_list): Rewrite using for_each_path. Constify struct
path_prefix pointer. Add do_multi param. Adjust all callers.
(find_a_file): Similarly, but just change existing param to bool.
(putenv_from_prefixes): Add do_multi param, make "paths" const.
(do_spec_path): Delete.
(struct spec_path_info): New.
(spec_path): New function.
(do_spec_1): Use for_each_path for %D and %I.
(find_file): Adjust for find_a_file changes.
(main): Search multilibs for specs. Print multilib lib path for
-print-search-dirs. Likewise add multilibs to LIBRARY_PATH_ENV.
(read_specs): Search multilibs for %include and %include_noerr.
(is_directory): Remove second string param. Change last param
to a bool. Don't use concat. Remove SMALL_ARG_MAX test, always
check path is a dir. Update all callers.
* doc/hostconfig.texi (SMALL_ARG_MAX): Remove mention.
* system.h (SMALL_ARG_MAX): Poison.
* config.gcc: Don't define SMALL_ARG_MAX.
* config.host: Likewise.
* config.build: Likewise.
Andrew Pinski [Fri, 16 Dec 2005 05:01:38 +0000 (05:01 +0000)]
struct-layout-encoding-1_generate.c (base_types): Change C++ style comments to C style comments.
2005-12-16 Andrew Pinski <pinskia@physics.uc.edu>
* objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c (base_types):
Change C++ style comments to C style comments.
Remove aligned types from the array.
Keep Enums disabled.
(complex_types): Remove aligned types from the array.
Comment out "_Complex long double".
(attrib_types): Remove.
(complex_attrib_types): Remove.
(attrib_array_types): Remove.
(complex_attrib_array_types): Remove.
(aligned_bitfld_types): Remove.
(n_aligned_bitfld_types): Remove.
(FEATURE_ALIGNEDPACKED): Delete.
(ALL_FEATURES): Remove FEATURE_ALIGNEDPACKED.
(singles): Remove support for adding attributes.
(choose_type): Remove support for attributed types.
(generate_fields): Remove support for attributed bit-fields.
Remove support for adding attributes.
(generate_random_tests): Remove support for adding attributes.
(features): Add back "[0] :0" and "complex vector [0]".
(main): Remove support for attributed bit-fields.
Uncomment the calling of generate_random_tests for the rests of
the tests.
Zdenek Dvorak [Thu, 15 Dec 2005 23:30:46 +0000 (00:30 +0100)]
Commit part of Zdenek's larger loop-invariant.c patch.
* loop-invariant.c (df): New global variable.
(find_defs, check_dependencies, find_invariant_insn, record_uses,
find_invariants_bb, find_invariants_body, find_invariants,
find_invariants_to_move, move_invariants, free_inv_motion_data,
move_single_loop_invariants, move_loop_invariants): Do not pass df in
arguments.
Co-Authored-By: Steven Bosscher <stevenb@suse.de>
From-SVN: r108605
Joseph Myers [Thu, 15 Dec 2005 21:50:10 +0000 (21:50 +0000)]
re PR other/25028 (TImode-to-floating conversions broken)
PR other/25028
* libgcc2.h (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Define.
* libgcc2.c (__floatdixf, __floatundixf, __floatditf,
__floatunditf): Use #error if type sizes don't match requirements
of implementation.
(__floatdisf, __floatdidf): Unify. Possibly use XFmode or TFmode
as wider floating-point type. Use #error if type sizes don't
match requirements of implementation. Avoid overflow in computing
Wtype_MAXp1_F * Wtype_MAXp1_F. When special casing conversion,
shift one more bit. Cast 1 to DWtype or UDWtype for shifting.
(__floatundisf, __floatundidf): Likewise.
* config/ia64/hpux.h (XF_SIZE, TF_SIZE): Define.
* config/ia64/ia64.c (ia64_init_libfuncs): Use
_U_Qfcnvfxt_quad_to_quad and _U_Qfcnvxf_quad_to_quad for
TFmode-TImode conversions.
* doc/tm.texi (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Document.
testsuite:
* gcc.dg/torture/fp-int-convert-timode.c: Only XFAIL for LP64 IA64
HP-UX.
final.c (final_scan_insn): Flip in_cold_section_p when changing between the hot and cold sections.
* final.c (final_scan_insn): Flip in_cold_section_p when changing
between the hot and cold sections. Use current_function_section
to get the new section.
* dwarf2out.c (output_line_info): Use in_cold_section_p to
determine whether we are assembling hot or cold code.
(secname_for_decl, dwarf2out_var_location): Likewise.
(dwarf2out_init, dwarf2out_finish): Use switch_to_section.
* varasm.c (last_text_section): Delete.
(in_cold_section_p): New variable.
(hot_function_section): New function.
(current_function_section): Pass in_cold_section_p as the
reloc argument to select_section. Use it to decide between
unlikely_function_section and hot_function_section.
(assemble_start_function): Use switch_to_section. Set
in_cold_section_p instead of last_text_section.
(assemble_end_function): Use switch_to_section.
(switch_to_section): Don't set last_text_section.
* config/darwin/darwin.c (machopic_select_section): Trust the reloc
argument to make the right choice between hot and cold sections.
Paolo Carlini [Thu, 15 Dec 2005 11:31:59 +0000 (11:31 +0000)]
stl_vector.h (vector<>::_M_get_Tp_allocator): Change to return by ref and add non const version.
2005-12-15 Paolo Carlini <pcarlini@suse.de>
* include/bits/stl_vector.h (vector<>::_M_get_Tp_allocator): Change
to return by ref and add non const version.
* include/bits/stl_deque.h (deque<>::_M_get_Tp_allocator): Likewise.
* combine.c: Remove force_to_mode's fourth parameter.
(force_to_mode): Do not handle REG.
(canon_reg_for_combine): New.
(make_field_assignment): Use it where the removed argument was non-NULL.
Alan Modra [Thu, 15 Dec 2005 07:22:10 +0000 (07:22 +0000)]
re PR target/25406 (gcc.dg/20030625-1.c, gcc.dg/20050620-1.c, gcc.dg/940510-1.c, gcc.dg/c99-flex-array-1.c, gcc.dg/pr14475.c, and gcc.dg/noncompile/incomplete-1.c fail on powerpc-darwin)
Kean Johnston [Wed, 14 Dec 2005 17:30:34 +0000 (17:30 +0000)]
sibcall-6.c: Skip in -fPIC mode on X86 ilp32.
* gcc.dg/sibcall-6.c: Skip in -fPIC mode on X86 ilp32.
* gcc.target/i386/20020523-1.c: Ditto.
* gcc.target/i386/tailcall-1.c: Ditto.
* gcc.target/i386/ssetype-3.c: Make magic* static to work with -fPIC.
* gcc.target/i386/ssetype-5.c: Ditto.
Co-Authored-By: Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
From-SVN: r108521
Jeff Law [Wed, 14 Dec 2005 16:15:53 +0000 (09:15 -0700)]
tree-ssa-ccp.c (fold_stmt_r): DATA argument is now a pointer to a structure containing state rather than a...
* tree-ssa-ccp.c (fold_stmt_r): DATA argument is now a pointer
to a structure containing state rather than a pointer to bool.
(case ARRAY_REF): New code to handle folding some array references.
(case ADDR_EXPR): Note when we are processing expressions found
within an ADDRE_EXPR.
(fold_stmt, fold_stmt_inplace): Pass in a structure to fold_stmt_r
for state variables rather than just a pointer to a boolean.
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Remove
handling of constant string references.
Jakub Jelinek [Wed, 14 Dec 2005 11:00:50 +0000 (12:00 +0100)]
re PR target/25254 (ICE with -mcmodel=medium -mlarge-data-threshold=1)
PR target/25254
PR target/24188
* config/i386/i386.c (x86_64_elf_select_section): If DECL is not
DECL_P, call get_section rather than get_named_section. Supply
section flags to it.
* gcc.target/i386/pr25254.c: New test.
* gfortran.dg/PR24188.f: New test.
Ben Elliston [Tue, 13 Dec 2005 23:33:26 +0000 (23:33 +0000)]
c-common.c (c_common_truthvalue_conversion): Generalise warning for addresses converted to booleans; not just function addresses.
* c-common.c (c_common_truthvalue_conversion): Generalise warning
for addresses converted to booleans; not just function addresses.
* c-typeck.c (build_binary_op): Warn for address comparisons which
can never be NULL (eg. func == NULL or &var == NULL).
* common.opt (Walways-true): New option.
* c-opts.c (c_common_handle_option): Set it with -Wall.
* doc/invoke.texi: Document it.
testsuite/
* gcc.dg/warn-addr-cmp.c: New test.
J"orn Rennecke [Tue, 13 Dec 2005 13:04:18 +0000 (13:04 +0000)]
PR rtl-optimization/20070 / part1
PR rtl-optimization/20070 / part1
* flow.c (update_life_info): If PROP_POST_REGSTACK is set, call
count_or_remove_death_notes with kill == -1.
(mark_set_1): Don't add REG_DEAD / REG_UNUSED notes for stack
registers if PROP_POST_REGSTACK is set.
(mark_used_reg): Likewise.
(count_or_remove_death_notes): If kill is -1, don't remove REG_DEAD /
REG_UNUSED notes for stack regs.
* cfgcleanup.c (condjump_equiv_p): Change parameters and processing
to match rtx_equiv_p machinery. Change caller.
(outgoing_edges_match): Likewise.
(try_crossjump_to_edge): Use struct_equiv_block_eq
instead of flow_find_cross_jump.
* basic-block.h (PROP_POST_REGSTACK, STRUCT_EQUIV_START): Define.
(STRUCT_EQUIV_RERUN, STRUCT_EQUIV_FINAL): Likewise.
(STRUCT_EQUIV_NEED_FULL_BLOCK, STRUCT_EQUIV_MATCH_JUMPS): Likewise.
(STRUCT_EQUIV_MAX_LOCAL): Likewise.
(struct struct_equiv_checkpoint, struct equiv_info): Likewise.
(insns_match_p): Update prototype.
(flow_find_cross_jump): Remove prototype.
(struct_equiv_block_eq, struct_equiv_init): Declare.
(rtx_equiv_p, condjump_equiv_p): Likewise.
* struct-equiv.c: Include reload.h.
(IMPOSSIBLE_MOVE_FACTOR): Define.
(assign_reg_reg_set, struct_equiv_make_checkpoint): New functions.
(struct_equiv_improve_checkpoint): Likewise.
(struct_equiv_restore_checkpoint, rtx_equiv_p): Likewise.
(set_dest_equiv_p, set_dest_addr_equiv_p, struct_equiv_init): Likewise.
(struct_equiv_merge, find_dying_input): Likewise.
(resolve_input_conflict, note_local_live): Likewise.
(death_notes_match_p): Change parameters and processing
to match rtx_equiv_p machinery. Change caller.
(insns_match_p): Likewise.
(flow_find_cross_jump): Replace with:
(struct_equiv_block_eq).
Back out this change:
2005-03-07 Kazu Hirata <kazu@cs.umass.edu>
* recog.c (verify_changes): Make it static.
* recog.h: Remove the corresponding prototype.
Jakub Jelinek [Tue, 13 Dec 2005 08:08:46 +0000 (09:08 +0100)]
re PR debug/25023 (ICE in def_cfa_1, at dwarf2out.c:792)
PR debug/25023
PR target/25293
* expr.c (emit_move_resolve_push): Handle PRE_MODIFY
and POST_MODIFY with CONST_INT adjustment equal to PUSH_ROUNDING.
Fix POST_INC/POST_DEC handling if PUSH_ROUNDING is not identity.
* config/i386/i386.md (pushhi2, pushqi2): Use pushl instead of pushw.
Set mode to SI, adjust constraints.
(pushhi2_rex64, pushqi2_rex64): Set mode to DI.
* config/i386/i386.h (PUSH_ROUNDING): Round up to 4 instead of 2 for
32-bit code.
Petr Machata [Tue, 13 Dec 2005 08:01:53 +0000 (09:01 +0100)]
re PR c++/24907 ("int x, ;" accepted)
2005-12-13 Petr Machata <machata@post.cz>
PR c++/24907
* parser.c (cp_parser_simple_declaration): Require comma at the
beginning of processing second and later declarators, instead of
allowing the comma at the end of each iteration.
Mark Mitchell [Tue, 13 Dec 2005 07:59:01 +0000 (07:59 +0000)]
struct-layout-1.exp: Do not link with libiberty.
* g++.dg/compat/struct-layout-1.exp: Do not link with libiberty.
* g++.dg/compat/struct-layout-1_generate.c (config.h): Do not include.
(limits.h): Include unconditionally.
(stdlib.h): Likewise.
(hashtab.h): Do not include.
(getopt.h): Likewise.
(stddef.h): Include.
(hashval_t): Define.
(struct entry): Add "next" field.
(HASH_SIZE): New macro.
(hash_table): New variable.
(switchfiles): Do not use xmalloc.
(mix): New macro.
(iterative_hash): New function.
(hasht): Remove.
(e_exists): New function.
(e_insert): Likewise.
(output): Use, instead of libiberty hashtable functions.
(main): Do not use getopt. Do not call htab_create.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r108461
Jakub Jelinek [Tue, 13 Dec 2005 07:56:10 +0000 (08:56 +0100)]
re PR c++/25331 (FAIL: tmpdir-g++.dg-struct-layout-1/t028 cp_compat_[xy]_tst.o compile)
PR c++/25331
* gcc.dg/compat/struct-layout-1_generate.c (subfield): Don't
put atal* and atpaal* attributes on array elements.
(generate_fields): Revert 2005-10-07 and 2005-10-11 changes.
* g++.dg/compat/struct-layout-1_generate.c (subfield): Don't
put atal* and atpaal* attributes on array elements.
(generate_fields): Don't prevent atal* attribute on ETYPE_ARRAY.
Make-lang.in (fortran/trans-resolve.o): Depend on fortran/dependency.h.
gcc/fortran/
* Make-lang.in (fortran/trans-resolve.o): Depend on
fortran/dependency.h.
* gfortran.h (gfc_expr): Add an "inline_noncopying_intrinsic" flag.
* dependency.h (gfc_get_noncopying_intrinsic_argument): Declare.
(gfc_check_fncall_dependency): Change prototype.
* dependency.c (gfc_get_noncopying_intrinsic_argument): New function.
(gfc_check_argument_var_dependency): New function, split from
gfc_check_fncall_dependency.
(gfc_check_argument_dependency): New function.
(gfc_check_fncall_dependency): Replace the expression parameter with
separate symbol and argument list parameters. Generalize the function
to handle dependencies for any type of expression, not just variables.
Accept a further argument giving the intent of the expression being
tested. Ignore intent(in) arguments if that expression is also
intent(in).
* resolve.c: Include dependency.h.
(find_noncopying_intrinsics): New function.
(resolve_function, resolve_call): Call it on success.
* trans-array.h (gfc_conv_array_transpose): Declare.
(gfc_check_fncall_dependency): Remove prototype.
* trans-array.c (gfc_conv_array_transpose): New function.
* trans-intrinsic.c (gfc_conv_intrinsic_function): Don't use the
libcall handling if the expression is to be evaluated inline.
Add a case for handling inline transpose()s.
* trans-expr.c (gfc_trans_arrayfunc_assign): Adjust for the new
interface provided by gfc_check_fncall_dependency.
libgfortran/
* m4/matmul.m4: Use a different order in the special case of a
transposed first argument.
* generated/matmul_c4.c, generated/matmul_c8.c, generated/matmul_c10.c,
* generated/matmul_c16.c, generated/matmul_i4.c, generated/matmul_i8.c,
* generated/matmul_i10.c, generated/matmul_r4.c, generated/matmul_r8.c
* generated/matmul_r10.c, generated/matmul_r16.c: Regenerated.
Co-Authored-By: Victor Leikehman <LEI@il.ibm.com>
From-SVN: r108459
Carlos O'Donell [Tue, 13 Dec 2005 05:12:32 +0000 (05:12 +0000)]
c-cppbuiltin.c (builtin_define_float_constants): Add fp_cast parameter, pass to builtin_define_with_hex_fp_value.
2005-12-13 Carlos O'Donell <carlos@codesourcery.com>
gcc/
* c-cppbuiltin.c (builtin_define_float_constants): Add
fp_cast parameter, pass to builtin_define_with_hex_fp_value.
Define __FLT_HAS_DENORM__, __DBL_HAS_DENORM__, __LDBL_HAS_DENORM__.
(builtin_define_with_hex_fp_value): Use fp_cast when building macro.
(c_cpp_builtins): If flag_single_precision_constant then set fp_cast
to "((double)%sL)" otherwise "%s".
gcc/testsuite/
* gcc.dg/single-precision-constant.c: New test.
libstdc++-v3/
* include/std/std_limits.h (struct numeric_limits):
Use __DBL_HAS_DENORM__, __FLT_HAS_DENORM__, __LDBL_HAS_DENORM__.