aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2016-10-22re PR fortran/43366 ([OOP][F08] Intrinsic assign to polymorphic variable)Andre Vehreschild15-435/+904
gcc/fortran/ChangeLog: 2016-10-22 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/43366 PR fortran/51864 PR fortran/57117 PR fortran/61337 PR fortran/61376 * primary.c (gfc_expr_attr): For transformational functions on classes get the attrs from the class argument. * resolve.c (resolve_ordinary_assign): Remove error message due to feature implementation. Rewrite POINTER_ASSIGNS to ordinary ones when the right-hand side is scalar class object (with some restrictions). * trans-array.c (trans_array_constructor): Create the temporary from class' inner type, i.e., the derived type. (build_class_array_ref): Add support for class array's storage of the class object or the array descriptor in the decl saved descriptor. (gfc_conv_expr_descriptor): When creating temporaries for class objects add the class object's handle into the decl saved descriptor. (structure_alloc_comps): Use the common way to get the _data component. (gfc_is_reallocatable_lhs): Add notion of allocatable class objects. * trans-expr.c (gfc_find_and_cut_at_last_class_ref): Remove the only ref only when the expression's type is BT_CLASS. (gfc_trans_class_init_assign): Correctly handle class arrays. (gfc_trans_class_assign): Joined into gfc_trans_assignment_1. (gfc_conv_procedure_call): Support for class types as arguments. (trans_get_upoly_len): For unlimited polymorphics retrieve the _len component's tree. (trans_class_vptr_len_assignment): Catch all ways to assign the _vptr and _len components of a class object correctly. (pointer_assignment_is_proc_pointer): Identify assignments of procedure pointers. (gfc_trans_pointer_assignment): Enhance support for class object pointer assignments. (gfc_trans_scalar_assign): Removed assert. (trans_class_assignment): Assign to a class object. (gfc_trans_assignment_1): Treat class objects correctly. (gfc_trans_assignment): Propagate flags to trans_assignment_1. * trans-stmt.c (gfc_trans_allocate): Use gfc_trans_assignment now instead of copy_class_to_class. * trans-stmt.h: Function prototype removed. * trans.c (trans_code): Less special casing for class objects. * trans.h: Added flags to gfc_trans_assignment () prototype. gcc/testsuite/ChangeLog: 2016-10-22 Andre Vehreschild <vehre@gcc.gnu.org> Forgot to add on original commit. * gfortran.dg/coarray_alloc_comp_2.f08: New test. 2016-10-22 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/43366 PR fortran/57117 PR fortran/61337 * gfortran.dg/alloc_comp_class_5.f03: New test. * gfortran.dg/class_allocate_21.f90: New test. * gfortran.dg/class_allocate_22.f90: New test. * gfortran.dg/realloc_on_assign_27.f08: New test. From-SVN: r241439
2016-10-21aarch64-cores.def: Rewrite so IMP and PART are integer constants.Andrew Pinski3-65/+95
2016-10-21 Andrew Pinski <apinski@cavium.com> * config/aarch64/aarch64-cores.def: Rewrite so IMP and PART are integer constants. * config/aarch64/driver-aarch64.c (struct aarch64_core_data): Change implementer_id to unsigned char. Change part_no to unsigned int. (AARCH64_BIG_LITTLE): New define. (INVALID_IMP): New define. (INVALID_CORE): New define. (cpu_data): Change the last element's implementer_id and part_no to integers. (valid_bL_string_p): Rewrite to .. (valid_bL_core_p): this for integers instead of strings. (parse_field): New function. (contains_string_p): Rewrite to ... (contains_core_p): this for integers and only for the part_no. (host_detect_local_cpu): Rewrite handling of implementation and par num to be integers; simplifying the code. From-SVN: r241437
2016-10-22Daily bump.GCC Administrator1-1/+1
From-SVN: r241436
2016-10-21libgo: keep c0 and c1 out of runtime.incIan Lance Taylor1-1/+1
The constants named c0 and c1 turn up as macros in runtime.inc. This reportedly breaks building on Solaris 11, where there is a system struct that has a field named c1. The constants aren't needed by the runtime C code, so avoid the problem by grepping them out. Reviewed-on: https://go-review.googlesource.com/31730 From-SVN: r241432
2016-10-21libgo: leave Int64Align as 8 on 32-bit SPARCIan Lance Taylor1-1/+1
Verified by testing on SPARC Solaris. Reviewed-on: https://go-review.googlesource.com/31675 From-SVN: r241430
2016-10-21re PR tree-optimization/71947 (x ^ y not folded to 0 if x == y by DOM)Jeff Law4-3/+11
* PR tree-optimization/71947 * gcc.dg/tree-ssa/pr71947-4.c: Avoid x86 opcode. * gcc.dg/tree-ssa/pr71947-5.c: Likewise. * gcc.dg/tree-ssa/pr71947-6.c: Make it opt-in rather than opt-out. From-SVN: r241429
2016-10-21ADDR_EXPR and nonnullKugan Vivekanandarajah5-0/+86
ADDR_EXPR and nonnull gcc/ChangeLog: 2016-10-21 Kugan Vivekanandarajah <kuganv@linaro.org> * ipa-prop.c (ipa_compute_jump_functions_for_edge): Create nonzero value range for pointers in more cases. gcc/testsuite/ChangeLog: 2016-10-21 Kugan Vivekanandarajah <kuganv@linaro.org> * gcc.dg/ipa/vrp5.c: New test. * gcc.dg/ipa/vrp6.c: New test. From-SVN: r241428
2016-10-21runtime: copy lfstack code from Go 1.7 runtimeIan Lance Taylor1-1/+1
Note that lfstack_64bit.go was modified for Solaris support in a different, and better, way than the superseded lfstack.goc code. Reviewed-on: https://go-review.googlesource.com/31673 From-SVN: r241427
2016-10-21re PR c++/77656 (64-bit integral template parameter gets incorrectly sized ↵Jason Merrill7-38/+94
as 32-bits) PR c++/77656 * pt.c (convert_template_argument): Call convert_nontype_argument on value-dependent but not type-dependent arguments. (convert_nontype_argument): Handle value-dependent arguments. (canonicalize_expr_argument): New. (deducible_expression, unify): Skip CONVERT_EXPR. * error.c (dump_template_argument): Likewise. * mangle.c (write_expression): Likewise. From-SVN: r241425
2016-10-21* ptree.c (cxx_print_xnode) [TEMPLATE_PARM_INDEX]: Dump the decl.Jason Merrill2-0/+5
From-SVN: r241424
2016-10-21Really add the test this time...Wilco Dijkstra2-0/+25
testsuite/ * gcc.target/aarch64/test_frame_17.c: New test. From-SVN: r241421
2016-10-21Improve stack adjustment by reusing a temporary move immediate from the ↵Wilco Dijkstra3-25/+68
epilog... Improve stack adjustment by reusing a temporary move immediate from the epilog if the register is still valid in the epilog. This generates smaller code for leaf functions with a stack size of more then 4KB. gcc/ * config/aarch64/aarch64.c (aarch64_add_constant_internal): Add extra argument to allow emitting the move immediate. Use add/sub with positive immediate. (aarch64_add_constant): Add inline function. (aarch64_add_sp): Likewise. (aarch64_sub_sp): Likewise. (aarch64_expand_prologue): Call aarch64_sub_sp. (aarch64_expand_epilogue): Call aarch64_add_sp. Decide when to leave out move. (aarch64_output_mi_thunk): Call aarch64_add_constant. testsuite/ * gcc.target/aarch64/test_frame_17.c: New test. From-SVN: r241420
2016-10-21If the number of integer callee-saves is odd, any FP callee-saves use 8-byte ↵Wilco Dijkstra2-2/+22
aligned LDP/STP. If the number of integer callee-saves is odd, any FP callee-saves use 8-byte aligned LDP/STP. Since 16-byte alignment may be faster on some CPUs, align the FP callee-saves to 16 bytes and use the alignment gap for the last FP callee-save when possible. gcc/ * config/aarch64/aarch64.c (aarch64_layout_frame): Align FP callee-saves. From-SVN: r241419
2016-10-21re PR preprocessor/71681 (header.gcc file lookup is broken for -remap)Andris Pavenis7-0/+24
2016-10-21 Andris Pavenis <andris.pavenis@iki.fi> PR preprocessor/71681 * gcc.dg/cpp/pr71681-1.c: New testcase * gcc.dg/cpp/pr71681-2.c: Likewise * gcc.dg/cpp/remap/header.gcc: File for added test-cases * gcc.dg/cpp/remap/a/header.gcc: Likewise * gcc.dg/cpp/remap/a/t_1.h: Likewise * gcc.dg/cpp/remap/a/t_2.h: Likewise From-SVN: r241415
2016-10-21adxintrin.h (_subborrow_u32, [...]): Formatting fixes.Jakub Jelinek4-15/+22
* config/i386/adxintrin.h (_subborrow_u32, _addcarry_u32, _addcarryx_u32, _subborrow_u64, _addcarry_u64, _addcarryx_u64): Formatting fixes. * config/i386/rdseedintrin.h (_rdseed16_step, _rdseed32_step, _rdseed64_step): Likewise. * config/i386/tbmintrin.h (__bextri_u32): Likewise. From-SVN: r241412
2016-10-21re PR target/78057 (FAIL: gcc.target/i386/bmi-{4,5,6}.c)Jakub Jelinek4-0/+157
PR target/78057 * config/i386/i386.c: Include fold-const-call.h, tree-vrp.h and tree-ssanames.h. (ix86_fold_builtin): Fold IX86_BUILTIN_[LT]ZCNT{16,32,64} with INTEGER_CST argument. (ix86_gimple_fold_builtin): New function. (TARGET_GIMPLE_FOLD_BUILTIN): Define. * gcc.target/i386/pr78057.c: New test. From-SVN: r241411
2016-10-21dwarf2out.c (ranges_table): Change into vec<dw_ranges, va_gc> *.Jakub Jelinek2-68/+39
* dwarf2out.c (ranges_table): Change into vec<dw_ranges, va_gc> *. (ranges_by_label): Change into vec<dw_ranges_by_label, va_gc> *. (ranges_table_allocated, ranges_table_in_use, ranges_by_label_allocated, ranges_by_label_in_use, RANGES_TABLE_INCREMENT): Removed. (add_ranges_num): Use vec_safe_push into ranges_table. (add_ranges_by_labels): Use vec_safe_push into ranges_by_label. (output_ranges): Adjust for ranges_table and ranges_by_label conversion from arrays to vec. (add_high_low_attributes, dwarf2out_finish): Adjust for range_table conversion from arrays to vec. (dwarf2out_c_finalize): Don't clear ranges_table_allocated, ranges_table_in_use, ranges_by_label_allocated and ranges_by_label_in_use. Set ranges_by_label to NULL instead of 0. From-SVN: r241409
2016-10-21dwarf2out.c (gen_variable_die): Emit DW_AT_const_expr attribute if needed.Jakub Jelinek6-1/+36
* dwarf2out.c (gen_variable_die): Emit DW_AT_const_expr attribute if needed. Re-add origin_die variable and its initialization. cp/ * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_const_expr. testsuite/ * g++.dg/debug/dwarf2/constexpr-var-1.C: New test. From-SVN: r241408
2016-10-21gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns even for ↵Jakub Jelinek2-14/+22
-fstack-reuse=none, or for volatile vars etc. * gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns even for -fstack-reuse=none, or for volatile vars etc. From-SVN: r241407
2016-10-21Start adding selftests for print_rtxDavid Malcolm4-2/+101
gcc/ChangeLog: * print-rtl-function.c (flag_compact): Move extern decl to... * print-rtl.h (flag_compact): ...here. * rtl-tests.c (selftests::assert_rtl_dump_eq): New function. (ASSERT_RTL_DUMP_EQ): New macro. (selftest::test_dumping_regs): New function. (selftest::test_dumping_insns): New function. (selftest::test_uncond_jump): Add uses of ASSERT_RTL_DUMP_EQ on the insns. (selftest::rtl_tests_c_tests): Call the new test functions. From-SVN: r241405
2016-10-21re PR fortran/69566 ([OOP] Failure of SELECT TYPE with unlimited polymorphic ↵Paul Thomas5-1/+181
function result) 2016-10-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/69566 * resolve.c (fixup_array_ref): New function. (resolve_select_type): Gather up the rank and array reference, if any, from the selector. Fix up the 'associate name' and the 'associate entities' as necessary. * trans-expr.c (gfc_conv_class_to_class): If the symbol backend decl is a FUNCTION_DECL, use the 'fake_result_decl' instead. 2016-10-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/69566 * gfortran.dg/select_type_37.f03: New test. From-SVN: r241403
2016-10-21make tablejump_p return the label as a rtx_insn *Trevor Saunders5-25/+34
gcc/ChangeLog: 2016-10-21 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * cfgcleanup.c (merge_blocks_move_successor_nojumps): Adjust. (outgoing_edges_match): Likewise. (try_crossjump_to_edge): Likewise. * cfgrtl.c (try_redirect_by_replacing_jump): Likewise. (rtl_tidy_fallthru_edge): Likewise. * rtl.h (tablejump_p): Adjust prototype. * rtlanal.c (tablejump_p): Return the label as a rtx_insn *. From-SVN: r241402
2016-10-21make LABEL_REF_LABEL a rtx_insn *Trevor Saunders26-75/+134
While changing LABEL_REF_LABEL it might as well become an inline function, so that its clearer what types are involved. Unfortunately because it is still possible to use XEXP and related macros on a LABEL_REF rtx you can still set the field to be a non insn rtx. The other unfortunate thing is that the generators actually create LABEL_REF rtx that refer to MATCH_x rtx, so there we actually need to use XEXP to bypass the checking this patch adds. gcc/ChangeLog: 2016-10-21 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * rtl.h (label_ref_label): New function. (set_label_ref_label): New function. (LABEL_REF_LABEL): Delete. * alias.c (rtx_equal_for_memref_p): Adjust. * cfgbuild.c (make_edges): Likewise. (purge_dead_tablejump_edges): Likewise. * cfgexpand.c (convert_debug_memory_address): Likewise. * cfgrtl.c (patch_jump_insn): Likewise. * combine.c (distribute_notes): Likewise. * cse.c (hash_rtx_cb): Likewise. (exp_equiv_p): Likewise. (fold_rtx): Likewise. (check_for_label_ref): Likewise. * cselib.c (rtx_equal_for_cselib_1): Likewise. (cselib_hash_rtx): Likewise. * emit-rtl.c (mark_label_nuses): Likewise. * explow.c (convert_memory_address_addr_space_1): Likewise. * final.c (output_asm_label): Likewise. (output_addr_const): Likewise. * gcse.c (add_label_notes): Likewise. * genconfig.c (walk_insn_part): Likewise. * genrecog.c (validate_pattern): Likewise. * ifcvt.c (cond_exec_get_condition): Likewise. (noce_emit_store_flag): Likewise. (noce_get_alt_condition): Likewise. (noce_get_condition): Likewise. * jump.c (maybe_propagate_label_ref): Likewise. (mark_jump_label_1): Likewise. (redirect_exp_1): Likewise. (rtx_renumbered_equal_p): Likewise. * lra-constraints.c (operands_match_p): Likewise. * print-rtl.c (print_value): Likewise. * reload.c (find_reloads): Likewise. * reload1.c (set_label_offsets): Likewise. * reorg.c (get_branch_condition): Likewise. * rtl-tests.c (test_uncond_jump): Likewise. * rtl.c (rtx_equal_p_cb): Likewise. (rtx_equal_p): Likewise. * rtlanal.c (reg_mentioned_p): Likewise. (rtx_referenced_p): Likewise. (get_condition): Likewise. * varasm.c (const_hash_1): Likewise. (compare_constant): Likewise. (const_rtx_hash_1): Likewise. (output_constant_pool_1): Likewise. From-SVN: r241401
2016-10-21Fix PR 71627 - unable to find a register to spillSenthil Kumar Selvaraj4-12/+36
Tweak find_valid_class_1 to consider a reg class if atleast one regno in that class is ok. Previously, even if no regno was in_hard_reg_set_p, the code goes ahead and considers rclass as valid. bad was set only if a regno was in the reg class *and* HARD_REGNO_MODE_OK was false - if both were false, bad wasn't set and the reload got a wrong rclass. If that happened to be the best one, this eventually lead to find_reg running out of registers to spill, because the chosen rclass wouldn't have enough regs. Also, it expected every regno in rclass to be valid for mode i.e., if any regno fails HARD_REGNO_MODE_OK, it rejected the rclass. The comments in the original commit for find_valid_class_1 say atleast one regno is ok. This was updated to say "class which contains only registers" when in_hard_reg_set_p was introduced in place of just TEST_HARD_REG_BIT. This commit fixes both of the above problems by not breaking out of the loop on first unavailable regno. Instead, it computes the rclass size consisting of all regnos in that class valid for the current mode. If that computed size is zero, the rclass would be skipped, as it won't beat best_size. Otherwise, the computed size is used to choose the best rclass, instead of the static size from reg_class_size. gcc/ 2016-10-21 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> PR target/71627 * reload.c (find_valid_class_1): Allow regclass if atleast one regno in regclass is ok. Compute and use rclass size based on actually available regnos for mode in rclass. gcc/testsuite/ 2016-10-21 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> PR target/71627 * gcc.target/avr/pr71627.c: New test From-SVN: r241400
2016-10-21tree-ssa-loop-split.c: Remove trailing spaces.Eric Botcazou3-4/+7
* tree-ssa-loop-split.c: Remove trailing spaces. * match.pd: Likewise. From-SVN: r241398
2016-10-21sparc-modes.def (CCV): New.Eric Botcazou9-6/+879
* config/sparc/sparc-modes.def (CCV): New. (CCXV): Likewise. * config/sparc/predicates.md (v_comparison_operator): New. (icc_comparison_operator): Add support for CCV/CCXV. (xcc_comparison_operator): Likewise. * config/sparc/sparc.c (output_cbranch): Likewise. (sparc_print_operand): Likewise. * config/sparc/sparc.md (UNSPEC_{ADD,SUB,NEG}V): New constants. (uaddvdi4): New expander. (addvdi4): Likewise. (uaddvdi4_sp32): New instruction. (addvdi4_sp32): Likewise. (uaddvsi4): New expander. (addvsi4): Likewise. (cmp_ccc_plus_sltu_set): New instruction. (cmp_ccv_plus): Likewise. (cmp_ccxv_plus): Likewise. (cmp_ccv_plus_set): Likewise. (cmp_ccxv_plus_set): Likewise. (cmp_ccv_plus_sltu_set): Likewise. (uaddvdi4): New expander. (subvdi4): Likewise. (usubdi4_sp32): New instruction. (subvdi4_sp32): Likewise. (usubvsi4): New expander. (subvsi4): Likewise. (cmpsi_minus_sltu_set): New instruction. (cmp_ccv_minus): Likewise. (cmp_ccxv_minus): Likewise. (cmp_ccv_minus_set): Likewise. (cmp_ccxv_minus_set): Likewise. (cmp_ccv_minus_sltu_set): Likewise. (unegvdi3): New expander. (negvdi3): Likewise. (unegdi3_sp32): New instruction. (negvdi3_sp32): Likewise. (unegvsi3): New expander. (negvsi3): Likewise. (cmp_ccc_neg_sltu_set): New instruction. (cmp_ccv_neg): Likewise. (cmp_ccxv_neg): Likewise. (cmp_ccv_neg_set): Likewise. (cmp_ccxv_neg_set): Likewise. (cmp_ccv_neg_sltu_set): Likewise. From-SVN: r241397
2016-10-21pure-code.exp: Require arm_cortex_m effective target.Andre Vieira2-1/+6
2016-10-21 Andre Vieira <andre.simoesdiasvieira@arm.com> * gcc.target/arm/pure-code/pure-code.exp: Require arm_cortex_m effective target. From-SVN: r241396
2016-10-21[ree] PR rtl-optimization/78038: Handle global register dataflow definitions ↵Kyrylo Tkachov4-1/+49
in ree PR rtl-optimization/78038 * ree.c (get_defs): Return NULL if a defining insn for REG cannot be deduced to set REG through the RTL structure. (make_defs_and_copies_lists): Return false on a failing get_defs call. * gcc.target/aarch64/pr78038.c: New test. From-SVN: r241395
2016-10-21re PR c++/78051 (error: dead STMT in EH table when using -O2)Richard Biener4-1/+25
2016-10-21 Richard Biener <rguenther@suse.de> PR tree-optimization/78051 * tree-vrp.c (evrp_dom_walker::before_dom_children): Update stmt and mark replaced if folding did something. * g++.dg/torture/pr78051.C: New testcase. From-SVN: r241394
2016-10-20rs6000.c (rs6000_assemble_visibility): Swap "internal" and "protected" in ↵David Edelsohn2-4/+14
visibility types. * config/rs6000/rs6000.c (rs6000_assemble_visibility): Swap "internal" and "protected" in visibility types. (rs6000_xcoff_declare_function_name): Fix formatting. (rs6000_xcoff_declare_object_name): Fix formatting. From-SVN: r241393
2016-10-21Daily bump.GCC Administrator1-1/+1
From-SVN: r241391
2016-10-20array.c (gfc_match_array_constructor): Remove set, but unused variable.Steven G. Kargl2-2/+7
2016-10-20 Steven G. Kargl <kargl@gcc.gnu.org> * array.c (gfc_match_array_constructor): Remove set, but unused variable. From-SVN: r241388
2016-10-21i386.c (ix86_fold_builtin): Handle IX86_BUILTIN_INFQ and ↵Uros Bizjak2-18/+15
IX86_BUILTIN_HUGE_VALQ here ... * config/i386/i386.c (ix86_fold_builtin): Handle IX86_BUILTIN_INFQ and IX86_BUILTIN_HUGE_VALQ here ... (ix86_expand_builtin): ... not here. From-SVN: r241387
2016-10-20wdate-time.c: Restored test case.Bernd Edlinger3-0/+11
2016-10-20 Bernd Edlinger <bernd.edlinger@hotmail.de> * c-c++-common/wdate-time.c: Restored test case. * g++.dg/warn/Wconversion-real.C: Deleted empty file. From-SVN: r241385
2016-10-20runtime: rewrite interface code into GoIan Lance Taylor6-50/+66
I started to copy the Go 1.7 interface code, but the gc and gccgo representations of interfaces are too different. So instead I rewrote the gccgo interface code from C to Go. The code is largely the same as it was, but the names are more like those used in the gc runtime. I also copied over the string comparison functions, and tweaked the compiler to use eqstring when comparing strings for equality. Reviewed-on: https://go-review.googlesource.com/31591 From-SVN: r241384
2016-10-20* g++.dg/cpp1z/inline-var1.C (w): Initialize to 64 + 2.Jakub Jelinek2-1/+5
From-SVN: r241383
2016-10-20* doc/gty.texi (for_user): Use @item next to @findex.Jakub Jelinek2-1/+7
From-SVN: r241382
2016-10-20re PR target/78037 (Incorrect code generated at optimization level -O2 for ↵Uros Bizjak9-28/+226
tzcnt and binary and) PR target/78037 * config/i386/bmiintrin.h (__tzcnt_u16): Call __builtin_ia32_tzcnt_u16. (__tzcnt_u32, _tzcnt_u32): Call __builtin_ia32_tzcnt_u32. (__tzcnt_u64, _tzcnt_u64): Call __builtin_ia32_tzcnt_u64. * config/i386/lzcntintrin.h (__lzcnt_u16): Call __builtin_ia32_lzcnt_u16. (__lzcnt_u32, _lzcnt_u32): Call __builtin_ia32_lzcnt_u32. (__lzcnt_u64, _lzcnt_u64): Call __builtin_ia32_lzcnt_u64. * config/i386/i386.md (UNSPEC_LZCNT, UNSPEC_TZCNT): New unspecs. (ctz<mode>2, *ctz<mode>2): Use SWI48 mode iterator. (bmi_tzcnt_<mode>): New expander. (*bmi_tzcnt_<mode>_falsedep_1): New define_insn_and_split pattern. (*bmi_tzcnt_<mode>_falsedep, *bmi_tzcnt_<mode>): New insn patterns. (clz<mode>2_lzcnt, *clz<mode>2_lzcnt): Use SWI48 mode iterator. (lzcnt_<mode>): New expander. (*lzcnt_<mode>_falsedep_1): New define_insn_and_split pattern. (*lzcnt_<mode>_falsedep, *lzcnt_<mode>): New insn patterns. * config/i386/i386-builtin-types.def (UINT_FTYPE_UINT): New. (UINT64_FTYPE_UINT64): New. * config/i386/i386-builtin.def (__builtin_clzs): Remove description. (__builtin_ia32_lzcnt_u16): New description. (__builtin_ia32_lzcnt_u32): Ditto. (__builtin_ia32_lzcnt_u64): Ditto. (__builtin_ctzs): Remove description. (__builtin_ia32_tzcnt_u16): New description. (__builtin_ia32_tzcnt_u32): Ditto. (__builtin_ia32_tzcnt_u64): Ditto. * config/i386/i386.c (ix86_expand_args_builtin): Handle UINT_FTYPE_UINT and UINT64_FTYPE_UINT64. testsuite/ChangeLog: PR target/78037 * gcc.target/i386/pr78037.c: New test. From-SVN: r241381
2016-10-20Do not fixup edges for a thunk in LTRANS (PR lto/78049)Martin Liska2-4/+16
PR lto/78049 * lto-streamer-in.c (fixup_call_stmt_edges_1): Replace value comparison with STMT_UID_NOT_IN_RANGE. (fixup_call_stmt_edges): Do not fixup edges of a thunk in LTRANS. From-SVN: r241380
2016-10-20compare-elim.c (conforming_compare): Accept UNSPECs.Eric Botcazou10-61/+543
* compare-elim.c (conforming_compare): Accept UNSPECs. (find_comparison_dom_walker::before_dom_children): Deal with instructions both using and killing the flags register. (equivalent_reg_at_start): New function extracted from... (try_eliminate_compare): ...here. Use it and add support for registers and UNSPECs as second operand of the compare. * config/visium/visium-modes.def (CCV): New. * config/visium/predicates.md (visium_v_comparison_operator): New. (visium_branch_operator): Deal with CCV mode. * config/visium/visium.c (visium_select_cc_mode): Likewise. (output_cbranch): Likewise. * config/visium/visium.md (UNSPEC_{ADD,SUB,NEG}V): New constants. (uaddv<mode>4): New expander. (addv<mode>4): Likewise. (add<mode>3_insn_set_carry): New instruction. (add<mode>3_insn_set_overflow): Likewise. (addsi3_insn_set_overflow): Likewise. (usubv<mode>4): New expander. (subv<mode>4): Likewise. (sub<mode>3_insn_set_carry): New instruction. (sub<mode>3_insn_set_overflow): Likewise. (subsi3_insn_set_overflow): Likewise. (unegv<mode>3): New expander. (negv<mode>3): Likewise. (neg<mode>2_insn_set_overflow): New instruction. (addv_tst<mode>): Likewise. (subv_tst<mode>): Likewise. (negv_tst<mode>): Likewise. (cbranch<mode>4_addv_insn): New splitter and instruction. (cbranch<mode>4_subv_insn): Likewise. (cbranch<mode>4_negv_insn): Likewise. From-SVN: r241379
2016-10-20tree-ssa-alias.c (ptrs_compare_unequal): Remove code duplication.Richard Biener3-7/+40
2016-10-20 Richard Biener <rguenther@suse.de> * tree-ssa-alias.c (ptrs_compare_unequal): Remove code duplication. Handle decls possibly not bound. * tree-ssa-structalias.c (get_constraint_for_ssa_var): Add nothing_id for decls that might not be bound if we are interested for the address. (get_constraint_for_component_ref): Deal with that. From-SVN: r241378
2016-10-20c-common.c (c_common_truthvalue_conversion): Fix the comment.Bernd Edlinger2-1/+5
2016-10-20 Bernd Edlinger <bernd.edlinger@hotmail.de> * c-common.c (c_common_truthvalue_conversion): Fix the comment. From-SVN: r241377
2016-10-20* c-cppbuiltin.c (c_cpp_builtins): Update __cpp_concepts value.Jason Merrill2-3/+5
From-SVN: r241376
2016-10-20* g++.dg/cpp1z/aligned-new7.C: Fix for small MAX_STACK_ALIGNMENT targets.Jason Merrill1-1/+2
From-SVN: r241375
2016-10-20loop splittingMichael Matz15-3/+884
(approved at https://gcc.gnu.org/ml/gcc-patches/2015-12/msg00648.html ) * common.opt (-fsplit-loops): New flag. * passes.def (pass_loop_split): Add. * opts.c (default_options_table): Add OPT_fsplit_loops entry at -O3. (enable_fdo_optimizations): Add loop splitting. * timevar.def (TV_LOOP_SPLIT): Add. * tree-pass.h (make_pass_loop_split): Declare. * tree-ssa-loop-manip.h (rewrite_into_loop_closed_ssa_1): Declare. * tree-ssa-loop-unswitch.c: Include tree-ssa-loop-manip.h, * tree-ssa-loop-split.c: New file. * Makefile.in (OBJS): Add tree-ssa-loop-split.o. * doc/invoke.texi (fsplit-loops): Document. * doc/passes.texi (Loop optimization): Add paragraph about loop splitting. testsuite/ * gcc.dg/loop-split.c: New test. * gcc.dg/tree-ssa/ifc-9.c: Update. * gcc.dg/tree-ssa/ifc-10.c: Update. From-SVN: r241374
2016-10-20Makefile (x86-64/Linux): Restore missing pairs.Nicolas Roche2-0/+11
* gcc-interface/Makefile (x86-64/Linux): Restore missing pairs. (x86/Darwin): Likewise. From-SVN: r241369
2016-10-20class.c (gfc_build_class_symbol): Set the kind of _len to ↵Andre Vehreschild2-1/+6
gfc_charlen_int_kind to catch changes of the charlen kind. gcc/fortran/ChangeLog: 2016-10-20 Andre Vehreschild <vehre@gcc.gnu.org> * class.c (gfc_build_class_symbol): Set the kind of _len to gfc_charlen_int_kind to catch changes of the charlen kind. From-SVN: r241367
2016-10-20pr35356-1.c: Update.Richard Biener2-1/+5
2016-10-20 Richard Biener <rguenther@suse.de> * gcc.dg/graphite/pr35356-1.c: Update. From-SVN: r241366
2016-10-20cgraphunit.c (analyze_functions): Set node->definition to false to signal ↵Richard Biener4-11/+26
symbol removal to... 2016-10-20 Richard Biener <rguenther@suse.de> * cgraphunit.c (analyze_functions): Set node->definition to false to signal symbol removal to debug_hooks->late_global_decl. * ipa.c (symbol_table::remove_unreachable_nodes): When not in WPA signal symbol removal to the debuginfo machinery. * dwarf2out.c (dwarf2out_late_global_decl): Instead of using early_finised to guard the we're called for symbol removal case look at the symtabs definition flag. (gen_variable_die): Remove redundant check. From-SVN: r241363
2016-10-20S/390: Add fallthrough comment in md file.Andreas Krebbel2-0/+5
gcc/ChangeLog: 2016-10-20 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * config/s390/s390.md ("prefetch"): Add fallthrough comment. From-SVN: r241362