PR c++/19317
Leave the return slot target in the MODIFY_EXPR rather than making
it an argument, but only use it if the CALL_EXPR has a flag set.
* tree.h (CALL_EXPR_HAS_RETURN_SLOT_ADDR): Rename to
CALL_EXPR_RETURN_SLOT_OPT.
* calls.c (expand_call): Adjust.
* tree-inline.c (expand_call_inline): Adjust.
* tree-pretty-print.c (dump_generic_node): Adjust.
And set the flag as appropriate.
* gimplify.c (gimplify_modify_expr_rhs): Set
CALL_EXPR_HAS_RETURN_SLOT_ADDR where the LHS is obviously safe.
* tree-nrv.c (execute_return_slot_opt): Set
CALL_EXPR_HAS_RETURN_SLOT_ADDR based on escape analysis.
* tree-pass.h: Declare pass_return_slot.
* tree-optimize.c (init_tree_optimization_passes): Add it.
* cp/semantics.c (simplify_aggr_init_expr): Use
CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR.
From-SVN: r101269
2005-06-22 Paul Brook <paul@codesourcery.com>
PR fortran/21034
* symbol.c (gfc_is_var_automatic): New function.
(save_symbol): Use it.
testsuite/
* gfortran.dg/auto_save_1.f90: New test.
From-SVN: r101250
* gcc.target/x86-64/abi: New directory.
* gcc.target/x86-64/abi/abi-x86_64.exp: New testsuite.
* gcc.target/x86-64/abi/README.gcc: New file.
* gcc.target/x86-64/abi/{args.h,defines.h,macros.h}: New headers.
* gcc.target/x86-64/abi/asm-support.s: New file.
* gcc.target/x86_64/abi/test_3_element_struct_and_unions.c: New test.
* gcc.target/x86_64/abi/test_basic_alignment.c: New test.
* gcc.target/x86_64/abi/test_basic_array_size_and_align.c: New test.
* gcc.target/x86_64/abi/test_basic_returning.c: New test.
* gcc.target/x86_64/abi/test_basic_sizes.c: New test.
* gcc.target/x86_64/abi/test_basic_struct_size_and_align.c: New test.
* gcc.target/x86_64/abi/test_basic_union_size_and_align.c: New test.
* gcc.target/x86_64/abi/test_bitfields.c: New test.
* gcc.target/x86_64/abi/test_complex_returning.c: New test.
* gcc.target/x86_64/abi/test_passing_floats.c: New test.
* gcc.target/x86_64/abi/test_passing_integers.c: New test.
* gcc.target/x86_64/abi/test_passing_structs_and_unions.c: New test.
* gcc.target/x86_64/abi/test_passing_structs.c: New test.
* gcc.target/x86_64/abi/test_passing_unions.c: New test.
* gcc.target/x86_64/abi/test_struct_returning.c: New test.
* gcc.target/x86_64/abi/test_varargs.c: New test.
From-SVN: r101249
2005-06-22 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
PR middle-end/20593
* varasm.c (compute_reloc_for_constant): Treat VIEW_CONVER_EXPR
the same as the other cast operands.
(output_addressed_constants): Likewise.
From-SVN: r101248
2005-06-21 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/func_derived_2.f90, gfortran.dg/func_derived_3.f90:
New tests.
From-SVN: r101230
2005-06-20 Daniel Berlin <dberlin@dberlin.org>
* c-typeck.c (build_function_call): Set fundecl = function again.
* tree-ssa-alias.c (find_used_portions): Address taking causes the
entire variable to be used.
* tree-ssa-structalias.c (do_structure_copy): Fix handling of
unknown size variables, and structure copies from addressof
operations. Simplify how we do *a = *b type structure copies.
(init_base_vars): Add ANYTHING = &ANYTHING constraint the right
way. READONLY's address is not taken by default.
INTEGER dereference should point to anything.
(create_variable_info_for): It's okay for the first field to not start
at 0.
From-SVN: r101227
* gfortran.h: Add flag_backslash compile-time option.
* lang.opt: Add support for -fbackslash option.
* options.c: Likewise.
* primary.c: Implement behavior for -fno-backslash.
* invoke.texi: Add doc for -fbackslash option.
* gfortran.texi: Remove mention of -fno-backslash as a
possible extension.
* gfortran.dg/backslash_1.f90: New test.
* gfortran.dg/backslash_2.f90: New test.
From-SVN: r101216
gcc/
2005-06-20 Jan Beulich <jbeulich@novell.com>
* config/i386/netware-libgcc.def: Update copyright.
* config/i386/netware-libgcc.exp (__divdc3, __divsc3, __divxc3,
__muldc3, __mulsc3, __mulxc3, __powidf2, __powisf2, __powixf2): Add.
* config/i386/netware.c (gen_stdcall_decoration,
gen_fastd_decoration): Merge into ...
(gen_stdcall_or_fastcall_decoration): ... this. Adjust to match
WinNT's changes.
(gen_regparm_prefix): Adjust to match i386_nlm_encode_section_info.
(i386_nlm_encode_section_info): Adjust to match WinNT's changes.
* config/i386/t-nwld (SHLIB_LINK): Also create libgcc.imp alias of
libgcc_s.imp. Use 'expr' rather than $(()) shell expressions.
* gthr-nks.h (__gthread_objc_mutex_allocate): Kill another dubious
use of NX_MUTEX_RECURSIVE.
gcc/testsuite/
2005-06-20 Jan Beulich <jbeulich@novell.com>
* g++.old-deja/g++.jason/thunk2.C: On NetWare, also account for
unsupportable relocations.
* g++.old-deja/g++.other/store-expr1.C: Likewise.
* gcc.dg/20050321-2.c: xfail for NetWare.
From-SVN: r101203
* gcc.target/i386/sseregparm-1.c, gcc.target/i386/sseregparm-2.c,
gcc.target/i386/fastcall-sseregparm.c,
gcc.target/i386/regparm-stdcall.c: Run only on 32-bit x86.
From-SVN: r101202
* fold-const.c (swap_tree_comparison): Add support for unordered
floating point comparisons.
* tree-vrp.c (opposite_comparison): Delete.
(extract_range_from_assert): Replace calls to opposite_comparison
with calls to swap_tree_comparison.
(register_edge_assert_for): Likewise.
(vrp_evaluate_conditional): Likewise.
From-SVN: r101201
* cfgloop.h (DLTHE_RECORD_COPY_NUMBER): New flag.
* cfgloopmanip.c (duplicate_loop_to_header_edge): Set aux flags only
when asked for.
* loop-unroll.c (peel_loop_completely, unroll_loop_constant_iterations,
unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
Update call of duplicate_loop_to_header_edge.
(apply_opt_in_copies): Clear out aux pointers.
From-SVN: r101193
* c-decl.c (grokdeclarator): Only check TREE_OVERFLOW on
INTEGER_CST nodes.
* c-typeck.c (build_c_cast): Only preserve TREE_OVERFLOW on
CONSTANT_CLASS_P nodes.
From-SVN: r101187
2005-06-19 Andreas Krebbel <krebbel1@de.ibm.com>
* combine.c (make_compound_operation): Use simplify_subreg. Delete
a optimization already done by simplify_subreg.
From-SVN: r101183