H.J. Lu [Thu, 19 Dec 2013 18:11:42 +0000 (18:11 +0000)]
Improve -fuse-ld=[bfd|gold] check
PR driver/59321
* collect2.c (main): Check -fuse-ld=[bfd|gold] when
DEFAULT_LINKER is defined.
* common.opt (fuse-ld=bfd): Add Driver.
(fuse-ld=gold): Likewise.
* gcc.c (use_ld): New variable.
(driver_handle_option): Set use_ld for OPT_fuse_ld_bfd and
OPT_fuse_ld_gold.
(main): Check -fuse-ld=[bfd|gold] for -print-prog-name=ld.
Charles Baylis [Thu, 19 Dec 2013 16:51:35 +0000 (16:51 +0000)]
re PR target/59142 (internal compiler error while compiling OpenCV 2.4.7)
2013-12-19 Charles Baylis <charles.baylis@linaro.org>
PR target/59142
gcc/
* arm/predicates.md (arm_hard_general_register_operand): New
predicate.
(arm_hard_register_operand): Remove.
* config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand
for all patterns.
* config/arm/ldmstm.md: Regenerate.
Dominik Vogt [Thu, 19 Dec 2013 12:00:43 +0000 (12:00 +0000)]
s390.c (s390_hotpatch_trampoline_halfwords_default): New constant
2013-12-19 Dominik Vogt <vogt@linux.vnet.ibm.com>
Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): New
constant
(s390_hotpatch_trampoline_halfwords_max): New constant
(s390_hotpatch_trampoline_halfwords): New static variable
(get_hotpatch_attribute): New function
(s390_handle_hotpatch_attribute): New function
(s390_attribute_table): New target specific attribute table to implement
the hotpatch attribute
(s390_option_override): Parse hotpatch options
(s390_function_num_hotpatch_trampoline_halfwords): New function
(s390_can_inline_p): Implement target hook to
suppress hotpatching for explicitly inlined functions
(s390_asm_output_function_label): Generate hotpatch prologue
(TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table
(TARGET_CAN_INLINE_P): Define to implement target hook
* config/s390/s390.opt (mhotpatch): New options -mhotpatch, -mhotpatch=
* config/s390/s390-protos.h (s390_asm_output_function_label): Add
prototype
* config/s390/s390.h (ASM_OUTPUT_FUNCTION_LABEL): Target specific
function label generation for hotpatching
(FUNCTION_BOUNDARY): Align functions to eight bytes
* doc/extend.texi: Document hotpatch attribute
* doc/invoke.texi: Document -mhotpatch option
2013-12-19 Dominik Vogt <vogt@linux.vnet.ibm.com>
Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc/testsuite/gcc.target/s390/hotpatch-1.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-2.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-3.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-4.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-5.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-6.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-7.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-8.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-9.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-10.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-11.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-12.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c: New test
* gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c: New test
Co-Authored-By: Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
From-SVN: r206111
Balaji V. Iyer [Wed, 18 Dec 2013 19:00:21 +0000 (19:00 +0000)]
Added support for Cilk Plus SIMD-enabled function for C.
+++ gcc/ChangeLog
+2013-12-18 Balaji V. Iyer <balaji.v.iyer@intel.com>
+
+ * omp-low.c (simd_clone_clauses_extract): Replaced the string
+ "cilk simd elemental" with "cilk simd function."
+ * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
+ Removed a carriage-return from a warning string.
+
+++ gcc/c-family/ChangeLog
+2013-12-18 Balaji V. Iyer <balaji.v.iyer@intel.com>
+
+ * c-common.c (c_common_attribute_table): Added "cilk simd function"
+ attribute.
+ * c-pragma.h (enum pragma_cilk_clause): Remove.
+ (enum pragma_omp_clause): Added the following fields:
+ PRAGMA_CILK_CLAUSE_NOMASK, PRAGMA_CILK_CLAUSE_MASK,
+ PRAGMA_CILK_CLAUSE_VECTORLENGTH, PRAGMA_CILK_CLAUSE_NONE,
+ PRAGMA_CILK_CLAUSE_LINEAR, PRAGMA_CILK_CLAUSE_PRIVATE,
+ PRAGMA_CILK_CLAUSE_FIRSTPRIVATE, PRAGMA_CILK_CLAUSE_LASTPRIVATE,
+ PRAGMA_CILK_CLAUSE_UNIFORM.
+
+
+++ gcc/c/ChangeLog
+2013-12-18 Balaji V. Iyer <balaji.v.iyer@intel.com>
+
+ * c-parser.c (struct c_parser::cilk_simd_fn_tokens): Added new field.
+ (c_parser_declaration_or_fndef): Added a check if cilk_simd_fn_tokens
+ field in parser is not empty. If not-empty, call the function
+ c_parser_finish_omp_declare_simd.
+ (c_parser_cilk_clause_vectorlength): Modified function to be shared
+ between SIMD-enabled functions and #pragma simd. Added new parameter.
+ (c_parser_cilk_all_clauses): Modified the usage of the function
+ c_parser_cilk_clause_vectorlength as mentioned above.
+ (c_parser_cilk_simd_fn_vector_attrs): New function.
+ (c_finish_cilk_simd_fn_tokens): Likewise.
+ (is_cilkplus_vector_p): Likewise.
+ (c_parser_omp_clause_name): Added checking for "vectorlength,"
+ "nomask," and "mask" strings in clause name.
+ (c_parser_omp_all_clauses): Added 3 new case statements:
+ PRAGMA_CILK_CLAUSE_VECTORLENGTH, PRAGMA_CILK_CLAUSE_MASK and
+ PRAGMA_CILK_CLAUSE_NOMASK.
+ (c_parser_attributes): Added a cilk_simd_fn_tokens parameter. Added a
+ check for vector attribute and if so call the function
+ c_parser_cilk_simd_fn_vector_attrs. Also, when Cilk plus is enabled,
+ called the function c_finish_cilk_simd_fn_tokens.
+ (c_finish_omp_declare_simd): Added a check if cilk_simd_fn_tokens
in
+ parser field is non-empty. If so, parse them as you would parse
+ the omp declare simd pragma.
+ (c_parser_omp_clause_linear): Added a new bool parm. is_cilk_simd_fn.
+ Added a check when step is a parameter and flag it as error.
+ (CILK_SIMD_FN_CLAUSE_MASK): New #define.
+ (c_parser_cilk_clause_name): Changed pragma_cilk_clause to
+ pragma_omp_clause.
+
Aldy Hernandez [Wed, 18 Dec 2013 17:38:07 +0000 (17:38 +0000)]
passes.c (execute_function_dump): Set graph_dump_initialized appropriately.
* passes.c (execute_function_dump): Set graph_dump_initialized
appropriately.
(pass_init_dump_file): Similarly.
(execute_one_pass): Pass new argument to do_per_function.
* tree-pass.h (class opt_pass): New field graph_dump_initialized.
Aldy Hernandez [Wed, 18 Dec 2013 17:32:07 +0000 (17:32 +0000)]
tree-ssa.texi (SSA Operands): Remove reference to SSA_OP_VMAYUSE.
* doc/tree-ssa.texi (SSA Operands): Remove reference to
SSA_OP_VMAYUSE.
Synchronize SSA_OP* definitions with source.
* ssa-iterators.h: Fix comment for FOR_EACH_IMM_USE_STMT.
Add not to SSA_OP* macro definitions.
James Greenhalgh [Tue, 17 Dec 2013 12:26:10 +0000 (12:26 +0000)]
[ARM 2/5 big.LITTLE] Allow tuning parameters without unique tuning targets.
gcc/
* config/arm/arm-cores.def: Add new column for TUNE_IDENT.
* config/arm/genopt.sh: Improve layout.
* config/arm/arm-tune.md: Regenerate.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm-opts.h (ARM_CORE): Modify macro for TUNE_IDENT.
* config/arm/arm.c (ARM_CORE): Modify macro for TUNE_IDENT.
(arm_option_override): When a CPU is chosen, that should also
form the tune target.
* config/arm/arm.h (ARM_CORE): Modify macro for TUNE_IDENT.
Jan Hubicka [Tue, 17 Dec 2013 10:26:59 +0000 (11:26 +0100)]
devirt-13.C: Update template.
* g++.dg/ipa/devirt-13.C: Update template.
* ipa-utils.h (possible_polymorphic_call_targets): Determine context of
the call.
* gimple-fold.c (gimple_fold_call): Use ipa-devirt to devirtualize.
Jerry DeLisle [Tue, 17 Dec 2013 03:06:04 +0000 (03:06 +0000)]
re PR libfortran/59419 (Failing OPEN with FILE='xxx' and IOSTAT creates the file 'xxx' after revision 196783)
2013-12-16 Jerry DeLisle <jvdelisle@gcc.gnu>
PR libfortran/59419
* io/file_pos.c (st_rewind): Do proper return after
generate_error.
* io/open.c (edit_modes): Move action code inside block that
checks for library ok. (new_unit): Do cleanup after error.
(st_open): Do proper return after error.
* io/transfer.c (data_transfer_init): Likewise.
Jakub Jelinek [Mon, 16 Dec 2013 18:46:49 +0000 (19:46 +0100)]
predict.h (PROB_LIKELY): Fix the value.
* predict.h (PROB_LIKELY): Fix the value.
* internal-fn.c (ubsan_expand_si_overflow_mul_check): Add support
for overflow checking for modes without 2xwider supported mode,
if the mode has 2xnarrower mode.
* c-c++-common/ubsan/overflow-mul-3.c: New test.
* c-c++-common/ubsan/overflow-mul-4.c: New test.
Jakub Jelinek [Mon, 16 Dec 2013 18:44:51 +0000 (19:44 +0100)]
internal-fn.c: Include stringpool.h and tree-ssanames.h.
* internal-fn.c: Include stringpool.h and tree-ssanames.h.
(ubsan_expand_si_overflow_addsub_check): In the generic expansion,
try to improve generated code if one of the arguments is constant
or get_range_info says that one of the argument is always
negative or always non-negative.
* tree-vrp.c (simplify_internal_call_using_ranges): New function.
(simplify_stmt_using_ranges): Call it.
* tree-vectorizer.h (struct _loop_vec_info): Add scalar_loop field.
(LOOP_VINFO_SCALAR_LOOP): Define.
(slpeel_tree_duplicate_loop_to_edge_cfg): Add scalar_loop argument.
* config/i386/sse.md (maskload<mode>, maskstore<mode>): New expanders.
* tree-data-ref.c (get_references_in_stmt): Handle MASK_LOAD and
MASK_STORE.
* internal-fn.def (LOOP_VECTORIZED, MASK_LOAD, MASK_STORE): New
internal fns.
* tree-if-conv.c: Include expr.h, optabs.h, tree-ssa-loop-ivopts.h and
tree-ssa-address.h.
(release_bb_predicate): New function.
(free_bb_predicate): Use it.
(reset_bb_predicate): Likewise. Don't unallocate bb->aux
just to immediately allocate it again.
(add_to_predicate_list): Add loop argument. If basic blocks that
dominate loop->latch don't insert any predicate.
(add_to_dst_predicate_list): Adjust caller.
(if_convertible_phi_p): Add any_mask_load_store argument, if true,
handle it like flag_tree_loop_if_convert_stores.
(insert_gimplified_predicates): Likewise.
(ifcvt_can_use_mask_load_store): New function.
(if_convertible_gimple_assign_stmt_p): Add any_mask_load_store
argument, check if some conditional loads or stores can't be
converted into MASK_LOAD or MASK_STORE.
(if_convertible_stmt_p): Add any_mask_load_store argument,
pass it down to if_convertible_gimple_assign_stmt_p.
(predicate_bbs): Don't return bool, only check if the last stmt
of a basic block is GIMPLE_COND and handle that. Adjust
add_to_predicate_list caller.
(if_convertible_loop_p_1): Only call predicate_bbs if
flag_tree_loop_if_convert_stores and free_bb_predicate in that case
afterwards, check gimple_code of stmts here. Replace is_predicated
check with dominance check. Add any_mask_load_store argument,
pass it down to if_convertible_stmt_p and if_convertible_phi_p,
call if_convertible_phi_p only after all if_convertible_stmt_p
calls.
(if_convertible_loop_p): Add any_mask_load_store argument,
pass it down to if_convertible_loop_p_1.
(predicate_mem_writes): Emit MASK_LOAD and/or MASK_STORE calls.
(combine_blocks): Add any_mask_load_store argument, pass
it down to insert_gimplified_predicates and call predicate_mem_writes
if it is set. Call predicate_bbs.
(version_loop_for_if_conversion): New function.
(tree_if_conversion): Adjust if_convertible_loop_p and combine_blocks
calls. Return todo flags instead of bool, call
version_loop_for_if_conversion if if-conversion should be just
for the vectorized loops and nothing else.
(main_tree_if_conversion): Adjust caller. Don't call
tree_if_conversion for dont_vectorize loops if if-conversion
isn't explicitly enabled.
* tree-vect-data-refs.c (vect_check_gather): Handle
MASK_LOAD/MASK_STORE.
(vect_analyze_data_refs, vect_supportable_dr_alignment): Likewise.
* gimple.h (gimple_expr_type): Handle MASK_STORE.
* internal-fn.c (expand_LOOP_VECTORIZED, expand_MASK_LOAD,
expand_MASK_STORE): New functions.
* tree-vectorizer.c: Include tree-cfg.h and gimple-fold.h.
(vect_loop_vectorized_call, fold_loop_vectorized_call): New functions.
(vectorize_loops): Don't try to vectorize loops with
loop->dont_vectorize set. Set LOOP_VINFO_SCALAR_LOOP for if-converted
loops, fold LOOP_VECTORIZED internal call depending on if loop
has been vectorized or not.
* tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
New function.
(slpeel_tree_duplicate_loop_to_edge_cfg): Add scalar_loop argument.
If non-NULL, copy basic blocks from scalar_loop instead of loop, but
still to loop's entry or exit edge.
(slpeel_tree_peel_loop_to_edge): Add scalar_loop argument, pass it
down to slpeel_tree_duplicate_loop_to_edge_cfg.
(vect_do_peeling_for_loop_bound, vect_do_peeling_for_loop_alignment):
Adjust callers.
(vect_loop_versioning): If LOOP_VINFO_SCALAR_LOOP, perform loop
versioning from that loop instead of LOOP_VINFO_LOOP, move it to the
right place in the CFG afterwards.
* tree-vect-loop.c (vect_determine_vectorization_factor): Handle
MASK_STORE.
* cfgloop.h (struct loop): Add dont_vectorize field.
* tree-loop-distribution.c (copy_loop_before): Adjust
slpeel_tree_duplicate_loop_to_edge_cfg caller.
* optabs.def (maskload_optab, maskstore_optab): New optabs.
* passes.def: Add a note that pass_vectorize must immediately follow
pass_if_conversion.
* tree-predcom.c (split_data_refs_to_components): Give up if
DR_STMT is a call.
* tree-vect-stmts.c (vect_mark_relevant): Don't crash if lhs
is NULL.
(exist_non_indexing_operands_for_use_p): Handle MASK_LOAD
and MASK_STORE.
(vectorizable_mask_load_store): New function.
(vectorizable_call): Call it for MASK_LOAD or MASK_STORE.
(vect_transform_stmt): Handle MASK_STORE.
* tree-ssa-phiopt.c (cond_if_else_store_replacement): Ignore
DR_STMT where lhs is NULL.
* optabs.h (can_vec_perm_p): Fix up comment typo.
(can_vec_mask_load_store_p): New prototype.
* optabs.c (can_vec_mask_load_store_p): New function.
* gcc.dg/vect/vect-cond-11.c: New test.
* gcc.target/i386/vect-cond-1.c: New test.
* gcc.target/i386/avx2-gather-5.c: New test.
* gcc.target/i386/avx2-gather-6.c: New test.
* gcc.dg/vect/vect-mask-loadstore-1.c: New test.
* gcc.dg/vect/vect-mask-load-1.c: New test.
Jakub Jelinek [Mon, 16 Dec 2013 10:34:28 +0000 (11:34 +0100)]
re PR libgomp/58756 (FAIL: libgomp.c/pr58392.c execution test)
PR libgomp/58756
* omp-low.c (lower_rec_input_clauses) <case OMP_CLAUSE_REDUCTION>: For
reductions without placeholder if is_simd, but when not using
GOMP_SIMD* internal calls, also perform the reduction operation
on the outer var rather than simple assignment.
Jakub Jelinek [Mon, 16 Dec 2013 08:09:05 +0000 (09:09 +0100)]
re PR middle-end/58956 (wrong code at -O1 and above (affecting gcc 4.6 to trunk))
PR middle-end/58956
PR middle-end/59470
* gimple-walk.h (walk_stmt_load_store_addr_fn): New typedef.
(walk_stmt_load_store_addr_ops, walk_stmt_load_store_ops): Use it
for callback params.
* gimple-walk.c (walk_stmt_load_store_ops): Likewise.
(walk_stmt_load_store_addr_ops): Likewise. Adjust all callback
calls to supply the gimple operand containing the base tree
as an extra argument.
* tree-ssa-ter.c: Include gimple-walk.h.
(find_ssaname, find_ssaname_in_store): New helper functions.
(find_replaceable_in_bb): For calls or GIMPLE_ASM, only set
same_root_var if USE is used somewhere in the stores of the stmt.
* ipa-prop.c (visit_ref_for_mod_analysis): Remove name of the stmt
argument and ATTRIBUTE_UNUSED, add another unnamed tree argument.
* ipa-pure-const.c (check_load, check_store, check_ipa_load,
check_ipa_store): Likewise.
* gimple.c (gimple_ior_addresses_taken_1, check_loadstore): Likewise.
* ipa-split.c (test_nonssa_use, mark_nonssa_use): Likewise.
(verify_non_ssa_vars, visit_bb): Adjust their callers.
* cfgexpand.c (add_scope_conflicts_1): Use
walk_stmt_load_store_addr_fn type for visit variable.
(visit_op, visit_conflict): Remove name of the stmt
argument and ATTRIBUTE_UNUSED, add another unnamed tree argument.
* tree-sra.c (asm_visit_addr): Likewise. Remove name of the data
argument and ATTRIBUTE_UNUSED.
* cgraphbuild.c (mark_address, mark_load, mark_store): Add another
unnamed tree argument.
* gimple-ssa-isolate-paths.c (check_loadstore): Likewise. Remove
ATTRIBUTE_UNUSED from stmt parameter.