David Edelsohn [Mon, 28 Dec 2009 18:19:18 +0000 (18:19 +0000)]
ffi_darwin.c (ffi_prep_args): Copy abi and nargs to local variables.
* src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to
local variables.
(aix_adjust_aggregate_sizes): New function.
(ffi_prep_cif_machdep): Call it.
re PR fortran/22552 (Would like warning when an undeclared function is called)
2009-12-27 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Daniel Kraft <d@domob.eu>
PR fortran/22552
* lang.opt (Wimplicit-procedure): New option.
* gfortran.h (struct gfc_option_t): New member `warn_implicit_procedure'
* options.c (gfc_handle_option): Handle -Wimplicit-procedure.
* interface.c (gfc_procedure_use): Warn about procedure never
explicitly declared if requested by the new flag.
* invoke.texi: Document new flag -Wimplicit-procedure.
2009-12-27 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Daniel Kraft <d@domob.eu>
PR fortran/22552
* gfortran.dg/warn_implicit_procedure_1.f90: New test.
Co-Authored-By: Daniel Kraft <d@domob.eu>
From-SVN: r155479
Andreas Tobler [Sat, 26 Dec 2009 18:49:55 +0000 (18:49 +0000)]
configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
2009-12-26 Andreas Tobler <a.tobler@schweiz.org>
* configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
* configure: Regenerate.
* fficonfig.h.in: Likewise.
* src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
Solaris/x86.
Andreas Schwab [Sat, 26 Dec 2009 12:40:27 +0000 (12:40 +0000)]
ffi.c (ffi_prep_args_SYSV): Advance intarg_count when a float arguments is passed in memory.
* src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
when a float arguments is passed in memory.
(ffi_closure_helper_SYSV): Mark general registers as used up when
a 64bit or soft-float long double argument is passed in memory.
Jason Merrill [Thu, 24 Dec 2009 21:46:14 +0000 (16:46 -0500)]
PR c++/41305, DR 384
PR c++/41305, DR 384
* name-lookup.c (arg_assoc_class): Split out arg_assoc_class_only
and arg_assoc_bases.
(friend_of_associated_class_p): Remove.
(arg_assoc_namespace): Don't call it.
(arg_assoc_template_arg): Use arg_assoc_class_only for member
template context.
(arg_assoc_type): Handle UNION_TYPE and ENUMERAL_TYPE properly.
Andy Hutchinson [Thu, 24 Dec 2009 20:32:38 +0000 (20:32 +0000)]
re PR target/42457 (AVR fails to build with other than C family languages)
2009-12-24 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
PR target/42457
* config/avr/avr.c (avr_extra_arch_macro): Remove static.
(avr_cpu_cpp_builtins): Remove.
* config/avr/avr.h (avr_extra_arch_macro): Add prototype.
* config/avr/avr-c.c: New File.
(avr_cpu_cpp_builtins) : Add.
* config/avr/t-avr: Add make information for avr-c.
* config.gcc (avr-*-*): Include avr-c.o as c and cpp object.
PR target/42093
* config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Fix macro usage
to TARGET_THUMB1.
(CASE_VECTOR_SHORTEN_MODE): Allow signed offsets
only for TARGET_THUMB1.
Sebastian Pop [Wed, 23 Dec 2009 07:50:22 +0000 (07:50 +0000)]
re PR tree-optimization/42205 ([graphite] internal compiler error: verify_ssa failed with -ffast-math -floop-interchange)
Fix PR42205.
2009-12-17 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/42205
* graphite-sese-to-poly.c (translate_scalar_reduction_to_array_for_stmt):
Insert the reduction copy in the same block as the phi node.
(follow_ssa_with_commutative_ops): Handle GIMPLE_NOPs.
Sebastian Pop [Wed, 23 Dec 2009 07:50:12 +0000 (07:50 +0000)]
Fix PR42334: correct the update of the LST on loop interchange and distribution.
2009-12-15 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/42178
PR middle-end/42334
* graphite-interchange.c (lst_perfect_nestify): Reset to NULL the LSTs
that are empty.
(lst_do_interchange_1): Renamed lst_interchange_select_inner.
(lst_try_interchange): Reimplemented.
(lst_interchange_select_inner): Same.
(lst_do_interchange): Renamed lst_interchange_select_outer.
Reimplemented.
(scop_do_interchange): Update use of lst_interchange_select_outer.
* graphite-interchange.c (lst_try_interchange): Do not increment the
the OUTER index when there is no AFTER kernel. Do not increment the
OUTER index for after processing the AFTER kernel.
(lst_interchange_select_inner): Call lst_try_interchange only on loops.
(lst_interchange_select_outer): Do not pass in a pointer to the OUTER
index. Do not pass to lst_interchange_select_inner the OUTER index.
(scop_do_interchange): Update use of lst_interchange_select_outer.
* graphite-interchange.c (lst_try_interchange): Do not modify OUTER
index. Call lst_interchange_select_inner only once.
(lst_interchange_select_inner): Update use of lst_try_interchange.
(lst_interchange_select_outer): Update.
* testsuite/libgomp.fortran/crayptr2.f90: Remove forced static linkage
for darwin, protect the test with require-effective-target tls_runtime.
* testsuite/libgomp.fortran/pr32550.f90: Ditto.
gcc/
PR target/41605
* lib/g++.exp: Provide -B options to allow for link spec %s
substitutions for static libraries.
libstdc++-v3/
PR target/41605
* testsuite/libstdc++-abi/abi.exp: Provide -B options to allow for
link spec %s substitutions for static libraries.
* testsuite/lib/libstdc++.exp: Ditto
libgomp/
PR target/41605
* testsuite/lib/libgomp.exp: Provide -B options to allow for
link spec %s substitutions for static libraries.
Andy Hutchinson [Tue, 22 Dec 2009 00:00:50 +0000 (00:00 +0000)]
re PR testsuite/36903 (Generic vectorizarion test failures)
2009-12-21 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
PR testsuite/36903
* gcc.dg/tree-ssa/gen-vect-11.c : Disable for avr target. It will not vectorize.
* gcc.dg/tree-ssa/gen-vect-11a.c: Ditto.
* gcc.dg/tree-ssa/gen-vect-2.c: Ditto.
* gcc.dg/tree-ssa/gen-vect-25.c: Ditto.
* gcc.dg/tree-ssa/gen-vect-26.c: Ditto.
* gcc.dg/tree-ssa/gen-vect-28.c: Ditto.
* gcc.dg/tree-ssa/gen-vect-32.c: Ditto.
* gcc.dg/tree-ssa/pr23455.c: Test for 4 eliminations on avr target.
* gcc.dg/tree-ssa/ssa-fre-26.c: XFAIL test for avr.
* gcc.dg/tree-ssa/vrp47.c: Skip test for avr target due to low branch cost.
Dodji Seketeli [Sat, 19 Dec 2009 22:40:37 +0000 (22:40 +0000)]
Fix PR c++/42225, take 2
gcc/cp/ChangeLog:
PR c++/42225
* pt.c (push_template_decl_real): Set DECL_CONTEXT of template type
parms to their containing template decl.
* typeck.c (comp_template_parms_position): Split this from
structural_comptypes.
(incompatible_template_type_parms_p): Renamed
incompatible_dependent_typedefs_p into this. Change the function to
handle comparison between TEMPLATE_TYPE_PARMs only.
(structural_comptypes): Use comp_template_parms_position in
TEMPLATE_TEMPLATE_PARM and BOUND_TEMPLATE_TEMPLATE_PARM cases.
Use incompatible_template_type_parms_p in TEMPLATE_TYPE_PARM case.
* mangle.c (decl_mangling_context): Template type parms don't have
a mangling context.
* tree.c (cp_set_underlying_type): Set type structural equality
only for TEMPLATE_TYPE_PARMs.
gcc/testsuite/ChangeLog:
PR c++/42225
* g++.dg/template/typedef26.C: New test.
Richard Guenther [Sat, 19 Dec 2009 11:24:49 +0000 (11:24 +0000)]
re PR tree-optimization/42108 (50% performance regression)
2009-12-19 Richard Guenther <rguenther@suse.de>
PR tree-optimization/42108
* tree-ssa-sccvn.c (last_vuse_ptr): New variable.
(vn_reference_lookup_2): Update last seen VUSE.
(vn_reference_lookup_3): Avoid updating last seen VUSE after
translating.
(visit_reference_op_load): Use last seen VUSE from the first
lookup when entering into the table.
Richard Guenther [Fri, 18 Dec 2009 15:31:38 +0000 (15:31 +0000)]
tree-ssa-sccvn.c (copy_nary): New function.
2009-12-18 Richard Guenther <rguenther@suse.de>
* tree-ssa-sccvn.c (copy_nary): New function.
(copy_phis): Likewise.
(copy_references): Likewise.
(process_scc): Avoid last iteration by copying the
optimistic table to the valid table.
PR c++/31665
* decl.c (duplicate_decls, grokdeclarator): Put the
diagnostics in full sentences for easy translation and wrapped into
G_().
* typeck.c (build_x_unary_op): Likewise.
Jakub Jelinek [Thu, 17 Dec 2009 22:07:13 +0000 (23:07 +0100)]
dwarf2out.c (loc_descriptor): For SYMBOL_REFs and LABEL_REFs use DW_OP_addr+DW_OP_stack_value instead of...
* dwarf2out.c (loc_descriptor): For SYMBOL_REFs and LABEL_REFs
use DW_OP_addr+DW_OP_stack_value instead of DW_OP_implicit_value.
(add_const_value_attribute): For CONST_STRING, SYMBOL_REFs and
LABEL_REFs use DW_OP_addr+DW_OP_stack_value DW_AT_location instead of
DW_AT_const_value.
* gcc.dg/debug/dwarf2/const-1.c: Don't expect DW_AT_const_value,
but instead DW_AT_location with DW_OP_addr+DW_OP_stack_value. Add
-gno-strict-dwarf -fno-merge-debug-strings to dg-options.
* g++.dg/debug/dwarf2/const1.C: Likewise.
* g++.dg/debug/dwarf2/template-params-3.C: Likewise.
* g++.dg/debug/dwarf2/template-func-params-3.C: Likewise.
Julian Brown [Thu, 17 Dec 2009 15:37:23 +0000 (15:37 +0000)]
bpabi-v6m.S (test_div_by_zero): New macro.
gcc/
* config/arm/bpabi-v6m.S (test_div_by_zero): New macro.
(aeabi_ldivmod, aeabi_uldivmod): Use above macro.
* config/arm/bpabi.S (test_div_by_zero): New macro.
(aeabi_ldivmod, aeabi_uldivmod): Use above macro.
* config/arm/lib1funcs.asm (ARM_LDIV0): Tail-call int div-by-zero
handler for EABI. Add signed/unsigned argument, pass correct value
to that handler.
(THUMB_LDIV0): Same, for Thumb.
(DIV_FUNC_END): Add signed argument.
(WEAK): New macro (for EABI).
(__udivsi3, __umodsi3): Add unsigned argument to DIV_FUNC_END. For
__udivsi3, add entry point which skips division-by-zero test.
(__divsi3, __modsi3): Add signed argument to DIV_FUNC_END.
(__aeabi_uidivmod, __aeabi_idivmod): Check for division by zero.
Call __udivsi3 or __divsi3 via entry points which skip
division-by-zero tests.
(__div0): Rename to __aeabi_idiv0, __aeabi_ldiv0 for EABI, and
declare those names weak.
Richard Guenther [Thu, 17 Dec 2009 14:36:43 +0000 (14:36 +0000)]
re PR middle-end/42397 (FAIL: gfortran.dg/lto/20091028-2 f_lto_20091028-2_0.o-f_lto_20091028-2_1.o link, internal compiler error)
2009-12-17 Richard Guenther <rguenther@suse.de>
PR middle-end/42397
* builtins.c (get_object_alignment): Properly deal with
a CONST_DECL base.
* expr.c (emit_block_move_hints): Assert the alignment makes
sense.
Uros Bizjak [Thu, 17 Dec 2009 12:33:09 +0000 (13:33 +0100)]
re PR target/32280 (_mm_srli_si128, heinous code for some shifts)
PR target/32280
* config/i386/i386-modes.def (V1TI): New vector mode.
* config/i386/i386.h (VALID_SSE_REG_MODE): Add V1TImode.
(SSE_REG_MODE_P): Ditto.
* config/i386/sse.md (SSEMODE16): New mode iterator.
(AVXMODE16): Ditto.
(avxvecmode): Handle V1TI mode.
(*avx_mov<mode>_internal): Use AVXMODE16 instead of AVXMODE.
(mov<mode>): Use SSEMODE16 instead of SSEMODE.
(*mov<mode>_internal): Ditto.
(push<mode>1): Ditto.
(movmisalign<mode>): Ditto.
(sse2_ashlv1ti): Rename from sse2_ashlti.
(sse2_lshrv1ti): Rename from sse2_lshrti.
(*avx_ashlv1ti): Rename from *avx_ashlti and move from i386.md.
(*avx_lshrv1ti): Rename from *avx_lshrti and move from i386.md.
(vec_shl_<mode>): Convert operands to V1TImode and use V1TI shift.
(vec_shr_<mode>): Ditto.
(*sse2_mulv4si3): Update for renamed sse2_ashlv1ti3.
(udot_prodv4si): Ditto.
* config/i386/i386.c (classify_argument): Handle V1TImode.
(function_arg_advance_32): Ditto.
(function_arg_32): Ditto.
(ix86_expand_sse4_unpack): Convert operands to V1TImode and update
for renamed gen_sse2_lshrv1ti3.
(ix86_expand_args_builtin) <V2DI_FTYPE_V2DI_INT_CONVERT>: Set rmode
to V1TImode.
(struct builtin_description) <__builtin_ia32_pslldqi128>: Update
for renamed sse2_ashlv1ti3.
<__builtin_ia32_psrldqi128>: Update for renamed sse2_lshrv1ti3.