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__.
tree-flow.h: Allow compilation with a C++ compiler.
2005-12-11 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
* tree-flow.h: Allow compilation with a C++ compiler.
(struct edge_prediction): Prefix all field names with "ep_".
* predict.c (tree_predicted_by_p): Likewise for struct
edge_prediction.
(tree_predict_edge, combine_predictions_for_bb): Likewise.
(remove_predictions_associated_with_edge): Likewise.
Kaveh R. Ghazi [Mon, 12 Dec 2005 22:28:02 +0000 (22:28 +0000)]
re PR testsuite/20772 (x86 tests should run on both i?86 and x86_64)
PR testsuite/20772
* g++.old-deja/g++.eh/tmpl2.C: Remove xfail.
* gcc.dg/asm-b.c: Fix typo.
* gcc.dg/torture/pr20314-2.c: Test on i?86 lp64.
* gcc.dg/tree-ssa/stdarg-2.c, gcc.dg/tree-ssa/stdarg-3.c,
gcc.dg/tree-ssa/stdarg-4.c, gcc.dg/tree-ssa/stdarg-5.c: Test on
i?86 lp64 and x86_64 ilp32.
* gcc.target/i386/amd64-abi-1.c, gcc.target/i386/pr23943.c: Test
on i?86 lp64.
* gfortran.dg/g77/20010216-1.f: Test on x86_64 ilp32.
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Remove
reassociation code.
* passes.c (init_optimization_passes): Run reassociation again
after loop optimizations.
PR target/25258
* pa.c (pa_output_function_epilogue): Set cfun->machine->in_nsubspa to
indicate function epilogue has been output.
(pa_asm_output_mi_thunk): Likewise.
(output_deferred_plabels): Put plabels in readonly data section when
not generating PIC code.
(som_output_text_section_asm_op): Use .NSUBSPA to output debug
information. Add assert.
(som_output_comdat_data_section_asm_op): New function.
(pa_som_asm_init_sections): Use som_output_comdat_data_section_asm_op
instead of output_section_asm_op for COMDAT sections.
Mark Mitchell [Mon, 12 Dec 2005 16:29:44 +0000 (16:29 +0000)]
re PR c++/25300 (ICE with g++.dg/template/inherit.C)
PR c++/25300
* tree.c (build_qualified_name): Return error_mark_node for
erroneous input.
PR c++/25300
* g++.dg/template/inherit.C: Do not use a generic error message.
Andrew Pinski [Mon, 12 Dec 2005 05:47:52 +0000 (05:47 +0000)]
re PR libobjc/25354 (There should be an automated testsuite for objc_sizeof_type and objc_alignof_type)
2005-12-12 Andrew Pinski <pinskia@physics.uc.edu>
PR libobjc/25354
* objc.dg/gnu-encoding: New directory.
* objc.dg/gnu-encoding/compat-common.h: New file.
* objc.dg/gnu-encoding/struct-layout-1.h: New file.
* objc.dg/gnu-encoding/struct-layout-1_test.h: New file.
* objc.dg/gnu-encoding/vector-defs.h: New file.
* objc.dg/gnu-encoding/gnu-encoding.exp: New file.
* objc.dg/gnu-encoding/generate-random.c: New file.
* objc.dg/gnu-encoding/generate-random_r.c: New file.
* objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c: New file.
* objc.dg/gnu-encoding/generate-random.h: New file.
2005-12-12 Andrew Pinski <pinskia@physics.uc.edu>
* encoding.c (TYPE_FIELDS): Fix to skip over just _C_STRUCT_B and the name.
(get_inner_array_type): Fix to skip over _C_ARY_B and size.
(rs6000_special_round_type_align): Update for the ABI fix.
(objc_layout_finish_structure): Correct the encoding which is passed to
ROUND_TYPE_ALIGN.
Mark Mitchell [Mon, 12 Dec 2005 01:40:25 +0000 (01:40 +0000)]
re PR c++/25337 (ICE with template processing)
PR c++/25337
* pt.c (tsubst_copy_and_build): Permit dependent types for the
object in a class member access expression.
PR c++/25337
* g++.dg/template/defarg7.C: New test.
Alan Modra [Mon, 12 Dec 2005 01:28:50 +0000 (01:28 +0000)]
re PR target/25299 (Another ABI incompatibility with Apple's gcc)
PR target/25299
* config/rs6000/rs6000.c (rs6000_special_round_type_align): Increase
alignment to doubleword if the first field is a double array.
* config/rs6000/linux64.h (TARGET_ALIGN_NATURAL): Define.
Daniel Berlin [Sun, 11 Dec 2005 22:44:19 +0000 (22:44 +0000)]
tree-ssa-structalias.c (process_constraint): Remove code to transform addressofs into scalar.
2005-12-11 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-structalias.c (process_constraint): Remove code to
transform addressofs into scalar.
(create_variable_info_for): In whole-program IPA, globals don't
point to ANYTHING by default.
2005-12-11 Daniel Berlin <dberlin@dberlin.org>
* timevar.def (TV_IPA_PTA): New.
* tree-pass.h (pass_ipa_pta): New
* tree-ssa-structalias.c: Include cgraph.h
(in_ipa_mode): New.
(predbitmap_obstack): New.
(EXECUTE_IF_IN_NONNULL_BITMAP): New.
(struct constraint_stats): Add num_edges.
(new_var_info): Don't call bitmap_clear.
(struct constraint_edge): Update docs.
(new_constraint_edge): Remove src param.
(struct constraint_graph): Add zero_weight_succs,
zero_weight_preds. Update docs.
(constraint_expr_equal): Reformat.
(constraint_edge_equal): Update for removal of src.
(constraint_edge_less): Ditto.
(constraint_edge_vec_find): Ditto.
(erase_graph_self_edge): Update for removal of src and and zero
weight bitmap.
(clear_edges_for_node): Ditto.
(add_graph_edge): Ditto.
(get_graph_weights): Ditto.
(allocate_graph_weights): Ditto.
(merge_graph_nodes): Ditto.
(int_add_graph_edge): Ditto.
(valid_graph_edge): Ditto.
(valid_weighted_graph_edge): Ditto.
(build_constraint_graph): Ditto.
(scc_visit): Ditto.
(collapse_nodes): Ditto.
(process_unification_queue): Ditto.
(topo_visit): Ditto.
(solve_graph): Ditto.
(do_structure_copy): Ditto.
(perform_var_substitution): Ditto.
Init and release obstack.
(handle_ptr_arith): Try to resolve directly.
(find_func_aliases): Don't call update_alias_info here
Handle RETURN_EXPR, and CALL_EXPR's in IPA mode.
(do_sd_constraint): Add code for propagating faster.
Update.
(do_ds_constraint): Ditto.
(count_num_arguments): New function.
(create_function_info_for): Ditto.
(create_variable_info_for): Handle FUNCTION_DECL.
(intra_create_variable_infos): Use make_constraint_to_anything.
(init_alias_vars): Init obstacks here.
(need_to_solve): Handle zero weight graph changes.
(compute_points_to_sets): Call update_alias_info here.
(delete_points_to_sets): Free zero weight preds/succs here.
(gate_ipa_pta): New.
(ipa_pta_execute): New
2005-12-11 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-structalias.c (var_anyoffset): Removed.
(anyoffset_tree): Ditto.
(anyoffset_id): Ditto.
(do_deref): Take vector of constraints, no return value.
Update to work on vector.
(get_constraint_for): Ditto.
(get_constraint_for_component_ref): Ditto.
(do_structure_copy): Ditto.
(handle_ptr_arith): Ditto.
(find_func_aliases): Ditto.
(set_uids_in_ptset): Remove anyoffset handling.
(init_base_vars): Ditto.
Mark Mitchell [Sun, 11 Dec 2005 04:24:50 +0000 (04:24 +0000)]
re PR c++/25010 (Segmentation fault (infinite recursion in cgraph_clone_inlined_nodes))
PR c++/25010
* ipa-inline.c (cgraph_clone_inlined_nodes): Do not assume that
DECL_EXTERNAL functions have no bodies. Tidy.
PR c++/25010
* g++.dg/opt/inline10.C: New test.
Mark Mitchell [Sun, 11 Dec 2005 04:16:32 +0000 (04:16 +0000)]
re PR c++/25010 (Segmentation fault (infinite recursion in cgraph_clone_inlined_nodes))
PR c++/25010
* ipa-inline.c (cgraph_clone_inlined_nodes): Do not assume that
DECL_EXTERNAL functions have no bodies. Tidy.
PR c++/25010
* g++.dg/opt/inline10.C: New test.
* include/ext/sso_string_base.h (__sso_string_base<>::_M_compare):
Add, specialized for char and wchar_t to immediately return true
when a string is compared to itself.
* include/ext/rc_string_base.h (__rc_string_base<>::_M_compare):
Likewise, for the same _Rep.
* include/ext/vstring.h (compare(const string&)): Use it.
Thomas Koenig [Sat, 10 Dec 2005 20:01:56 +0000 (20:01 +0000)]
re PR fortran/23815 (Add -byteswapio flag)
2005-12-10 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/23815
* io.c (top level): Add convert to io_tag.
(resolve_tag): convert is GFC_STD_GNU.
(match_open_element): Add convert.
(gfc_free_open): Likewise.
(gfc_resolve_open): Likewise.
(gfc_free_inquire): Likewise.
(match_inquire_element): Likewise.
* dump-parse-tree.c (gfc_show_code_node): Add
convet for open and inquire.
gfortran.h: Add convert to gfc_open and gfc_inquire.
* trans-io.c (gfc_trans_open): Add convert.
(gfc_trans_inquire): Likewise.
* ioparm.def: Add convert to open and inquire.
* gfortran.texi: Document CONVERT.
2005-12-10 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/23815
* io/file_pos.c (unformatted_backspace): If flags.convert
does not equal CONVERT_NATIVE, reverse the record marker.
* io/open.c: Add convert_opt[].
(st_open): If no convert option is given, set CONVERT_NATIVE.
If CONVERT_BIG or CONVERT_LITTLE are given, set flags.convert to
CONVERT_NATIVE or CONVERT_SWAP (depending on wether we have
a big- or little-endian system).
* io/transfer.c (unformatted_read): Remove unused attribute
from arguments.
If we need to reverse
bytes, break up large transfers into a loop. Split complex
numbers into its two parts.
(unformatted_write): Likewise.
(us_read): If flags.convert does not equal CONVERT_NATIVE,
reverse the record marker.
(next_record_w): Likewise.
(reverse_memcpy): New function.
* io/inquire.c (inquire_via_unit): Implement convert.
* io/io.h (top level): Add enum unit_convert.
Add convert to st_parameter_open and st_parameter_inquire.
Define IOPARM_OPEN_HAS_CONVERT and IOPARM_INQUIRE_HAS_CONVERT.
Increase padding for st_parameter_dt.
Declare reverse_memcpy().
2005-12-10 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/23815
* gfortran.dg/unf_io_convert_1.f90: New test.
* gfortran.dg/unf_io_convert_2.f90: New test.
* gfortran.dg/unf_io_convert_3.f90: New test.
dwarf2out.c (default_eh_frame_section): Delete, moving handling of EH_FRAME_SECTION_NAME into...
* dwarf2out.c (default_eh_frame_section): Delete, moving handling
of EH_FRAME_SECTION_NAME into...
(switch_to_eh_frame_section): ...here. Try to set eh_frame_section
if it is still null.
* except.c (default_exception_section): Delete, moving most
of the code to...
(switch_to_exception_section): ...this new function. Set
exception_section if it is still null, then switch to it.
(output_function_exception_table): Use switch_to_exception_section.
* varasm.c (exception_section, eh_frame_section): Update comments.
(get_section): Hoist use of SECTION_NAMED.
(init_varasm_once): Don't set exception_section and eh_frame_section.
* output.h (default_exception_section): Delete.
(default_eh_frame_section): Delete.
Kaveh R. Ghazi [Fri, 9 Dec 2005 23:34:09 +0000 (23:34 +0000)]
re PR testsuite/20772 (x86 tests should run on both i?86 and x86_64)
PR testsuite/20772
* g++.dg/opt/life1.C, g++.old-deja/g++.abi/aggregates.C,
g++.old-deja/g++.abi/align.C, g++.old-deja/g++.abi/bitfields.C,
g++.old-deja/g++.law/weak.C, g++.old-deja/g++.pt/asm2.C,
gcc.dg/20000724-1.c, gcc.dg/pragma-align.c: Also test on
x86_64-*-linux*.
Bernd Schmidt [Fri, 9 Dec 2005 22:44:23 +0000 (22:44 +0000)]
bfin.c: Include "cgraph.h".
* config/bfin/bfin.c: Include "cgraph.h".
(bfin_load_pic_reg): Omit loading pic reg if in a local function.
Return the reg that holds the pointer to the GOT.
(bfin_expand_prologue): Use return value of bfin_load_pic_reg when
doing stack checking.