re PR target/18932 (ICE in copyprop_hardreg_forward_1, at regrename.c)
PR target/18932
* config/i386/i386.md (all splits and peepholes): Use flags_reg_operand
and compare_operator to propagate the input CC mode to the output.
* config/i386/predicates.md (compare_operator): New.
Steven G. Kargl [Sun, 12 Dec 2004 20:27:02 +0000 (20:27 +0000)]
re PR fortran/16222 (non-integral DO loop variables are unsupported.)
2004-12-12 Steven G. Kargl <kargls@comcast.net>
Paul Brook <paul@codesourcery.com>
PR fortran/16222
* resolve.c (gfc_resolve_iterator_expr): New function.
(gfc_resolve_iterator): Use it. Add real_ok argument. Convert
start, end and stride to correct type.
(resolve_code): Pass extra argument.
* array.c (resolve_array_list): Pass extra argument.
* gfortran.h (gfc_resolve): Add prototype.
* trans-stmt.c (gfc_trans_do): Remove redundant type conversions.
Handle real type iterators.
testsuite/
* gfortran.dg/real_do_1.f90: New test.
Co-Authored-By: Paul Brook <paul@codesourcery.com>
From-SVN: r92057
Roger Sayle [Sun, 12 Dec 2004 01:41:27 +0000 (01:41 +0000)]
reg-stack.c (change_stack): Avoid placing the new top-of-stack in its correct location during popping if...
* reg-stack.c (change_stack): Avoid placing the new top-of-stack in
its correct location during popping if we need to permute the stack
afterwards. Attempt to preserve the original stack ordering.
Tobias Schlüter [Sat, 11 Dec 2004 11:06:31 +0000 (12:06 +0100)]
re PR fortran/17175 (set_exponent breaks with integer*8 exponent)
fortran/
PR fortran/17175
* iresolve.c (gfc_resolve_scale): Convert 'I' argument if not of
same kind as C's 'int'.
(gfc_resolve_set_eponent): Convert 'I' argument if not of kind 4.
testsuite/
PR fortran/17175
* gfortran.dg/scale_1.f90: New test.
Roger Sayle [Sat, 11 Dec 2004 01:49:05 +0000 (01:49 +0000)]
re PR target/18002 ('while' loop performace regression on avr target)
PR target/18002
PR middle-end/18424
* dojump.c (do_jump): When attempting to reverse the effects of
fold_single_bit_test, we need to STRIP_NOPS and narrowing type
conversions, and handle BIT_XOR_EXPR that's used to invert the
sense of the single bit test.
Diego Novillo [Fri, 10 Dec 2004 21:54:42 +0000 (21:54 +0000)]
tree-into-ssa.c (REWRITE_THIS_STMT): Define.
* tree-into-ssa.c (REWRITE_THIS_STMT): Define.
(mark_def_sites): Clear REWRITE_THIS_STMT for statements that
don't need any operands rewritten.
(rewrite_stmt): Ignore statements that don't need to be
rewritten.
(rewrite_operand): Validate that an existing SSA_NAME is
identical to the current reaching definition of the operand.
* tree-dfa.c (mark_call_clobbered_vars_to_rename): New function.
* tree-vectorizer.c (vectorizable_load): Call it.
* tree-flow.h (mark_call_clobbered_vars_to_rename): Declare.
* tree-sra.c (mark_all_v_defs): Also mark VUSEs for renaming.
Ben Elliston [Fri, 10 Dec 2004 21:25:00 +0000 (21:25 +0000)]
fibheap.h (struct fibnode): Only use unsigned long bitfields when __GNUC__ is defined and ints are less...
[include]
* fibheap.h (struct fibnode): Only use unsigned long bitfields
when __GNUC__ is defined and ints are less than 32-bits wide.
[libiberty]
* configure.ac: Invoke AC_CHECK_SIZEOF for sizeof (int).
* configure: Regenerate.
* config.in: Likewise.
* config/frv/frv-modes.def: Fix comment typos.
(CC_NZ): Define new mode.
* config/frv/frv-protos.h (frv_select_cc_mode): Declare.
(condexec_intop_cmp_operator): Delete.
* config/frv/frv.c (comparison_string): New function.
(frv_print_operand): Use it to handle 'c' and 'C'.
(relational_operator): Redefine in terms of integer_relational_operator
and float_relational_operator.
(signed_relational_operator, unsigned_relational_operator): Delete.
(integer_relational_operator): New predicate, combining the above.
Check the mode of the first operand but leave frv.md to check the rest.
(float_relational_operator): Just check the mode of the first operand
and leave frv.md to check the rest.
(intop_compare_operator): Assume the result is compared with zero
in mode CC_NZmode. Allow PLUS and MINUS. Leave frv.md to check
the operand predicates.
(condexec_intop_cmp_operator): Delete.
(frv_ifcvt_modify_tests, frv_ifcvt_modify_multiple_tests)
(frv_hard_regno_mode_ok): Handle CC_NZmode.
(frv_select_cc_mode): New function.
* config/frv/frv.h (SELECT_CC_MODE): Use frv_select_cc_mode.
(REVERSIBLE_CC_MODE): Include CC_NZmode.
(PREDICATE_CODES): Replace entries for signed_relational_operand and
unsigned_relational_operator with one for integer_relational_operator.
Delete entry for condexec_intop_cmp_operator.
* config/frv/frv.md (movcc_nz, *internal_movcc_nz, reload_incc_nz)
(reload_outcc_nz, *cmpsi_cc_nz, *cond_exec_cmpsi_cc_nz): New patterns.
(*combo_intop_compare2, *combo_intop_compare4): Delete.
(*combo_intop_compare1): Change mode to CC_NZ.
(*combo_intop_compare2): Likewise. Renamed from *combo_intop_compare3.
(branch_{un,}signed_true, branch_{un,}signed_false)
(*scc_{un,}signed, *scc_neg1_{un,}signed, *ck_{un,}signed)
(*movqicc_internal1_{un,}signed, *movqicc_internal2_{un,}signed)
(*movhicc_internal1_{un,}signed, *movhicc_internal2_{un,}signed)
(*movsicc_internal1_{un,}signed, *movsicc_internal2_{un,}signed)
(*movsfcc_has_fprs_{un,}signed, *movsfcc_no_fprs_{un,}signed)
(*return_{unsigned_,}true, *return_{unsigned_,}false): Merge these
pattern pairs. Use integer_relational_operator. Remove mode from
icc_operand.
re PR c/18282 (PR c/17384 patch causes regression from 3.4.2)
PR c/18282
* attribs.c (decl_attributes): Use relayout_decl.
* c-common.c (handle_mode_attribute): Copy all relevant type
parameters from the new underlying integral type.
Matt Austern [Thu, 9 Dec 2004 21:07:01 +0000 (21:07 +0000)]
re PR c++/18514 (Alternate "asm" name ignored for redeclared builtin function imported into namespace std)
PR c++/18514
* name-lookup.c (do_nonmember_using_decl): A real function
declaration takes precedence over an anticipated declaration.
* g++.dg/ext/builtin1.C: New
* g++.dg/ext/builtin2.C: New
* g++.dg/ext/builtin3.C: New
* g++.dg/ext/builtin4.C: New
* g++.dg/ext/builtin5.C: New
simplify-rtx.c (simplify_subreg): In the CONCAT case...
* simplify-rtx.c (simplify_subreg): In the CONCAT case, check whether
the request subreg is entirely contained in the requested component.
(simplify_gen_subreg): Return null for CONCATs that are rejected
by simplify_subreg.
* expmed.c (store_bit_field): Create a temporary when changing the
value to an integer mode.
intrinsic.c (gfc_convert_type_warn): Propagate the input shape to the output expression.
* intrinsic.c (gfc_convert_type_warn): Propagate the input shape
to the output expression.
* iresolve.c (gfc_resolve_cshift, gfc_resolve_eoshift): Suppress
warning conversion.
(gfc_resolve_reshape): Force convert SHAPE and ORDER parameters
to index kind.
Zack Weinberg [Wed, 8 Dec 2004 19:13:35 +0000 (19:13 +0000)]
re PR middle-end/17982 (stop calling assemble_external before final assembly output time)
PR 17982
* varasm.c (pending_assemble_externals): New static.
(assemble_external_real): Meat of assemble_external split out
to this new function.
(process_pending_assemble_externals): New function.
(assemble_external): Use gcc_assert. If flag_unit_at_a_time
is true and the basic test passes, merely cons the decl onto
the pending list to be handled later.
* tree.h: Declare process_pending_assemble_externals.
* cgraphunit.c (cgraph_optimize): Call it.
* config/h8300/h8300.h: Do not define ASM_OUTPUT_EXTERNAL.
Arnaud Charlet [Wed, 8 Dec 2004 11:49:44 +0000 (12:49 +0100)]
g-socket.ads (Get_Host_By_Address, [...]): Clarify documentation of the behaviour of these functions when...
* g-socket.ads (Get_Host_By_Address, Get_Host_By_Name): Clarify
documentation of the behaviour of these functions when passed an IP
address that has no record in the system hosts database and no reverse
record in the DNS.
* make.adb: Minor reformatting
Add some ??? comments asking for more comments
* s-poosiz.adb: Minor reformatting
Add comments on alignment requirement
* sinfo.ads: Remove obsolete comment and fix typo.
* gnat_ugn.texi: Update the section "The GNAT Driver and Project
Files" with the new tool and package names.
Reformatting to suppress most of the warnings for line too long
Document the new section "Project Search Path:" in the output of
gnatls -v.
Add gnatmetric section
* vms_data.ads: Correct GNAT METRIC qualifiers: -I-, -Idir and
-gnatec= are not direct switches of gnatmetric. Changed -eis to -eps
and -eit to -ept. Added qualifier
/ELEMENT_METRICS=CONSTRUCT_NESTING_MAX for new switch -ec.
Arnaud Charlet [Wed, 8 Dec 2004 11:48:22 +0000 (12:48 +0100)]
sem_ch4.adb (Process_Implicit_Dereference_Prefix): New subprogram used to record an implicit dereference as a read operation on...
* sem_ch4.adb (Process_Implicit_Dereference_Prefix): New subprogram
used to record an implicit dereference as a read operation on its
prefix when operating under -gnatc. Necessary to avoid spurious
'variable assigned but never read' warnings in that mode.
(Process_Indexed_Component, Analyze_Selected_Component): When the prefix
is a non-overloaded implicit dereference, call the above subprogram to
ensure proper recording of references.
Arnaud Charlet [Wed, 8 Dec 2004 11:48:04 +0000 (12:48 +0100)]
nlists.adb (Prepend_Debug): Remove parameters and nest within Prepend.
* nlists.adb (Prepend_Debug): Remove parameters and nest within
Prepend.
(Remove_Next_Debug): Same fix
* nlists.ads: Correct bad comments for Prev and Prev_Non_Pragma (we do
maintain back pointers now, though we did not used to, and comments
were out of date).
(Prepend): Remove pragma Inline.
(Remove_Next): Same cleanup
Arnaud Charlet [Wed, 8 Dec 2004 11:47:21 +0000 (12:47 +0100)]
lib-xref.adb (Generate_Reference): Handle properly a reference to an entry formal...
* lib-xref.adb (Generate_Reference): Handle properly a reference to an
entry formal, when an accept statement has a pragma Unreferenced for it.
* sem_ch9.adb (Analyze_Accept_Statement): Reset the Is_Referenced flag
and the Has_Pragma_Unreferenced flag for each formal before analyzing
the body, to ensure that warnings are properly emitted for each accept
statement of a given task entry.
Arnaud Charlet [Wed, 8 Dec 2004 11:46:11 +0000 (12:46 +0100)]
exp_dist.adb (Specific_Build_General_Calling_Stubs, [...]): New subprograms.
* exp_dist.adb (Specific_Build_General_Calling_Stubs,
Specific_Build_Stub_Target): New subprograms.
(Build_Subprogram_Calling_Stubs): Make this procedure independent from
the PCS implementation used, using the above PCS-customized subprograms.
Minor reformatting.
(PolyORB_Support.Helpers): New subunit containing supporting subprograms
for generation of DSA code targeted to the PolyORB PCS.
(Add_Stub_Type): Rewrite to isolate the parts that are specific to one
implementation of the partition communication subsystem in ancillary
subprograms.
(Specific_Build_Stub_Type, GARLIC_Support.Build_Stub_Type,
PolyORB_Support.Build_Stub_Type): New subrograms containing the
PCS-specific part of Add_Stub_Type.
(Insert_Partition_Check): Use runtime library function to perform
E.4(19) check.
* rtsfind.ads: New entity System.PolyORB_Interface.Make_Ref
(RE_Same_Partition): New entity, from s-parint.
* s-parint.ads, s-parint.adb (Same_Partition): New subprogram.