Jakub Jelinek [Fri, 31 Oct 2008 21:33:47 +0000 (22:33 +0100)]
re PR c++/37967 (ICE with function returning auto)
PR c++/37967
* decl.c (grokdeclarator): Diagnose auto function decl without
late return type and late return type function decl where type
is not auto.
Mikael Morin [Fri, 31 Oct 2008 15:56:21 +0000 (16:56 +0100)]
re PR fortran/35840 (ICE for character expression in I/O specifier)
2008-10-31 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/35840
* expr.c (gfc_reduce_init_expr): New function, containing checking code
from gfc_match_init_expr, so that checking can be deferred.
(gfc_match_init_expr): Use gfc_reduce_init_expr.
* io.c (check_io_constraints): Use gfc_reduce_init_expr instead of
checking that the expression is a constant.
* match.h (gfc_reduce_init_expr): Prototype added.
2008-10-31 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/35840
* gfortran.dg/write_check4.f90: New test.
Mikael Morin [Fri, 31 Oct 2008 15:37:17 +0000 (16:37 +0100)]
[multiple changes]
2008-10-31 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/35820
* resolve.c (gfc_count_forall_iterators): New function.
(gfc_resolve_forall): Use gfc_count_forall_iterators to evaluate
the needed memory amount to allocate. Don't forget to free allocated
memory. Add an assertion to check for memory leaks.
2008-10-16 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/35820
* gfortran.dg/nested_forall_1.f: New test.
Steven G. Kargl [Fri, 31 Oct 2008 04:45:28 +0000 (04:45 +0000)]
re PR fortran/37930 (gfortran error and ICE at automatic type conversion with transfer intrinsic)
2008-10-30 Steven G. Kargl <kargls@comcast.net>
PR fortran/37930
* fortran/arith.c (gfc_mpfr_to_mpz): Test for NaN and Inf values.
Remove stale comment and kludge code for MPFR 2.0.1 and older.
(gfc_real2int): Error on conversion of NaN or Inf.
(gfc_complex2int): Ditto.
* fortran/arith.h: Update mpfr_to_mpz prototype.
* fortran/simplify.c (gfc_simplify_ceiling, gfc_simplify_floor,
gfc_simplify_ifix, gfc_simplify_idint, simplify_nint): Update function
calls to include locus.
Mikael Morin [Thu, 30 Oct 2008 20:45:09 +0000 (21:45 +0100)]
re PR fortran/37903 (wrong-code for complicated vector subscripts)
2008-10-30 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/37903
* trans-array.c (gfc_trans_create_temp_array): If n is less
than the temporary dimension, assert that loop->from is
zero (reverts to earlier versions). If there is at least one
null loop->to[n], it is a callee allocated array so set the
size to NULL and break.
(gfc_trans_constant_array_constructor): Set the offset to zero.
(gfc_trans_array_constructor): Remove loop shifting around the
temporary creation.
(gfc_conv_loop_setup): Prefer zero-based descriptors if
possible. Calculate the translation from loop variables to
array indices if an array constructor.
2008-10-30 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/37749
* trans-array.c (gfc_trans_create_temp_array): If size is NULL
use the array bounds for loop->to.
2008-10-30 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/37903
* gfortran.dg/vector_subscript_4.f90: New test.
2008-10-30 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/37749
* gfortran.dg/vector_subscript__5.f90: New test.
Joseph Myers [Wed, 29 Oct 2008 17:05:42 +0000 (17:05 +0000)]
re PR middle-end/36578 (cast to long double not taken into account when result stored to a double)
PR middle-end/36578
* convert.c (convert_to_real): Do not optimize conversions of
binary arithmetic operations between binary and decimal
floating-point types. Consider mode of target type in determining
decimal type for arithmetic. Unless
flag_unsafe_math_optimizations, do not optimize binary conversions
where this may change rounding behavior.
* real.c (real_can_shorten_arithmetic): New.
* real.h (real_can_shorten_arithmetic): Declare.
testsuite:
* gcc.dg/dfp/convert-bfp-13.c, gcc.dg/dfp/convert-bfp-14.c,
gcc.dg/dfp/convert-dfp-fold-2.c, gcc.target/i386/pr36578-1.c,
gcc.target/i386/pr36578-2.c: New tests.
Bernd Schmidt [Wed, 29 Oct 2008 16:37:22 +0000 (16:37 +0000)]
bfin-protos.h (WA_05000257, [...]): New.
* config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
* config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
appropriate.
(must_save_p): For some workarounds, interrupts need to clobber a
P register.
(expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
and LC1 for WA_05000257.
(expand_interrupt_handler_prologue): Add dummy read of CHIPID for
WA_05000283 and WA_05000315.
* config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
(movbi): Add alternative to set CC to 1; improve code for setting
CC to 0.
(dummy_load): New pattern.
Jakub Jelinek [Wed, 29 Oct 2008 16:07:39 +0000 (17:07 +0100)]
re PR middle-end/37870 (ICE in extract_bit_field_1)
PR middle-end/37870
* expmed.c (extract_bit_field_1): If int_mode_for_mode returns
BLKmode for non-memory, convert using a wider MODE_INT mode
or through memory.
re PR c++/26997 (g++ reports misleading error message when the identifier with error occurs earlier on the same line)
2008-10-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c++/26997
cp/
* parser.c (cp_parser_token_starts_cast_expression): New.
(cp_parser_cast_expression): Peek the next token to decide whether
this could be a parenthesized constructor or is definitely an
actual cast.
testsuite/
* g++.dg/parse/pr26997.C: New.
Bernd Schmidt [Wed, 29 Oct 2008 15:12:28 +0000 (15:12 +0000)]
bfin.c (struct machine_function): New member has_loopreg_clobber.
* config/bfin/bfin.c (struct machine_function): New member
has_loopreg_clobber.
(bfin_expand_movmem): Set it when generating memcpy insns.
(n_regs_saved_by_prologue, expand_prologue_reg_save,
expand_epilogue_reg_restore): If we have hardware loops,
memcpy insns (indicated by has_loopreg_clobber) or function
calls, we need to save the loop registers.
Nick Clifton [Tue, 28 Oct 2008 09:45:37 +0000 (09:45 +0000)]
mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
* config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
* config/mn10300/mn10300.c (fp_regs_to_save): Test the
call_really_used_regs array rather than the call_used_regs array.
(mn10300_get_live_callee_saved_regs, expand_prologue,
expand_epilogue, output_tst): Likewise.
Paolo Carlini [Mon, 27 Oct 2008 16:50:23 +0000 (16:50 +0000)]
re PR libstdc++/37919 ([c++0x] GCC 4.4 regression r141214 of gcc c++0x stl_pair.c causes a boost 1.36 compilation to fail)
2008-10-27 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/37919
Revert:
2008-10-18 Douglas Gregor <doug.gregor@gmail.com>
* include/bits/stl_pair.h (__may_be_null_pointer_init): New.
(pair::pair): Eliminate the redundant pair(U1&&, U2&&) constructor.
Add lvalue pair<U1, U2> constructor to handle non-const pair lvalues.
Remove the old variadic constructor, and instead provide several
variadic constructors that avoid failing when attempting to
initialize a pointer from a null pointer constant.
* testsuite/20_util/pair/moveable.cc (test3): Add new tests with
initialization of pointers from the null pointer constant.
Vladimir Makarov [Mon, 27 Oct 2008 16:39:26 +0000 (16:39 +0000)]
ira-int.h (ira_allocno): Add member updated_cover_class_cost.
2008-10-27 Vladimir Makarov <vmakarov@redhat.com>
* ira-int.h (ira_allocno): Add member updated_cover_class_cost.
(ALLOCNO_UPDATED_COVER_CLASS_COST): New.
(ira_fast_allocation): Remove the prototype.
* ira-color.c (update_copy_costs, allocno_cost_compare_func,
assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
(color_pass): Modify the updated costs.
(ira_color): Rename to color. Make it static.
(ira_fast_allocation): Rename to fast_allocation. Make it static.
(ira_color): New function.
* ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
change.
* ira-lives.c (last_call_num, allocno_saved_at_call): New
variables.
(set_allocno_live, clear_allocno_live, mark_ref_live,
mark_ref_dead): Invalidate corresponding element of
allocno_saved_at_call.
(process_bb_node_lives): Increment last_call_num. Setup
allocno_saved_at_call. Don't increase ALLOCNO_CALL_FREQ if the
allocno was already saved.
(ira_create_allocno_live_ranges): Initiate last_call_num and
allocno_saved_at_call.
* ira-build.c (ira_create_allocno): Initiate
ALLOCNO_UPDATED_COVER_CLASS_COST.
(create_cap_allocno, propagate_allocno_info,
remove_unnecessary_allocnos): Remove setting updated costs.
(ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
* ira.c (ira): Don't call ira_fast_allocation.
* ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
updated costs.
Vladimir Makarov [Mon, 27 Oct 2008 16:24:19 +0000 (16:24 +0000)]
re PR middle-end/37813 (assert with IRA_COVER_CLASSES with singleton)
2008-10-27 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/37813
* ira-conflicts.c (process_regs_for_copy): Remove class subset
check.
* ira-int.h (ira_hard_regno_cover_class): New.
* ira-lives.c (mark_reg_live, mark_reg_dead,
process_bb_node_lives): Use ira_hard_regno_cover_class.
* ira.c (reg_class ira_hard_regno_cover_class): New global
variable.
(setup_hard_regno_cover_class): New function.
(ira_init): Call setup_hard_regno_cover_class.
re PR middle-end/37316 (Small structs are not passed correctly on hppa64-*-*)
2008-10-26 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR middle-end/37316
* pa.c (function_arg_padding): Pad complex and vector types upward in
64-bit runtime.
(function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
DJ Delorie [Fri, 24 Oct 2008 19:34:59 +0000 (15:34 -0400)]
scanasm.exp (scan-assembler, [...]): Extract first word of $testcase for all upvar uses...
* lib/scanasm.exp (scan-assembler, scan-assembler-not,
scan-hidden, scan-not-hidden, scan-file, scan-file-not,
scan-assembler-times, scan-assembler-dem, scan-assembler-dem-not):
Extract first word of $testcase for all upvar uses, in case
$testvar has compiler switches appended.
Jakub Jelinek [Fri, 24 Oct 2008 13:57:43 +0000 (15:57 +0200)]
re PR tree-optimization/36038 (miscompiled loop in perlbmk for -Os)
PR tree-optimization/36038
* tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
add sizetype IV with initial value zero instead of pointer type.
re PR c/7543 (no warning for always-false "if (!a & 0x4)" bitwise and on boolean value)
2008-10-24 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/7543
* value-prof.c (gimple_stringop_fixed_value): Use parentheses
around bit operation.
* profile.c (is_edge_inconsistent): Likewise.
* fold-const.c (truth_value_p): Move from here...
* tree.h (truth_value_p): ... to here.
* c-tree.h (c_expr): Update description of original_code.
* c-typeck.c (parser_build_unary_op): Set original_code.
(parser_build_binary_op): Update call to warn_about_parentheses.
* c-common.c (warn_about_parentheses): Take two additional
arguments of the operands. Use a switch. Quote operators
appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
Add warning about !x | y and !x & y.
* c-common.h (warn_about_parentheses): Update declaration.
cp/
* typeck.c (build_x_binary_op): Update call to
warn_about_parentheses.
* parser.c (cp_parser_binary_expression): Add note about passing
the correct code for unary expressions.
testsuite/
* gcc.dg/Wparentheses-11.c: New.
* g++.dg/warn/Wparentheses-25.C: New. XFAILED.
Jakub Jelinek [Fri, 24 Oct 2008 08:58:44 +0000 (10:58 +0200)]
dg-extract-results.sh: New file.
contrib/
* dg-extract-results.sh: New file.
gcc/
* Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
check_p_tool, check_p_vars, check_p_subno, check_p_comma,
check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
New variables.
(check-subtargets, check-%-subtargets, check-parallel-%): New
targets.
(check-%): For test targets listed in lang_checks_parallelized
if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
run the testing in multiple make goals, possibly parallel, and
afterwards run dg-extract-results.sh to merge the sum and log files.
gcc/cp/
* Make-lang.in (check-c++-subtargets): New alias for
check-g++-subtargets.
(lang_checks_parallelized): Add check-g++.
(check_g++_parallelize): New variable.
gcc/fortran/
* Make-lang.in (check-f95-subtargets, check-fortran-subtargets): New
aliases for check-gfortran-subtargets.
(lang_checks_parallelized): Add check-gfortran.
(check_gfortran_parallelize): New variable.
gcc/ada/
* gcc-interface/Make-lang.in (check-ada-subtargets): Depend on
check-acats-subtargets and check-gnat-subtargets.
(check_acats_targets): New variable.
(check-acats-subtargets, check-acats%): New targets.
(check-acats): If -j is used and CHAPTERS is empty, run the testing
in multiple make goals, possibly parallel, and afterwards run
dg-extract-results.sh to merge the sum and log files.
gcc/java/
* Make-lang.in (check-java-subtargets): New target.
libstdc++-v3/
* testsuite/Makefile.am (AUTOMAKE_OPTIONS): Remove dejagnu.
(RUNTESTDEFAULTFLAGS, EXPECT, check_DEJAGNU_normal_targets): New
variables.
(%/site.exp, check-DEJAGNU%): New targets.
(check-am): Run $(MAKE) check-DEJAGNU.
* testsuite/Makefile.in: Regenerated.
mips.c (mips_canonicalize_move_class): New function.
gcc/
* config/mips/mips.c (mips_canonicalize_move_class): New function.
(mips_move_to_gpr_cost): Likewise.
(mips_move_from_gpr_cost): Likewise.
(mips_register_move_cost): Make more fine-grained.
David Edelsohn [Fri, 24 Oct 2008 02:44:26 +0000 (02:44 +0000)]
re PR java/35485 (libjava is disabled by default)
PR target/35485
* configure.ac: AIX threads are Posix threads.
Set signal handler to aix-signal.h
* configure: Regenerate.
* classpath/native/fdlibm/fdlibm.h: Undef hz.
* include/aix-signal.h: New file.
* sysdep/powerpc/locks.h: Avoid GNU Assembler syntax.
Jerry DeLisle [Thu, 23 Oct 2008 02:31:00 +0000 (02:31 +0000)]
re PR libfortran/37707 (Namelist read of array of derived type incorrect)
2008-10-22 Jerry DeLisle <jvdelisle@gcc.gnu.org
PR libfortran/37707
* io/list_read.c (read_character): Remove code to look ahead in namelist
reads to descriminate non-delimited strings from namelist objects.
* io/write.c (namelist_write): Delimit character strings with quote or
apostrophe, defaulting to quote.
Bernd Schmidt [Wed, 22 Oct 2008 19:42:56 +0000 (19:42 +0000)]
gcc/:
From Mike Frysinger <michael.frysinger@analog.com>
* config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
* config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
and bf518. Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
Add 0.6 for bf533, bf532, and bf531. Add 0.5 for bf538 and bf539.
Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518. Define
__ADSPBF51x__ for all of them.
* config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
-mcpu bf512, bf514, bf516, and bf518.
* config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
bf512-none, bf514-none, bf516-none, and bf518-none.
* config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
* config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
* doc/invoke.texi (Blackfin Options): Document that
-mcpu now accepts bf512, bf514, bf516, and bf518.
gcc/testsuite/:
From Mike Frysinger <michael.frysinger@analog.com>
* gcc.target/bfin/mcpu-bf522.c: Check SILICON_REVISION is 0x0002. Invert
check for __WORKAROUND_RETS when SILICON_REVISION is 0x0002+.
* gcc.target/bfin/mcpu-bf523.c: Likewise.
* gcc.target/bfin/mcpu-bf524.c: Likewise.
* gcc.target/bfin/mcpu-bf525.c: Likewise.
* gcc.target/bfin/mcpu-bf526.c: Likewise.
* gcc.target/bfin/mcpu-bf527.c: Likewise.
* gcc.target/bfin/mcpu-bf531.c: Check SILICON_REVISION is 0x0006. Invert
check for __WORKAROUND_RETS when SILICON_REVISION is 0x0006+.
* gcc.target/bfin/mcpu-bf532.c: Likewise.
* gcc.target/bfin/mcpu-bf533.c: Likewise.
* gcc.target/bfin/mcpu-bf538.c: Check SILICON_REVISION is 0x0005. Invert
check for __WORKAROUND_RETS when SILICON_REVISION is 0x0005+.
* gcc.target/bfin/mcpu-bf539.c: Likewise.
* gcc.target/bfin/mcpu-bf542.c: Check SILICON_REVISION is 0x0002. Invert
check for __WORKAROUND_RETS when SILICON_REVISION is 0x0002+.
* gcc.target/bfin/mcpu-bf544.c: Likewise.
* gcc.target/bfin/mcpu-bf547.c: Likewise.
* gcc.target/bfin/mcpu-bf548.c: Likewise.
* gcc.target/bfin/mcpu-bf549.c: Likewise.
* gcc.target/bfin/mcpu-bf512.c: New file.
* gcc.target/bfin/mcpu-bf514.c: Likewise.
* gcc.target/bfin/mcpu-bf516.c: Likewise.
* gcc.target/bfin/mcpu-bf518.c: Likewise.
Jakub Jelinek [Wed, 22 Oct 2008 18:21:55 +0000 (20:21 +0200)]
re PR middle-end/37882 (Bitfield miscompilation)
PR middle-end/37882
* fold-const.c (build_range_type): For 1 .. signed_max
range call build_nonstandard_inter_type if signed_type_for
returned a type with bigger precision.