Benjamin Kosnik [Sat, 22 May 2004 21:07:28 +0000 (21:07 +0000)]
cxxabi.h: Remove duplicated and useless public and private keywords in class declarations.
2004-05-22 Benjamin Kosnik <bkoz@redhat.com>
* libsupc++/cxxabi.h: Remove duplicated and useless public and
private keywords in class declarations. Format. Use
stddef.h. Expose declarations to "C" compilation.
* libsupc++/tinfo.cc (__upcast_result): Add copy constructor and
assignment operator.
(__dyncast_result): Same.
* libsupc++/vec.cc (uncatch_exception): Same, use member
initialization list.
Zack Weinberg [Sat, 22 May 2004 18:16:39 +0000 (18:16 +0000)]
[multiple changes]
2004-05-22 Andrew Pinski <pinskia@physics.uc.edu>
* c-common.c (c_common_truthvalue_conversion): Handle
UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
i.e. set the type to truthvalue_type_node and return.
2004-05-22 Zack Weinberg <zack@codesourcery.com>
* tree.h (struct tree_decl): Add possibly_inlined bit.
(DECL_POSSIBLY_INLINED): New accessor macro.
* cgraph.h: Remove declaration of cgraph_inline_hash.
* cgraph.c: Remove definition of cgraph_inline_hash.
(hash_node): Revert to hashing DECL_UID.
(eq_node): Take two pointers to cgraph_node structures.
Compare DECL_UIDs.
(cgraph_remove_node): Pass the node directly to htab_find_slot.
(cgraph_varpool_hash_node): Rename hash_varpool_node;
hash on DECL_UID.
(eq_cgraph_varpool_node): Rename eq_varpool_node; take two
pointers to cgraph_varpool_node structures; compare DECL_UIDs.
(cgraph_node): Allocate a temporary node on the stack, fill in
its DECL field, and pass that to htab_find_slot.
(cgraph_varpool_node): Likewise.
(cgraph_function_possibly_inlined_p): If global info is ready,
return the DECL_POSSIBLY_INLINED bit.
* cgraphunit.c (cgraph_mark_inline_edge): Set DECL_POSSIBLY_INLINED
instead of mucking with cgraph_inline_hash.
Roger Sayle [Sat, 22 May 2004 13:56:19 +0000 (13:56 +0000)]
name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by returning when TREE_TYPE is error_mark_node.
* name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by
returning when TREE_TYPE is error_mark_node.
* typeck.c (require_complete_type): Return error_mark_node if
value's type is an error_mark_node.
Ben Elliston [Sat, 22 May 2004 02:39:35 +0000 (02:39 +0000)]
c.opt (Wmissing-include-dirs): New.
* c.opt (Wmissing-include-dirs): New.
* c-opts.c (c_common_handle_option): Pass true for user_supplied_p
to add_path () for -I, but false for OPT_idirafter, OPT_iquote and
OPT_isystem. Handle case OPT_Wmissing_include_dirs.
* c-incpath.h (add_path): Add fourth (bool) argument.
* c-incpath.c (add_env_var_paths): Pass false to add_path ().
(add_standard_paths): Likewise.
(remove_duplicates) [REASON_NOENT]: Warn if -Wmissing-include-dirs
is used and the directory was user-supplied via -I.
(add_path): Set p->user_supplied_p. Remove duplicated code by
using add_cpp_dir_path ().
* cpplib.h (struct cpp_options): Add warn_missing_include_dirs.
(struct cpp_dir): Add user_supplied_p.
* doc/invoke.texi (Warning Options): Document new option.
Roger Sayle [Fri, 21 May 2004 21:37:25 +0000 (21:37 +0000)]
io.c (check_format): As a GNU extension...
* io.c (check_format): As a GNU extension, allow the comma after a
string literal to be optional in a format. Use gfc_notify_std to
issue an error/warning as appropriate.
* io/format.c (parse_format_list): Allow the comma after a string
literal to be optional.
Paolo Bonzini [Fri, 21 May 2004 08:00:17 +0000 (08:00 +0000)]
Makefile.tpl: Whenever a recursive target is defined...
2004-05-21 Paolo Bonzini <bonzini@gnu.org>
* Makefile.tpl: Whenever a recursive target is defined, wrap
it in a special @if/@endif block, and prepare its maybe
dependency in the @if/@endif block
* configure.in: Instead of writing maybe dependencies, remove
the @if/@endif statements, and remove the @if/@endif blocks
that remain.
* Makefile.in: Regenerate.
* configure: Regenerate.
Roger Sayle [Thu, 20 May 2004 22:08:46 +0000 (22:08 +0000)]
re PR middle-end/3074 (Statement with no effect not flagged with -Wall)
PR middle-end/3074
* fold-const.c (strip_compound_expr): Delete function.
(count_cond): Delete function.
(fold_binary_op_with_conditional_arg): Only perform transformations
"a + (b?c:d) -> b ? a+c : a+d" and "(b?c:d) + a -> b ? c+a : d+a"
when a is constant. This greatly simplifies this routine.
Paolo Carlini [Thu, 20 May 2004 22:06:40 +0000 (22:06 +0000)]
istream.tcc (operator>>(basic_istream<>&, basic_string<>&)): Use a temporary buffer, thus avoiding reallocation for common case.
2004-05-20 Paolo Carlini <pcarlini@suse.de>
* include/bits/istream.tcc (operator>>(basic_istream<>&,
basic_string<>&)): Use a temporary buffer, thus avoiding
reallocation for common case.
* testsuite/21_strings/basic_string/inserters_extractors/char/11.cc:
New.
* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
Likewise.
* include/bits/istream.tcc: Const-ification of a few variables.
* include/bits/ostream.tcc: Trivial formatting fixes and
const-ification of some variables.
Zack Weinberg [Thu, 20 May 2004 16:02:35 +0000 (16:02 +0000)]
* cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node)
(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
(cgraph_varpool_node): Hash on the pointer to the decl, not
the DECL_UID. Fixes 64-bit bootstrap failure.
H.J. Lu [Thu, 20 May 2004 02:15:45 +0000 (02:15 +0000)]
re PR target/15383 (__float128 function name is used for long double)
2004-05-19 H.J. Lu <hongjiu.lu@intel.com>
PR target/15383
* config/ia64/ia64.c (ia64_expand_compare): Don't check
TARGET_HPUX for TFmode compare. Abort if op0 is in TFmode and
cmptf_libfunc isn't set.
(ia64_init_libfuncs): Rename TFmode libfuncs using the HPUX
conventions.
(ia64_sysv4_init_libfuncs): New.
* config/ia64/sysv4.h (TARGET_INIT_LIBFUNCS): New. Defined as
ia64_sysv4_init_libfuncs.
Jeff Law [Wed, 19 May 2004 20:44:32 +0000 (14:44 -0600)]
tree-into-ssa.c (prepare_operand_for_rename): New argument is_use.
* tree-into-ssa.c (prepare_operand_for_rename): New argument is_use.
If the operand is for a use, then strip away the SSA_NAME, do not
strip away the SSA_NAME for a set. Never call release_ssa_name.
(mark_def_sites): Appropriately pass additional argument to
prepare_operand_for_rename. If a VDEF_RESULT is not an SSA_NAME,
then set the VDEF_RESULT to the VDEF_OP.
(set_def_block): Strip away any SSA_NAME to get to the real
underlying variable.
Zdenek Dvorak [Wed, 19 May 2004 17:53:45 +0000 (19:53 +0200)]
Multiple fixes: PRs 14692, 15274 and 15463
PR c++/15463
* loop-iv.c (iv_number_of_iterations): Use trunc_int_for_mode on
result of inverse.
PR rtl-optimization/15274
* loop-iv.c (determine_max_iter, shorten_into_mode,
iv_number_of_iterations): Handle constants correctly.
* rtl.h (get_mode_bounds): Declaration changed.
* stor-layout.c (get_mode_bounds): Return a constant suitable for
the target mode.
PR rtl-optimization/14692
* loop-unswitch.c (may_unswitch_on): Try folding the result.
(unswitch_single_loop): Work correctly when may_unswitch_on
returns a folded constant.
* loop-iv.c (implies_p): Handle A < B ==> A + 1 <= B.
* simplify-rtx.c (simplify_const_relational_operation): Optimize
comparisons with mode bounds.
* function.c (struct temp_slot): Add new field prev.
(free_after_compilation, init_temp_slots): Free new fields.
(cut_slot_from_list, insert_slot_to_list,
temp_slots_at_level, max_slot_level, move_slot_to_level,
make_slot_available): New functions.
(assign_stack_temp_for_type, combine_temp_slots,
find_temp_slot_from_address, preserve_temp_slots,
preserve_rtl_expr_result, free_temp_slots,
free_temps_for_rtl_expr, pop_temp_slots): Work with
the new structure of lists.
(mark_all_temps_used): Removed.
* function.h (struct function): Field x_temp_slots
replaced by x_used_temp_slots and x_avail_temp_slots.
(temp_slots): Replaced by ...
(used_temp_slots, avail_temp_slots): New.
* tree.h (mark_all_temps_used): Declaration removed.
* loop-iv.c (mark_single_set, get_biv_step_1, iv_analyze,
simplify_using_assignment): Take the expression out of
the expr_list wrapper.
* loop-iv.c (iv_number_of_iterations): Improve clasification of
infinite loops.
Arnaud Charlet [Wed, 19 May 2004 14:24:07 +0000 (16:24 +0200)]
[multiple changes]
2004-05-19 Joel Brobecker <brobecker@gnat.com>
* exp_dbug.ads: Correct comments concerning handling of overloading,
since we no longer use $ anymore.
2004-05-19 Sergey Rybin <rybin@act-europe.fr>
* sem_ch10.adb (Optional_Subunit): When loading a subunit, do not
ignore errors if ASIS_Mode is set. This prevents creating ASIS trees
with illegal subunits.
2004-05-19 Ed Schonberg <schonberg@gnat.com>
* sem_ch6.adb (Check_Following_Pragma): When compiling a subprogram
body with front-end inlining enabled, check whether an inline pragma
appears immediately after the body and applies to it.
* sem_prag.adb (Cannot_Inline): Emit warning if front-end inlining is
enabled and the pragma appears after the body of the subprogram.
Steven Bosscher [Wed, 19 May 2004 06:26:21 +0000 (06:26 +0000)]
Expanders cleanups after tree-ssa merge, part 1.
2004-05-19 Steven Bosscher <stevenb@suse.de>
Expanders cleanups after tree-ssa merge, part 1.
* expr.c (store_constructor): Build loop start and end by hand
instead of via loop functions from stmt.c.
(expand_expr_real_1): Abort if we see an EXIT_EXPR or a LOOP_EXPR.
Remove the code to expand them.
Andrew Pinski [Wed, 19 May 2004 03:35:19 +0000 (03:35 +0000)]
tree-ssa-phiopt.c (abs_replacement): New function.
* tree-ssa-phiopt.c (abs_replacement): New function.
(empty_block_p): New function extracted from...
(candidate_bb_for_phi_optimization): Break out empty block test.
(conditional_replacement): Use empty_block_p.
(value_replacement): Similarly.
* gcc.dg/tree-ssa/20040514-2.c: Update expected output.
* gcc.dg/tree-ssa/20040518-2.c: New test.
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r82017
Zack Weinberg [Wed, 19 May 2004 01:28:56 +0000 (01:28 +0000)]
* cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node)
(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
(cgraph_varpool_node):
Use DECL_UID for the key, not DECL_ASSEMBLER_NAME.
(cgraph_function_possibly_inlined_p): Use the decl itself for
the key, not DECL_ASSEMBLER_NAME.
(change_decl_assembler_name): No need to muck with the hash tables.
(cgraph_node_for_identifier, cgraph_varpool_node_for_identifier):
Delete.
* cgraphunit.c (cgraph_mark_inline_edge): Use the decl itself
for the key, not DECL_ASSEMBLER_NAME.
* cgraph.h: Remove prototypes of deleted functions.
* varasm.c (mark_referenced): Just set TREE_SYMBOL_REFERENCED.
(mark_decl_referenced): New function.
* tree.h: Prototype mark_decl_referenced.
* final.c (output_addr_const) <case SYMBOL_REF>: Call
mark_decl_referenced before assemble_name.
* c-decl.c (finish_decl): Use mark_decl_referenced.
cp:
* decl.c (cp_finish_decl): Use mark_decl_referenced.
* decl2.c (maybe_make_one_only): Likewise.
* method.c (use_thunk): Likewise.
Andrew Pinski [Tue, 18 May 2004 17:32:54 +0000 (17:32 +0000)]
Makefile.in (tree-ssa-phiopt.o): Depends on flags.h.
* Makefile.in (tree-ssa-phiopt.o): Depends on flags.h.
* tree-ssa-phiopt.c: Include flags.h.
(conditional_replacement): Remove argument names from prototype.
Minor formatting and comment fixes.
(tree_ssa_phiopt): If conditional_replacement returns false, then
call value_replacement.
(value_replacement): New function.
Jeff Law [Tue, 18 May 2004 16:23:25 +0000 (10:23 -0600)]
tree-ssa-phiopt.c (replace_phi_with_stmt): New function extracted from conditional_replacement.
* tree-ssa-phiopt.c (replace_phi_with_stmt): New function extracted
from conditional_replacement.
(candidate_bb_for_phi_optimization): Similarly.
(conditional_replacement): Use replace_phi_with_stmt and
candidate_bb_for_phi_optimization.
Paolo Carlini [Tue, 18 May 2004 15:58:33 +0000 (15:58 +0000)]
[multiple changes]
2004-05-18 Paolo Carlini <pcarlini@suse.de>
* include/ext/mt_allocator.h:(__mt_alloc::allocate): Minor
tweaks.
2004-05-18 Dhruv Matani <dhruvbird@gmx.net>
* include/ext/mt_allocator.h:(__mt_alloc::allocate): Re-write
allocation loop which removes blocks from the global free list
from O(N) to O(1) when the required blocks are <= the number
available.
Steven Bosscher [Tue, 18 May 2004 14:43:58 +0000 (14:43 +0000)]
s390.c (s390_expand_movstr, [...]): Do not use expand_start_loop and expand_end_loop, instead build the loop manually.
* config/s390/s390.c (s390_expand_movstr, s390_expand_clrstr,
s390_expand_cmpmem): Do not use expand_start_loop and
expand_end_loop, instead build the loop manually.