Paul Thomas [Fri, 14 Nov 2008 18:03:05 +0000 (18:03 +0000)]
re PR fortran/38033 (Bounds of a pointer/allocatable array not stabilized)
2008-10-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38033
* trans-array.c (gfc_trans_create_temp_array): Stabilize the
'to' expression.
(gfc_conv_loop_setup): Use the end expression for the loop 'to'
if it is available.
2008-10-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38033
* gfortran.dg/array_section_2.f90: New test.
* ira-build.c (ira_create_allocno): Initialize
ALLOCNO_BAD_SPILL_P.
(create_cap_allocno, propagate_allocno_info,
remove_unnecessary_allocnos): Set up or update
ALLOCNO_BAD_SPILL_P.
(update_bad_spill_attribute): New function.
(ira_build): Call it.
* ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
Thomas Schwinge [Fri, 14 Nov 2008 09:24:06 +0000 (10:24 +0100)]
configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd systems...
2008-11-14 Thomas Schwinge <tschwinge@gnu.org>
* configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
systems, which are assumend to always provide SSP-support in glibc.
* configure: Regenerate.
Thomas Schwinge [Thu, 13 Nov 2008 23:28:46 +0000 (00:28 +0100)]
re PR target/28102 (GNU Hurd bootstrap error: 'OPTION_GLIBC' undeclared)
2008-11-13 Thomas Schwinge <tschwinge@gnu.org>
PR target/28102
* config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*', x86
parts into the `i[34567]86-*-linux*' and parts that are independent of
the processor architecture into the `*-*-linux*' cases.
(*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
* config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
(TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine.
[TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine.
* config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
(HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
(LINUX_TARGET_OS_CPP_BUILTINS): Redefine.
Jakub Jelinek [Thu, 13 Nov 2008 21:04:32 +0000 (22:04 +0100)]
re PR debug/27017 (Debug information for static local class members are not emitted)
PR c++/27017
* dwarf2out.c (prune_unused_types_walk_local_classes): New function.
(prune_unused_types_walk): Call it for non-perennial local classes.
Set die_mark to 2 if recursing on children. If die_mark is 1 on
entry, just set it to 2 and recurse on children, don't walk attributes
again.
* g++.dg/debug/dwarf2/localclass1.C: New test.
* g++.dg/debug/dwarf2/localclass2.C: New test.
Paul Brook [Thu, 13 Nov 2008 15:19:02 +0000 (15:19 +0000)]
invoke.texi: Document --fix-cortex-m3.
2008-11-13 Paul Brook <paul@codesourcery.com>
gcc/
* doc/invoke.texi: Document --fix-cortex-m3.
* config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
Cortex-M3 cpu is selected.
(output_move_double): Avoid overlapping base register and first
destination register when fix_cm3_ldrd.
* config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
Olivier Hainque [Thu, 13 Nov 2008 14:43:23 +0000 (14:43 +0000)]
decl.c (gnat_to_gnu_entity): Turn Ada Pure on subprograms back into GCC CONST when...
ada/
* gcc-interface/decl.c (gnat_to_gnu_entity) <case E_Function>:
Turn Ada Pure on subprograms back into GCC CONST when eh constructs
are explicit to the middle-end. Tidy.
testsuite/
* gnat.dg/test_raise_from_pure.adb: Adjust to match revised intent.
* gnat.dg/wrap_raise_from_pure.ad[bs]: Remove.
* gnat.dg/handle_raise_from_pure.adb: New test.
Dodji Seketeli [Thu, 13 Nov 2008 10:55:01 +0000 (11:55 +0100)]
Fix ChangeLog entry:
PR debug/27574
* cgraph.h: New abstract_and_needed member to struct cgraph_node.
* cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
- which clones are reachable - as "abstract and needed".
* cgraph.c (cgraph_release_function_body): If a node is
"abstract and needed", do not release its DECL_INITIAL() content
that will be needed to emit debug info.
Jakub Jelinek [Wed, 12 Nov 2008 22:18:03 +0000 (23:18 +0100)]
re PR c++/36478 (warning not emitted when code expanded from macro)
PR c++/36478
Revert:
2007-05-07 Mike Stump <mrs@apple.com>
* doc/invoke.texi (Warning Options): Document that -Wempty-body
also checks for and while statements in C++.
Revert:
2007-05-07 Mike Stump <mrs@apple.com>
* parser.c (check_empty_body): Add.
(cp_parser_iteration_statement): Add call to check_empty_body.
PR debug/27574
* cgraph.h: New abstract_and_needed member to struct cgraph_node.
* cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
- which clones are reachable - as "abstract and needed".
* cgraph.c (cgraph_release_function_body): If a node is "abstract and needed",
do not release its DECL_INITIAL() content because that will be needed to emit
debug info.
Steve Ellcey [Wed, 12 Nov 2008 21:37:34 +0000 (21:37 +0000)]
re PR target/27880 (undefined reference to `_Unwind_GetIPInfo')
PR target/27880
* configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Use this macro
to set HAVE_GETIPINFO.
* aclocal.m4: Include ../config/unwind_ipinfo.m4.
* configure: Regenerate.
* config.in: Regenerate.
Steve Ellcey [Wed, 12 Nov 2008 21:35:46 +0000 (21:35 +0000)]
re PR target/27880 (undefined reference to `_Unwind_GetIPInfo')
PR target/27880
* config/unwind_ipinfo.m4 (GCC_CHECK_UNWIND_GETIPINFO): Change from
link test to target based test.
* libstdc++/v3/configure.ac: Move call to GCC_CHECK_UNWIND_GETIPINFO.
* libstdc++/v3/configure: Regenerate.
* libjava/configure: Regenerate.
Jakub Jelinek [Wed, 12 Nov 2008 20:55:13 +0000 (21:55 +0100)]
re PR libgcj/33764 (gij is built as 32-bit binary when building multilib gcc)
PR libgcj/33764
libjava/
* configure.ac (INSTALL_BINARIES): New AM_CONDITIONAL.
* Makefile.am: If not INSTALL_BINARIES, use noinst_PROGRAMS
instead of bin_PROGRAMS for binaries.
* configure: Regenerated.
* Makefile.in: Regenerated.
libjava/classpath/
* configure.ac (INSTALL_BINARIES): New AM_CONDITIONAL.
* tools/Makefile.am: If not INSTALL_BINARIES, use noinst_PROGRAMS
instead of bin_PROGRAMS for binaries.
* configure: Regenerated.
* tools/Makefile.in: Regenerated.
* gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
packed-stack special handling.
(FRAME_ADDR_RTX): Add definition.
2008-11-12 Andreas Krebbel <krebbel1@de.ibm.com>
* gcc.target/s390/frame-addr1.c: New testcase.
* gcc.target/s390/frame-addr2.c: New testcase.
* gcc.target/s390/return-addr1.c: New testcase.
* gcc.target/s390/return-addr2.c: New testcase.
Jakub Jelinek [Wed, 12 Nov 2008 17:01:51 +0000 (18:01 +0100)]
re PR target/35366 (gfortran.dg/equiv_7.f90 fails with -m64 -Os on powerpc-apple-darwin9)
PR target/35366
PR fortran/33759
* fold-const.c (native_encode_string): New function.
(native_encode_expr): Use it for STRING_CST.
* trans-const.c (gfc_conv_constant_to_tree): Warn when
converting an integer outside of LOGICAL's range to
LOGICAL.
* trans-intrinsic.c (gfc_conv_intrinsic_function,
gfc_conv_intrinsic_array_transfer, gfc_conv_intrinsic_transfer):
Use INTEGER_TYPE instead of BOOLEAN_TYPE for TRANSFER as
argument of another TRANSFER.
* gfortran.dg/hollerith.f90: Don't assume a 32-bit value
stored into logical variable will be preserved.
* gfortran.dg/transfer_simplify_4.f90: Remove undefined
cases. Run at all optimization levels. Add a couple of
new tests.
* gfortran.dg/hollerith5.f90: New test.
* gfortran.dg/hollerith_legacy.f90: Add dg-warning.
Jakub Jelinek [Wed, 12 Nov 2008 08:16:12 +0000 (09:16 +0100)]
re PR target/35366 (gfortran.dg/equiv_7.f90 fails with -m64 -Os on powerpc-apple-darwin9)
PR target/35366
* expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
than INNER and INNER is a constant, forcibly align INNER as much
as needed.
Vladimir Makarov [Mon, 10 Nov 2008 23:21:45 +0000 (23:21 +0000)]
re PR rtl-optimization/37948 (IRA generates slower code)
2008-11-07 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimizations/37948
* ira-int.h (struct ira_allocno_copy): New member constraint_p.
(ira_create_copy, ira_add_allocno_copy): New parameter.
* ira-conflicts.c (process_regs_for_copy): New parameter. Pass it
to ira_add_allocno_copy.
(process_reg_shuffles, add_insn_allocno_copies): Pass a new
parameter to process_regs_for_copy.
(propagate_copies): Pass a new parameter to ira_add_allocno_copy.
Fix typo in passing second allocno to ira_add_allocno_copy.
* ira-color.c (update_conflict_hard_regno_costs): Use head of
coalesced allocnos list.
(assign_hard_reg): Ditto. Check that assigned allocnos are not in
the graph.
(add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
(add_ira_allocno_to_ordered_bucket): Rename to
add_allocno_to_ordered_bucket.
(push_ira_allocno_to_stack): Rename to push_allocno_to_stack. Use
head of coalesced allocnos list.
(push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
Check that it is aready calculated.
(push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
(setup_allocno_left_conflicts_num): Use head of coalesced allocnos
list.
(coalesce_allocnos): Do extended coalescing too.
* ira-emit.c (add_range_and_copies_from_move_list): Pass a new
parameter to ira_add_allocno_copy.
* ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
parameter.
(print_copy): Print copy origination too.
* ira-costs.c (scan_one_insn): Use alloc_pref for load from
equivalent memory.
Kaz Kojima [Mon, 10 Nov 2008 23:10:10 +0000 (23:10 +0000)]
re PR rtl-optimization/37514 (Wrong code generated for 20021120-1.c with -O3 -fomit-frame-pointer on sh4)
PR rtl-optimization/37514
* config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
flag_ira_share_spill_slots to 2 if it's already non-zero.
(OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
flag_ira_share_spill_slots is 2.
* gcc.target/sh/pr37514.c: New test.
DJ Delorie [Mon, 10 Nov 2008 19:37:20 +0000 (14:37 -0500)]
m32c.c (m32c_const_ok_for_constraint_p): Add ImB constraint for single-bit-clear in lower byte of HI constant...
* config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
constraint for single-bit-clear in lower byte of HI constant, vs
Imb which just ignores the upper byte.
* config/m32c/predicates.md (m32c_1mask8_operand): Use it.
* config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
(iorhi3_16): Check for single bit set, not single bit clear.
Paul Thomas [Sun, 9 Nov 2008 17:40:30 +0000 (17:40 +0000)]
re PR fortran/37836 (ICE in gfc_trans_auto_array_allocation)
2008-11-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/37836
* intrinsic.c (add_functions): Reference gfc_simplify._minval
and gfc_simplify_maxval.
* intrinsic.h : Add prototypes for gfc_simplify._minval and
gfc_simplify_maxval.
* simplify.c (min_max_choose): New function extracted from
simplify_min_max.
(simplify_min_max): Call it.
(simplify_minval_maxval, gfc_simplify_minval,
gfc_simplify_maxval): New functions.
2008-11-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/37836
* gfortran.dg/minmaxval_1.f90: New test.
Eric Botcazou [Sun, 9 Nov 2008 09:50:02 +0000 (09:50 +0000)]
ada-tree.def (PLUS_NOMOD_EXPR): New tree code.
* gcc-interface/ada-tree.def (PLUS_NOMOD_EXPR): New tree code.
(MINUS_NOMOD_EXPR): Likewise.
* gcc-interface/utils2.c (build_binary_op) <PREINCREMENT_EXPR>: Make
unreachable.
<PLUS_NOMOD_EXPR>: New case.
<MINUS_NOMOD_EXPR>: Likewise.
* gcc-interface/trans.c (Loop_Statement_to_gnu): Build increment-and-
assignment statement instead of using an increment operator.