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.
Steven Bosscher [Thu, 27 Jan 2005 00:58:11 +0000 (00:58 +0000)]
trans-decl.c (gfc_build_label_decl): Set DECL_ARTIFICAL and TREE_USED for all labels.
* trans-decl.c (gfc_build_label_decl): Set DECL_ARTIFICAL and
TREE_USED for all labels.
(gfc_trans_entry_master_switch): Use it instead of building a
label by hand.
* trans-io.c (add_case): Likewise.
* trans-stmt.c (gfc_trans_integer_select): Likewise.
PR middle-end/18008
* c-decl.c (finish_struct): Set DECL_MODE after resetting a
field's type.
* expr.c (store_field): Strip conversions to odd-bit-sized types
if the destination field width matches.
re PR middle-end/18008 (Duplicate mask on bitfield insertion)
PR middle-end/18008
* c-decl.c (finish_struct): Set DECL_MODE after resetting a
field's type.
* expmed.c (store_fixed_bit_field): Create a paradoxical subreg
if we don't need the bits above those present in the current mode.
* expr.c (store_field): Strip conversions to odd-bit-sized types
if the destination field width matches.
re PR target/19293 (avr-gcc crashes when using shifts with negative shift count)
PR target/19293
PR target/19329
* config/avr/avr.c (notice_update_cc): Only set condition code for
ashrqi3 if shift count > 0.
(out_shift_with_cnt): Handle shift count <= 0 as a no-op.
(ashlqi3_out, ashlhi3_out, ashlsi3_out, ashrqi3_out, ashrhi3_out,
ashrsi3_out, lshrqi3_out, lshrhi3_out, lshrsi3_out): Handle shift
count <= 0 as a no-op, and shift count >= width by copying zero
or sign bit to all bits of the result.
* config/avr/avr.md (all shifts): Add alternatives for zero shift
count, with attribute "length" set to 0 and "cc" set to "none".
re PR objc/18862 (ICE on gcc-4.0-20041205/gcc/testsuite/objc.dg/selector-1.m)
2005-01-26 Alexander Malmberg <alexander@malmberg.org>
PR objc/18862
* objc-act.c (build_selector_translation_table): Use
input_location in the diagnostic for the GNU runtime or if
TREE_PURPOSE (chain) is NULL.
Steven Bosscher [Wed, 26 Jan 2005 17:26:33 +0000 (17:26 +0000)]
re PR middle-end/16585 (current_function_has_computed_jump incorrectly changed in make_edges)
PR middle-end/16585
* cfgbuild.c (make_edges): Do not clear or set
current_function_has_computed_jump.
* function.h (struct function): Remove the has_computed_jump field.
(current_function_has_computed_jump): Do not define.
* sched-rgn.c (is_cfg_nonregular): Return true if a basic block ends
in a computed jump. Ignore current_function_has_computed_jump.
Paolo Carlini [Wed, 26 Jan 2005 16:34:58 +0000 (16:34 +0000)]
mt_allocator.h (struct __per_type_pool_policy<,, [...]): Scale _M_chunk_size too with sizeof(_Tp)...
2005-01-26 Paolo Carlini <pcarlini@suse.de>
* include/ext/mt_allocator.h
(struct __per_type_pool_policy<,, false>::_S_get_pool,
struct __per_type_pool_policy<,, true>::_S_get_pool): Scale
_M_chunk_size too with sizeof(_Tp), otherwise the allocator
breaks down as soon as sizeof(_Tp) >~ _S_chunk_size / 128;
reduce to 64 the multiplier for _M_max_bytes (safer wrt
_Binmap_type being a short); trivial reformattings.
* testsuite/ext/mt_allocator/check_allocate_big_per_type.cc: New.
re PR middle-end/19515 (Violation of C99 6.7.8 §21 for unions)
PR middle-end/19515
* expr.c (categorize_ctor_elements): New argument p_must_clear.
(categorize_ctor_elements_1): Likewise. Detect a union that isn't
fully initialized.
(mostly_zeros_p): Update for new categorize_ctor_elements argument.
* gimplify.c (gimplify_init_constructor): Likewise. Only shove
objects into static storage if they have more than one non-zero value.
* tree.h (categorize_ctor_elements): Update decl.
Steven Bosscher [Wed, 26 Jan 2005 15:08:50 +0000 (15:08 +0000)]
re PR middle-end/19616 (missed tail call)
PR middle-end/19616
* tree.h (CALL_EXPR_TAILCALL): Add comment.
* calls.c (check_sibcall_argument_overlap_1): Revert the change
to this function from 2004-07-10.
* tree-tailcall.c (suitable_for_tail_opt_p): Do not consider the
the current function for tail call optimizations if the address
of one of it its arguments is taken.
Bernd Schmidt [Wed, 26 Jan 2005 11:22:33 +0000 (11:22 +0000)]
function.c (expand_function_end): If current_function_calls_alloca...
* function.c (expand_function_end): If current_function_calls_alloca,
emit stack restore in a place that is reached when the function falls
through at the end.
Paolo Carlini [Wed, 26 Jan 2005 10:34:53 +0000 (10:34 +0000)]
acinclude.m4 ([GLIBCXX_ENABLE_C99]): Add ac_c99_complex to the final test for enable_c99, thus robustifying it...
2005-01-26 Paolo Carlini <pcarlini@suse.de>
* acinclude.m4 ([GLIBCXX_ENABLE_C99]): Add ac_c99_complex
to the final test for enable_c99, thus robustifying it; remove
duplicate final test on ac_99_math.
* configure: Regenerate.
* include/std/std_complex.h: Remove usages of the dead
_GLIBCXX_BUGGY_COMPLEX macro.
* testsuite/26_numerics/cmath/19322.cc: Protect with
_GLIBCXX_USE_C99_MATH instead of the stronger _GLIBCXX_USE_C99,
since only C99 math facilities are involved.
* testsuite/26_numerics/cmath/c99_classification_macros_c++.cc:
Likewise.
* config/cris/cris.h (LIB_SPEC) <sim*>: Use -lsyslinux, not
-lsyssim. Wrap -lc -lsyssim in --start-group --end-group instead
of doubling.
(STARTFILE_SPEC): Add crti.o, before crtbegin.o.
<sim*>: Always use crt1.o, regardless of N in simN.
<!sim>: Drop support for -pg and -p variants; always use crt0.o.
(ENDFILE_SPEC): Add crtn.o, after crtend.o.
(CRT_CALL_STATIC_FUNCTION): Remove.
* config/cris/aout.h (STARTFILE_SPEC): <!melinux && sim*>: Always
use crt1.o, regardless of N in simN.
<!sim>: Drop support for -pg and -p variants; always use crt0.o.
(LIB_SPEC): Do not define; default to the one in config/cris/cris.h.
(CRIS_CPP_SUBTARGET_SPEC) <melinux && !nostdinc>: Remove special
case isystem setting.
(MAX_OFILE_ALIGNMENT): Correct to 32, not 16.
cris.h (CPP_SPEC): Adjust the various mtune= handlers to match indentation...
* config/cris/cris.h (CPP_SPEC): Adjust the various mtune=
handlers to match indentation; nested under the mtune=* handler.
Similar for mcpu= and march=.
Jakub Jelinek [Tue, 25 Jan 2005 23:09:10 +0000 (00:09 +0100)]
re PR rtl-optimization/19579 (-march=i686 generates a bogus program for x86*)
PR rtl-optimization/19579
* ifcvt.c (noce_try_cmove_arith): If emitting instructions to set up
both A and B, see if they don't clobber registers the other expr uses.
Andrew Pinski [Tue, 25 Jan 2005 19:21:30 +0000 (19:21 +0000)]
class.c (abort_fndecl_addr): New variable.
2005-01-25 Andrew Pinski <pinskia@physics.uc.edu>
* class.c (abort_fndecl_addr): New variable.
(build_vtbl_initializer): If we have a pure virtual function
share the abort function's address.
Include gt-cp-class.h at the end.
* config-lang.in (gtfiles): Add cp/class.c.
re PR target/19556 (ICE with -march=pentium-m (during bootstrap))
PR target/19556
PR target/19584
* config/i386/i386.c (x86_inter_unit_moves): Zero.
(ix86_preferred_reload_class): Rewrite fp-constant section, with
80387 enabled, to return a proper subclass. Return the subset that
overlaps with GENERAL_REGS for PLUS.
* config/i386/i386.md (movsi_1, movdi_2): Set type to "mmx" for pxor.
Benjamin Kosnik [Tue, 25 Jan 2005 15:47:35 +0000 (15:47 +0000)]
acinclude.m4 (GLIBCXX_ENABLE_C99): Test for complex math functions...
2005-01-25 Benjamin Kosnik <bkoz@redhat.com>
* acinclude.m4 (GLIBCXX_ENABLE_C99): Test for complex math
functions, and enable _GLIBCXX_USE_C99_COMPLEX_MATH if they exist.
* acconfig.h: Add _GLIBCXX_USE_C99_COMPLEX_MATH.
* config.h.in: Regenerate.
* configure: Regenerate.
* include/std/std_complex.h: Protect complex builtins with
_GLIBCXX_USE_C99_COMPLEX_MATH.
Roger Sayle [Tue, 25 Jan 2005 14:28:55 +0000 (14:28 +0000)]
expmed.c (choose_multiplier): Change interface to return the multiplier lowpart as an rtx instead of an...
* expmed.c (choose_multiplier): Change interface to return the
multiplier lowpart as an rtx instead of an unsigned HOST_WIDE_INT.
(expand_divmod): Update calls to choose_multiplier.