ienkovich [Tue, 10 Nov 2015 12:17:30 +0000 (12:17 +0000)]
gcc/
* optabs.c (expand_binop_directly): Allow scalar mode for
vec_pack_trunc_optab.
* tree-vect-loop.c (vect_determine_vectorization_factor): Skip
boolean vector producers from pattern sequence when computing VF.
* tree-vect-patterns.c (vect_vect_recog_func_ptrs) Add
vect_recog_mask_conversion_pattern.
(search_type_for_mask): Choose the smallest
type if different size types are mixed.
(build_mask_conversion): New.
(vect_recog_mask_conversion_pattern): New.
(vect_pattern_recog_1): Allow scalar mode for boolean vectype.
* tree-vect-stmts.c (vectorizable_mask_load_store): Support masked
load with pattern.
(vectorizable_conversion): Support boolean vectors.
(free_stmt_vec_info): Allow patterns for statements with no lhs.
* tree-vectorizer.h (NUM_PATTERNS): Increase to 14.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230103
138bc75d-0d04-0410-961f-
82ee72b054a4
ienkovich [Tue, 10 Nov 2015 12:15:42 +0000 (12:15 +0000)]
gcc/
2015-11-10 Ilya Enkovich <enkovich.gnu@gmail.com>
* config/i386/i386-protos.h (ix86_expand_sse_movcc): New.
* config/i386/i386.c (ix86_expand_sse_movcc): Make public.
Cast mask to FP mode if required.
* config/i386/sse.md (vcond_mask_<mode><avx512fmaskmodelower>): New.
(vcond_mask_<mode><avx512fmaskmodelower>): New.
(vcond_mask_<mode><sseintvecmodelower>): New.
(vcond_mask_<mode><sseintvecmodelower>): New.
(vcond_mask_v2div2di): New.
(vcond_mask_<mode><sseintvecmodelower>): New.
(vcond_mask_<mode><sseintvecmodelower>): New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230102
138bc75d-0d04-0410-961f-
82ee72b054a4
ienkovich [Tue, 10 Nov 2015 12:14:19 +0000 (12:14 +0000)]
gcc/
2015-11-10 Ilya Enkovich <enkovich.gnu@gmail.com>
* optabs-query.h (get_vcond_mask_icode): New.
* optabs-tree.c (expand_vec_cond_expr_p): Use
get_vcond_mask_icode for VEC_COND_EXPR with mask.
* optabs.c (expand_vec_cond_mask_expr): New.
(expand_vec_cond_expr): Use get_vcond_mask_icode
when possible.
* optabs.def (vcond_mask_optab): New.
* tree-vect-patterns.c (vect_recog_bool_pattern): Don't
generate redundant comparison for COND_EXPR.
* tree-vect-stmts.c (vect_is_simple_cond): Allow SSA_NAME
as a condition.
(vectorizable_condition): Likewise.
* tree-vect-slp.c (vect_get_and_check_slp_defs): Allow
cond_exp with no embedded comparison.
(vect_build_slp_tree_1): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230101
138bc75d-0d04-0410-961f-
82ee72b054a4
ienkovich [Tue, 10 Nov 2015 12:08:02 +0000 (12:08 +0000)]
2015-11-10 Ilya Enkovich <enkovich.gnu@gmail.com>
* config/i386/sse.md (maskload<mode>): Rename to ...
(maskload<mode><sseintvecmodelower>): ... this.
(maskstore<mode>): Rename to ...
(maskstore<mode><sseintvecmodelower>): ... this.
(maskload<mode><avx512fmaskmodelower>): New.
(maskstore<mode><avx512fmaskmodelower>): New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230100
138bc75d-0d04-0410-961f-
82ee72b054a4
ienkovich [Tue, 10 Nov 2015 12:06:05 +0000 (12:06 +0000)]
gcc/
* internal-fn.c (expand_MASK_LOAD): Adjust to maskload optab changes.
(expand_MASK_STORE): Adjust to maskstore optab changes.
* optabs-query.c (can_vec_mask_load_store_p): Add MASK_MODE arg.
Adjust to maskload, maskstore optab changes.
* optabs-query.h (can_vec_mask_load_store_p): Add MASK_MODE arg.
* optabs.def (maskload_optab): Transform into convert optab.
(maskstore_optab): Likewise.
* tree-if-conv.c (ifcvt_can_use_mask_load_store): Adjust to
can_vec_mask_load_store_p signature change.
(predicate_mem_writes): Use boolean mask.
* tree-vect-stmts.c (vectorizable_mask_load_store): Adjust to
can_vec_mask_load_store_p signature change. Allow invariant masks.
(vectorizable_operation): Ignore type precision for boolean vectors.
gcc/testsuite/
* gcc.target/i386/avx2-vec-mask-bit-not.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230099
138bc75d-0d04-0410-961f-
82ee72b054a4
ienkovich [Tue, 10 Nov 2015 11:57:34 +0000 (11:57 +0000)]
gcc/
* expr.c (do_store_flag): Use expand_vec_cmp_expr for mask results.
(const_vector_mask_from_tree): New.
(const_vector_from_tree): Use const_vector_mask_from_tree
for boolean vectors.
* optabs-query.h (get_vec_cmp_icode): New.
* optabs-tree.c (expand_vec_cmp_expr_p): New.
* optabs-tree.h (expand_vec_cmp_expr_p): New.
* optabs.c (vector_compare_rtx): Add OPNO arg.
(expand_vec_cond_expr): Adjust to vector_compare_rtx change.
(expand_vec_cmp_expr): New.
* optabs.def (vec_cmp_optab): New.
(vec_cmpu_optab): New.
* optabs.h (expand_vec_cmp_expr): New.
* tree-vect-generic.c (expand_vector_comparison): Add vector
comparison optabs check.
* tree-vect-loop.c (vect_determine_vectorization_factor): Ignore mask
operations for VF. Add mask type computation.
* tree-vect-stmts.c (get_mask_type_for_scalar_type): New.
(vectorizable_comparison): New.
(vect_analyze_stmt): Add vectorizable_comparison.
(vect_transform_stmt): Likewise.
(vect_init_vector): Support boolean vector invariants.
(vect_get_vec_def_for_operand): Add VECTYPE arg.
(vectorizable_condition): Directly provide vectype for invariants
used in comparison.
* tree-vectorizer.h (get_mask_type_for_scalar_type): New.
(enum vect_var_kind): Add vect_mask_var.
(enum stmt_vec_info_type): Add comparison_vec_info_type.
(vectorizable_comparison): New.
(vect_get_vec_def_for_operand): Add VECTYPE arg.
* tree-vect-data-refs.c (vect_get_new_vect_var): Support vect_mask_var.
(vect_create_destination_var): Likewise.
* tree-vect-patterns.c (check_bool_pattern): Check fails
if we can vectorize comparison directly.
(search_type_for_mask): New.
(vect_recog_bool_pattern): Support cases when bool pattern
check fails.
* tree-vect-slp.c (vect_build_slp_tree_1): Allow
comparison statements.
(vect_get_constant_vectors): Support boolean vector
constants.
* config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): New.
(ix86_expand_int_vec_cmp): New.
(ix86_expand_fp_vec_cmp): New.
* config/i386/i386.c (ix86_expand_sse_cmp): Allow NULL for
op_true and op_false.
(ix86_int_cmp_code_to_pcmp_immediate): New.
(ix86_fp_cmp_code_to_pcmp_immediate): New.
(ix86_cmp_code_to_pcmp_immediate): New.
(ix86_expand_mask_vec_cmp): New.
(ix86_expand_fp_vec_cmp): New.
(ix86_expand_int_sse_cmp): New.
(ix86_expand_int_vcond): Use ix86_expand_int_sse_cmp.
(ix86_expand_int_vec_cmp): New.
(ix86_get_mask_mode): New.
(TARGET_VECTORIZE_GET_MASK_MODE): New.
* config/i386/sse.md (avx512fmaskmodelower): New.
(vec_cmp<mode><avx512fmaskmodelower>): New.
(vec_cmp<mode><sseintvecmodelower>): New.
(vec_cmpv2div2di): New.
(vec_cmpu<mode><avx512fmaskmodelower>): New.
(vec_cmpu<mode><sseintvecmodelower>): New.
(vec_cmpuv2div2di): New.
gcc/testsuite/
* gcc.dg/vect/slp-cond-5.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230098
138bc75d-0d04-0410-961f-
82ee72b054a4
redi [Tue, 10 Nov 2015 11:12:33 +0000 (11:12 +0000)]
* include/bits/functional_hash.h: Fix grammar in comment.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230097
138bc75d-0d04-0410-961f-
82ee72b054a4
rguenth [Tue, 10 Nov 2015 10:14:02 +0000 (10:14 +0000)]
2015-11-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/68240
* tree-ssa-sccvn.c (cond_stmts_equal_p): Handle commutative compares
properly.
(visit_phi): For PHIs with just a single executable edge
take its value directly.
(expressions_equal_p): Handle VN_TOP properly.
* gcc.dg/torture/pr68240.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230095
138bc75d-0d04-0410-961f-
82ee72b054a4
rguenth [Tue, 10 Nov 2015 10:12:13 +0000 (10:12 +0000)]
2015-11-10 Richard Biener <rguenther@suse.de>
* tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
Handle memory using/clobbering stmts without a STMT_VINFO_DATA_REF
conservatively.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230094
138bc75d-0d04-0410-961f-
82ee72b054a4
rguenth [Tue, 10 Nov 2015 09:43:54 +0000 (09:43 +0000)]
2015-11-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/56118
* tree-vect-slp.c (vect_bb_vectorization_profitable_p): Make equal
cost favor vectorized version.
* gcc.target/i386/pr56118.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230091
138bc75d-0d04-0410-961f-
82ee72b054a4
ktkachov [Tue, 10 Nov 2015 09:37:51 +0000 (09:37 +0000)]
[AArch64][2/3] Implement negcc, notcc optabs
* config/aarch64/aarch64.md (<neg_not_op><mode>cc): New define_expand.
* config/aarch64/iterators.md (NEG_NOT): New code iterator.
(neg_not_op): New code attribute.
* gcc.target/aarch64/cond_op_imm_1.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230090
138bc75d-0d04-0410-961f-
82ee72b054a4
ktkachov [Tue, 10 Nov 2015 09:35:11 +0000 (09:35 +0000)]
[optabs][ifcvt][1/3] Define negcc, notcc optabs
* ifcvt.c (noce_try_inverse_constants): New function.
(noce_process_if_block): Call it.
* optabs.h (emit_conditional_neg_or_complement): Declare prototype.
* optabs.def (negcc_optab, notcc_optab): Declare.
* optabs.c (emit_conditional_neg_or_complement): New function.
* doc/tm.texi (Standard Names): Document negcc, notcc names.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230089
138bc75d-0d04-0410-961f-
82ee72b054a4
ktkachov [Tue, 10 Nov 2015 09:22:58 +0000 (09:22 +0000)]
[haifa-sched] PR rtl-optimization/68236: Exit early from autoprefetcher lookahead if not in haifa sched
PR rtl-optimization/68236
* haifa-sched.c (autopref_multipass_dfa_lookahead_guard): Return 0
if insn_queue doesn't exist.
(haifa_sched_finish): Reset insn_queue to NULL.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230088
138bc75d-0d04-0410-961f-
82ee72b054a4
rts [Tue, 10 Nov 2015 09:12:52 +0000 (09:12 +0000)]
Tie chains for move instructions.
gcc/
* regrename.c (create_new_chain): Initialize renamed and tied_chain.
(build_def_use): Initialize terminated_this_insn.
(find_best_rename_reg): Pick and check register from the tied chain.
(regrename_do_replace): Mark head as renamed.
(struct du_head *terminated_this_insn). New static variable.
(scan_rtx_reg): Tie chains in move insns. Set terminated_this_insn.
* regrename.h (struct du_head): Add tied_chain, renamed members.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230087
138bc75d-0d04-0410-961f-
82ee72b054a4
ebotcazou [Tue, 10 Nov 2015 09:01:58 +0000 (09:01 +0000)]
* gfortran.dg/pr68251.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230086
138bc75d-0d04-0410-961f-
82ee72b054a4
ramana [Tue, 10 Nov 2015 08:35:21 +0000 (08:35 +0000)]
Workaround PR68256 on AArch64
> This is causing a bootstrap comparison failure in gcc/go/gogo.o.
I've had a look at this and the trigger is the
aarch64_use_constant_blocks_p change which appears to be causing a
bootstrap comparison failure because of differences to offsets when
built with debug and without debug. I don't think the problem is
specifically in the backend but this needs some careful
investigation. For now, in the interest of go bootstraps continuing on
trunk - I'm proposing a patch that partially rolls back the change in
aarch64_use_constant_blocks_p and am still looking into the issue but
it will take me some more time to get to the bottom of the issue.
Bootstrapped on aarch64-none-linux-gnu including (c,c++ and go) -
testing finished ok.
2015-11-10 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR bootstrap/68256
* config/aarch64/aarch64.c (aarch64_use_constant_blocks_p):
Return false.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230085
138bc75d-0d04-0410-961f-
82ee72b054a4
cesar [Tue, 10 Nov 2015 05:23:04 +0000 (05:23 +0000)]
gcc/cp/
* parser.c (cp_finalize_oacc_routine): New boolean first argument.
(cp_ensure_no_oacc_routine): Update call to cp_finalize_oacc_routine.
(cp_parser_simple_declaration): Maintain a boolean first to keep track
of each new declarator. Propagate it to cp_parser_init_declarator.
(cp_parser_init_declarator): New boolean first argument. Propagate it
to cp_parser_save_member_function_body and cp_finalize_oacc_routine.
(cp_parser_member_declaration): Likewise.
(cp_parser_single_declaration): Update call to
cp_parser_init_declarator.
(cp_parser_save_member_function_body): New boolean first_decl argument.
Propagate it to cp_finalize_oacc_routine.
(cp_parser_finish_oacc_routine): New boolean first argument. Use it to
determine if multiple declarators follow a routine construct.
(cp_parser_oacc_routine): Update call to cp_parser_finish_oacc_routine.
gcc/testsuite/
* c-c++-common/goacc/routine-5.c: Enable c++ tests.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230082
138bc75d-0d04-0410-961f-
82ee72b054a4
msebor [Tue, 10 Nov 2015 02:23:34 +0000 (02:23 +0000)]
PR c++/67913 - new expression with negative size not diagnosed
PR c++/67927 - array new expression with excessive number of elements
not diagnosed
gcc/cp/
* call.c (build_operator_new_call): Do not assume size_check
is non-null, analogously to the top half of the function.
* init.c (build_new_1): Detect and diagnose array sizes in
excess of the maximum of roughly SIZE_MAX / 2.
Insert a runtime check only for arrays with a non-constant size.
(build_new): Detect and diagnose negative array sizes.
gcc/testsuite/
* init/new45.C: New test to verify that operator new is invoked
with or without overhead for a cookie.
* init/new44.C: New test for placement new expressions for arrays
with excessive number of elements.
* init/new43.C: New test for placement new expressions for arrays
with negative number of elements.
* other/new-size-type.C: Expect array new expression with
an excessive number of elements to be rejected.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230081
138bc75d-0d04-0410-961f-
82ee72b054a4
nathan [Tue, 10 Nov 2015 01:01:15 +0000 (01:01 +0000)]
gcc/testsuite/
* c-c++-common/goacc/routine-1.c: New.
* c-c++-common/goacc/routine-2.c: New.
* c-c++-common/goacc/routine-3.c: New.
* c-c++-common/goacc/routine-4.c: New.
* c-c++-common/goacc/routine-5.c: New.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-g-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-gwv-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-v-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-w-1.c: New.
* testsuite/libgomp.oacc-c-c++-common/routine-wv-1.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230080
138bc75d-0d04-0410-961f-
82ee72b054a4
ebotcazou [Tue, 10 Nov 2015 00:45:03 +0000 (00:45 +0000)]
PR target/57845
* config/sparc/sparc.c (sparc_function_value_1): In 32-bit mode, do
not promote the mode for aggregate types.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230074
138bc75d-0d04-0410-961f-
82ee72b054a4
nathan [Tue, 10 Nov 2015 00:27:26 +0000 (00:27 +0000)]
* omp-low.h (replace_oacc_fn_attrib, build_oacc_routine_dims): Declare.
* omp-low.c (build_oacc_routine_dims): New.
c/
* c-parser.c (c_parser_declaration_or_fndef): Add OpenACC
routine arg.
(c_parser_declaration_or_fndef): Call c_finish_oacc_routine.
(c_parser_pragma): Parse 'acc routine'.
(OACC_ROUTINE_CLAUSE_MARK): Define.
(c_parser_oacc_routine, (c_finish_oacc_routine): New.
c-family/
* c-pragma.c (oacc_pragmas): Add "routine".
* c-pragma.h (pragma_kind): Add PRAGMA_OACC_ROUTINE.
cp/
* parser.h (struct cp_parser): Add oacc_routine field.
* parser.c (cp_ensure_no_oacc_routine): New.
(cp_parser_new): Initialize oacc_routine field.
(cp_parser_linkage_specification): Call cp_ensure_no_oacc_routine.
(cp_parser_namespace_definition,
cp_parser_class_specifier_1): Likewise.
(cp_parser_init_declarator): Call cp_finalize_oacc_routine.
(cp_parser_function_definition,
cp_parser_save_member_function_body): Likewise.
(OACC_ROUTINE_CLAUSE_MASK): New.
(cp_parser_finish_oacc_routine, cp_parser_oacc_routine,
cp_finalize_oacc_routine): New.
(cp_parser_pragma): Adjust omp_declare_simd checking. Call
cp_ensure_no_oacc_routine.
(cp_parser_pragma): Add OpenACC routine handling.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230072
138bc75d-0d04-0410-961f-
82ee72b054a4
gccadmin [Tue, 10 Nov 2015 00:16:12 +0000 (00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230069
138bc75d-0d04-0410-961f-
82ee72b054a4
meissner [Tue, 10 Nov 2015 00:04:03 +0000 (00:04 +0000)]
[gcc]
2015-11-08 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/constraints.md (wF constraint): New constraints
for power9/toc fusion.
(wG constraint): Likewise.
* config/rs6000/predicates.md (u6bit_cint_operand): New
predicate, recognize 0..63.
(upper16_cint_operand): New predicate for power9 and toc fusion.
(fpr_reg_operand): Likewise.
(toc_fusion_or_p9_reg_operand): Likewise.
(toc_fusion_mem_raw): Likewise.
(toc_fusion_mem_wrapped): Likewise.
(fusion_gpr_addis): If power9 fusion, allow fusion for a larger
address range.
(fusion_gpr_mem_combo): Delete, use fusion_addis_mem_combo_load
instead.
(fusion_addis_mem_combo_load): Add support for power9 fusion of
floating point loads, floating point stores, and gpr stores.
(fusion_addis_mem_combo_store): Likewise.
(fusion_offsettable_mem_operand): Likewise.
* config/rs6000/rs6000-protos.h (emit_fusion_addis): Add
declarations.
(emit_fusion_load_store): Likewise.
(fusion_p9_p): Likewise.
(expand_fusion_p9_load): Likewise.
(expand_fusion_p9_store): Likewise.
(emit_fusion_p9_load): Likewise.
(emit_fusion_p9_store): Likewise.
(fusion_wrap_memory_address): Likewise.
* config/rs6000/rs6000.c (struct rs6000_reg_addr): Add new
elements for power9 fusion.
(rs6000_debug_print_mode): Rework debug information to print more
information about fusion.
(rs6000_init_hard_regno_mode_ok): Setup for power9 fusion
support.
(rs6000_legitimate_address_p): Recognize toc fusion as a valid
offsettable memory address.
(rs6000_rtx_costs): Update costs for new ISA 3.0 instructions.
(emit_fusion_gpr_load): Move most of the code from
emit_fusion_gpr_load into emit_fusion-addis that handles both
power8 and power9 fusion.
(emit_fusion_addis): Likewise.
(emit_fusion_load_store): Likewise.
(fusion_wrap_memory_address): Add support for TOC fusion.
(fusion_split_address): Likewise.
(fusion_p9_p): Add support for power9 fusion.
(expand_fusion_p9_load): Likewise.
(expand_fusion_p9_store): Likewise.
(emit_fusion_p9_load): Likewise.
(emit_fusion_p9_store): Likewise.
* config/rs6000/rs6000.h (TARGET_EXTSWSLI): Macros for support for
new instructions in ISA 3.0.
(TARGET_CTZ): Likewise.
(TARGET_TOC_FUSION_INT): Macros for power9 fusion support.
(TARGET_TOC_FUSION_FP): Likewise.
* config/rs6000/rs6000.md (UNSPEC_FUSION_P9): New power9/toc
fusion unspecs.
(UNSPEC_FUSION_ADDIS): Likewise.
(QHSI mode iterator): New iterator for power9 fusion.
(GPR_FUSION): Likewise.
(FPR_FUSION): Likewise.
(mod<mode>3): Add support for ISA 3.0
modulus instructions.
(umod<mode>3): Likewise.
(divmod peephole): Likewise.
(udivmod peephole): Likewise.
(ctz<mode>2): Add support for ISA 3.0 count trailing zeros scalar
instructions.
(ctz<mode>2_h): Likewise.
(ashdi3_extswsli): Add support for ISA 3.0 EXTSWSLI instruction.
(ashdi3_extswsli_dot): Likewise.
(ashdi3_extswsli_dot2): Likewise.
(power9 fusion splitter): New power9/toc fusion support.
(toc_fusionload_<mode>): Likewise.
(toc_fusionload_di): Likewise.
(fusion_gpr_load_<mode>): Update predicate function.
(power9 fusion peephole2s): New power9/toc fusion support.
(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
(fusion_fpr_<P:mode>_<FPR_FUSION:mode>_load): Likewise.
(fusion_fpr_<P:mode>_<FPR_FUSION:mode>_store): Likewise.
(fusion_p9_<mode>_constant): Likewise.
[gcc/testsuite]
2015-11-08 Michael Meissner <meissner@linux.vnet.ibm.com>
* lib/target-supports.exp (check_p8vector_hw_available): Split
long line.
(check_vsx_hw_available): Likewise.
(check_p9vector_hw_available): Add new checks for ISA 3.0 hardware
support and for PowerPC float128 support.
(check_p9modulo_hw_available): Likewise.
(check_ppc_float128_sw_available): Likewise.
(check_ppc_float128_hw_available): Likewise.
(check_effective_target_powerpc_p9vector_ok): Likewise.
(check_effective_target_powerpc_p9modulo_ok): Likewise.
(check_effective_target_powerpc_float128_sw_ok): Likewise.
(check_effective_target_powerpc_float128_hw_ok): Likewise.
(is-effective-target): Add new PowerPc targets.
(is-effective-target-keyword): Likewise.
(check_vect_support_and_set_flags): If we have ISA 3.0 vector
instructions, use it.
* gcc.target/powerpc/mod-1.c: New test for ISA 3.0 instructions.
* gcc.target/powerpc/mod-2.c: Likewise.
* gcc.target/powerpc/ctz-1.c: Likewise.
* gcc.target/powerpc/ctz-2.c: Likewise.
* gcc.target/powerpc/extswsli-1.c: Likewise.
* gcc.target/powerpc/extswsli-2.c: Likewise.
* gcc.target/powerpc/extswsli-3.c: Likewise.
* gcc.target/powerpc/fusion.c (fusion_vector): Move to fusion2.c
and allow the test on PowerPC LE.
* gcc.target/powerpc/fusion2.c (fusion_vector): Likewise.
* gcc.target/powerpc/fusion3.c: New file, test power9 fusion.
* gcc.target/powerpc/float128-call.c: Use powerpc_float128_sw_ok
check instead of powerpc_vsx_ok.
* gcc.target/powerpc/float128-mix.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230066
138bc75d-0d04-0410-961f-
82ee72b054a4
sje [Mon, 9 Nov 2015 23:56:33 +0000 (23:56 +0000)]
2015-11-09 Steve Ellcey <sellcey@imgtec.com>
* optabs.c (prepare_libcall_arg): New function.
(expand_fixed_convert): Add call to prepare_libcall_arg.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230065
138bc75d-0d04-0410-961f-
82ee72b054a4
ebotcazou [Mon, 9 Nov 2015 23:32:48 +0000 (23:32 +0000)]
* gcc.dg/sso/*.c: Robustify dg-output directives.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230063
138bc75d-0d04-0410-961f-
82ee72b054a4
law [Mon, 9 Nov 2015 23:29:36 +0000 (23:29 +0000)]
[sched] Dump dependency graph to a dot file
* sched-int.h (dump_rgn_dependencies_dot): Declare
* sched-rgn.c (dump_rgn_dependencies_dot): New function
* print-rtl.h (print_insn): Add prototype
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230062
138bc75d-0d04-0410-961f-
82ee72b054a4
law [Mon, 9 Nov 2015 23:26:15 +0000 (23:26 +0000)]
Change behavior of -fsched-verbose option
* haifa-sched.c (setup_sched_dump): Don't redirect output to stderr.
* common.opt (-fsched-verbose): Set default value to 1.
* invoke.texi (-fsched-verbose): Update the option's description.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230061
138bc75d-0d04-0410-961f-
82ee72b054a4
ebotcazou [Mon, 9 Nov 2015 22:53:31 +0000 (22:53 +0000)]
* config/visium/visium.h (PRINT_OPERAND): Delete.
(PRINT_OPERAND_PUNCT_VALID_P): Likewise.
(PRINT_OPERAND_ADDRESS): Likewise.
* config/visium/visium.c (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Define
to...
(visium_print_operand_punct_valid_p): ...this. New function.
(TARGET_PRINT_OPERAND): Define to...
(print_operand): Rename to...
(visium_print_operand): ...this.
(TARGET_PRINT_OPERAND_ADDRESS): Define to...
(visium_output_address): Rename to...
(visium_print_operand_address): ...this.
(print_operand_address): Delete.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230060
138bc75d-0d04-0410-961f-
82ee72b054a4
ebotcazou [Mon, 9 Nov 2015 22:40:44 +0000 (22:40 +0000)]
PR middle-end/68259
* tree.h (reverse_storage_order_for_component_p) <COMPONENT_REF>:
Check that the type of the first operand is an aggregate type.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230056
138bc75d-0d04-0410-961f-
82ee72b054a4
nathan [Mon, 9 Nov 2015 21:56:42 +0000 (21:56 +0000)]
* omp-low.c: Fix some OpenACC comment typos.
(lower_reduction_clauses): Remove BUILT_IN_GOACC_GET_THREAD_NUM call.
* omp-builtins.def (BUILT_IN_GOACC_GET_THREAD_NUM,
BUILT_IN_GOACC_GET_NUM_THREADS): Delete.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230054
138bc75d-0d04-0410-961f-
82ee72b054a4
fdumont [Mon, 9 Nov 2015 21:10:18 +0000 (21:10 +0000)]
2015-11-09 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_algo.h
(partial_sort_copy): Instantiate std::iterator_traits only if concept
checks.
(lower_bound): Likewise.
(upper_bound): Likewise.
(equal_range): Likewise.
(binary_search): Likewise.
* include/bits/stl_heap.h (pop_heap): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230052
138bc75d-0d04-0410-961f-
82ee72b054a4
uros [Mon, 9 Nov 2015 20:06:57 +0000 (20:06 +0000)]
* config/i386/i386.md (*strmovqi_1): Fix insn enable condition.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230050
138bc75d-0d04-0410-961f-
82ee72b054a4
law [Mon, 9 Nov 2015 19:56:57 +0000 (19:56 +0000)]
Re: [PATCH] Minor refactoring in tree-ssanames.c & freelists verifier
* tree-ssanames.c (verify_ssaname_freelists): Simplify check for
being in gimple/ssa form. Remove redundant check for SSA_NAME.
Fix comment typo.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230049
138bc75d-0d04-0410-961f-
82ee72b054a4
uros [Mon, 9 Nov 2015 19:49:44 +0000 (19:49 +0000)]
* g++.dg/cilk-plus/CK/pr66326.cc: Do not include cilk.h.
(main): Use _Cilk_spawn instead of cilk_spawn.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230048
138bc75d-0d04-0410-961f-
82ee72b054a4
tschwinge [Mon, 9 Nov 2015 17:53:02 +0000 (17:53 +0000)]
Resolve DejaGnu hard stop
gcc/testsuite/
* gcc.target/i386/addr-space-3.c: Fix quoting in dg-final
scan-assembler directive.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230038
138bc75d-0d04-0410-961f-
82ee72b054a4
torvald [Mon, 9 Nov 2015 17:30:24 +0000 (17:30 +0000)]
Support sized delete.
This adds transactional clones of the sized version of operator delete.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230036
138bc75d-0d04-0410-961f-
82ee72b054a4
meissner [Mon, 9 Nov 2015 16:56:22 +0000 (16:56 +0000)]
2015-11-09 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.opt (-mpower9-fusion): Add new switches for
ISA 3.0 (power9).
(-mpower9-vector): Likewise.
(-mpower9-dform): Likewise.
(-mpower9-minmax): Likewise.
(-mtoc-fusion): Likewise.
(-mmodulo): Likewise.
(-mfloat128-hardware): Likewise.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Add option
mask for ISA 3.0 (power9).
(POWERPC_MASKS): Add new ISA 3.0 switches.
(power9 cpu): Add power9 cpu.
* config/rs6000/rs6000.h (ASM_CPU_POWER9_SPEC): Add support for
power9.
(ASM_CPU_SPEC): Likewise.
(EXTRA_SPECS): Likewise.
* config/rs6000/rs6000-opts.h (enum processor_type): Add
PROCESSOR_POWER9.
* config/rs6000/rs6000.c (power9_cost): Initial cost setup for
power9.
(rs6000_debug_reg_global): Add support for power9 fusion.
(rs6000_setup_reg_addr_masks): Cache mode size.
(rs6000_option_override_internal): Until real power9 tuning is
added, use -mtune=power8 for -mcpu=power9.
(rs6000_setup_reg_addr_masks): Do not allow pre-increment,
pre-decrement, or pre-modify on SFmode/DFmode if we allow the use
of Altivec registers.
(rs6000_option_override_internal): Add support for ISA 3.0
switches.
(rs6000_loop_align): Add support for power9 cpu.
(rs6000_file_start): Likewise.
(rs6000_adjust_cost): Likewise.
(rs6000_issue_rate): Likewise.
(insn_must_be_first_in_group): Likewise.
(insn_must_be_last_in_group): Likewise.
(force_new_group): Likewise.
(rs6000_register_move_cost): Likewise.
(rs6000_opt_masks): Likewise.
* config/rs6000/rs6000.md (cpu attribute): Add power9.
* config/rs6000/rs6000-tables.opt: Regenerate.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
_ARCH_PWR9 if power9 support is available.
* config/rs6000/aix61.h (ASM_CPU_SPEC): Add power9.
* config/rs6000/aix53.h (ASM_CPU_SPEC): Likewise.
* configure.ac: Determine if the assembler supports the ISA 3.0
instructions.
* config.in (HAVE_AS_POWER9): Likewise.
* configure: Regenerate.
* doc/invoke.texi (RS/6000 and PowerPC Options): Document ISA 3.0
switches.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230031
138bc75d-0d04-0410-961f-
82ee72b054a4
ktkachov [Mon, 9 Nov 2015 15:55:56 +0000 (15:55 +0000)]
[AArch64][cleanup] Remove uses of CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW
* config/aarch64/aarch64.c (aarch64_simd_valid_immediate):
Remove integer CONST_DOUBLE handling. It should never occur.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230030
138bc75d-0d04-0410-961f-
82ee72b054a4
ktkachov [Mon, 9 Nov 2015 15:53:26 +0000 (15:53 +0000)]
[AArch64] PR target/68129: Define TARGET_SUPPORTS_WIDE_INT
PR target/68129
* config/aarch64/aarch64.h (TARGET_SUPPORTS_WIDE_INT): Define to 1.
* config/aarch64/aarch64.c (aarch64_print_operand, CONST_DOUBLE):
Delete VOIDmode case. Assert that mode is not VOIDmode.
* config/aarch64/predicates.md (const0_operand): Remove const_double
match.
* gcc.dg/pr68129_1.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230029
138bc75d-0d04-0410-961f-
82ee72b054a4
marxin [Mon, 9 Nov 2015 15:47:01 +0000 (15:47 +0000)]
Fix memory leaks in IPA.
* ipa-inline-analysis.c (estimate_function_body_sizes): Call
body_info release function.
* ipa-prop.c (ipa_release_body_info): New function.
(ipa_analyze_node): Call the function.
(ipa_node_params::~ipa_node_params): Release known_csts.
* ipa-prop.h (ipa_release_body_info): Declare.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230028
138bc75d-0d04-0410-961f-
82ee72b054a4
marxin [Mon, 9 Nov 2015 15:45:59 +0000 (15:45 +0000)]
Fix memory leaks and use a pool_allocator
* gcc.c (record_temp_file): Release name string.
* ifcvt.c (noce_convert_multiple_sets): Use auto_vec instead
of vec.
* lra-lives.c (free_live_range_list): Utilize
lra_live_range_pool for allocation and deallocation.
(create_live_range): Likewise.
(copy_live_range): Likewise.
(lra_merge_live_ranges): Likewise.
(remove_some_program_points_and_update_live_ranges): Likewise.
(lra_create_live_ranges_1): Release point_freq_vec that can
be not freed from previous iteration of the function.
* tree-eh.c (lower_try_finally_switch): Use auto_vec instead of
vec.
* tree-sra.c (sra_deinitialize): Release all vectors in
base_access_vec.
* tree-ssa-dom.c (free_dom_edge_info): Make the function extern.
* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges):
Release edge_info for a removed edge.
(thread_through_all_blocks): Free region vector.
* tree-ssa.h (free_dom_edge_info): Declare function extern.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230027
138bc75d-0d04-0410-961f-
82ee72b054a4
krebbel [Mon, 9 Nov 2015 15:35:10 +0000 (15:35 +0000)]
[PR debug/67192] Further fix C loops' back-jump location
gcc/c/ChangeLog:
PR debug/67192
* c-typeck.c (c_finish_loop): For unconditional loops, set the
location of the backward-goto to the start of the loop body.
gcc/testsuite/ChangeLog:
PR debug/67192
* gcc.dg/guality/pr67192.c (f3, f4): New functions.
(main): Invoke them.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230024
138bc75d-0d04-0410-961f-
82ee72b054a4
krebbel [Mon, 9 Nov 2015 15:31:32 +0000 (15:31 +0000)]
[PR debug/67192] Fix C loops' back-jump location
gcc/c/ChangeLog:
PR debug/67192
* c-parser.c (c_parser_while_statement): Finish the loop before
parsing ahead for misleading indentation.
(c_parser_for_statement): Likewise.
gcc/testsuite/ChangeLog:
PR debug/67192
* gcc.dg/guality/pr67192.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230023
138bc75d-0d04-0410-961f-
82ee72b054a4
ienkovich [Mon, 9 Nov 2015 15:11:02 +0000 (15:11 +0000)]
gcc/
* optabs.c (expand_vec_cond_expr): Always get sign from type.
* tree.c (wide_int_to_tree): Support negative values for boolean.
(build_nonstandard_boolean_type): Use signed type for booleans.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230022
138bc75d-0d04-0410-961f-
82ee72b054a4
rguenth [Mon, 9 Nov 2015 14:47:09 +0000 (14:47 +0000)]
2015-11-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/68248
* tree-vect-generic.c (expand_vector_operations_1): Handle
scalar rhs2.
* gcc.dg/torture/pr68248.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230021
138bc75d-0d04-0410-961f-
82ee72b054a4
rguenth [Mon, 9 Nov 2015 12:59:17 +0000 (12:59 +0000)]
2015-11-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/56118
* tree-vectorizer.h (vect_find_last_scalar_stmt_in_slp): Declare.
* tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Export.
* tree-vect-data-refs.c (vect_slp_analyze_node_dependences): New
function.
(vect_slp_analyze_data_ref_dependences): Instead of computing
all dependences of the region DRs just analyze the code motions
SLP vectorization will perform. Remove SLP instances that
cannot have their store/load motions applied.
(vect_analyze_data_refs): Allow DRs without a vectype
in BB vectorization.
* gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c: Adjust.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230020
138bc75d-0d04-0410-961f-
82ee72b054a4
jules [Mon, 9 Nov 2015 12:16:55 +0000 (12:16 +0000)]
Machine modes for address printing.
* final.c (output_asm_insn): Pass VOIDmode to output_address.
(output_address): Add MODE argument. Pass to print_operand_address
hook.
* targhooks.c (default_print_operand_address): Add MODE argument.
* targhooks.h (default_print_operand_address): Update prototype.
* output.h (output_address): Update prototype.
* target.def (print_operand_address): Add MODE argument.
* config/vax/vax.c (print_operand_address): Pass VOIDmode to
output_address.
(print_operand): Pass access mode to output_address.
* config/mcore/mcore.c (mcore_print_operand_address): Add MODE
argument.
(mcore_print_operand): Update calls to mcore_print_operand_address.
* config/fr30/fr30.c (fr30_print_operand): Pass VOIDmode to
output_address.
* config/lm32/lm32.c (lm32_print_operand): Pass mode in calls to
output_address.
* config/tilegx/tilegx.c (output_memory_reference_mode): Remove
global.
(tilegx_print_operand): Don't set above global. Update calls to
output_address.
(tilegx_print_operand_address): Add MODE argument. Use instead of
output_memory_reference_mode global.
* config/frv/frv.c (frv_print_operand_address): Add MODE argument.
(frv_print_operand): Pass mode to frv_print_operand_address calls.
* config/mn10300/mn10300.c (mn10300_print_operand): Pass mode to
output_address.
* config/cris/cris.c (cris_print_operand_address): Add MODE
argument.
(cris_print_operand): Pass mode to output_address calls.
* config/spu/spu.c (print_operand): Pass mode to output_address
calls.
* config/aarch64/aarch64.h (aarch64_print_operand)
(aarch64_print_operand_address): Remove prototypes.
* config/aarch64/aarch64.c (aarch64_memory_reference_mode): Delete
global.
(aarch64_print_operand): Make static. Update calls to
output_address.
(aarch64_print_operand_address): Add MODE argument. Use instead of
aarch64_memory_reference_mode global.
(TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS): Define target
hooks.
* config/aarch64/aarch64.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS):
Delete macro definitions.
* config/pa/pa.c (pa_print_operand): Pass mode in output_address
calls.
* config/xtensa/xtensa.c (print_operand): Pass mode in
output_address calls.
* config/h8300/h8300.c (h8300_print_operand_address): Add MODE
argument.
(h83000_print_operand): Update calls to h8300_print_operand_address
and output_address.
* config/ia64/ia64.c (ia64_print_operand_address): Add MODE
argument.
* config/tilepro/tilepro.c (output_memory_reference_mode): Delete
global.
(tilepro_print_operand): Pass mode to output_address.
(tilepro_print_operand_address): Add MODE argument. Use instead of
output_memory_reference_mode.
* config/nvptx/nvptx.c (output_decl_chunk, nvptx_assemble_integer)
(nvptx_output_call_insn, nvptx_print_address_operand): Pass VOIDmode
to output_address calls.
(nvptx_print_operand_address): Add MODE argument.
* config/alpha/alpha.c (print_operand): Pass mode argument in
output_address calls.
* config/m68k/m68k.c (print_operand): Pass mode argument in
output_address call.
* config/avr/avr.c (avr_print_operand_address): Add MODE argument.
(avr_print_operand): Update calls to avr_print_operand_address.
* config/sparc/sparc.c (sparc_print_operand_address): Add MODE
argument. Update calls to output_address.
(sparc_print_operand): Pass mode to output_address.
* config/iq2000/iq2000.c (iq2000_print_operand_address): Add MODE
argument.
(iq2000_print_operand): Pass mode in output_address calls.
* config/stormy16/stormy16.c (xstormy16_print_operand_address): Add
MODE argument.
(xstormy16_print_operand): Pass mode to
xstormy16_print_operand_address calls.
* config/mips/mips.c (mips_print_operand): Update calls to
output_address.
(mips_print_operand_address): Add MODE argument.
* config/epiphany/epiphany.c (epiphany_print_operand): Update calls
to output_address.
(epiphany_print_operand_address): Add MODE argument. Add FIXME note.
* config/pdp11/pdp11.c (pdp11_asm_print_operand): Update call to
output_address.
* config/rx/rx.c (rx_print_operand_address): Add MODE argument.
(rx_print_operand): Update calls to output_address,
rx_print_operand_address.
* config/nds32/nds32.c (nds32_print_operand): Update calls to
output_address.
(nds32_print_operand_address): Add MODE argument.
* config/rs6000/rs6000.c (print_operand): Pass mem mode to
output_address calls.
* config/c6x/c6x.c (print_address_offset): Pass mem mode to
output_address call.
(c6x_print_address_operand): Update calls to output_address.
(c6x_print_operand_address): Pass mode to above.
* config/v850/v850.c (v850_print_operand_address): Add MODE
argument.
(v850_print_operand): Pass mode to v850_print_operand_address,
output_address.
* config/mmix/mmix.c (mmix_print_operand_address): Add MODE
argument.
(mmix_print_operand): Pass mode in output_address calls.
* config/sh/sh.c (sh_print_operand_address): Add MODE argument.
(sh_print_operand): Pass mem mode to output_address,
sh_print_operand_address.
* config/cr16/cr16.c (cr16_print_operand_address): Add MODE
argument.
(cr16_print_operand): Pass mode to output_address,
cr16_print_operand_address.
* config/bfin/bfin.c (print_address_operand): Pass VOIDmode to
output_address.
* config/microblaze/microblaze.c (print_operand): Pass mode to
output_address.
* config/nios2/nios2.c (nios2_print_operand): Pass VOIDmode to
output_address.
(nios2_print_operand_address): Add MODE argument. Update call to
nios2_print_operand_address.
* config/s390/s390.c (print_operand): Pass mode to output_address.
* config/m32c/m32c.c (m32c_print_operand_address): Add MODE
argument.
* config/arc/arc.c (arc_print_operand): Pass VOIDmode to
output_address.
* config/arm/arm.c (arm_print_operand_address): Add MODE argument.
Use instead of output_memory_reference_mode.
(output_memory_reference_mode): Delete global.
(arm_print_operand): Pass mem mode to output_address.
* config/m32r/m32r.c (m32r_print_operand_address): Add MODE
argument.
(m32r_print_operand): Pass mode to output_address.
* config/msp430/msp430.c (msp430_print_operand_addr): Add MODE
argument.
(msp430_print_operand): Pass mode to msp430_print_operand_addr.
* config/i386/i386.c (ix86_print_operand): Pass mode to
output_address calls.
(ix86_print_operand_address): Add MODE argument.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230016
138bc75d-0d04-0410-961f-
82ee72b054a4
ebotcazou [Mon, 9 Nov 2015 12:14:07 +0000 (12:14 +0000)]
PR middle-end/68251
* tree-core.h (REF_REVERSE_STORAGE_ORDER): Move around.
* tree.h (REF_REVERSE_STORAGE_ORDER): Change to default_def_flag.
* tree-streamer-in.c (unpack_ts_base_value_fields): Adjust.
* tree-streamer-out.c (pack_ts_base_value_fields): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230015
138bc75d-0d04-0410-961f-
82ee72b054a4
ktkachov [Mon, 9 Nov 2015 11:40:17 +0000 (11:40 +0000)]
[RTL-ifcvt] PR rtl-optimization/67749: Do not emit separate SET insn in IF-ELSE case
PR rtl-optimization/67749
* ifcvt.c (noce_try_cmove_arith): Do not emit move in IF-ELSE
case before emitting the two blocks. Instead modify the register
in the corresponding final insn of the basic block.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230014
138bc75d-0d04-0410-961f-
82ee72b054a4
ro [Mon, 9 Nov 2015 11:33:30 +0000 (11:33 +0000)]
Support init priority on Solaris
libgcc:
* config/ia64/crtbegin.S: Check HAVE_INITFINI_ARRAY_SUPPORT
value.
* config/ia64/crtend.S: Likewise.
gcc:
* acinclude.m4 (gcc_AC_INITFINI_ARRAY): Allow for differences in
assembler syntax.
Support Solaris ld.
Define HAVE_INITFINI_ARRAY_SUPPORT as 0/1.
* config/sol2.h (SUPPORTS_INIT_PRIORITY): Define to
HAVE_INITFINI_ARRAY_SUPPORT.
* config/initfini-array.h: Check HAVE_INITFINI_ARRAY_SUPPORT
value.
* configure.ac (gcc_cv_as_sparc_nobits): Remove.
* config/sparc/sparc.c (sparc_solaris_elf_asm_named_section):
Don't check HAVE_AS_SPARC_NOBITS.
Heed SECTION_NOTYPE.
* configure: Regenerate.
* config.in: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230013
138bc75d-0d04-0410-961f-
82ee72b054a4
ebotcazou [Mon, 9 Nov 2015 10:45:00 +0000 (10:45 +0000)]
PR middle-end/68253
* fold-const.c (fold_truth_andor_1): Initialize new variables to 0.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230011
138bc75d-0d04-0410-961f-
82ee72b054a4
thopre01 [Mon, 9 Nov 2015 10:29:06 +0000 (10:29 +0000)]
2015-11-09 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
* gcc.target/arm/thumb2-slow-flash-data.c: Add missing typespec for
labelref and check use of constant pool by looking for .word and
similar directives.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230010
138bc75d-0d04-0410-961f-
82ee72b054a4
ienkovich [Mon, 9 Nov 2015 10:12:34 +0000 (10:12 +0000)]
libcilkrts/
2015-11-09 Igor Zamyatin <igor.zamyatin@intel.com>
PR target/66326
* runtime/config/x86/os-unix-sysdep.c (sysdep_save_fp_ctrl_state):
Use fnstcw instead fnstsw.
gcc/testsuite
2015-11-09 Igor Zamyatin <igor.zamyatin@intel.com>
PR target/66326
* g++.dg/cilk-plus/CK/pr66326.cc: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230008
138bc75d-0d04-0410-961f-
82ee72b054a4
rth [Mon, 9 Nov 2015 09:20:21 +0000 (09:20 +0000)]
i386: Add address spaces for fs/gs segments and tls
* config/i386/i386-c.c (ix86_target_macros): Define __SEG_FS,
__SEG_GS, __SEG_TLS.
(ix86_register_pragmas): Register address spaces __seg_fs,
__seg_gs, __seg_tls.
* config/i386/i386-protos.h (enum ix86_address_seg): Remove.
(ADDR_SPACE_SEG_FS, ADDR_SPACE_SEG_GS, ADDR_SPACE_SEG_TLS): New.
(struct ix86_address): Use addr_space_t instead of ix86_address_seg.
* config/i386/i386.c (ix86_decompose_address): Likewise.
(ix86_legitimate_address_p): Likewise.
(memory_address_length): Likewise. Check mem address space too.
(ix86_print_operand): Use ix86_print_operand_address_as.
(ix86_print_operand_address_as): Rename from
ix86_print_operand_address, add new addr_space_t parameter.
Validate that either the parameter or the ix86_address segment
is default address space. Handle ADDR_SPACE_SEG_TLS.
(ix86_print_operand_address): New.
(ix86_addr_space_subset_p, TARGET_ADDR_SPACE_SUBSET_P): New.
(ix86_addr_space_convert, TARGET_ADDR_SPACE_CONVERT): New.
(ix86_addr_space_debug, TARGET_ADDR_SPACE_DEBUG): New.
(ix86_addr_space_zero_address_valid): New.
(TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): New.
* config/i386/i386.h (DEFAULT_TLS_SEG_REG): Use addr_space_t constants.
* config/i386/rdos.h (DEFAULT_TLS_SEG_REG): Likewise.
* config/i386/predicates.md (address_no_seg_operand): Likewise.
(vsib_address_operand): Likewise.
(address_mpx_no_base_operand): Likewise.
(address_mpx_no_index_operand): Likewise.
* doc/extend.texi (x86 Named Address Spaces): New section.
* gcc.target/i386/addr-space-1.c: New test.
* gcc.target/i386/addr-space-2.c: New test.
* gcc.target/i386/addr-space-3.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230003
138bc75d-0d04-0410-961f-
82ee72b054a4
rth [Mon, 9 Nov 2015 09:19:59 +0000 (09:19 +0000)]
i386: Disallow address spaces with string insns
While cmps and movs allow a segment override of the ds:esi
source, the es:edi source/destination cannot be overriden.
Simplify things in the backend for now by disallowing
segments for string insns entirely.
* config/i386/i386.c (ix86_check_no_addr_space): New.
(decide_alg): Add have_as parameter.
(alg_usable_p): Likewise; disable rep algorithms if set.
(ix86_expand_set_or_movmem): Notice if either MEM has a
non-default address space.
(ix86_expand_strlen): Likewise.
* config/i386/i386.md (strmov, strset): Likewise.
(*strmovdi_rex_1): Use ix86_check_no_addr_space.
(*strmovsi_1, *strmovqi_1, *rep_movdi_rex64, *rep_movsi, *rep_movqi,
*strsetdi_rex_1, *strsetsi_1, *strsethi_1, *strsetqi_1,
*rep_stosdi_rex64, *rep_stossi, *rep_stosqi, *cmpstrnqi_nz_1,
*cmpstrnqi_1, *strlenqi_1): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230002
138bc75d-0d04-0410-961f-
82ee72b054a4
rth [Mon, 9 Nov 2015 09:19:40 +0000 (09:19 +0000)]
i386: Handle address spaces in movabs patterns
* config/i386/i386.md (*movabs<mode>_1): Print the full memory rtx.
(*movabs<mode>_2): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230001
138bc75d-0d04-0410-961f-
82ee72b054a4
rth [Mon, 9 Nov 2015 09:19:19 +0000 (09:19 +0000)]
Add hook for modifying debug info for address spaces
* dwarf2out.c (modified_type_die): Pass the address space number
through TARGET_ADDR_SPACE_DEBUG to produce the dwarf address class.
* target.def (TARGET_ADDR_SPACE_DEBUG): New.
* targhooks.c (default_addr_space_debug): New.
* targhooks.h (default_addr_space_debug): Declare.
* doc/tm.texi.in (TARGET_ADDR_SPACE_DEBUG): Mark it.
* doc/tm.texi: Rebuild.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230000
138bc75d-0d04-0410-961f-
82ee72b054a4
rth [Mon, 9 Nov 2015 09:18:59 +0000 (09:18 +0000)]
Add TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID
* gimple.c (check_loadstore): Return false when 0 is a valid address.
* fold-const.c (const_unop) [ADDR_SPACE_CONVERT_EXPR]: Do not fold
null when 0 is valid in the source address space.
* target.def (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): New.
* targhooks.c (default_addr_space_zero_address_valid): New.
* targhooks.h (default_addr_space_zero_address_valid): Declare.
* doc/tm.texi.in (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Mark it.
* doc/tm.texi: Rebuild.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229999
138bc75d-0d04-0410-961f-
82ee72b054a4
rth [Mon, 9 Nov 2015 09:18:35 +0000 (09:18 +0000)]
Avoid CSE of MEMs in different address spaces
* cselib.c (add_mem_for_addr): Compare address spaces when
matching memories.
(cselib_lookup_mem): Likewise.
* fold-const.c (operand_equal_p): Check address spaces of
pointer types before checking integer constants.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229998
138bc75d-0d04-0410-961f-
82ee72b054a4
rth [Mon, 9 Nov 2015 09:18:16 +0000 (09:18 +0000)]
PR tree-opt/66768
* tree-ssa-address.c (create_mem_ref_raw): Use a pointer of
the correct type for the base.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229997
138bc75d-0d04-0410-961f-
82ee72b054a4
law [Mon, 9 Nov 2015 09:02:27 +0000 (09:02 +0000)]
[PATCH] Minor refactoring in tree-ssanames.c & freelists verifier
* tree-into-ssa.c (names_to_release): No longer static.
* tree-into-ssa.h (names_to_release): Declare.
* tree-ssanames.c (verify_ssaname_freelists): New debug function.
(release_free_names_and_compact_live_names): New function extracted
from pass_release_ssa_names::execute.
(pass_release_ssa_names::execute): Use it.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229995
138bc75d-0d04-0410-961f-
82ee72b054a4
kargl [Mon, 9 Nov 2015 05:50:24 +0000 (05:50 +0000)]
2015-11-08 Steven g. Kargl <kargl@gcc.gnu.org>
PR fortran/68053
* decl.c (add_init_expr_to_sym): Try to reduce initialization expression
before testing for a constant value.
2015-11-08 Steven g. Kargl <kargl@gcc.gnu.org>
PR fortran/68053
* gfortran.dg/pr68053.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229992
138bc75d-0d04-0410-961f-
82ee72b054a4
amodra [Mon, 9 Nov 2015 04:54:15 +0000 (04:54 +0000)]
Configury changes for obstack optimization
Missed from last patch
* config.in: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229991
138bc75d-0d04-0410-961f-
82ee72b054a4
amodra [Mon, 9 Nov 2015 04:32:08 +0000 (04:32 +0000)]
Configury changes for obstack optimization
* configure.ac: Check size of size_t.
* configure: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229990
138bc75d-0d04-0410-961f-
82ee72b054a4
amodra [Mon, 9 Nov 2015 04:30:26 +0000 (04:30 +0000)]
Silence obstack.c -Wc++compat warning
* obstack.c (_obstack_newchunk): Silence -Wc++compat warning.
(_obstack_begin_worker): Likewise. Move assignment to h->chunk
after alloc failure check.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229989
138bc75d-0d04-0410-961f-
82ee72b054a4
amodra [Mon, 9 Nov 2015 04:28:21 +0000 (04:28 +0000)]
Modify obstack.[hc] to avoid having to include other gnulib files
Using the standard gnulib obstack source requires importing quite a
lot of other files from gnulib, and requires build changes.
include/
* obstack.h (__attribute_pure__): Expand _GL_ATTRIBUTE_PURE.
libiberty/
* obstack.c (__alignof__): Expand alignof_type from alignof.h.
(obstack_exit_failure): Don't use exitfail.h.
(_): Include libintl.h when HAVE_LIBINTL_H and nls enabled.
Provide default. Don't include gettext.h.
(_Noreturn): Define.
* obstacks.texi: Adjust node references to external libc info files.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229988
138bc75d-0d04-0410-961f-
82ee72b054a4
amodra [Mon, 9 Nov 2015 04:26:32 +0000 (04:26 +0000)]
Copy gnulib obstack files
This copies obstack.[ch] from gnulib, and updates the docs. The next
patch should be applied if someone repeats the import at a later date.
include/
* obstack.h: Import current gnulib file.
libiberty/
* obstack.c: Import current gnulib file.
* obstacks.texi: Updated doc, from glibc's manual/memory.texi.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229987
138bc75d-0d04-0410-961f-
82ee72b054a4
amodra [Mon, 9 Nov 2015 04:23:25 +0000 (04:23 +0000)]
Update libsanitizer obstack interceptors
New obstack uses sensible types, size_t instead of int for length
params. Since libsanitizer does not use prototypes from obstack.h to
call the real functions, it's necessary to update the libsanitizer
function declarations emitted by the INTERCEPTOR macro.
* sanitizer_common/sanitizer_common_interceptors.inc: Update size
params for _obstack_begin_1, _obstack_begin, _obstack_newchunk
interceptors.
* configure.ac: Substitute OBSTACK_DEFS.
* asan/Makefile.am: Add OBSTACK_DEFS to DEFS.
* tsan/Makefile.am: Likewise.
* configure: Regenerate.
* Makefile.in: Regenerate.
* asan/Makefile.in: Regenerate.
* interception/Makefile.in: Regenerate.
* libbacktrace/Makefile.in: Regenerate.
* lsan/Makefile.in: Regenerate.
* sanitizer_common/Makefile.in: Regenerate.
* tsan/Makefile.in: Regenerate.
* ubsan/Makefile.in: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229986
138bc75d-0d04-0410-961f-
82ee72b054a4
amodra [Mon, 9 Nov 2015 04:19:43 +0000 (04:19 +0000)]
Correct libvtv obstack use
Fixes a compile error with both old and new obstacks due to
obstack_chunk_free having the wrong signature. Also, setting chunk
size and alignment before obstack_init is pointless since they are
overwritten.
* vtv_malloc.cc (obstack_chunk_free): Correct param type.
(__vtv_malloc_init): Use obstack_specify_allocation.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229985
138bc75d-0d04-0410-961f-
82ee72b054a4
amodra [Mon, 9 Nov 2015 04:17:53 +0000 (04:17 +0000)]
New obstack_next_free is not an lvalue
New obstack.h casts obstack_next_free to (void *), resulting in it
being a non-lvalue, and warnings on pointer arithmetic.
gcc/
* gensupport.c (add_mnemonic_string): Make len param a size_t.
(gen_mnemonic_setattr): Make "size" var a size_t. Use
obstack_blank_fast to shrink obstack. Cast obstack_next_free
return value.
gcc/objc/
* objc-encoding.c (encode_aggregate_within): Cast obstack_next_free
return value.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229984
138bc75d-0d04-0410-961f-
82ee72b054a4
segher [Mon, 9 Nov 2015 03:57:19 +0000 (03:57 +0000)]
Fix bb-reorder problem with degenerate cond_jump (PR68182)
The code mistakenly thinks any cond_jump has two successors. This is
not true if both destinations are the same, as can happen with weird
patterns as in the PR.
PR rtl-optimization/68182
* gcc/bb-reorder.c (reorder_basic_blocks_simple): Treat a conditional
branch with only one successor just like unconditional branches.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229983
138bc75d-0d04-0410-961f-
82ee72b054a4
law [Mon, 9 Nov 2015 03:19:09 +0000 (03:19 +0000)]
[PATCH] Remove backedge handling support in tree-ssa-threadupdate.c
* tree-ssa-threadupdate.c (register_jump_thraed): Assert that a
non-FSM path has no edges marked with EDGE_DFS_BACK.
(ssa_redirect_edges): No longer call mark_loop_for_removal.
(thread_single_edge, def_split_header_continue_p): Remove.
(bb_ends_with_multiway_branch): Likewise.
(thread_through_loop_header): Remove cases of threading from
latch through the header. Simplify knowing we won't thread
the latch.
(thread_through_all_blocks): Simplify knowing that only the FSM
threader needs to handle backedges.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229982
138bc75d-0d04-0410-961f-
82ee72b054a4
gccadmin [Mon, 9 Nov 2015 00:16:11 +0000 (00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229980
138bc75d-0d04-0410-961f-
82ee72b054a4
hubicka [Sun, 8 Nov 2015 19:14:29 +0000 (19:14 +0000)]
* g++.dg/lto/pr68057_0.C: Fix testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229968
138bc75d-0d04-0410-961f-
82ee72b054a4
vondele [Sun, 8 Nov 2015 19:12:53 +0000 (19:12 +0000)]
Move tests depending on graphite to correct subdirectory.
2015-11-08 Joost VandeVondele <vondele@gcc.gnu.org>
* gfortran.dg/PR67518.f90: move from here...
* gfortran.dg/graphite/PR67518.f90: to here.
* gfortran.dg/PR53852.f90: move from here...
* gfortran.dg/graphite/PR53852.f90: to here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229967
138bc75d-0d04-0410-961f-
82ee72b054a4
ebotcazou [Sun, 8 Nov 2015 18:33:42 +0000 (18:33 +0000)]
Merge of the scalar-storage-order branch.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229965
138bc75d-0d04-0410-961f-
82ee72b054a4
msebor [Sun, 8 Nov 2015 17:53:51 +0000 (17:53 +0000)]
Clean up fallout on ILP32 from r229831.
gcc/
PR c++/67942
* cp/init.c (warn_placement_new_too_small): Convert integer
operand of POINTER_PLUS_EXPR to ssize_t to determine its signed
value.
c-family/
* c.opt (Wplacement-new): Add a period to the end of
a sentence.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229959
138bc75d-0d04-0410-961f-
82ee72b054a4
vehre [Sun, 8 Nov 2015 17:37:42 +0000 (17:37 +0000)]
gcc/fortran/ChangeLog:
2015-11-08 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/68218
* trans-array.c (gfc_array_init_size): Add gfc_evaluate_now() when
array spec in allocate is a function call.
gcc/testsuite/ChangeLog:
2015-11-08 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/68218
* gfortran.dg/allocate_with_arrayspec_1.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229956
138bc75d-0d04-0410-961f-
82ee72b054a4
kargl [Sun, 8 Nov 2015 17:25:16 +0000 (17:25 +0000)]
2015-11-08 Steven G. Kargl <kargl@gc.gnu.org>
PR fortran/68224
* array.c (match_array_element_spec): Check of invalid NULL().
While here, fix nearby comments.
2015-11-08 Steven G. Kargl <kargl@gc.gnu.org>
PR fortran/68224
* gfortran.dg/pr68224.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229955
138bc75d-0d04-0410-961f-
82ee72b054a4
pault [Sun, 8 Nov 2015 16:47:58 +0000 (16:47 +0000)]
2015-11-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/68196
* class.c (has_finalizer_component): Prevent infinite recursion
through this function if the derived type and that of its
component are the same.
* trans-types.c (gfc_get_derived_type): Do the same for proc
pointers by ignoring the explicit interface for the component.
PR fortran/66465
* check.c (same_type_check): If either of the expressions is
BT_PROCEDURE, use the typespec from the symbol, rather than the
expression.
2015-11-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/68196
* gfortran.dg/proc_ptr_47.f90: New test.
PR fortran/66465
* gfortran.dg/pr66465.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229954
138bc75d-0d04-0410-961f-
82ee72b054a4
clyon [Sun, 8 Nov 2015 07:59:31 +0000 (07:59 +0000)]
[AArch64] Fix vqtb[lx][234] on big-endian
Forgot to commit the new testcases:
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqtbX.c
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229946
138bc75d-0d04-0410-961f-
82ee72b054a4
gccadmin [Sun, 8 Nov 2015 00:16:11 +0000 (00:16 +0000)]
Daily bump.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229944
138bc75d-0d04-0410-961f-
82ee72b054a4
ebotcazou [Sat, 7 Nov 2015 22:34:20 +0000 (22:34 +0000)]
* config/sparc/sparc.opt (mfix-at697f): Add final period.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229941
138bc75d-0d04-0410-961f-
82ee72b054a4
danglin [Sat, 7 Nov 2015 22:22:33 +0000 (22:22 +0000)]
* gcc.dg/Wno-frame-address.c: Skip on hppa*-*-*.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229940
138bc75d-0d04-0410-961f-
82ee72b054a4
kargl [Sat, 7 Nov 2015 20:18:17 +0000 (20:18 +0000)]
2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68153
* check.c (gfc_check_reshape): Improve check for valid SHAPE argument.
2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68153
* gfortran.dg/pr68153.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229939
138bc75d-0d04-0410-961f-
82ee72b054a4
kargl [Sat, 7 Nov 2015 20:04:43 +0000 (20:04 +0000)]
2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68151
* match.c (match_case_selector): Check for invalid type.
2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68151
* gfortran.dg/pr68151.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229938
138bc75d-0d04-0410-961f-
82ee72b054a4
segher [Sat, 7 Nov 2015 19:44:21 +0000 (19:44 +0000)]
i386: Use the STC bb-reorder algorithm at -Os (PR67864)
For x86, STC still gives better results for optimise-for-size than
"simple" does. So use STC at -Os as well.
PR rtl-optimization/67864
* common/config/i386/i386-common.c (ix86_option_optimization_table)
<OPT_freorder_blocks_algorithm_>: Use REORDER_BLOCKS_ALGORITHM_STC
at -Os and up.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229937
138bc75d-0d04-0410-961f-
82ee72b054a4
tbsaunde [Sat, 7 Nov 2015 19:36:26 +0000 (19:36 +0000)]
replace BITS_PER_UNIT with __CHAR_BIT__ in target libs
libgcc/ChangeLog:
2015-11-07 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* config/visium/lib2funcs.c (__set_trampoline_parity): Use
__CHAR_BIT__ instead of BITS_PER_UNIT.
* fixed-bit.h: Likewise.
* fp-bit.h: Likewise.
* libgcc2.c (__popcountSI2): Likewise.
(__popcountDI2): Likewise.
* libgcc2.h: Likewise.
* libgcov.h: Likewise.
libobjc/ChangeLog:
2015-11-07 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
PR libobjc/24775
* encoding.c (_darwin_rs6000_special_round_type_align): Use
__CHAR_BIT__ instead of BITS_PER_UNIT.
(objc_sizeof_type): Likewise.
(objc_layout_structure): Likewise.
(objc_layout_structure_next_member): Likewise.
(objc_layout_finish_structure): Likewise.
(objc_layout_structure_get_info): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229936
138bc75d-0d04-0410-961f-
82ee72b054a4
dje [Sat, 7 Nov 2015 14:23:32 +0000 (14:23 +0000)]
* config/rs6000/atexit.c: New file.
* config/rs6000/t-aix-cxa (LIB2ADDEH): Build atexit.c.
* config/rs6000/libgcc-aix-cxa.ver (atexit): Add symbol to exports.
* config/rs6000/cxa_finalize.c
(catomic_compare_and_exchange_bool_acq): Negate return value.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229932
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 10:19:56 +0000 (10:19 +0000)]
Handle internal functions in is_tm_pure_call
The upcoming changes to use internal functions for things like sqrt
caused a failure in gcc.dg/tm/
20100610.c, because we were trying to get
call flags from the null gimple_call_fn of an IFN_SQRT call. We've been
making fairly heavy use of internal functions for a while now so I think
this might be latent.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* trans-mem.c (is_tm_pure_call): Use gimple_call_flags for
internal functions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229925
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 10:18:38 +0000 (10:18 +0000)]
Move #undef DEF_BUILTIN* to builtins.def
I was confused at first why tree-core.h was undefining DEF_BUILTIN_CHKP
before defining it, then undefining it again after including builtins.def.
This is because builtins.def provides a default definition of
DEF_BUILTIN_CHKP, but leaves it up to the caller to undefine it where
necessary. Similarly to the previous internal-fn.def patch, it seems
more obvious for builtins.def to #undef things unconditionally.
One argument might have been that keeping preprocessor stuff
out of the .def files makes it easier for non-cpp parsers. In practice
though we already have #ifs and multiline #defines, so single-line #undefs
should be easy in comparison.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/ada/
* gcc-interface/utils.c: Don't undef DEF_BUILTIN.
gcc/c-family/
* c-common.c: Don't undef DEF_BUILTIN.
gcc/jit/
* jit-builtins.c: Don't undef DEF_BUILTIN.
gcc/lto/
* lto-lang.c: Don't undef DEF_BUILTIN.
gcc/
* builtins.def: #undef DEF_BUILTIN and DEF_BUILTIN_CHKP
* builtins.c, genmatch.c, tree-core.h: Don't undef them here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229924
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 10:17:05 +0000 (10:17 +0000)]
Move #undef DEF_INTERNAL_FN to internal-fn.def
In practice the definition of DEF_INTERNAL_FN is never reused after
including internal-fn.def, so we might as well #undef it there.
This becomes more obvious with a later patch that adds other
DEF_INTERNAL_* directives, such as DEF_INTERNAL_OPTAB_FN.
If the includer doesn't care about the information carried in
these new directives, it can simply leave the macro undefined
and internals.def will provide a definition that forwards to
DEF_INTERNAL_FN. It doesn't make much sense for includers to have
to #undef macros that are defined by internals.def and it seems overly
complicated to get internals.def to undef macros only in the cases
where it provided a definition. Instead I went with the approach of
#undeffing all the DEF_INTERNAL_* macros unconditionally.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* internal-fn.def: #undef DEF_INTERNAL_FN at the end.
* internal-fn.c: Don't undef it here.
* tree-core.h: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229923
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 10:10:44 +0000 (10:10 +0000)]
Move const char * -> int/fp folds to fold-const-call.c
This patch moves folds that deal with constant string arguments and
return a constant integer or floating-point value. For example, it
handles strcmp ("foo", "bar") but not strstr ("foobar", "bar"),
which wouldn't currently be accepted by the gimple folders.
The builtins.c folding for strlen (via c_strlen) is a bit more general
than what the fold-const-call.c code does (and more general than we need
for the gimple folders). I've therefore left it as-is, even though it
partially duplicates the new code.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.c (fold_builtin_nan): Delete.
(fold_builtin_memcmp): Remove case where both arguments are constant.
(fold_builtin_strcmp, fold_builtin_strncmp): Likewise.
(fold_builtin_strspn, fold_builtin_strcspn): Likewise.
(fold_builtin_1): Remove BUILT_IN_NAN* handling.
* fold-const-call.c: Include fold-const.h.
(host_size_t_cst_p): New function.
(build_cmp_result, fold_const_builtin_nan): Likewise.
(fold_const_call_1): New function, split out from...
(fold_const_call): ...here (for all three interfaces). Handle
constant nan, nans, strlen, strcmp, strncmp, strspn and strcspn.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229922
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 10:08:31 +0000 (10:08 +0000)]
Move constant bitop and bswap folds to fold-const-call.c
The only folds left in builtins.c were for constants, so we can remove
the builtins.c handling entirely.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.c (fold_builtin_bitop, fold_builtin_bswap): Delete.
(fold_builtin_1): Don't call them.
* fold-const-call.c: Include tm.h.
(fold_const_call_ss): New variant for integer-to-integer folds.
(fold_const_call): Call it.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229921
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 10:05:51 +0000 (10:05 +0000)]
Handle constant fp classifications in fold-const-call.c
Move the constant "is finite", "is infinite" and "is nan" queries
to fold-const-call.c.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.c (fold_builtin_classify): Move constant cases to...
* fold-const-call.c (fold_const_call_ss): ...here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229920
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 10:01:52 +0000 (10:01 +0000)]
Move c_getstr to fold-const.c
Upcoming patches to fold-const-call.c want to use c_getstr, which is
currently defined in builtins.c. The function doesn't really do anything
related to built-ins, and I'd rather not make fold-const-call.c depend
on builtins.c and builtins.c depend on fold-const-call.c, so this patch
moves the function to fold-const.c instead.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.h (c_getstr): Move to...
* fold-const.h (c_getstr): ...here.
* builtins.c (c_getstr): Move to...
* fold-const.c (c_getstr): ...here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229919
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 10:00:31 +0000 (10:00 +0000)]
Don't treat rint as setting errno
builtins.def says that rint sets errno, but it looks like this might
be a mistake. C99 says that rint doesn't set errno and the builtins.c
expansion code doesn't try to keep errno up to date.
Perhaps this was because earlier versions of POSIX said that
rint sets errno on overflow:
http://pubs.opengroup.org/onlinepubs/
009695399/functions/rintf.html
However, this is another instance of the observation that "rounding
functions could never overflow" (because anything using exponents
that large is already integral). The page above also says that
differences with C99 are unintentional and the ERANGE clause has
been removed from later versions of POSIX:
http://pubs.opengroup.org/onlinepubs/
9699919799/functions/rint.html
Also, the version of POSIX that lists ERANGE for rint does the same
for nearbyint:
http://pubs.opengroup.org/onlinepubs/
009695399/functions/nearbyintf.html
and we already treat nearbyint as not setting errno. This too has been
clarified in later versions of POSIX:
http://pubs.opengroup.org/onlinepubs/
9699919799/functions/nearbyint.html
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.def (BUILTIN_RINT, BUILTIN_RINTF, BUILTIN_RINTL): Use
ATTR_MATHFN_FPROUNDING rather than ATTR_MATHFN_FPROUNDING_ERRNO.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229918
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 09:58:32 +0000 (09:58 +0000)]
Add -fno-math-errno to gcc.dg/lto/
20110201-1_0.c
At the moment the ECF_* flags for a gimple call to a built-in
function are derived from the function decl, which in turn is
derived from the global command-line options. So if the compiler
is run with -fno-math-errno, we always assume functions don't set
errno, regardless of local optimization options. Similarly if the
compiler is run with -fmath-errno, we always assume functions set errno.
This shows up in gcc.dg/lto/
20110201-1_0.c, where we compile
the file with -O0 and use -O2 -ffast-math for a specific function.
-O2 -ffast-math is enough for us to convert cabs to sqrt as hoped,
but because of the global -fmath-errno setting, we assume that the
call to sqrt is not pure or const and create vops for it. This makes
it appear to the gimple code that a simple sqrt optab isn't enough.
Later patches move more decisions about maths functions to gimple
and think that in this case we should use:
y = sqrt (x);
if (!(x >= 0))
sqrt (x); // to set errno.
This is being tracked as PR68235. For now the patch adds
-fno-math-errno to the dg-options for this test.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/testsuite/
PR tree-optimization/68235
* gcc.dg/lto/
20110201-1_0.c: Add -fno-math-errno.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229917
138bc75d-0d04-0410-961f-
82ee72b054a4
rsandifo [Sat, 7 Nov 2015 09:56:04 +0000 (09:56 +0000)]
Try to update dominance info in tree-call-cdce.c
The pass would free the dominance info after making a change, but it
should be pretty easy to keep the information up-to-date when the call
has no EH edges.
Tested on x86_64-linux-gnu, arm-linux-gnueabi and aarch64-linux-gnu.
gcc/
* tree-call-cdce.c (shrink_wrap_one_built_in_call): Try to update
the dominance info; free it if we can't.
(pass_call_cdce::execute): Don't free the dominance info here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229916
138bc75d-0d04-0410-961f-
82ee72b054a4
law [Sat, 7 Nov 2015 06:31:14 +0000 (06:31 +0000)]
[PATCH] Remove more backedge threading support
* tree-ssa-threadedge.c (dummy_simplify): Remove.
(thread_around_empty_blocks): Remove backedge_seen_p argument.
If we thread to a backedge, then return false. Update recursive
call to eliminate backedge_seen_p argument.
(thread_through_normal_block): Remove backedge_seen_p argument.
Remove backedge_seen_p argument from calls to
thread_around_empty_blocks. Remove checks on backedge_seen_p.
If we thread to a backedge, then return 0.
(thread_across_edge): Remove bookkeeping for backedge_seen. Don't
pass it to thread_through_normal_block or thread_through_empty_blocks.
For joiner handling, if we see a backedge, do not try normal
threading.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229911
138bc75d-0d04-0410-961f-
82ee72b054a4