Ranjit Mathew [Tue, 1 Feb 2005 02:36:29 +0000 (02:36 +0000)]
re PR java/9157 (SEGV on bad java source)
PR java/9157
* parse.y (build_string_concatenation): Remove redundant if.
(patch_conditional_expr): Attempt to patch_string() the condition
of a ?: as well, in addition to its other operands.
Steven Bosscher [Tue, 1 Feb 2005 00:09:40 +0000 (00:09 +0000)]
re PR c/19333 (C front end accepts arrays of incomplete types)
gcc/
PR c/19333
* c-decl.c (start_decl): Do not warn about arrays of elements with
an incomplete type here.
(grokdeclarator): Do it here by making a pedwarn an error.
* c-typeck.c (push_init_level): If there were previous errors with
the constructor type, do not warn about braces for initializers.
(process_init_element): Likewise for excess initializer elements.
testsuite/
PR c/19333
* testsuite/gcc.c-torture/compile/20011130-1.c: Reorder to make
the test case valid.
* testsuite/gcc.dg/20030815-1.c: Remove invalid tests.
* testsuite/gcc.dg/array-7.c: Adjust expected result.
* testsuite/gcc.dg/pr18596-3.c: Likewise.
* testsuite/gcc.dg/noncompile/20000901-1.c: Likewise.
* testsuite/gcc.dg/noncompile/init-2.c: Likewise.
* testsuite/gcc.dg/noncompile/init-4.c: Likewise.
Marc Espie [Mon, 31 Jan 2005 18:51:26 +0000 (18:51 +0000)]
Thx to Eric Botcazou, Andrew Pinski and Mark Kettenis for this one.
Turns out OpenBSD was mistakenly including an embedded system fragment,
and thus outputting stabs debug by default.
Once the only needed definition is saved from that file, we happily compile
with default dwarf2. The rest of the toolchain is happy, and any recent
gdb works very well with that...
This obviously improves the stability of the compiler, since dwarf2 output
is so much more well-tested than stabs on elf platforms...
2005-01-31 Marc Espie <espie@openbsd.org>
* config.gcc: Don't include embedded systems fragment, switches default
debugging format to ELF.
* config/i386/openbsdelf.h: Add DBX_REGISTER_NUMBER since we no
longer pick it up there.
Alan Modra [Mon, 31 Jan 2005 13:37:37 +0000 (13:37 +0000)]
linux-unwind.h (struct gcc_vregs): New.
* config/rs6000/linux-unwind.h (struct gcc_vregs): New.
(struct gcc_regs): Rename from gcc_pt_regs. Add more regs.
(struct gcc_sigcontext): Delete. Merge contents to..
(struct gcc_ucontext): ..here.
(get_sigcontext): Delete.
(get_regs): New function, like get_sigcontext but return regs ptr.
64-bit version finds regs from r1 to support vdso.
(ppc_linux_aux_vector): New function.
(ppc_fallback_frame_state): Modify for get_regs. Restore fprs
and vector regs.
copysign1.c: Special case sizeof long double for intel double extended format.
* gcc.c-torture/execute/ieee/copysign1.c: Special case sizeof
long double for intel double extended format.
* gcc.c-torture/execute/ieee/copysign2.c: Likewise.
Mark Mitchell [Mon, 31 Jan 2005 06:16:54 +0000 (06:16 +0000)]
re PR c++/19555 (specialized in the wrong namespace causes an ICE)
PR c++/19555
* cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
* decl.c (duplicate_decls): Do not discard
DECL_IMPLICIT_INSTANTIATION when merging declarations.
(start_decl): Do not SET_DECL_TEMPLATE_SPECIALIZATION for
variables that do not have DECL_USE_TEMPLATE.
PR c++/19555
* g++.dg/template/static10.C: New test.
Danny Smith [Mon, 31 Jan 2005 05:49:07 +0000 (05:49 +0000)]
re PR target/19704 (ICE for tail call of regparm 3 and dllimport)
PR target/19704
* config/i386/i386.c (ix86_function_ok_for_sibcall): Also check
that dllimport'd functions do not use all call-clobbered registers
to pass parameters.
re PR other/19696 (gcc.c-torture/execute/ieee/copysign1.c: Unsatisfied symbols: copysignl)
PR 19696
* optabs.c (expand_absneg_bit): Split out from expand_unop and
expand_abs_nojump and generalize. Use operand_subword and
emit_no_conflict_block. Support large modes.
(expand_abs_nojump): Use it. Use HONOR_SIGNED_ZEROS to fall
back to maximum.
(expand_unop): Likewise. Use HONOR_SIGNED_ZEROS to fall back
negation to subtraction.
(expand_copysign): Check that the format has signed zeros.
Use operand_subword and emit_no_conflict_block. Support large modes.
Daniel Berlin [Sun, 30 Jan 2005 19:08:37 +0000 (19:08 +0000)]
re PR tree-optimization/19624 (PRE pessimizes ivopts)
2005-01-30 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/19624
* Makefile.in (tree-ssa-pre.o): Add CFGLOOP_H.
* tree-ssa-pre.c: Add cfgloop.h.
Update comment.
(pre_stats): New member, constified.
(inserted_exprs): New static variable.
(NECESSARY): New macro.
(create_expression_by_pieces): Fold the expression, and
mark it as defaulting to not necessary. Also put in
inserted_exprs.
(fully_constant_expression): New function.
(insert_into_preds_of_block): Modify to not insert phis when we
are playing with induction variables.
Push phis onto the inserted_exprs vector, and mark them as not
necessary by default.
(insert_aux): Call fully_constant_expression on eprime.
If all edges produce the same value, mark it constant.
(mark_operand_necessary): New function.
(remove_dead_inserted_code): New function.
(init_pre): Init loop optimizer to get loop info.
(fini_pre): Free loop_optimizer, and inserted_exprs vec.
(execute_pre): Commit edge inserts, then remove dead code.
Richard Guenther [Sat, 29 Jan 2005 19:25:17 +0000 (19:25 +0000)]
re PR tree-optimization/15791 (fold misses that two ADDR_EXPR of an arrary obvious not equal)
2005-01-29 Richard Guenther <richard.guenther@uni-tuebingen.de>
PR tree-optimization/15791
* fold-const.c (extract_array_ref): New function.
(fold): Fold comparisons between &a[i] and &a[j] or
semantically equivalent trees.
Jeff Law [Sat, 29 Jan 2005 18:55:10 +0000 (11:55 -0700)]
gcse.c (insert_expr_in_table): Revamp handling of available and anticipatable occurrence lists to avoid...
* gcse.c (insert_expr_in_table): Revamp handling of available
and anticipatable occurrence lists to avoid unnecessary list
walking.
(insert_set_in_table): Similarly.
Joseph Myers [Sat, 29 Jan 2005 16:12:45 +0000 (16:12 +0000)]
c-common.c (fix_string_type): Just use c_build_qualified_type to build string type.
* c-common.c (fix_string_type): Just use c_build_qualified_type to
build string type.
(c_build_qualified_type): Build qualified array types with
TYPE_MAIN_VARIANT pointing to corresponding unqualified type.
* c-decl.c (c_make_fname_decl): Build unqualified array type
before qualified type.
(grokdeclarator): Use TYPE_MAIN_VARIANT of typedef type if element
type is qualified, not just if type itself is. Don't apply
qualifiers to array type when declarator is processed. Apply
qualifiers to field type whether or not it is an array type.
Don't handle array types specially for applying qualifiers to
variables.
* c-typeck.c (composite_type): Build unqualified element type and
array type when forming composite of array types.
(common_pointer_type, comptypes, comp_target_types,
type_lists_compatible_p, build_indirect_ref, build_array_ref,
convert_for_assignment): Don't apply TYPE_MAIN_VARIANT to array
types.
(type_lists_compatible_p): Cache TREE_VALUE (args1) and TREE_VALUE
(args2) in variables a1 and a2.
* configure.in (noconfigdirs) <crisv32-*-*>: Match like cris-*-*.
<crisv32-*-*, cris-*-*>: Only disable target-newlib and
target-libgloss when not *-*-elf and *-*-aout.
* configure: Regenerate.
Roger Sayle [Fri, 28 Jan 2005 17:49:47 +0000 (17:49 +0000)]
expmed.c (expand_mult_highpart_optab): When attempting to use a non-widening multiplication in a wider mode...
* expmed.c (expand_mult_highpart_optab): When attempting to use
a non-widening multiplication in a wider mode, the operands need
to be converted (zero or sign extended) to that mode.
Kazu Hirata [Fri, 28 Jan 2005 15:45:11 +0000 (15:45 +0000)]
cse.c (cse_reg_info_free_list, [...]): Remove.
* cse.c (cse_reg_info_free_list, cse_reg_info_used_list,
cse_reg_info_used_list_end): Remove.
(cse_reg_info_list, cse_reg_info_list_free): New.
(get_cse_reg_info): When allocating an instance of
cse_reg_info, add it to the beginning of the cse_reg_info_list
list. Remove code to maintain cse_reg_info_used_list.
(new_basic_block): Reset the free list to the beginning of
cse_reg_info_list.
* config/frv/frv.c (bdesc_2arg): Remove __MDPACKH.
(frv_init_builtins): Change its prototype to take 4 uhalf arguments.
(frv_expand_mdpackh_builtin): New function.
(frv_expand_builtin): Use it to expand __MDPACKH.
* config/frv/media.h (__MDPACKH): Update prototype.
* doc/extend.texi (__MDPACKH): Update documentation.
Paolo Carlini [Fri, 28 Jan 2005 13:29:41 +0000 (13:29 +0000)]
type_traits: Implement is_abstract, by exploiting the resolution of DR core/337.
2005-01-28 Paolo Carlini <pcarlini@suse.de>
* include/tr1/type_traits: Implement is_abstract, by exploiting the
resolution of DR core/337.
* testsuite/testsuite_tr1.h: Add AbstractClass.
* testsuite/tr1/4_metaprogramming/type_properties/is_abstract/
is_abstract.cc: New.
* testsuite/tr1/4_metaprogramming/type_properties/is_abstract/
typedefs.cc: Likewise.
* include/tr1/type_traits (is_function): Rewrite, use the conversion
F& -> F* instead, thus avoiding problems with abstract classes.
* testsuite/tr1/4_metaprogramming/primary_type_categories/
is_function/is_function.cc: Add a test for tricky AbstractClass.
Arend Bayer [Thu, 27 Jan 2005 23:00:19 +0000 (23:00 +0000)]
cse.c: (find_best_addr): Don't call copy_rtx before calling fold_rtx.
* cse.c: (find_best_addr): Don't call copy_rtx before calling
fold_rtx. Save cost recomputation if fold_rtx did nothing.
(fold_rtx) <ASM_OPERANDS>: Don't do anything if INSN is
NULL_RTX.
Jeff Law [Thu, 27 Jan 2005 22:33:14 +0000 (15:33 -0700)]
tree-into-ssa.c (ssa_rewrite_initialize_block): Do not register definitions of SSA_NAMEs which are not being rewritten.
* tree-into-ssa.c (ssa_rewrite_initialize_block): Do not register
definitions of SSA_NAMEs which are not being rewritten.
(rewrite_ssa_into_ssa): Only initialize the current definition
of an SSA_NAME if that SSA_NAME has been marked for rewriting.
If checking is enabled, assert that SSA_NAME_AUX is clear for all
SSA_NAMEs before returning.
* gcc.dg/mips-nmadd-1.c, gcc.dg/mips-nmadd-2.c, gcc.dg/mips-rsqrt-1.c,
* gcc.dg/mips-rsqrt-2, gcc.dg/mips-rsqrt-3.c: Add dummy asm statements
to cope with cases where the multilib options override the dg-options.
Steven Bosscher [Thu, 27 Jan 2005 16:32:12 +0000 (16:32 +0000)]
re PR middle-end/17278 (8% C++ compile-time regression in comparison with 3.4.1 at -O1 optimization level)
PR middle-end/17278
* opts.c (decode_options): Move flag_thread_jumps from -O1 and
higher to -O2 and higher. Likewise for tree PRE.
* tree-ssa-dom.c (tree_ssa_dominator_optimize): Only iterate at -O2
and better.
Ian Lance Taylor [Thu, 27 Jan 2005 14:36:17 +0000 (14:36 +0000)]
re PR middle-end/19583 (Incorrect diagnostic: control may reach end of non-void function '...' being inlined)
PR middle-end/19583
* gimple-low.c (try_catch_may_fallthru): New static function.
(block_may_fallthru): Handle TRY_CATCH_EXPR.
* tree-inline.c (expand_call_inline): Don't warn about reaching
the end of a non-void function being inlined if the function uses
a return slot.
Joel Sherrill [Thu, 27 Jan 2005 11:52:46 +0000 (11:52 +0000)]
re PR ada/19488 (RTEMS Ada RTS doesn't compile)
2005-01-27 Joel Sherrill <joel.sherrill@oarcorp.com>
Laurent GUERBY <laurent@guerby.net>
PR ada/19488
* 5rosinte.ads: Add No_Key constant.
* 5rtpopsp.adb: Initialize ATCB_Key with No_Key and fix style.
* gsocket.h: Do not include <sys/socket.h> with RTEMS either.
Diego Novillo [Thu, 27 Jan 2005 04:45:20 +0000 (04:45 +0000)]
re PR tree-optimization/19633 (local address incorrectly thought to escape)
PR tree-optimization/19633
* tree-ssa-alias.c (ptr_is_dereferenced_by): Also handle
CALL_EXPRs.
(maybe_create_global_var): Do not create .GLOBAL_VAR if there
are no call-clobbered variables.
* tree-outof-ssa.c (check_replaceable): Return false for calls
with side-effects.
testsuite/ChangeLog
PR tree-optimization/19633
* gcc.dg/pr19633.c: New test.
* gcc.dg/tree-ssa/pr19633.c: New test.