Jakub Jelinek [Thu, 12 Feb 2015 09:45:27 +0000 (10:45 +0100)]
re PR tree-optimization/65014 (ice with error: type mismatch in shift expression)
PR tree-optimization/65014
* fold-const.c (fold_binary_loc): When creating {L,R}ROTATE_EXPR,
use original second operand of arg0 or arg1 instead of
that adjusted by STRIP_NOPS.
Jan Hubicka [Wed, 11 Feb 2015 19:11:47 +0000 (20:11 +0100)]
ipa.c (symbol_table::remove_unreachable_nodes): Avoid releasing bodies of thunks; comment on why.
* ipa.c (symbol_table::remove_unreachable_nodes): Avoid releasing
bodies of thunks; comment on why.
* symtab.c (symtab_node::get_partitioning_class): Aliases of extern
symbols are extern.
Jakub Jelinek [Wed, 11 Feb 2015 15:09:48 +0000 (16:09 +0100)]
re PR middle-end/65003 (-fsection-anchors ICE)
PR middle-end/65003
* varasm.c (place_block_symbol): Assert that DECL_RTL of the
ultimate alias is MEM with SYMBOL_REF satisfying
SYMBOL_REF_HAS_BLOCK_INFO_P as its operand. Don't pass the MEM
to place_block_symbol, but instead pass the SYMBOL_REF operand of it.
Andrew Pinski [Wed, 11 Feb 2015 10:18:45 +0000 (10:18 +0000)]
Fix bug 64893: ICE with vget_lane_u32 with C++ front-end
2015-02-11 Andrew Pinski <apinski@cavium.com>
PR target/64893
* config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
Change the first argument type to size_type_node and add another
size_type_node.
(aarch64_simd_expand_builtin): Handle the new argument to
AARCH64_SIMD_BUILTIN_LANE_CHECK and don't ICE but rather
print an out when the first two arguments are not
nonzero integer constants.
* config/aarch64/arm_neon.h (__AARCH64_LANE_CHECK):
Pass the sizeof directly to __builtin_aarch64_im_lane_boundsi.
2015-02-11 Andrew Pinski <apinski@cavium.com>
PR target/64893
* c-c++-common/torture/aarch64-vect-lane-1.c: New testcase.
* c-c++-common/torture/aarch64-vect-lane-2.c: New testcase.
Jan Hubicka [Wed, 11 Feb 2015 09:11:06 +0000 (10:11 +0100)]
re PR ipa/65005 (FAIL: c-c++-common/torture/builtin-arith-overflow-12.c)
PR ipa/65005
* ipa-visibility.c (cgraph_node::non_local_p): Turn into static
function.
* symtab.c (symtab_node::verify_base): Remove check that non-definitions
have no comdat group.
* lto-cgraph.c (lto_output_node): Always output thunk and alias info.
(lto_output_varpool_node): Always output alias info.
(output_refs): Output refs of boundary aliases, too.
(compute_ltrans_boundary): Add alias and thunk target into boundaries.
(output_symtab): Output call eges in thunks in boundary.
(get_alias_symbol): Remove.
(input_node, input_varpool_node): Do not special case weakrefs.
* ipa.c (symbol_table::remove_unreachable_nodes): Do not remove
alias and thunks targets in the boundary; do not take removed symbols
from their comdat groups.
* cgraph.c (cgraph_node::local_info): Look through aliases and thunks.
(cgraph_node::global_info): Remove.
(cgraph_node::rtl_info): Look through aliases and thunks.
* cgrpah.h (global_info): Remove.
(non_local_p): Remove.
Jerry DeLisle [Wed, 11 Feb 2015 04:29:06 +0000 (04:29 +0000)]
re PR fortran/57822 (I/O: "(g0)" wrongly prints "E+0000")
2015-02-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/57822
* io/write_float.def (output_float): Apply fix of previous patch
to correctly calculate the exponent number of digits and take
care of wide character output.
Andrew Pinski [Tue, 10 Feb 2015 22:46:47 +0000 (22:46 +0000)]
ffitarget.h (ffi_arg): Use unsigned long long for ILP32.
2015-02-10 Andrew Pinski <apinski@cavium.com>
* src/aarch64/ffitarget.h (ffi_arg): Use unsigned long long for ILP32.
(FFI_SIZEOF_ARG): Define to 64 for ILP32.
(ffi_sarg): Use signed long long for ILP32.
* src/aarch64/sysv.S (PTR_REG): New macro.
(PTR_SIZE): New macro.
(ffi_closure_SYSV): Load cif, fn and user_data using PTR_REG.
(ffi_go_closure_SYSV): Load cif and fn using PTR_REG.
Oleg Endo [Tue, 10 Feb 2015 20:47:33 +0000 (20:47 +0000)]
re PR target/64661 ([SH] Allow @(disp,reg) address mode for atomics)
gcc/
PR target/64661
* config/sh/sh-protos.h (TARGET_ATOMIC_ANY, TARGET_ATOMIC_STRICT,
TARGET_ATOMIC_SOFT_GUSA, TARGET_ATOMIC_HARD_LLCS,
TARGET_ATOMIC_SOFT_TCB, TARGET_ATOMIC_SOFT_IMASK): Add parentheses.
* config/sh/constraints.md (Ara, Add): New constraints.
* config/sh/sync.md (atomic_mem_operand_0, atomic_mem_operand_1): New
predicates.
(atomic_compare_and_swap<mode>, atomic_exchange<mode>): Use
atomic_mem_operand_0. Don't use force_reg on the memory address.
(atomic_compare_and_swapsi_hard): Use atomic_mem_operand_0 predicate and
Sra constraint. Convert to insn_and_split. Add workaround for
PR 64974.
(atomic_compare_and_swap<mode>_hard): Copy to
atomic_compare_and_swap<mode>_hard_1. Convert to insn_and_split.
Use atomic_mem_operand_0 predicate.
(atomic_compare_and_swap<mode>_soft_gusa,
atomic_exchange<mode>_soft_gusa): Use atomic_mem_operand_0 predicate and
AraAdd constraints.
(atomic_compare_and_swap<mode>_soft_tcb,
atomic_compare_and_swap<mode>_soft_imask,
atomic_exchange<mode>_soft_tcb, atomic_exchange<mode>_soft_imask): Use
atomic_mem_operand_0 predicate and SraSdd constraints.
(atomic_exchangesi_hard) Use atomic_mem_operand_0 predicate and Sra
constraint.
(atomic_exchange<mode>_hard): Copy to atomic_exchange<mode>_hard_1.
Convert to insn_and_split. Use atomic_mem_operand_0 predicate.
(atomic_fetch_<fetchop_name><mode>, atomic_fetch_nand<mode>,
atomic_<fetchop_name>_fetch<mode>): Use atomic_mem_operand_1. Don't use
force_reg on the memory address.
(atomic_fetch_<fetchop_name>si_hard, atomic_fetch_notsi_hard,
atomic_fetch_nandsi_hard, atomic_<fetchop_name>_fetchsi_hard,
atomic_not_fetchsi_hard, atomic_nand_fetchsi_hard): Use
atomic_mem_operand_1 predicate and Sra constraint.
(atomic_fetch_<fetchop_name><mode>_hard): Copy to
atomic_fetch_<fetchop_name><mode>_hard_1. Convert to insn_and_split.
Use atomic_mem_operand_1 predicate.
(atomic_<fetchop_name><mode>_hard): Copy to
atomic_<fetchop_name><mode>_hard_1. Convert to insn_and_split.
Use atomic_mem_operand_1 predicate.
(atomic_fetch_nand<mode>_hard): Copy to atomic_fetch_nand<mode>_hard_1.
Convert to insn_and_split. Use atomic_mem_operand_1 predicate.
(atomic_nand<mode>_hard): Copy to atomic_nand<mode>_hard_1. Convert to
insn_and_split. Use atomic_mem_operand_1 predicate.
(atomic_<fetchop_name>_fetch<mode>_hard): Copy to
atomic_<fetchop_name>_fetch<mode>_hard_1. Convert to insn_and_split.
Use atomic_mem_operand_1 predicate.
(atomic_nand_fetch<mode>_hard): Copy to atomic_nand_fetch<mode>_hard_1.
Convert to insn_and_split. Use atomic_mem_operand_1 predicate.
(atomic_fetch_not<mode>_hard, atomic_not_fetch<mode>_hard): Replace mems
in generated insn with original mem operand before emitting the insn.
(atomic_fetch_<fetchop_name><mode>_soft_gusa,
atomic_fetch_not<mode>_soft_gusa, atomic_fetch_nand<mode>_soft_gusa,
atomic_<fetchop_name>_fetch<mode>_soft_gusa,
atomic_not_fetch<mode>_soft_gusa, atomic_nand_fetch<mode>_soft_gusa):
Use atomic_mem_operand_1 predicate and AraAdd constraints.
(atomic_fetch_<fetchop_name><mode>_soft_tcb,
atomic_<fetchop_name><mode>_soft_tcb, atomic_fetch_not<mode>_soft_tcb,
atomic_not<mode>_soft_tcb, atomic_fetch_<fetchop_name><mode>_soft_imask,
atomic_fetch_not<mode>_soft_imask, atomic_fetch_nand<mode>_soft_tcb,
atomic_nand<mode>_soft_tcb, atomic_fetch_nand<mode>_soft_imask,
atomic_<fetchop_name>_fetch<mode>_soft_tcb,
atomic_not_fetch<mode>_soft_tcb,
atomic_<fetchop_name>_fetch<mode>_soft_imask,
atomic_not_fetch<mode>_soft_imask, atomic_nand_fetch<mode>,
atomic_nand_fetch<mode>_soft_tcb, atomic_nand_fetch<mode>_soft_imask):
Use atomic_mem_operand_1 predicate and SraSdd constraints.
Trevor Saunders [Tue, 10 Feb 2015 14:49:07 +0000 (14:49 +0000)]
cap frequency in make_forwarder_block
In the testcase the block with problematic frequency has to incoming
edges. Each edge has probability 1. The first edge's source bb has
frequency 873/10000, and the second has a frequency of 9409/10000. So
at least one of those is slightly high probably from some sort of rounding
issue related to fixed point, but in any case make_forwarder_block
should not create basic blocks with frequency greater than BB_FREQ_MAX.
gcc/
PR tree-optimization/64326
* cfghooks.c (make_forwarder_block): Cap frequency of created
basic block.
Richard Biener [Tue, 10 Feb 2015 13:37:54 +0000 (13:37 +0000)]
re PR tree-optimization/64995 (ICE in vn_reference_insert_pieces, at tree-ssa-sccvn.c:2341)
2015-02-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/64995
* tree-ssa-sccvn.c (set_ssa_val_to): Assert that the
value we use is final.
(visit_reference_op_store): Always valueize op.
(visit_use): Properly valueize vuses.
Kaz Kojima [Tue, 10 Feb 2015 00:00:54 +0000 (00:00 +0000)]
re PR target/64761 (-freorder-blocks-and-partition causes some failures on SH)
PR target/64761
[SH] Add jump insn for -freorder-blocks-and-partition. Don't degrade
-freorder-blocks-and-partition to -freorder-blocks even when unwinding
is enabled.
* [SH] Add jump insn for -freorder-blocks-and-partition.
Marek Polacek [Mon, 9 Feb 2015 21:19:02 +0000 (21:19 +0000)]
re PR c/64856 (Initializing struct not accepted in gnu99)
PR c/64856
* c-typeck.c (process_init_element): Don't always wrap
COMPOUND_LITERAL_EXPR in a SAVE_EXPR in C99 mode when
initializing a range of elements.
Martin Liska [Mon, 9 Feb 2015 10:31:14 +0000 (11:31 +0100)]
IPA ICF: Fix late initialization of callgraph hooks.
* g++.dg/ipa/pr64858.C: New test.
* ipa-icf.c (sem_item_optimizer::register_hooks): Register hooks
just if not yet registered.
(ipa_icf_generate_summary): Register callgraph hooks.
Jan Hubicka [Sun, 8 Feb 2015 21:04:41 +0000 (22:04 +0100)]
re PR ipa/63566 (i686 bootstrap fails: ICE RTL flag check: INSN_UID used with unexpected rtx code 'set' in INSN_UID, at rtl.h:1326)
PR ipa/63566
* i386.c (ix86_function_regparm): Look through aliases to see if callee
is local and optimized.
(ix86_function_sseregparm): Likewise; also use target's SSE math
settings; error out instead of silently generating wrong code
on mismatches.
(init_cumulative_args): Look through aliases.
Jan Hubicka [Sun, 8 Feb 2015 20:08:21 +0000 (21:08 +0100)]
re PR ipa/63566 (i686 bootstrap fails: ICE RTL flag check: INSN_UID used with unexpected rtx code 'set' in INSN_UID, at rtl.h:1326)
PR ipa/63566
* cgraphunit.c (cgraph_node::analyze): Be sure target of thunk is
aliases before trying to expand it.
(cgraph_node::expand_thunk): Fix formating.
Mikael Morin [Sun, 8 Feb 2015 14:18:16 +0000 (14:18 +0000)]
Use the local name instead of the original name in the check for name conflicts...
Use the local name instead of the original name in the check for name conflicts
between a hosting program unit and use-associated symbols
in that program unit.
fortran/
PR fortran/63744
* module.c (check_for_ambiguous): Change argument type
from gfc_symbol to gfc_symtree. Check local (symtree) name
instead of original (symbol) name.
(read_module): Update caller.
Eric Botcazou [Sun, 8 Feb 2015 10:12:38 +0000 (10:12 +0000)]
decl.c (gnat_to_gnu_param): Do not strip the padding if the parameter either is passed by reference or if...
* gcc-interface/decl.c (gnat_to_gnu_param): Do not strip the padding
if the parameter either is passed by reference or if the alignment
would be lowered.
Jerry DeLisle [Sat, 7 Feb 2015 15:13:15 +0000 (15:13 +0000)]
re PR fortran/60956 (error reading (and writing) large text files in gfortran)
2015-02-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/60956
* io/fbuf.c (fbuf_flush_list): New function that only flushes
if current fbuf position exceeds a limit.
* io/fbuf.h: Declare the new function.
* io/io.h (enum unit_mode): Add two new modes.
* io/list_read.c (list_formatted_read_scalar): Call new function.
* io/write.c: Include fbuf.h. (list_formatted_write_scalar):
Call new function.
David Malcolm [Fri, 6 Feb 2015 23:19:32 +0000 (23:19 +0000)]
PR jit/64752 - Rewrite jit testsuite to eliminate use of "file"
gcc/testsuite/ChangeLog:
PR jit/64752
* jit.dg/create-code-for-hello-world-executable.h: New file, taken
from jit.dg/test-compile-to-executable.c's create_code, with a
clarification of the output message.
* jit.dg/harness.h (CHECK_NO_ERRORS): Add test and __func__ to the
pass/fail message.
(test_jit): Use CHECK_NO_ERRORS when calling
gcc_jit_context_compile_to_file.
* jit.dg/jit.exp (jit-dg-test): Update grep for rename of
jit-verify-compile-to-file to jit-verify-output-file-was-created.
(jit-setup-compile-to-file): Likewise. Add a verbose comment
about deletions that are attempted.
(jit-verify-compile-to-file): Rename to...
(jit-verify-output-file-was-created): ...this, and drop the
attempt to run "file" and verify the output.
(jit-verify-assembler): New function.
(jit-verify-object): New function.
(jit-verify-dynamic-library): New function.
* jit.dg/test-compile-to-assembler.c (create_code): Eliminate in
favor of an implementation from new file
create-code-for-hello-world-executable.h, which also adds a
"main".
(dg-final): Replace jit-verify-compile-to-file with
jit-verify-output-file-was-created, and invoke new function
jit-verify-assembler.
* jit.dg/test-compile-to-dynamic-library.c (create_code): Clarify
the output message.
(dg-final): Replace jit-verify-compile-to-file with
jit-verify-output-file-was-created, and invoke new function
jit-verify-dynamic-library.
* jit.dg/test-compile-to-executable.c (create_code): Eliminate in
favor of an implementation from new file
create-code-for-hello-world-executable.h, which also adds a
"main".
(dg-final): Replace jit-verify-compile-to-file with
jit-verify-output-file-was-created. Strengthen the expected stdout
from the built executable.
* jit.dg/test-compile-to-object.c (create_code): Eliminate in
favor of an implementation from new file
create-code-for-hello-world-executable.h, which also adds a
"main".
(dg-final): Replace jit-verify-compile-to-file with
jit-verify-output-file-was-created, and invoke new function
jit-verify-object.
* jit.dg/verify-dynamic-library.c: New source file.