Daniel Berlin [Sun, 19 Dec 2004 19:00:35 +0000 (19:00 +0000)]
lambda-code.c (can_convert_to_perfect_nest): Make checking match up with what perfect_nestify can actually handle.
2004-12-18 Daniel Berlin <dberlin@dberlin.org>
* lambda-code.c (can_convert_to_perfect_nest): Make checking
match up with what perfect_nestify can actually handle.
(perfect_nestify): Don't return false in the phi node loop.
Roger Sayle [Sat, 18 Dec 2004 19:40:20 +0000 (19:40 +0000)]
Makefile.in (stor-layout.o): Depend upon gt-stor-layout.h.
* Makefile.in (stor-layout.o): Depend upon gt-stor-layout.h.
(tree-ssa-propagate.o): Depend upon gt-tree-ssa-propagate.h.
(tree-ssa-operands.o): Depend upon gt-tree-ssa-operands.h.
(tree-mudflap.o): Depend upon gt-tree-mudflap.h.
(expr.o): Depend upon gt-expr.h.
(regclass.o): Depend upon gt-regclass.h.
(bitmap.o): Depend upon gt-bitmap.h.
(lists.o): Depend upon gt-lists.h.
* tree-nested.c (save_tmp_var): New.
(struct walk_stmt_info): Add is_lhs.
(walk_stmts) <MODIFY_EXPR>: Be more accurate with setting of
val_only; set is_lhs.
(convert_nonlocal_reference): Use save_tmp_var when is_lhs;
clear is_lhs when appropriate.
(convert_local_reference): Likewise.
Roger Sayle [Sat, 18 Dec 2004 15:26:32 +0000 (15:26 +0000)]
ifcvt.c (total_bb_rtx_cost): Rename function to cheap_bb_rtx_cost_p.
* ifcvt.c (total_bb_rtx_cost): Rename function to cheap_bb_rtx_cost_p.
Take a max_cost argument to avoid scanning large blocks, by returning
a Boolean instead of a total. Include the cost of a "fstp %st(0)"
instruction required to pop dead values off of a register stack.
Roger Sayle [Sat, 18 Dec 2004 14:38:44 +0000 (14:38 +0000)]
re PR middle-end/18548 (Miscompiles code generated by Gambit-C Scheme->C compiler)
PR middle-end/18548
* expr.c (expand_expr_real_1) <MAX_EXPR>: Ensure that target, op0
and op1 are all registers (or constants) before expanding the RTL
comparison sequence [to avoid reg_overlap_mentioned (target, op1)].
Andrew Haley [Fri, 17 Dec 2004 15:09:11 +0000 (15:09 +0000)]
re PR java/18931 (Java bytecode ICE in except.c remove_unreachable_regions)
2004-12-17 Andrew Haley <aph@redhat.com>
PR java/18931
* typeck.c (convert): Use a CONVERT_EXPR when converting to
BOOLEAN_TYPE or CHAR_TYPE.
(convert_to_boolean, convert_to_char) : Remove.
* convert.h (convert_to_boolean, convert_to_char) : Remove.
* expr.c (expand_load_internal): Do type conversion if type is not
as required.
Jan Beulich [Fri, 17 Dec 2004 08:53:58 +0000 (08:53 +0000)]
re PR target/17603 (cpowf and cpowl give wrong results)
2004-12-17 Jan Beulich <jbeulich@novell.com>
PR target/17603
* config/i386/i386.c (enum x86_64_reg_class): Define
X86_64_COMPLEX_X87_CLASS.
(x86_64_reg_class_names): Add name for X86_64_COMPLEX_X87_CLASS.
(merge_classes): Handle X86_64_COMPLEX_X87_CLASS.
(classify_argument): XCmode is X86_64_COMPLEX_X87_CLASS.
(examine_argument): X86_64_COMPLEX_X87_CLASS requires two
registers when dealing with a return value.
(construct_container): Handle X86_64_COMPLEX_X87_CLASS.
Eliminate impossible case of two X87/X87UP pairs (this now is
being expressed by a single COMPLEX_X87).
(x86_libcall_value): XCmode gets returned in st0/st1.
*extendsfdf2_1_sse_only): Unify enable constraint with
respect to TARGET_SSE2, TARGET_80387, TARGET_SSE_MATH
and TARGET_MIX_SSE_I387.
(*extendsfdf2_i387): New insn pattern.
(*extendsfdf2_1): Rename to *extendsfdf2_mixed. Fix
register constraint for operand 0.
(*extendsfdf2_1_sse_only): Rename to *extendsfdf2_sse.
(*extend{s,d}fxf2_1): Rename to *extend{s,d}fxf2_i387.
Mark Dettinger [Thu, 16 Dec 2004 12:31:32 +0000 (12:31 +0000)]
s390.c (struct processor_costs): Two new fields: madbr, maebr.
2004-12-16 Mark Dettinger <dettinge@de.ibm.com>
* config/s390/s390.c (struct processor_costs): Two new fields:
madbr, maebr.
(s390_rtx_costs): Added handling of multipy and add in SFmode.
More precise values for cost of multiply and add.
Uros Bizjak [Thu, 16 Dec 2004 09:29:57 +0000 (10:29 +0100)]
i386.md (sqrt{s,d}f2_1, [...]): Unify enable constraint with respect to TARGET_SSE...
* config/i386/i386.md (sqrt{s,d}f2_1, sqrt{s,d}f2_1_sse_only,
sqrt{s,d}f2_i387): Unify enable constraint with respect to
TARGET_SSE, TARGET_SSE2, TARGET_USE_FANCY_MATH_387,
TARGET_SSE_MATH and TARGET_MIX_SSE_I387.
(sqrt{s,d}f2_1): Rename to *sqrt{s,d}f2_mixed.
(sqrt{s,d}f2_1_sse_only): Rename to *sqrt{s,d}f2_sse.
(sqrt{s,d}f2_i387): Rename to *sqrt{s,d}f2_i387.
(*sqrtextendsfdf2): Also enable for TARGET_MIX_SSE_I387.
(*sqrtextend?f?f2): Rename to *sqrtextendsfdf2_i387.
Uros Bizjak [Thu, 16 Dec 2004 06:35:57 +0000 (07:35 +0100)]
* config/i386/i386.md (*fop_?f_comm_{,sse,nosse},
*fop_?f_1_{,sse,nosse}, *fop_{d,x}f_{2,3,4,5,6}): Unify enable
constraint with respect to TARGET_80387, TARGET_SSE, TARGET_SSE2,
TARGET_SSE_MATH and TARGET_MIX_SSE_I387.
(*fop_?f_{comm,1}): Rename to *fop_?f_{comm,1}_mixed.
(*fop_?f_{comm,1}_nosse): Rename to *fop_?f_{comm,1}_i387.
(*fop_{d,x}f_{2,3,4,5,6}): Rename to *fop_{d,x}f_{2,3,4,5,6}_i387.
Ziemowit Laski [Thu, 16 Dec 2004 01:10:38 +0000 (01:10 +0000)]
objc-act.c (build_private_template): Change to return 'void'...
[gcc/objc/ChangeLog]
2004-12-15 Ziemowit Laski <zlaski@apple.com>
* objc-act.c (build_private_template): Change to return 'void'; do
not set ivar_context, uprivate_record or objc_instance_type.
(objc_comptypes, gen_type_name_0): For types 'id' and 'Class',
retrieve protocol list from the pointee rather than the pointer itself;
check TYPE_HAS_OBJC_INFO(...) precondition before accessing
TYPE_OBJC_PROTOCOL_LIST.
(objc_get_protocol_qualified_type): For types 'id' and 'Class',
construct a variant of the pointee as well as the pointer, and
store protocol information in the former. When creating variants
of RECORD_TYPEs, clone their TYPE_LANG_SPECIFIC fields and propagate
TYPE_OBJC_INTERFACE information.
(objc_declare_class): If a TYPE_DECL is looked up, retrieve the
underlying RECORD_TYPE to check for presence of TYPE_OBJC_INTERFACE;
for newly-created RECORD_TYPEs, create a tentative TYPE_OBJC_INTERFACE
holding an IDENTIFIER_NODE.
(objc_finish_message_expr): Check TYPE_HAS_OBJC_INFO(...) before
accessing TYPE_OBJC_PROTOCOL_LIST; Use TYPE_OBJC_INTERFACE instead
of calling lookup_interface(); allow for TYPE_OBJC_INTERFACE holding
an IDENTIFIER_NODE (meaning a @class forward-declaration only).
(objc_is_public): Check TYPE_OBJC_INTERFACE instead of calling
lookup_interface().
(continue_class): For @implementations, set ivar_context,
uprivate_record and objc_instance_type, for @interfaces, call
build_private_template().
(encode_pointer): Check TYPE_HAS_OBJC_INFO(...) before accessing
TYPE_OBJC_INTERFACE.
(objc_types_are_equivalent): Check TYPE_HAS_OBJC_INFO(...) before
accessing TYPE_OBJC_PROTOCOL_LIST.
* objc-act.h (OBJC_INFO_SLOT_ELTS, TYPE_OBJC_INFO, INIT_TYPE_OBJC_INFO,
DUP_TYPE_OBJC_INFO, ALLOC_OBJC_TYPE_LANG_SPECIFIC,
SIZEOF_OBJC_TYPE_LANG_SPECIFIC): New macros.
(TYPE_OBJC_INTERFACE): Replaces TREE_STATIC_INSTANCE and now points
to an actual @interface; stored in TYPE_LANG_SPECIFIC(...).
(TYPE_OBJC_PROTOCOL_LIST): Replaces TYPE_PROTOCOL_LIST; stored in
TYPE_LANG_SPECIFIC(...).
(TREE_STATIC_INSTANCE, TYPE_PROTOCOL_LIST): Delete.
(IS_ID, IS_CLASS, IS_PROTOCOL_QUALIFIED_UNTYPED, IS_SUPER,
TYPED_OBJECT): Check for POINTER_TYPE rather than POINTER_TYPE_P;
adjust for use of TYPE_OBJC_INTERFACE and TYPE_OBJC_PROTOCOL_LIST
instead of TREE_STATIC_INSTANCE and TYPE_PROTOCOL_LIST.
Daniel Berlin [Wed, 15 Dec 2004 21:18:42 +0000 (21:18 +0000)]
cfgloop.c (flow_loops_dump): Don't print out levels.
2004-12-15 Daniel Berlin <dberlin@dberlin.org>
* cfgloop.c (flow_loops_dump): Don't print out levels.
(flow_loops_find): Don't set loop->levels.
(flow_loops_level_compute): Make void.
* cfgloop.h (struct loops): Remove levels member.
Add comment about loops in parray possibly being NULL.
Tobias Schlüter [Wed, 15 Dec 2004 18:55:57 +0000 (19:55 +0100)]
re PR fortran/18993 (incorrect parsing in fixed-form)
fortran/
PR fortran/18993
* match.c (gfc_match_if): Don't explicitly skip optional whitespace.
(gfc_match_nullify): Make sure that ')' is in front of the end of
statement.
testsuite/
PR fortran/18993
* gfotran.dg/nullify_1.f: New test.
Vladimir Makarov [Wed, 15 Dec 2004 17:59:51 +0000 (17:59 +0000)]
PR middle end/17340
2004-12-15 Vladimir Makarov <vmakarov@redhat.com>
Steven Bosscher <stevenb@suse.de>
PR middle end/17340
* global.c: Update comments in a few places.
(check_earlyclobber): Return true if there are early clobber
classes.
(calculate_local_reg_bb_info): Do not try to mark earlyclobber
regs if there are none.
(bb_info, allocate_bb_info, free_bb_info, modify_reg_pav,
make_accurate_live_analysis): Rename pavin, pavout to live_pavin,
live_pavout.
(modify_bb_reg_pav): Remove.
(calculate_reg_pav): Use code from modify_bb_reg_pav.
(temp_bitmap): New variable.
(calculate_reg_pav): Allocate/deallocate temp_bitmap.
Co-Authored-By: Steven Bosscher <stevenb@suse.de>
From-SVN: r92206
PR c++/18825
* pt.c (instantiate_class_template): Set input_location for
friend function.
(tsubst_friend_function): Don't set input_location here.
Make sure the context is complete if necessary.
Eric Botcazou [Wed, 15 Dec 2004 12:30:46 +0000 (13:30 +0100)]
re PR other/18665 (-ftrapv borks up simple integer arithmetic)
PR other/18665
* libgcc-std.ver (GCC_3.4.4): Inherit from GCC_3.4.2.
Export __absvti2, __addvti3, __mulvti3, __negvti2 and __subvti3.
* libgcc2.c (__addvsi3): Rename to __addvSI3.
New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
(__addvdi3): Rename to __addvDI3.
(__subvsi3): Rename to __subvSI3. Use word type for the result.
New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
(__subvdi3): Rename to __subvDI3.
(_mulvsi3): Rename to _mulvSI3.
New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
(_mulvdi3): Rename to _mulvDI3.
(__negvsi2): Rename to __negvSI2.
New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
(__negvdi2): Rename to __negvDI2.
(__absvsi2): Rename to __absvSI2.
New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
(__absvdi2): Rename to __absvDI2.
* libgcc2.h (64-bit targets): Define COMPAT_SIMODE_TRAPPING_ARITHMETIC.
(__absvSI2, __addvSI3, __subvSI3, __mulvSI3, __negvSI2, __absvDI2,
__addvDI3, __subvDI3, __mulvDI3, __negvDI2): Define to the appropriate
symbol and declare.
(__absvsi2, __addvsi3, __subvsi3, __mulvsi3, __negvsi2): Declare if
COMPAT_SIMODE_TRAPPING_ARITHMETIC.