David Malcolm [Tue, 9 Dec 2014 20:00:07 +0000 (20:00 +0000)]
Add jit-tempdir.{c|h}
gcc/jit/ChangeLog:
PR jit/64206
* Make-lang.in (jit_OBJS): Add jit/jit-tempdir.o.
* jit-common.h (gcc::jit::tempdir): New forward decl.
* jit-playback.c: Include jit-tempdir.h.
(gcc::jit::playback::context::context): Initialize m_tempdir.
(gcc::jit::playback::context::~context): Move tempdir
cleanup to new file jit-tempdir.c
(make_tempdir_path_template): Move to new file jit-tempdir.c.
(gcc::jit::playback::context::compile): Move tempdir creation
to new tempdir object in new file jit-tempdir.c.
(gcc::jit::playback::context::make_fake_args): Get path from
tempdir object rather than from member data.
(gcc::jit::playback::context::convert_to_dso): Likewise.
(gcc::jit::playback::context::dlopen_built_dso): Likewise.
(gcc::jit::playback::context::dump_generated_code): Likewise.
(gcc::jit::playback::context::get_path_c_file): New function.
(gcc::jit::playback::context::get_path_s_file): New function.
(gcc::jit::playback::context::get_path_so_file): New function.
* jit-playback.h (gcc::jit::playback::context::get_path_c_file):
New function.
(gcc::jit::playback::context::get_path_s_file): New function.
(gcc::jit::playback::context::get_path_so_file): New function.
(gcc::jit::playback::context): Move fields "m_path_template",
"m_path_tempdir", "m_path_c_file", "m_path_s_file",
"m_path_so_file" to new jit::tempdir class; add field "m_tempdir".
* jit-tempdir.c: New file.
* jit-tempdir.h: New file.
From-SVN: r218533
Alan Lawrence [Tue, 9 Dec 2014 19:52:22 +0000 (19:52 +0000)]
[AArch64] Fix ICE on non-constant indices to __builtin_aarch64_im_lane_boundsi
gcc/:
* config/aarch64/aarch64-builtins.c (aarch64_types_binopv_qualifiers,
TYPES_BINOPV): Delete.
(enum aarch64_builtins): Add AARCH64_BUILTIN_SIMD_LANE_CHECK and
AARCH64_SIMD_PATTERN_START.
(aarch64_init_simd_builtins): Register
__builtin_aarch64_im_lane_boundsi; use AARCH64_SIMD_PATTERN_START.
(aarch64_simd_expand_builtin): Handle AARCH64_BUILTIN_LANE_CHECK; use
AARCH64_SIMD_PATTERN_START.
* config/aarch64/aarch64-simd.md (aarch64_im_lane_boundsi): Delete.
* config/aarch64/aarch64-simd-builtins.def (im_lane_bound): Delete.
* config/aarch64/arm_neon.h (__AARCH64_LANE_CHECK): New.
(__aarch64_vget_lane_f64, __aarch64_vget_lane_s64,
__aarch64_vget_lane_u64, __aarch64_vset_lane_any, vdupd_lane_f64,
vdupd_lane_s64, vdupd_lane_u64, vext_f32, vext_f64, vext_p8, vext_p16,
vext_s8, vext_s16, vext_s32, vext_s64, vext_u8, vext_u16, vext_u32,
vext_u64, vextq_f32, vextq_f64, vextq_p8, vextq_p16, vextq_s8,
vextq_s16, vextq_s32, vextq_s64, vextq_u8, vextq_u16, vextq_u32,
vextq_u64, vmulq_lane_f64): Use __AARCH64_LANE_CHECK.
gcc/testsuite/:
* gcc.target/aarch64/simd/vset_lane_s16_const_1.c: New test.
From-SVN: r218532
Alan Lawrence [Tue, 9 Dec 2014 19:37:18 +0000 (19:37 +0000)]
[AArch64]Fix ICE at -O0 on vld1_lane intrinsics
gcc/:
* config/aarch64/arm_neon.h (__AARCH64_NUM_LANES, __aarch64_lane *2):
New.
(aarch64_vset_lane_any): Redefine using previous, same for BE + LE.
(vset_lane_f32, vset_lane_f64, vset_lane_p8, vset_lane_p16,
vset_lane_s8, vset_lane_s16, vset_lane_s32, vset_lane_s64,
vset_lane_u8, vset_lane_u16, vset_lane_u32, vset_lane_u64): Remove
number of lanes.
(vld1_lane_f32, vld1_lane_f64, vld1_lane_p8, vld1_lane_p16,
vld1_lane_s8, vld1_lane_s16, vld1_lane_s32, vld1_lane_s64,
vld1_lane_u8, vld1_lane_u16, vld1_lane_u32, vld1_lane_u64): Call
__aarch64_vset_lane_any rather than vset_lane_xxx.
gcc/testsuite/:
* gcc.target/aarch64/vld1_lane-o0.c: New test.
From-SVN: r218531
Alan Lawrence [Tue, 9 Dec 2014 19:19:54 +0000 (19:19 +0000)]
vabs_intrinsic_2.c: New test.
gcc/testsuite/:
* gcc.target/aarch64/vabs_intrinsic_2.c: New test.
From-SVN: r218530
David Malcolm [Tue, 9 Dec 2014 19:03:19 +0000 (19:03 +0000)]
Fix bogus ChangeLog entry from r218521
In r218521 I erroneously added the entries meant for gcc/jit/ChangeLog
to gcc/ChangeLog instead.
Move them to the correct ChangeLog file.
Sorry for the noise.
From-SVN: r218529
David Malcolm [Tue, 9 Dec 2014 18:51:04 +0000 (18:51 +0000)]
Guard less code with the JIT mutex
gcc/jit/ChangeLog:
* jit-playback.c (gcc::jit::playback::context::compile): Acquire the
mutex here, immediately before using toplev, and release it here, on
each exit path after acquisition.
(jit_mutex): Move this variable here, from jit-recording.c.
(gcc::jit::playback::context::acquire_mutex): New function, based on
code in jit-recording.c.
(gcc::jit::playback::context::release_mutex): Likewise.
* jit-playback.h (gcc::jit::playback::context::acquire_mutex): New
function.
(gcc::jit::playback::context::release_mutex): New function.
* jit-recording.c (jit_mutex): Move this variable to jit-playback.c.
(gcc::jit::recording::context::compile): Move mutex-handling from
here into jit-playback.c's gcc::jit::playback::context::compile.
* notes.txt: Update to show the new locations of ACQUIRE_MUTEX
and RELEASE_MUTEX.
From-SVN: r218528
David Malcolm [Tue, 9 Dec 2014 18:40:40 +0000 (18:40 +0000)]
jit-playback.c: Move dlopen code into a new function
gcc/jit/ChangeLog:
* jit-playback.c (gcc::jit::playback::context::compile): Move the
dlopen code into...
(gcc::jit::playback::context::dlopen_built_dso): ...this new
function.
* jit-playback.h (gcc::jit::playback::context::dlopen_built_dso):
New function.
From-SVN: r218527
Wilco Dijkstra [Tue, 9 Dec 2014 18:26:04 +0000 (18:26 +0000)]
[AArch64] Add TARGET_SCHED_REASSOCIATION_WIDTH
2014-12-09 Wilco Dijkstra <wilco.dijkstra@arm.com>
* gcc/config/aarch64/aarch64-protos.h (tune-params): Add reasociation
tuning parameters.
* gcc/config/aarch64/aarch64.c (TARGET_SCHED_REASSOCIATION_WIDTH):
Define.
(aarch64_reassociation_width): New function.
(generic_tunings): Add reassociation tuning parameters.
(cortexa53_tunings): Likewise.
(cortexa57_tunings): Likewise.
(thunderx_tunings): Likewise.
From-SVN: r218526
Andrew Pinski [Tue, 9 Dec 2014 17:32:58 +0000 (17:32 +0000)]
[AARCH64][5/5] Add macro fusion support for cmp/b.X for ThunderX
* config/aarch64/aarch64.c (AARCH64_FUSE_CMP_BRANCH): New define.
(thunderx_tunings): Add AARCH64_FUSE_CMP_BRANCH to fuseable_ops.
(aarch_macro_fusion_pair_p): Handle AARCH64_FUSE_CMP_BRANCH.
From-SVN: r218525
David Malcolm [Tue, 9 Dec 2014 15:52:48 +0000 (15:52 +0000)]
jit: Add new testcase missing from r218521
I intended for r218521 to contain this file:
gcc/testsuite/ChangeLog:
* jit.dg/test-error-unrecognized-dump.c: New file.
Add it.
From-SVN: r218522
David Malcolm [Tue, 9 Dec 2014 15:35:39 +0000 (15:35 +0000)]
PR jit/64166: Add API entrypoint gcc_jit_context_enable_dump
gcc/jit/ChangeLog:
PR jit/64166
* docs/topics/contexts.rst (Debugging): Add description of
gcc_jit_context_enable_dump.
* docs/_build/texinfo/libgccjit.texi: Regenerate.
* jit-playback.c: Include context.h.
(class auto_argvec): New class.
(auto_argvec::~auto_argvec): New function.
(gcc::jit::playback::context::compile): Convert fake_args to be
an auto_argvec, so that it can contain dynamically-allocated
strings. Construct a vec of all requested dumps, and pass it to
make_fake_args. Extract requested dumps between the calls to
toplev::main and toplev::finalize.
(gcc::jit::playback::context::make_fake_args): Convert param
"argvec" to be a vec <char *>, and gain a "requested_dumps"
param. Convert to dynamically-allocated arg strings by converting
ADD_ARG to take a copy of the arg, and add ADD_ARG_TAKE_OWNERSHIP
for args that are already a copy. Add args for all requested dumps.
(gcc::jit::playback::context::extract_any_requested_dumps): New
function.
(gcc::jit::playback::context::read_dump_file): New function.
* jit-playback.h (gcc::jit::playback::context::make_fake_args):
Convert param "argvec" to be a vec <char *>, and gain a
"requested_dumps" param.
(gcc::jit::playback::context::extract_any_requested_dumps): New
function.
(gcc::jit::playback::context::read_dump_file): New function.
* jit-recording.c (gcc::jit::recording::context::enable_dump): New
function.
(gcc::jit::recording::context::get_all_requested_dumps): New
function.
* jit-recording.h (gcc::jit::recording::requested_dump): New
struct.
(gcc::jit::recording::context::enable_dump): New function.
(gcc::jit::recording::context::get_all_requested_dumps): New
function.
(gcc::jit::recording::context::m_requested_dumps): New field.
* libgccjit.c (gcc_jit_context_enable_dump): New API entrypoint.
* libgccjit.h (gcc_jit_context_enable_dump): New API entrypoint.
* libgccjit.map (gcc_jit_context_enable_dump): New API entrypoint.
gcc/testsuite/ChangeLog:
PR jit/64166
PR jit/64020
* jit.dg/harness.h (CHECK_STRING_CONTAINS): New macro.
(check_string_contains): New function.
* jit.dg/test-error-unrecognized-dump.c: New file.
* jit.dg/test-functions.c (trig_sincos_dump): New variable.
(trig_statistics_dump): New variable.
(create_test_of_builtin_trig): Enable dumping of "sincos" and
"statistics" into "trig_sincos_dump" and "trig_statistics_dump".
(verify_test_of_builtin_trig): Verify the sincos and statistics
dumps.
* jit.dg/test-sum-of-squares.c (dump_vrp1): New variable.
(create_code): Enable dumping of "tree-vrp1" into dump_vrp1.
(verify_code): Verify the tree-vrp1 dump.
From-SVN: r218521
David Malcolm [Tue, 9 Dec 2014 15:25:11 +0000 (15:25 +0000)]
PR jit/64166: Add methods to gcc::dump_manager needed by JIT testing
gcc/ChangeLog:
PR jit/64166
* dumpfile.c (gcc::dump_manager::get_dump_file_info_by_switch):
New function.
(gcc::dump_manager::get_dump_file_name): Split out bulk of
implementation into a new overloaded variant taking a
dump_file_info *.
* dumpfile.h (gcc::dump_manager::get_dump_file_info_by_switch):
New function.
(gcc::dump_manager::get_dump_file_name): New overloaded variant of
this function, taking a dump_file_info *.
From-SVN: r218520
Uros Bizjak [Tue, 9 Dec 2014 14:34:32 +0000 (15:34 +0100)]
re PR bootstrap/64213 (gimple-match.c:1523:6: error: ‘GIMPLE’ was not declared in this scope)
PR bootstrap/64213
Revert:
2014-11-28 H.J. Lu <hongjiu.lu@intel.com>
PR rtl-optimization/64037
* combine.c (setup_incoming_promotions): Pass the argument
before any promotions happen to promote_function_mode.
testsuite/ChangeLog:
PR bootstrap/64213
Revert:
2014-11-28 H.J. Lu <hongjiu.lu@intel.com>
PR rtl-optimization/64037
* g++.dg/pr64037.C: New test.
From-SVN: r218516
Richard Biener [Tue, 9 Dec 2014 14:25:09 +0000 (14:25 +0000)]
re PR tree-optimization/64193 (Decreased performance after r173250)
2014-12-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/64193
* tree-ssa-alias.c (walk_non_aliased_vuses): Add valueize parameter
and valueize the VUSE before looking up the def stmt.
* tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
* tree-ssa-sccvn.c (vn_reference_lookup_pieces): Pass vn_valueize
to walk_non_aliased_vuses.
(vn_reference_lookup): Likewise.
* tree-ssa-dom.c (lookup_avail_expr): Pass NULL as valueize
callback to walk_non_aliased_vuses.
* gcc.dg/tree-ssa/ssa-fre-43.c: New testcase.
From-SVN: r218515
Yury Gribov [Tue, 9 Dec 2014 13:45:47 +0000 (13:45 +0000)]
Local Vim config with GNU formatting.
2014-12-09 Laurynas Biveinis <laurynas.biveinis@gmail.com>
Yury Gribov <y.gribov@samsung.com>
/
* .gitignore: Added .local.vimrc and .lvimrc.
* Makefile.tpl (vimrc, .lvimrc, .local.vimrc): New targets.
* Makefile.in: Regenerate.
contrib/
* vimrc: New file.
From-SVN: r218514
Richard Biener [Tue, 9 Dec 2014 11:58:51 +0000 (11:58 +0000)]
re PR tree-optimization/64199 (ICE: tree check: expected class 'constant', have 'binary' (plus_expr) in fold_binary_loc, at fold-const.c:10404 with -ffast-math -frounding-math)
2014-12-09 Richard Biener <rguenther@suse.de>
PR middle-end/64199
* fold-const.c (fold_binary_loc): Use TREE_OVERFLOW_P.
* gcc.dg/torture/pr64199.c: New testcase.
From-SVN: r218513
Jonathan Wakely [Tue, 9 Dec 2014 11:03:57 +0000 (11:03 +0000)]
re PR libstdc++/64203 (shared_mutex compile errors on bare-metal targets)
PR libstdc++/64203
* include/std/shared_mutex: Fix preprocessor conditions.
* testsuite/experimental/feat-cxx14.cc: Check conditions.
From-SVN: r218511
Richard Biener [Tue, 9 Dec 2014 09:13:18 +0000 (09:13 +0000)]
re PR tree-optimization/64191 (indirect clobbers messes up dead code elimination in loop calling dtor)
2014-12-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/64191
* tree-vect-stmts.c (vect_stmt_relevant_p): Clobbers are
not relevant (nor are their uses).
From-SVN: r218509
Ilya Enkovich [Tue, 9 Dec 2014 08:00:52 +0000 (08:00 +0000)]
lto-partition.c (privatize_symbol_name): Correctly privatize instrumentation clones.
gcc/
* lto/lto-partition.c (privatize_symbol_name): Correctly
privatize instrumentation clones.
gcc/testsuite/
* gcc.dg/lto/lto.exp: Load mpx-dg.exp.
* gcc.dg/lto/chkp-privatize_0.c: New.
* gcc.dg/lto/chkp-privatize_1.c: New.
From-SVN: r218508
Ilya Enkovich [Tue, 9 Dec 2014 07:56:26 +0000 (07:56 +0000)]
lto-cgraph.c (input_cgraph_1): Don't break existing instrumentation clone references.
* lto-cgraph.c (input_cgraph_1): Don't break existing
instrumentation clone references.
* lto/lto-symtab.c (lto_cgraph_replace_node): Redirect
instrumented_version references appropriately.
From-SVN: r218507
Ilya Enkovich [Tue, 9 Dec 2014 07:53:17 +0000 (07:53 +0000)]
re PR bootstrap/63995 (Bootstrap error with -mmpx -fcheck-pointer-bounds)
gcc/
PR bootstrap/63995
* tree-chkp.c (chkp_make_static_bounds): Share bounds var
between nodes sharing assembler name.
gcc/testsuite/
PR bootstrap/63995
* g++.dg/dg.exp: Add mpx-dg.exp.
* g++.dg/pr63995-1.C: New.
From-SVN: r218506
Michael Meissner [Tue, 9 Dec 2014 03:56:28 +0000 (03:56 +0000)]
re PR target/64204 (gcc.dg/c11-atomic-2.c fails on powerpc 64-bit little endian after -mupper-regs patches went in)
2014-12-08 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/64204
* config/rs6000/rs6000.c (rs6000_emit_move): Do not split TFmode
constant moves if -mupper-regs-df.
* config/rs6000/rs6000.md (mov<mode>_64bit_dm): Optimize moving
0.0L to TFmode.
(movtd_64bit_nodm): Likewise.
(mov<mode>_32bit, FMOVE128 case): Likewise.
From-SVN: r218505
Sandra Loosemore [Tue, 9 Dec 2014 02:53:00 +0000 (21:53 -0500)]
simplify-rtx.c (simplify_relational_operation_1): Handle simplification identities for BICS patterns.
2014-12-08 Sandra Loosemore <sandra@codesourcery.com>
gcc/
* simplify-rtx.c (simplify_relational_operation_1): Handle
simplification identities for BICS patterns.
gcc/testsuite/
* gcc.target/aarch64/bics_4.c: New.
From-SVN: r218503
Trevor Saunders [Tue, 9 Dec 2014 02:30:13 +0000 (02:30 +0000)]
move gimple_canonical_types htab out of gc memory
lto/
* lto.c (read_cgraph_and_symbols): allocate gimple_canonical_types
htab with malloc instead of ggc.
From-SVN: r218502
Trevor Saunders [Tue, 9 Dec 2014 02:30:06 +0000 (02:30 +0000)]
remove param_is from nvptx
gcc/
* config/nvptx/nvptx.c: Convert htabs to hash_table.
From-SVN: r218501
GCC Administrator [Tue, 9 Dec 2014 00:16:30 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r218500
David Edelsohn [Mon, 8 Dec 2014 23:47:39 +0000 (23:47 +0000)]
re PR target/64226 (Secondary reload incorrect TOC address)
PR target/64226
* config/rs6000/rs6000.c (rs6000_secondary_reload_inner)
[SYMBOL_REF]: Do not explicitly call create_TOC_reference for
TARGET_TOC. Always use rs6000_emit_move.
From-SVN: r218497
Mark Wielaard [Mon, 8 Dec 2014 22:32:23 +0000 (22:32 +0000)]
DWARFv5 Emit DW_TAG_atomic_type for C11 _Atomic.
This implements the DW_TAG_atomic_type for C11 _Atomic proposal as adopted
in the latest DWARF5 draft. http://dwarfstd.org/ShowIssue.php?issue=131112.1
gcc/ChangeLog
PR debug/60782
* dwarf2out.c (modified_type_die): Handle TYPE_QUAL_ATOMIC.
gcc/testsuite/ChangeLog
PR debug/60782
* gcc.dg/debug/dwarf2/atomic.c: New test.
* gcc.dg/debug/dwarf2/stacked-qualified-types-3.c: Likewise.
include/ChangeLog
PR debug/60782
* dwarf2.def: Add DWARFv5 DW_TAG_atomic_type.
From-SVN: r218496
Jeff Law [Mon, 8 Dec 2014 22:11:42 +0000 (15:11 -0700)]
Fix typo in ChangeLog
From-SVN: r218495
David Wohlferd [Mon, 8 Dec 2014 21:58:23 +0000 (21:58 +0000)]
re PR inline-asm/61692 (ICE in extract_insn in recog.c for asm with many parameters)
PR target/61692
* cfgexpand.c (expand_asm_operands): Count all inline asm params.
PR target/61692
* gcc.dg/pr61692.c: New test.
From-SVN: r218494
Lynn Boger [Mon, 8 Dec 2014 20:12:23 +0000 (14:12 -0600)]
Added myself to Write After Approval list
From-SVN: r218491
David Malcolm [Mon, 8 Dec 2014 19:31:45 +0000 (19:31 +0000)]
PR jit/63854: Introduce xstrdup_for_dump
gcc/ChangeLog:
PR jit/63854
* cgraph.h (xstrdup_for_dump): New function.
* cgraph.c (cgraph_node::get_create): Replace use of xstrdup
within fprintf with xstrdup_for_dump.
(cgraph_edge::make_speculative): Likewise.
(cgraph_edge::resolve_speculation): Likewise.
(cgraph_edge::redirect_call_stmt_to_callee): Likewise.
(cgraph_node::dump): Likewise.
* cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
* ipa-cp.c (perhaps_add_new_callers): Likewise.
* ipa-inline.c (report_inline_failed_reason): Likewise.
(want_early_inline_function_p): Likewise.
(edge_badness): Likewise.
(update_edge_key): Likewise.
(flatten_function): Likewise.
(inline_always_inline_functions): Likewise.
* ipa-profile.c (ipa_profile): Likewise.
* ipa-prop.c (ipa_print_node_jump_functions): Likewise.
(ipa_make_edge_direct_to_target): Likewise.
(remove_described_reference): Likewise.
(propagate_controlled_uses): Likewise.
* ipa-utils.c (ipa_merge_profiles): Likewise.
From-SVN: r218490
David Malcolm [Mon, 8 Dec 2014 19:05:01 +0000 (19:05 +0000)]
libgccjit++.h: use indentation to show inheritance
gcc/jit/ChangeLog:
* libgccjit++.h: Indent the forward declarations of the classes to
show the inheritance hierarchy.
From-SVN: r218489
David Malcolm [Mon, 8 Dec 2014 18:56:21 +0000 (18:56 +0000)]
Make jit/notes.txt better reflect current status quo
gcc/jit/ChangeLog:
* notes.txt: Show the beginning and ending of
recording::context::compile vs playback::context::compile. Show
the creation and unlinking of the tempdir. Show toplev::finalize.
Move "RELEASE MUTEX" to the correct location. Show
gcc_jit_result_release, and indicate where the
dlopen/dlsym/dlclose occur.
From-SVN: r218488
Bernd Edlinger [Mon, 8 Dec 2014 18:30:15 +0000 (18:30 +0000)]
re PR ipa/64049 (r215898 caused wrong code at -O3)
2014-12-08 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR ipa/64049
* ipa-polymorphic-call.c
(pa_polymorphic_call_context::ipa_polymorphic_call): Allow RESULT_DECL.
testsuite/ChangeLog:
2014-12-08 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR ipa/64049
* g++.dg/ipa/pr64049.h: New.
* g++.dg/ipa/pr64049-1.C: New.
* g++.dg/ipa/pr64049-2.C: New.
From-SVN: r218487
Alex Velenko [Mon, 8 Dec 2014 18:10:39 +0000 (18:10 +0000)]
Bics instruction generation for aarch64
gcc/
* config/aarch64/aarch64.md (and_one_cmpl<mode>3_compare0_no_reuse):
New define_insn.
* (and_one_cmpl_<SHIFT:optab><mode>3_compare0_no_reuse):
Likewise.
gcc/testsuite/
* gcc.target/aarch64/bics_3.c : New testcase.
From-SVN: r218486
Ian Lance Taylor [Mon, 8 Dec 2014 18:05:30 +0000 (18:05 +0000)]
re PR go/64198 (ICE in gofrontend)
PR go/64198
compiler: Don't crash on invalid ++.
From-SVN: r218485
Felix Yang [Mon, 8 Dec 2014 14:19:44 +0000 (14:19 +0000)]
arm_neon.h (vrecpe_u32, [...]): Rewrite using builtin functions.
* config/aarch64/arm_neon.h (vrecpe_u32, vrecpeq_u32): Rewrite using
builtin functions.
(vfma_f32, vfmaq_f32, vfmaq_f64, vfma_n_f32, vfmaq_n_f32, vfmaq_n_f64,
vfms_f32, vfmsq_f32, vfmsq_f64): Likewise.
(vhsub_s8, vhsub_u8, vhsub_s16, vhsub_u16, vhsub_s32, vhsub_u32,
vhsubq_s8, vhsubq_u8, vhsubq_s16, vhsubq_u16, vhsubq_s32, vhsubq_u32,
vsubhn_s16, vsubhn_u16, vsubhn_s32, vsubhn_u32, vsubhn_s64, vsubhn_u66,
vrsubhn_s16, vrsubhn_u16, vrsubhn_s32, vrsubhn_u32, vrsubhn_s64,
vrsubhn_u64, vsubhn_high_s16, vsubhn_high_u16, vsubhn_high_s32,
vsubhn_high_u32, vsubhn_high_s64, vsubhn_high_u64, vrsubhn_high_s16,
vrsubhn_high_u16, vrsubhn_high_s32, vrsubhn_high_u32, vrsubhn_high_s64,
vrsubhn_high_u64): Likewise.
* config/aarch64/iterators.md (VDQ_SI): New mode iterator.
* config/aarch64/aarch64.md (define_c_enum "unspec"): Add UNSPEC_URECPE.
* config/aarch64/aarch64-simd.md (aarch64_urecpe<mode>): New pattern.
* config/aarch64/aarch64-simd-builtins.def (shsub, uhsub, subhn, rsubhn,
subhn2, rsubhn2, urecpe): New builtins.
Co-Authored-By: Haijian Zhang <z.zhanghaijian@huawei.com>
Co-Authored-By: Jiji Jiang <jiangjiji@huawei.com>
Co-Authored-By: Pengfei Sui <suipengfei@huawei.com>
From-SVN: r218484
Ilya Tocar [Mon, 8 Dec 2014 11:48:01 +0000 (11:48 +0000)]
Enable non-const v64qi permutations.
gcc/
* config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Handle v64qi.
* config/i386/sse.md (VEC_PERM_AVX2): Add v64qi.
From-SVN: r218483
Ilya Tocar [Mon, 8 Dec 2014 11:45:35 +0000 (11:45 +0000)]
Enable const permutations for V64QImode.
gcc/
* config/i386/i386.c (expand_vec_perm_broadcast_1): Handle v64qi.
(expand_vec_perm_vpermi2_vpshub2): New.
(ix86_expand_vec_perm_const_1): Use it.
(ix86_vectorize_vec_perm_const_ok): Handle v64qi.
* config/i386/sse.md (VEC_PERM_CONST): Add v64qi.
From-SVN: r218482
Ilya Enkovich [Mon, 8 Dec 2014 10:10:00 +0000 (10:10 +0000)]
tree-chkp.c (chkp_build_returned_bound): Don't predict return bounds for strchr calls.
* tree-chkp.c (chkp_build_returned_bound): Don't predict
return bounds for strchr calls.
From-SVN: r218479
Ilya Enkovich [Mon, 8 Dec 2014 10:01:19 +0000 (10:01 +0000)]
tree-chkp.c (chkp_call_returns_bounds_p): New.
gcc/
* tree-chkp.c (chkp_call_returns_bounds_p): New.
(chkp_build_returned_bound): Use zero bounds as
returned by calls not returning bounds.
gcc/testsuite/
* gcc.target/i386/chkp-bndret.c: New.
* gcc.target/i386/chkp-strchr.c: New.
From-SVN: r218478
Richard Biener [Mon, 8 Dec 2014 09:20:35 +0000 (09:20 +0000)]
builtins.c (fold_builtin_0): Remove unused ignore parameter.
2014-12-08 Richard Biener <rguenther@suse.de>
* builtins.c (fold_builtin_0): Remove unused ignore parameter.
(fold_builtin_1): Likewise.
(fold_builtin_3): Likewise.
(fold_builtin_varargs): Likewise.
(fold_builtin_2): Likewise. Do not fold stpcpy here.
(fold_builtin_n): Adjust.
(fold_builtin_stpcpy): Move to gimple-fold.c.
(gimple_fold_builtin_stpcpy): Moved and gimplified from builtins.c.
(gimple_fold_builtin): Fold stpcpy here.
From-SVN: r218477
Trevor Saunders [Mon, 8 Dec 2014 00:35:33 +0000 (00:35 +0000)]
don't ICE when section attribute is used on things in comdats
gcc/
PR ipa/63621
* symtab.c (symtab_node::verify): Check for section attribute before
asserting something isn't in a section and a comdat group.
From-SVN: r218476
GCC Administrator [Mon, 8 Dec 2014 00:16:30 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r218475
Oleg Endo [Sun, 7 Dec 2014 23:19:59 +0000 (23:19 +0000)]
re PR target/53513 ([SH] Add support for fpchg insn and improve fenv support)
gcc/testsuite/
PR target/53513
* gcc.target/sh/pr54602-4.c: Fix matching of rte-nop sequence.
From-SVN: r218472
Oleg Endo [Sun, 7 Dec 2014 22:57:11 +0000 (22:57 +0000)]
re PR target/50751 (SH Target: Displacement addressing does not work for QImode and HImode)
gcc/
PR target/50751
* config/sh/sh.md (extendqihi2): Allow only for TARGET_SH1.
From-SVN: r218469
Eric Botcazou [Sun, 7 Dec 2014 21:55:47 +0000 (21:55 +0000)]
compare-elim.c: Fix head comment.
* compare-elim.c: Fix head comment.
(conforming_compare): Remove redundant test.
(can_eliminate_compare): New function extracted from...
(before_dom_children): ...here. Use it, replace direct uses of
flag_non_call_exceptions and tidy up.
(maybe_select_cc_mode): Tidy up.
From-SVN: r218468
John David Anglin [Sun, 7 Dec 2014 17:48:56 +0000 (17:48 +0000)]
re PR testsuite/64038 (FAIL: gcc.dg/ipa/ipa-icf-5.c (test for excess errors))
PR testsuite/64038
* gcc.dg/ipa/ipa-icf-5.c: Require c99_runtime. Add c99_runtime options.
* gcc.dg/ipa/ipa-icf-7.c: Likewise.
From-SVN: r218467
Oleg Endo [Sun, 7 Dec 2014 16:42:45 +0000 (16:42 +0000)]
h8300.exp: Fix duplicated text.
gcc/testsuite/
* gcc.target/h8300/h8300.exp: Fix duplicated text.
* gcc.target/h8300/pragma-isr.c: Likewise.
* gcc.target/h8300/pragma-isr2.c: Likewise.
From-SVN: r218465
Felix Yang [Sun, 7 Dec 2014 15:01:23 +0000 (15:01 +0000)]
aarch64-simd.md (clrsb<mode>2, [...]): New patterns.
* config/aarch64/aarch64-simd.md (clrsb<mode>2, popcount<mode>2): New
patterns.
* config/aarch64/aarch64-simd-builtins.def (clrsb, popcount): New
builtins.
* config/aarch64/arm_neon.h (vcls_s8, vcls_s16, vcls_s32, vclsq_s8,
vclsq_s16, vclsq_s32, vcnt_p8, vcnt_s8, vcnt_u8, vcntq_p8, vcntq_s8,
vcntq_u8): Rewrite using builtin functions.
Co-Authored-By: Shanyao Chen <chenshanyao@huawei.com>
From-SVN: r218464
Christophe Lyon [Sun, 7 Dec 2014 09:40:58 +0000 (09:40 +0000)]
[ARM,AArch64][testsuite] Fix vaddl and vaddw tests
2014-12-07 Christophe Lyon <christophe.lyon@linaro.org>
* gcc.target/aarch64/advsimd-intrinsics/vaddhn.c: Actually execute
the test.
* gcc.target/aarch64/advsimd-intrinsics/vaddl.c: Actually execute
the test. Fix expected output.
* gcc.target/aarch64/advsimd-intrinsics/vaddw.c: Likewise.
From-SVN: r218463
Jan Hubicka [Sun, 7 Dec 2014 07:35:11 +0000 (08:35 +0100)]
symtab.c (symtab_node::equal_address_to): New function.
* symtab.c (symtab_node::equal_address_to): New function.
* cgraph.h (symtab_node::equal_address_to): Declare.
* fold-const.c (fold_comparison, fold_binary_loc): Use it.
* c-family/c-common.c: Refuse weaks for symbols that can not change
visibility.
* gcc.dg/addr_equal-1.c: New testcase.
From-SVN: r218462
Jonathan Wakely [Sun, 7 Dec 2014 00:51:37 +0000 (00:51 +0000)]
* doc/invoke.texi (Warning Options): Fix spelling and grammar.
From-SVN: r218461
GCC Administrator [Sun, 7 Dec 2014 00:16:29 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r218460
James Greenhalgh [Sat, 6 Dec 2014 19:19:37 +0000 (19:19 +0000)]
extend jump thread for finite state automata
PR tree-optimization/54742
* params.def (max-fsm-thread-path-insns, max-fsm-thread-length,
max-fsm-thread-paths): New.
* doc/invoke.texi (max-fsm-thread-path-insns, max-fsm-thread-length,
max-fsm-thread-paths): Documented.
* tree-cfg.c (split_edge_bb_loc): Export.
* tree-cfg.h (split_edge_bb_loc): Declared extern.
* tree-ssa-threadedge.c (simplify_control_stmt_condition): Restore the
original value of cond when simplification fails.
(fsm_find_thread_path): New.
(fsm_find_control_statement_thread_paths): New.
(thread_through_normal_block): Call find_control_statement_thread_paths.
* tree-ssa-threadupdate.c (dump_jump_thread_path): Pretty print
EDGE_FSM_THREAD.
(verify_seme): New.
(duplicate_seme_region): New.
(thread_through_all_blocks): Generate code for EDGE_FSM_THREAD edges
calling duplicate_seme_region.
* tree-ssa-threadupdate.h (jump_thread_edge_type): Add EDGE_FSM_THREAD.
* testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c: New test.
* testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c: New test.
Co-Authored-By: Brian Rzycki <b.rzycki@samsung.com>
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r218451
Tobias Burnus [Sat, 6 Dec 2014 16:53:40 +0000 (17:53 +0100)]
error.c (gfc_error_check): Use bool not int.
2014-12-06 Tobias Burnus <burnus@net-b.de>
* error.c (gfc_error_check): Use bool not int.
* gfortran.h (gfc_error_check): Update prototype.
* match.c (gfc_match_if): Update call.
* parse.c (decode_statement, decode_omp_directive,
decode_gcc_attribute): Ditto.
From-SVN: r218450
Tobias Burnus [Sat, 6 Dec 2014 16:33:11 +0000 (17:33 +0100)]
error.c (gfc_buffer_error, [...]): Use bool not
2014-12-06 Tobias Burnus <burnus@net-b.de>
Manuel López-Ibáñez <manu@gcc.gnu.org>
* error.c (gfc_buffer_error, gfc_error_flag_test): Use bool not
* int.
(buffer_flag): Remove static variable.
(buffered_p): Add static variable.
(gfc_error_init_1): Call gfc_buffer_error.
(gfc_warning_1, gfc_warning, gfc_warning_now_1, gfc_error,
gfc_error_now_1): Update for static variable change.
* gfortran.h (gfc_buffer_error, gfc_error_flag_test): Update
prototype.
* parse.c (use_modules, decode_specification_statement,
next_fixed, next_statement, match_deferred_characteristics):
Update calls.
* decl.c (gfc_match_data_decl): Ditto.
* match.c (gfc_match_name): Ditto.
Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org>
From-SVN: r218449
Bruce Korb [Sat, 6 Dec 2014 15:08:55 +0000 (15:08 +0000)]
clarification
From-SVN: r218448
Marek Polacek [Sat, 6 Dec 2014 13:10:31 +0000 (13:10 +0000)]
re PR tree-optimization/64183 (Complete unroll doesn't happen for a while-loop)
PR tree-optimization/64183
* c-gimplify.c (c_gimplify_expr): Don't convert the RHS of a
shift-expression if it is integer_type_node. Use types_compatible_p.
* gcc.dg/tree-ssa/pr64183.c: New test.
From-SVN: r218447
H.J. Lu [Sat, 6 Dec 2014 11:32:46 +0000 (11:32 +0000)]
Don't assert "alg != libcall" for -minline-stringops-dynamically
gcc/
PR target/64200
* config/i386/i386.c (decide_alg): Don't assert "alg != libcall"
for TARGET_INLINE_STRINGOPS_DYNAMICALLY.
gcc/testsuite/
PR target/64200
* gcc.target/i386/memcpy-strategy-4.c: New test.
From-SVN: r218446
Tim Shen [Sat, 6 Dec 2014 11:31:12 +0000 (11:31 +0000)]
Fix ChangeLog format.
From-SVN: r218444
GCC Administrator [Sat, 6 Dec 2014 00:16:31 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r218443
Jakub Jelinek [Fri, 5 Dec 2014 23:00:09 +0000 (00:00 +0100)]
re PR sanitizer/64170 (ICE compiling Linux Kernel drivers/media/rc/imon.c in imon_incoming_packet)
PR sanitizer/64170
* sanopt.c (maybe_optimize_asan_check_ifn): If base_checks is
non-NULL, call maybe_get_dominating_check on it even if g is
non-NULL.
* gcc.dg/asan/pr64170.c: New test.
From-SVN: r218440
Jeff Law [Fri, 5 Dec 2014 22:19:26 +0000 (15:19 -0700)]
md.texi: Note problems using function calls to determine insn lengths and point readers...
* doc/md.texi: Note problems using function calls to determine
insn lengths and point readers to a potential workaround.
From-SVN: r218439
Andreas Schwab [Fri, 5 Dec 2014 20:25:19 +0000 (20:25 +0000)]
* combine.c (is_parallel_of_n_reg_sets)
(can_split_parallel_of_n_reg_sets): Only define if !HAVE_cc0.
From-SVN: r218436
Andrew Pinski [Fri, 5 Dec 2014 19:44:47 +0000 (19:44 +0000)]
aarch64-simd-builtins.def (bswap): Use CF2 rather than CF10 so 2 is appended on the code.
2014-12-05 Andrew Pinski <apinski@cavium.com>
* config/aarch64/aarch64-simd-builtins.def (bswap): Use CF2 rather
than CF10 so 2 is appended on the code.
* config/aarch64/aarch64-simd.md (bswap<mode>): Rename to ...
(bswap<mode>2): This so it matches for the optabs.
From-SVN: r218435
Thomas Preud'homme [Fri, 5 Dec 2014 18:36:57 +0000 (18:36 +0000)]
regrename.c (find_best_rename_reg): Rename to ...
2014-12-05 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
* regrename.c (find_best_rename_reg): Rename to ...
(find_rename_reg): This. Also add a parameter to skip tick check.
* regrename.h: Likewise.
* config/c6x/c6x.c (try_rename_operands): Adapt to above renaming.
From-SVN: r218434
Martin Jambor [Fri, 5 Dec 2014 18:14:37 +0000 (19:14 +0100)]
re PR ipa/64192 (r218369 causes some regressions with -m32.)
2014-12-05 Martin Jambor <mjambor@suse.cz>
PR ipa/64192
* ipa-prop.c (ipa_compute_jump_functions_for_edge): Convert alignment
from bits to bytes after checking they are byte-aligned.
From-SVN: r218433
Renlin Li [Fri, 5 Dec 2014 18:00:55 +0000 (18:00 +0000)]
[AArch64]Clarify the usage of SCHED in AARCH64_CORE macro
gcc/
2014-12-05 Renlin Li <renlin.li@arm.com>
* config/aarch64/aarch64-opts.h (AARCH64_CORE): Rename IDENT to SCHED.
* config/aarch64/aarch64.h (AARCH64_CORE): Likewise.
* config/aarch64/aarch64.c (AARCH64_CORE): Rename X to IDENT,
IDENT to SCHED.
From-SVN: r218432
Michael Meissner [Fri, 5 Dec 2014 17:50:40 +0000 (17:50 +0000)]
re PR target/53199 (__builtin_bswap64 and __builtin_bswap32 generate errors if -mcpu=power6)
2014-12-05 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/53199
* gcc.target/powerpc/pr53199.c: Limit tests to 64-bit.
From-SVN: r218431
Bin Cheng [Fri, 5 Dec 2014 17:06:33 +0000 (17:06 +0000)]
[AArch64]load store pair optimization using sched_fusion pass.
From-SVN: r218430
Olivier Hainque [Fri, 5 Dec 2014 17:01:42 +0000 (17:01 +0000)]
defaults.h: (DWARF_REG_TO_UNWIND_COLUMN): Define default.
2014-12-05 Olivier Hainque <hainque@adacore.com>
gcc/
* defaults.h: (DWARF_REG_TO_UNWIND_COLUMN): Define default.
* dwarf2cfi.c (init_one_dwarf_reg_size): Honor
DWARF_REG_TO_UNWIND_COLUMN.
libgcc/
* unwind-dw2.c (DWARF_REG_TO_UNWIND_COLUMN): Remove default def,
now provided by defaults.h.
From-SVN: r218429
Olivier Hainque [Fri, 5 Dec 2014 16:53:22 +0000 (16:53 +0000)]
dwarf2cfi.c (init_one_dwarf_reg_size): New helper, processing one particular reg for expand_builtin_init_dwarf_reg_sizes.
2014-12-05 Olivier Hainque <hainque@adacore.com>
* dwarf2cfi.c (init_one_dwarf_reg_size): New helper, processing
one particular reg for expand_builtin_init_dwarf_reg_sizes.
(expand_builtin_init_dwarf_reg_sizes): Rework to use helper and
account for dwarf register spans.
From-SVN: r218428
Sandra Loosemore [Fri, 5 Dec 2014 16:18:30 +0000 (11:18 -0500)]
pr63341-1.c: Remove explicit "dg-do run".
2014-12-05 Sandra Loosemore <sandra@codesourcery.com>
gcc/testsuite/
* gcc.dg/vect/pr63341-1.c: Remove explicit "dg-do run".
* gcc.dg/vect/pr63341-2.c: Likewise.
* gcc.dg/vect/pr63379.c: Likewise.
* gcc.dg/vect/pr63605.c: Likewise.
From-SVN: r218427
Ilya Enkovich [Fri, 5 Dec 2014 16:00:52 +0000 (16:00 +0000)]
re PR target/64003 (valgrind complains about get_attr_length_nobnd in insn-attrtab.c from i386.md)
PR target/64003
* config/i386/i386.md (*jcc_1_bnd): New.
(*jcc_2_bnd): New.
(jump_bnd): New.
(*jcc_1): Remove bnd prefix.
(*jcc_2): Likewise.
(jump): Likewise.
From-SVN: r218426
Renlin Li [Fri, 5 Dec 2014 15:54:57 +0000 (15:54 +0000)]
[AArch64] Use selected cpu's tuning when no tuning parameter is specified
gcc/
2014-12-05 Renlin Li <renlin.li@arm.com>
* config/aarch64/aarch64.c (aarch64_parse_cpu): Don't define
selected_tune.
(aarch64_override_options): Use selected_cpu's tuning.
From-SVN: r218425
David Edelsohn [Fri, 5 Dec 2014 15:04:55 +0000 (15:04 +0000)]
xcoff.h (ASM_OUTPUT_ALIGNED_LOCAL): Append alignment to section name.
* config/rs6000/xcoff.h (ASM_OUTPUT_ALIGNED_LOCAL): Append
alignment to section name. Increase default alignment to word.
From-SVN: r218424
Andre Vehreschild [Fri, 5 Dec 2014 14:15:27 +0000 (15:15 +0100)]
re PR fortran/60414 (internal compiler error: tree check)
2014-12-05 Andre Vehreschild <vehre@gmx.de>
PR fortran/60414
* interface.c (compare_parameter): Remove class argument rank
check short circuit.
2014-12-05 Andre Vehreschild <vehre@gmx.de>
PR fortran/60414
* gfortran.dg/unlimited_polymorphism_18.f90: New test.
From-SVN: r218422
Martin Jambor [Fri, 5 Dec 2014 11:06:26 +0000 (12:06 +0100)]
cgraph.h (cgraph_node): New method expand_all_artificial_thunks.
2014-12-05 Martin Jambor <mjambor@suse.cz>
* cgraph.h (cgraph_node): New method expand_all_artificial_thunks.
(cgraph_edge): New method redirect_callee_duplicating_thunks.
* cgraphclones.c (duplicate_thunk_for_node): Donot expand newly
created thunks.
(redirect_edge_duplicating_thunks): Turned into edge method
redirect_callee_duplicating_thunks.
(cgraph_node::expand_all_artificial_thunks): New method.
(create_clone): Call expand_all_artificial_thunks.
* ipa-cp.c (perhaps_add_new_callers): Call
redirect_callee_duplicating_thunks instead of redirect_callee.
Also call expand_all_artificial_thunks.
From-SVN: r218417
Jonathan Wakely [Fri, 5 Dec 2014 10:35:51 +0000 (10:35 +0000)]
hashtable_policy.h (_Map_base::operator[], [...]): Simplify definitions with trailing return types.
* include/bits/hashtable_policy.h (_Map_base::operator[],
_Map_base::at): Simplify definitions with trailing return types.
From-SVN: r218416
Ilya Enkovich [Fri, 5 Dec 2014 10:01:33 +0000 (10:01 +0000)]
re PR target/64056 (gcc.target/i386/chkp-strlen-4.c etc. FAIL)
gcc/
PR target/64056
* doc/sourcebuild.texi: Add mempcpy and stpcpy for Effective-Target Keywords.
gcc/testsuite/
PR target/64056
* lib/target-supports.exp (check_effective_target_stpcpy): New.
* gcc.target/i386/chkp-strlen-2.c: Add stpcpy target check.
From-SVN: r218415
GCC Administrator [Fri, 5 Dec 2014 00:16:33 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r218413
Manuel López-Ibáñez [Fri, 5 Dec 2014 00:01:35 +0000 (00:01 +0000)]
This test should have been added in revision 218407.
gcc/testsuite/
2014-12-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
* gfortran.dg/line_length_5.f90: New test.
From-SVN: r218410
Manuel López-Ibáñez [Thu, 4 Dec 2014 23:59:35 +0000 (23:59 +0000)]
error.c (gfc_diagnostic_build_locus_prefix): Use diagnostic_expand_location.
gcc/fortran/ChangeLog:
2014-12-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
* error.c (gfc_diagnostic_build_locus_prefix): Use
diagnostic_expand_location.
gcc/ChangeLog:
2014-12-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
* diagnostic.h (diagnostic_expand_location): New inline function.
* diagnostic.c (diagnostic_build_prefix): Use it.
(diagnostic_show_locus): Likewise.
From-SVN: r218409
H.J. Lu [Thu, 4 Dec 2014 23:53:24 +0000 (23:53 +0000)]
Always define HAVE_LD_PIE_COPYRELOC
PR bootstrap/64189
* configure.ac (HAVE_LD_PIE_COPYRELOC): Always define.
* configure: Regenerated.
From-SVN: r218408
Manuel López-Ibáñez [Thu, 4 Dec 2014 23:35:29 +0000 (23:35 +0000)]
line-map.c (linemap_position_for_loc_and_offset): Add new linemap_assert_fails.
libcpp/ChangeLog:
2014-12-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
* line-map.c (linemap_position_for_loc_and_offset): Add new
linemap_assert_fails.
gcc/fortran/ChangeLog:
2014-12-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
* scanner.c (gfc_next_char_literal): Use gfc_warning_now.
(load_file): Use the line length as the column hint for
linemap_line_start. Reserve a location for the highest column of
the line.
From-SVN: r218407
Manuel López-Ibáñez [Thu, 4 Dec 2014 23:09:41 +0000 (23:09 +0000)]
diagnostic.c (diagnostic_color_init): New.
gcc/ChangeLog:
2014-12-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
* diagnostic.c (diagnostic_color_init): New.
* diagnostic.h: Declare.
* gcc.c (driver::global_initializations): Use it.
(driver_handle_option): Handle -fdiagnostics-color_.
* toplev.c: Do not include diagnostic-color.h.
(process_options): Do not initialize color diagnostics here.
* common.opt (fdiagnostics-color=): Add Driver.
* opts-global.c (init_options_once): Initialize color here.
* opts.c (common_handle_option): Use diagnostics_color_init.
* diagnostic-color.h: Fix comment.
From-SVN: r218406
David Malcolm [Thu, 4 Dec 2014 21:33:22 +0000 (21:33 +0000)]
Avoid overuse of name "buffer" in tree-pretty-print.c
gcc/ChangeLog:
* tree-pretty-print.c (INDENT): Rename "buffer" to "pp".
(NIY): Likewise.
(buffer): Rename this variable to...
(tree_pp): ...this.
(do_niy): Rename param from "buffer" to "pp".
(dump_decl_name): Likewise.
(dump_function_name): Likewise.
(dump_function_declaration): Likewise.
(dump_array_domain): Likewise.
(dump_omp_clause): Likewise.
(dump_omp_clauses): Likewise.
(dump_location): Likewise.
(dump_block_node): Likewise.
(dump_generic_node): Likewise.
(print_declaration): Likewise.
(print_struct_decl): Likewise.
(print_call_name): Likewise.
(pretty_print_string): Likewise.
(newline_and_indent): Likewise.
(print_generic_decl): Update for renaming of "buffer" to
"tree_pp".
(print_generic_stmt): Likewise.
(print_generic_stmt_indented): Likewise.
(print_generic_expr): Likewise.
(maybe_init_pretty_print): Likewise.
From-SVN: r218405
David Malcolm [Thu, 4 Dec 2014 21:23:57 +0000 (21:23 +0000)]
PR jit/63854: Fix double-initialization within tree-pretty-print.c
gcc/ChangeLog:
PR jit/63854
* tree-pretty-print.c: Eliminate include of <new>.
(buffer): Convert this variable from a pretty_printer to a
pretty_printer *.
(initialized): Eliminate this variable in favor of the NULL-ness
of "buffer".
(print_generic_decl): Update for "buffer" becoming a pointer.
(print_generic_stmt): Likewise.
(print_generic_stmt_indented): Likewise.
(print_generic_expr): Likewise.
(maybe_init_pretty_print): Likewise, allocating "buffer" on the
heap and using its non-NULL-ness to ensure idempotency.
From-SVN: r218404
David Malcolm [Thu, 4 Dec 2014 21:11:04 +0000 (21:11 +0000)]
PR jit/63854: Fix leak of ipa hooks
gcc/ChangeLog:
PR jit/63854
* ipa-prop.c (ipa_register_cgraph_hooks): Guard insertion of
ipa_add_new_function on function_insertion_hook_holder being
non-NULL.
* ipa-reference.c (ipa_reference_c_finalize): Remove
node_removal_hook_holder and node_duplication_hook_holder if
they've been added to symtab.
* toplev.c (toplev::finalize): Call ipa_reference_c_finalize
before cgraph_c_finalize so that the former can access "symtab".
From-SVN: r218403
Jason Merrill [Thu, 4 Dec 2014 20:37:30 +0000 (15:37 -0500)]
re PR c++/64029 (const int (&in)[]{1,2,3,4,5}; results in internal compiler error: Segmentation fault)
PR c++/64029
* decl.c (grok_reference_init): Complete array type.
From-SVN: r218402
Jason Merrill [Thu, 4 Dec 2014 20:37:24 +0000 (15:37 -0500)]
re PR c++/64080 ([C++14]ICE in cxx_eval_store_expression)
PR c++/64080
* constexpr.c (cxx_eval_store_expression): Handle non-decl store
targets.
From-SVN: r218401
Jason Merrill [Thu, 4 Dec 2014 20:37:14 +0000 (15:37 -0500)]
fix comment
From-SVN: r218400
David Malcolm [Thu, 4 Dec 2014 20:00:25 +0000 (20:00 +0000)]
Update docs to reflect use of gimple subclasses
gcc/ChangeLog:
* doc/cfg.texi (GIMPLE statement iterators): Add note about
gphi_iterator, and use one in the example.
* doc/gimple.texi (Tuple specific accessors): Add missing
GIMPLE_GOTO section and menu item.
(gimple_build_asm, gimple gimple_build_assign_with_ops)
gimple_call_mark_uninlinable, gimple_call_cannot_inline_p): Remove
description of removed functions.
(gimple_build_assign, gimple_build_bind, gimple_build_call,
gimple_build_call_from_tree, gimple_build_call_vec,
gimple_build_catch, gimple_build_cond,
gimple_build_cond_from_tree, gimple_build_debug_bind,
gimple_build_eh_filter, gimple_build_label, gimple_build_goto,
gimple_build_omp_atomic_load, gimple_build_omp_atomic_store,
gimple_build_omp_continue, gimple_build_omp_critical,
gimple_build_omp_for, gimple_build_omp_parallel,
gimple_build_omp_sections, gimple_build_omp_single,
gimple_build_return, gimple_build_resx, gimple_build_switch,
gimple_build_try): Update return type within description to
reflect changes in gimple.h to using gimple subclasses.
(gimple_build_asm_vec): Update return type, params and
description.
(gimple_asm_ninputs): Update param.
(gimple_asm_noutputs, gimple_asm_nclobbers, gimple_asm_input_op
gimple_asm_set_input_op, gimple_asm_output_op
gimple_asm_set_output_op, gimple_asm_clobber_op,
gimple_asm_set_clobber_op, gimple_asm_string,
gimple_asm_volatile_p, gimple_asm_set_volatile, gimple_bind_vars,
gimple_bind_set_vars, gimple_bind_append_vars, gimple_bind_body,
gimple_bind_set_body, gimple_bind_add_stmt, gimple_bind_add_seq,
gimple_bind_block, gimple_bind_set_block, gimple_call_set_fn,
gimple_call_return_type, gimple_call_set_chain,
gimple_call_set_tail, gimple_call_tail_p,
gimple_call_copy_skip_args, gimple_catch_types,
gimple_catch_types_ptr, gimple_catch_handler,
gimple_catch_set_types, gimple_catch_set_handler,
gimple_cond_set_code, gimple_cond_set_lhs, gimple_cond_set_rhs,
gimple_cond_true_label, gimple_cond_set_true_label,
gimple_cond_set_false_label, gimple_cond_false_label,
gimple_cond_make_false, gimple_cond_make_true,
gimple_eh_filter_set_types, gimple_eh_filter_set_failure,
gimple_eh_must_not_throw_fndecl,
gimple_eh_must_not_throw_set_fndecl, gimple_label_label,
gimple_label_set_label, gimple_goto_set_dest,
gimple_omp_atomic_load_set_lhs, gimple_omp_atomic_load_lhs,
gimple_omp_atomic_load_set_rhs, gimple_omp_atomic_load_rhs,
gimple_omp_atomic_store_set_val, gimple_omp_atomic_store_val,
gimple_omp_continue_control_def,
gimple_omp_continue_control_def_ptr,
gimple_omp_continue_set_control_def,
gimple_omp_continue_control_use,
gimple_omp_continue_control_use_ptr,
gimple_omp_continue_set_control_use, gimple_omp_critical_name,
gimple_omp_critical_name_ptr, gimple_omp_critical_set_name,
gimple_omp_parallel_clauses_ptr, gimple_omp_parallel_set_clauses,
gimple_omp_parallel_child_fn, gimple_omp_parallel_child_fn_ptr,
gimple_omp_parallel_set_child_fn, gimple_omp_parallel_data_arg,
gimple_omp_parallel_data_arg_ptr,
gimple_omp_parallel_set_data_arg, gimple_omp_single_set_clauses,
gimple_phi_set_result, gimple_phi_set_arg, gimple_resx_region,
gimple_resx_set_region, gimple_return_retval,
gimple_return_set_retval, gimple_switch_num_labels,
gimple_switch_set_num_labels, gimple_switch_index,
gimple_switch_set_index, gimple_switch_label,
gimple_switch_set_label, gimple_switch_default_label,
gimple_switch_set_default_label, gimple_try_set_eval,
gimple_try_set_cleanup): Update initial param within description
to reflect changes in gimple.h to using gimple subclasses.
(Adding a new GIMPLE statement code): Update to reflect gimple
statement subclassing.
From-SVN: r218399
Sriraman Tallam [Thu, 4 Dec 2014 19:40:50 +0000 (19:40 +0000)]
x86-64: Optimize access to globals in PIE with copy reloc
Normally, with -fPIE/-fpie, GCC accesses globals that are extern to the
module using the GOT. This is two instructions, one to get the address
of the global from the GOT and the other to get the value. If it turns
out that the global gets defined in the executable at link-time, it still
needs to go through the GOT as it is too late then to generate a direct
access.
Examples:
foo.cc
------
int a_glob;
int main () {
return a_glob; // defined in this file
}
With -O2 -fpie -pie, the generated code directly accesses the global via
PC-relative insn:
5e0 <main>:
mov 0x165a(%rip),%eax # 1c40 <a_glob>
foo.cc
------
extern int a_glob;
int main () {
return a_glob; // defined in this file
}
With -O2 -fpie -pie, the generated code accesses global via GOT using
two memory loads:
6f0 <main>:
mov 0x1609(%rip),%rax # 1d00 <_DYNAMIC+0x230>
mov (%rax),%eax
This is true even if in the latter case the global was defined in the
executable through a different file.
Some experiments on google benchmarks shows that the extra memory loads
affects performance by 1% to 5%.
Solution - Copy Relocations:
When the linker supports copy relocations, GCC can always assume that
the global will be defined in the executable. For globals that are truly
extern (come from shared objects), the linker will create copy relocations
and have them defined in the executable. Result is that no global access
needs to go through the GOT and hence improves performance.
This optimization only applies to undefined, non-weak global data.
Undefined, weak global data access still must go through the GOT.
This patch checks if linker supports PIE with copy reloc, which is
enabled in gold and bfd linker in bininutils 2.25, at configure time
and enables this optimization if the linker support is available.
gcc/
* configure.ac (HAVE_LD_PIE_COPYRELOC): Defined to 1 if
Linux/x86-64 linker supports PIE with copy reloc.
* config.in: Regenerated.
* configure: Likewise.
* config/i386/i386.c (legitimate_pic_address_disp_p): Allow
pc-relative address for undefined, non-weak, non-function
symbol reference in 64-bit PIE if linker supports PIE with
copy reloc.
* doc/sourcebuild.texi: Document pie_copyreloc target.
gcc/testsuite/
* gcc.target/i386/pie-copyrelocs-1.c: New test.
* gcc.target/i386/pie-copyrelocs-2.c: Likewise.
* gcc.target/i386/pie-copyrelocs-3.c: Likewise.
* gcc.target/i386/pie-copyrelocs-4.c: Likewise.
* lib/target-supports.exp (check_effective_target_pie_copyreloc):
New procedure.
Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
From-SVN: r218397
Marek Polacek [Thu, 4 Dec 2014 19:20:12 +0000 (19:20 +0000)]
re PR middle-end/56917 (-ftrapv detects a overflow wrongly.)
PR middle-end/56917
* fold-const.c (fold_unary_loc): Perform the negation in A's type
when transforming ~ (A - 1) or ~ (A + -1) to -A.
* c-c++-common/ubsan/pr56917.c: New test.
From-SVN: r218395
Tobias Burnus [Thu, 4 Dec 2014 18:18:21 +0000 (19:18 +0100)]
Makefile.in: Remove CLOOGLIB and CLOOGINC.
2014-12-04 Tobias Burnus <burnus@net-b.de>
* Makefile.in: Remove CLOOGLIB and CLOOGINC.
From-SVN: r218389
Thomas Preud'homme [Thu, 4 Dec 2014 16:39:47 +0000 (16:39 +0000)]
check_GNU_style.sh: Warn for incorrect number of spaces in function call only if 0 or 2+ spaces found.
2014-12-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
contrib/
* check_GNU_style.sh: Warn for incorrect number of spaces in function
call only if 0 or 2+ spaces found.
From-SVN: r218382
Richard Biener [Thu, 4 Dec 2014 14:44:57 +0000 (14:44 +0000)]
match-and-simplify.texi: Update for recent changes.
2014-12-04 Richard Biener <rguenther@suse.de>
* doc/match-and-simplify.texi: Update for recent changes.
From-SVN: r218372