Roger Sayle [Fri, 12 Sep 2003 15:07:50 +0000 (15:07 +0000)]
re PR rtl-optimization/8967 (Making class data members `const' pessimizes code)
PR optimization/8967
* alias.c (write_dependence_p): Modify to take an additional constp
argument that controls whether the UNCHANGING_RTX_P flags are used.
(anti_dependence, output_dependence): Adjust write_dependence_p
callers to pass this additional argument, to return the same result.
(unchanging_anti_dependence): New variant of anti_dependence that
ignores the UNCHANGING_RTX_P property on memory references.
* rtl.h (unchaning_anti_dependence): Prototype here.
* flow.c (init_propagate_block): Place fake constant mem writes on
the mem_set_list so that dead writes to const variables are deleted.
(insn_dead_p): Change anti_dependence to unchanging_anti_dependence.
(mark_used_regs): Likewise.
* config/mcore/mcore-protos.h (mcore_r15_operand_p): Declare.
(mcore_secondary_reload_class): Declare.
(mcore_output_inline_const_forced): Remove.
* config/mcore/mcore.md (movsi): Remove the code that forced
non-inlineable constants into a register if the target was r15
or the stack pointer. Remove constant restrictions from the main
define_insn. Remove r <- I, r <- M and r <- N alternatives in favor
of an r <- P alternative. Remove fallback define_insn for reload.
(movhi, movqi): Use gen_lowpart rather than gen_SUBREG. Remove reload
define_insn. Use mcore_output_move in the remaining define_insn.
Adjust condition and constraints in the way as for movsi.
(movdi): Always split unacceptable constants into two. Use
simplify_gen_subreg instead of operand_subword{,_force}.
* config/mcore/mcore.c (mcore_output_inline_const_forced): Remove.
(mcore_output_move): Support HImode and QImode moves as well.
(mcore_m15_operand_p): New function.
(mcore_reload_class): Use it to detect cases where LRW_REGS are better.
(mcore_secondary_reload_class): New function.
* config/mcore/mcore.h (SECONDARY_RELOAD_CLASS): Redefine in
terms of mcore_secondary_reload_class.
Tom Tromey [Fri, 12 Sep 2003 01:08:18 +0000 (01:08 +0000)]
URLStreamHandler.java (parseURL): If original file ends with "/", so must canonical result.
* java/net/URLStreamHandler.java (parseURL): If original file
ends with "/", so must canonical result.
* java/io/natFilePosix.cc (getCanonicalPath): Clean up snafus
with nul-termination and finding previous "/".
Alan Modra [Thu, 11 Sep 2003 23:54:40 +0000 (23:54 +0000)]
prep_cif.c (initialize_aggregate): Include tail padding in structure size.
* src/prep_cif.c (initialize_aggregate): Include tail padding in
structure size.
* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct
placement of float result.
* testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct
cast of "resp" for big-endian 64 bit machines.
builtins.c (fold_builtin_logarithm): if N can't be truncated to MODE exactly...
* builtins.c (fold_builtin_logarithm): if N can't be truncated to
MODE exactly, then only convert logN(N) -> 1.0 if
flag_unsafe_math_optimizations is set.
Michael Koch [Thu, 11 Sep 2003 17:25:47 +0000 (17:25 +0000)]
acconfig.h: Removed most items.
2003-09-11 Michael Koch <konqueror@gmx.de>
* acconfig.h: Removed most items.
* configure.in: Added descriptions to AC_DEFINE macros that where in
acconfig.h before.
* include/config.h.in: Regenerated.
re PR c++/11788 (missing implicit instantiation of static member function)
cp:
PR c++/11788
* typeck.c (build_address): If it is a function, mark it used.
(build_unary_op): Do not lose object's side-effects when taking
address of static member function.
* class.c (resolve_address_of_overloaded_function): Use
tsubst_flags_t parameter. Only expect overload sets. Adjust.
(instantiate_type): Adjust flags passing. Do not lose object's
side-effects when taking address of static member function.
testsuite:
PR c++/11788
* g++.dg/overload/addr1.C: New test.
Roger Sayle [Thu, 11 Sep 2003 13:01:32 +0000 (13:01 +0000)]
combine.c (combine_simplify_rtx): Move several NOT and NEG optimizations from here...
* combine.c (combine_simplify_rtx): Move several NOT and NEG
optimizations from here...
* simplify-rtx.c (simplify_unary_operation): to here. Recursively
simplify expressions using simplify_gen_*ary instead of gen_rtx_*.
Alan Modra [Thu, 11 Sep 2003 05:17:57 +0000 (05:17 +0000)]
types.c (double, longdouble): Merge identical SH and ARM typedefs, and add POWERPC64.
* src/types.c (double, longdouble): Merge identical SH and ARM
typedefs, and add POWERPC64.
* src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for
struct split over gpr and rest.
(ffi_prep_cif_machdep): Correct intarg_count for structures.
* src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets.
Jan Hubicka [Wed, 10 Sep 2003 23:45:05 +0000 (01:45 +0200)]
c-objc-common.c (c_cannot_inline_tree_fn): Warn on why function is not inlinable; do not check the body.
* c-objc-common.c (c_cannot_inline_tree_fn): Warn
on why function is not inlinable; do not check
the body.
(inline_forbidden_p): Move to...
* tree-inline.c (inline_forbidden_p_1): ... here; Add warnings;
deal with alloca, longjmp.
(inline_forbidden_p): New static function.
(find_alloca_call_1, find_alloca_call, find_builtin_longjmp_call_1,
find_builtin_longjmp_call): Kill.
vec.cc (__cxa_vec_new2): If the allocator returns NULL, return NULL.
2003-09-10 Jeffrey D. Oldham <oldham@codesourcery.com>
* libsupc++/vec.cc (__cxa_vec_new2): If the allocator returns
NULL, return NULL. This reflects a C++ ABI change 2003 Sep 05.
(__cxa_vec_new3): Likewise.
fstream.tcc (basic_filebuf::seekoff): Use codecvt::length to handle variable-width stateless encodings correctly.
2003-09-10 Petur Runolfsson <peturr02@ru.is>
* include/bits/fstream.tcc (basic_filebuf::seekoff):
Use codecvt::length to handle variable-width stateless encodings
correctly.
* testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc: New test.
* testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc: New test.
builtins.c (real_dconstp, [...]): New, split out from fold_builtin.
* builtins.c (real_dconstp, fold_builtin_logarithm,
fold_builtin_exponent): New, split out from fold_builtin. Also
generalize to add log2, log10, exp2 and exp10/pow10 equivalents.
* emit-rtl.c (dconst3, dconst10, dconstthird): New.
(init_emit_once): Initialize new dconsts, use ARRAY_SIZE in lieu
of hardcoded array size.
* fold-const.c (fold): Add cases for exp2, exp10 and pow10.
(tree_expr_nonnegative_p): Likewise.
* real.h (dconst3, dconst10, dconstthird): New.
testsuite:
* gcc.dg/torture/builtin-explog-1.c: New testcase.
Jan Hubicka [Tue, 9 Sep 2003 20:27:52 +0000 (22:27 +0200)]
cgraphunit.c (cgraph_finalize_function): Fix handling of extern inline functions.
* cgraphunit.c (cgraph_finalize_function): Fix handling of extern
inline functions.
(cgraph_finalize_compilation_unit): Fix crash when dealing with lost
DECL_SAVED_TREE.
* cgraph.c (cgraph_varpool_finalize_decl): Sanity check duplicated
finalization.
* cgraphunit.c (decide_is_fnction_needed): Avoid special case of nested
functions, check for COMDAT.
(cgraph_assemble_pending_functions): Break out from...
(cgraph_finalize_function): ... here; allow redefinig of extern inline
functions.
(record_call_1): Record function references only in non-unit-at-a-time
mode.
(cgraph_analyze_function): Reset current_function_decl.
(cgraph_finalize_compilation_unit): Assemble pending functions.
Mark Mitchell [Mon, 8 Sep 2003 18:46:20 +0000 (18:46 +0000)]
re PR c++/11786 (operator() call on variable in other namespace not recognized)
PR c++/11786
* decl2.c (add_function): Do not complain about seeing the same
non-function twice.
* semantics.c (perform_koenig_lookup): Improve documentation.
c-decl.c (c_expand_body_1): Push and pop function context here.
gcc/
* c-decl.c (c_expand_body_1): Push and pop function context here.
* tree-optimize.c (tree_rest_of_compilation): ... not here. Take
nested argument instead of computing nesting ourselves.
Roger Sayle [Sun, 7 Sep 2003 20:34:13 +0000 (20:34 +0000)]
expr.c (expand_operands): New function to expand an operand pair.
* expr.c (expand_operands): New function to expand an operand pair.
(expand_expr): Call expand_operands whenever we need to expand both
operands of a binary operator.
(do_store_flag): Likewise for operands of comparison operations.
re PR c++/11762 (namespace aliasing ICE in warn_extern_redeclared_static)
* c-pretty-print.h (pp_c_left_brace): Declare.
(pp_c_right_brace): Likewise.
* c-pretty-print.c (pp_c_left_brace): Now a function
(pp_c_right_brace): Likewise.
cp/
PR c++/11762
* error.c (dump_decl): Handle namespace-alias-definition.
* decl.c (warn_extern_redeclared_static): There is no point in
checking changes in storage class specifier for a namespace
declaration.
(duplicate_decls): Tidy diagnostic message.
* cxx-pretty-print.c (pp_cxx_left_brace): New macro.
(pp_cxx_right_brace): Likewise.
(pp_cxx_original_namespace_definition): New function.
(pp_cxx_namespace_alias_definition): Likewise.
(pp_cxx_declaration): Use them. Handle NAMESPACE_DECLs.
Mark Mitchell [Sun, 7 Sep 2003 04:10:10 +0000 (04:10 +0000)]
re PR c++/11867 (static_cast ignores ambiguity)
PR c++/11687
* call.c (standard_conversion): Improve comments.
(perform_direct_initialization): Make sure we return an expression
of the correct type.
* typeck.c (build_static_cast): Check for ambiguity and
accessibility when performing conversions.
PR c++/11687
* g++.dg/expr/static_cast5.C: New test.