aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2017-12-12[SFN] adjust RTL insn-walking APIAlexandre Oliva6-37/+58
This patch removes unused RTL functions, introduces alternate ones for use in a later SFN patch, and regroups other related functions so that they appear in a more consistent order. for gcc/ChangeLog * emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder. (next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder. (next_nonnote_nondebug_insn_bb): New. (prev_nonnote_nondebug_insn_bb): New. (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove. * rtl.h (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls. (prev_nonnote_nondebug_insn_bb): Declare. (next_nonnote_nondebug_insn_bb): Declare. * cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns. * cfgrtl.c (get_last_bb_insn): Likewise. * lra.c (push_insns): Likewise. From-SVN: r255564
2017-12-12Expensive selftests: torture testing for fix-it boundary conditions (PR c/82050)David Malcolm8-9/+234
This patch adds selftest coverage for the fix for PR c/82050. The selftest iterates over various "interesting" column and line-width values to try to shake out bugs in the fix-it printing routines, a kind of "torture" selftest. Unfortunately this selftest is noticably slower than the other selftests; adding it to diagnostic-show-locus.c led to: -fself-test: 40218 pass(es) in 0.172000 seconds slowing down to: -fself-test: 97315 pass(es) in 6.109000 seconds for an unoptimized build (e.g. when hacking with --disable-bootstrap). Given that this affects the compile-edit-test cycle of the "gcc" subdirectory, this felt like an unacceptable amount of overhead to add. I attempted to optimize the test by reducing the amount of coverage, but the test seems useful, and there seems to be a valid role for "torture" selftests. Hence this patch adds a: gcc.dg/plugin/expensive_selftests_plugin.c with the responsibility for running "expensive" selftests, and adds the expensive test there. The patch moves a small amount of code from selftest::run_tests into a helper class so that the plugin can print a useful summary line (to reassure us that the tests are actually being run). With that, the compile-edit-test cycle of the "gcc" subdir is unaffected; the plugin takes: expensive_selftests_plugin: 26641 pass(es) in 3.127000 seconds which seems reasonable within the much longer time taken by "make check" (I optimized some of the overhead away, hence the reduction from 6 seconds above down to 3 seconds). gcc/ChangeLog: PR c/82050 * selftest-run-tests.c (selftest::run_tests): Move start/finish code to... * selftest.c (selftest::test_runner::test_runner): New ctor. (selftest::test_runner::~test_runner): New dtor. * selftest.h (class selftest::test_runner): New class. gcc/testsuite/ChangeLog: PR c/82050 * gcc.dg/plugin/expensive-selftests-1.c: New file. * gcc.dg/plugin/expensive_selftests_plugin.c: New file. * gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above. From-SVN: r255563
2017-12-12Daily bump.GCC Administrator1-1/+1
From-SVN: r255562
2017-12-12Fix the new pr83361.c testcaseSegher Boessenkool2-1/+5
gcc/testsuite/ * gcc.dg/pr83361.c: Add -Wno-div-by-zero to dg-options. From-SVN: r255559
2017-12-11Remove a stray line.Martin Sebor1-2/+0
From-SVN: r255558
2017-12-11PR c/81544 - attribute noreturn and warn_unused_result on the same functionMartin Sebor6-0/+1072
PR c/81544 - attribute noreturn and warn_unused_result on the same function accepted Add tests missed in r255469. From-SVN: r255557
2017-12-11altivec-12.c (main): Add tests for vec_avg.Carl Love14-79/+635
gcc/testsuite/ChangeLog: 2017-12-07 Carl Love <cel@us.ibm.com> * gcc.target/powerpc/altivec-12.c (main): Add tests for vec_avg. * gcc.target/powerpc/builtins-1.c: Renamed builtins-1.h. * gcc.target/powerpc/builtins-1.h: Add tests for vec_and, vec_andc, vec_cpsgn, vec_mergeh,vec_mergel, vec_nor, vec_or, vec_sel, vec_xor, vec_all_eq, vec_all_ge, vec_all_gt, vec_all_le, vec_all_lt, vec_all_ne, vec_any_eq,vec_any_ge, vec_any_gt,vec_any_le, vec_any_lt, vec_any_ne, vec_cntlz, vec_round, vec_rsqrt, vec_rsqrte, vec_splat, vec_div, vec_mul,vec_ctf, vec_cts, vec_ctu. * gcc.target/powerpc/builtins-1-be.c: New file, big endian test file for tests in builtins-1.h. * gcc.target/powerpc/builtins-1-le.c: New file, little endian test file for tests in builtins-1.h. * gcc.target/powerpc/builtins-2.c (main): Add tests for vec_ctf, vec_cts, vec_ctu. * gcc.target/powerpc/builtins-3-runnable.c (test_result_sp): Fix printf conversion character. * gcc.target/powerpc/fold-vec-minmax-char.c (test1_min, test2_min, test4_min, test1_max, test2_max): Add tests for vec_max and vec_min. * gcc.target/powerpc/fold-vec-minmax-int.c (test4_min, test5_min, test7_min, test8_min): Add tests for vec_min. * gcc.target/powerpc/fold-vec-minmax-longlong.c (test7_max, test8_max, test9_max, test10_max): Add tests for and vec_max. * gcc.target/powerpc/fold-vec-minmax-short.c (test4_min, test5_min, tes7_min, test8_min): Add tests for and vec_min. * gcc.target/powerpc/p8vector-builtin-8.c (foo): Add test for vec_adds, vec_subs, vec_sum2s, vec_sum4s. * gcc.target/powerpc/vsx-splats-p8.c: New file to test vec_splats. * gcc.target/vsx-vector-5.c (arg1_tests_d, arg1_tests_d): Add tests for vec_ceil, vec_floor, vec_nearbyint, vec_sqrt. * gcc.target/vsx-vector-7.c (foo): Add tests for vec_sel. * gcc.target/vsx-vector-abss.c: New file to test vec_abss. From-SVN: r255556
2017-12-11altivec.h (vec_extract_fp32_from_shorth, [...]): Add #defines.Carl Love16-18/+737
gcc/ChangeLog: 2017-12-11 Carl Love <cel@us.ibm.com> * config/rs6000/altivec.h (vec_extract_fp32_from_shorth, vec_extract_fp32_from_shortl]): Add #defines. * config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion. * config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLL): Add expansions. * doc/extend.texi: Add documentation for the added builtins. gcc/testsuite/ChangeLog: 2017-12-11 Carl Love <cel@us.ibm.com> * gcc.target/powerpc/altivec-7.c: Renamed altivec-7.h. * gcc.target/powerpc/altivec-7.h (main): Add testcases for vec_unpackl. Add dg-final tests for the instructions generated. * gcc.target/powerpc/altivec-7-be.c: New file to test on big endian. * gcc.target/powerpc/altivec-7-le.c: New file to test on little endian. * gcc.target/powerpc/altivec-13.c (foo): Add vec_sld, vec_srl, vec_sro testcases. Add dg-final tests for the instructions generated. * gcc.target/powerpc/builtins-3-p8.c (test_vsi_packs_vui, test_vsi_packs_vsi, test_vsi_packs_vssi, test_vsi_packs_vusi, test_vsi_packsu-vssi, test_vsi_packsu-vusi, test_vsi_packsu-vsll, test_vsi_packsu-vull, test_vsi_packsu-vsi, test_vsi_packsu-vui): Add testcases. Add dg-final tests for new instructions. * gcc.target/powerpc/p8vector-builtin-2.c (vbschar_eq, vbchar_eq, vuchar_eq, vbint_eq, vsint_eq, viint_eq, vuint_eq, vbool_eq, vbint_ne, vsint_ne, vuint_ne, vbool_ne, vsign_ne, vuns_ne, vbshort_ne): Add tests. Add dg-final instruction tests. * gcc.target/powerpc/vsx-vector-6.c: Renamed vsx-vector-6.h. * gcc.target/powerpc/vsx-vector-6.h (vec_andc,vec_nmsub, vec_nmadd, vec_or, vec_nor, vec_andc, vec_or, vec_andc, vec_msums): Add tests. Add dg-final tests for the generated instructions. * gcc.target/powerpc/builtins-3.c (test_sll_vsc_vsc_vsuc, test_sll_vuc_vuc, test_sll_vsi_vsi_vuc, test_sll_vui_vui_vuc, test_sll_vbll_vull, test_sll_vbll_vbll_vus, test_sll_vp_vp_vuc, test_sll_vssi_vssi_vuc, test_sll_vusi_vusi_vuc, test_slo_vsc_vsc_vsc, test_slo_vuc_vuc_vsc, test_slo_vsi_vsi_vsc, test_slo_vsi_vsi_vuc, test_slo_vui_vui_vsc, test_slo_vui_vui_vuc, test_slo_vsll_slo_vsll_vsc, test_slo_vsll_slo_vsll_vuc, test_slo_vull_slo_vull_vsc, test_slo_vull_slo_vull_vuc, test_slo_vp_vp_vsc, test_slo_vp_vp_vuc, test_slo_vssi_vssi_vsc, test_slo_vssi_vssi_vuc, test_slo_vusi_vusi_vsc, test_slo_vusi_vusi_vuc, test_slo_vusi_vusi_vuc, test_slo_vf_vf_vsc, test_slo_vf_vf_vuc, test_cmpb_float): Add tests. From-SVN: r255555
2017-12-11[PR80693] drop value of parallel SETs dropped by combineAlexandre Oliva5-0/+110
When combine drops a REG_UNUSED SET in a parallel, we have to clear cached values, so that, even if the REGs remain used (e.g. because they were referenced in the used SET_SRC), we will not use properties of the dropped modified value as if they applied to the preserved original one. We fail to adjust REG_N_SETS. for gcc/ChangeLog PR rtl-optimization/80693 PR rtl-optimization/81019 PR rtl-optimization/81020 * combine.c (distribute_notes): Reset any REG_UNUSED REGs that are not mentioned in i3. Place the REG_UNUSED note on i2, possibly modified to REG_DEAD, if it did not originate in i3. for gcc/testsuite/ChangeLog PR rtl-optimization/80693 PR rtl-optimization/81019 PR rtl-optimization/81020 * gcc.dg/pr80693.c: New. * gcc.dg/pr81019.c: New. From-SVN: r255554
2017-12-11recog.c (store_data_bypass_p_1): New function.Jakub Jelinek2-72/+50
* recog.c (store_data_bypass_p_1): New function. (store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER. Use store_data_bypass_p_1 to avoid code duplication. Formatting fixes. From-SVN: r255553
2017-12-11ifcvt: Call fixup_partitions (PR83361)Segher Boessenkool4-0/+54
After converting a conditional branch to an unconditional trap to a conditional trap, if the original trap is still reachable from another path, it may be that it is in a hot basic block and only reachable from cold blocks. Fix that up. PR rtl-optimization/83361 * ifcvt.c (if_convert): Call fixup_partitions. gcc/testsuite/ PR rtl-optimization/83361 * gcc.dg/pr83361.c: New testcase. From-SVN: r255550
2017-12-11rs6000.c (rs6000_gimple_fold_builtin): Add support for early folding of ↵Will Schmidt4-0/+64
splat_u{8,16,32}. [gcc] 2017-12-11 Will Schmidt <will_schmidt@vnet.ibm.com> * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for early folding of splat_u{8,16,32}. [testsuite] 2017-12-11 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/fold-vec-splat-misc-invalid.c: New. From-SVN: r255549
2017-12-11intrinsic.texi (MAXLOC): Update documentation for character arrays and KIND ↵Thomas Koenig2-10/+26
argument. 2017-12-11 Thomas Koenig <tkoenig@gcc.gnu.org> * intrinsic.texi (MAXLOC): Update documentation for character arrays and KIND argument. (MINLOC): Likewise. From-SVN: r255546
2017-12-11aarch64.c (aarch64_print_operand): Don't start output_operand_lossage first ↵Jakub Jelinek2-3/+10
argument with capital letter. * config/aarch64/aarch64.c (aarch64_print_operand): Don't start output_operand_lossage first argument with capital letter. (aarch64_override_options): Don't start error and sorry first argument with capital letter. From-SVN: r255544
2017-12-11re PR fortran/83379 (Intermittent failure of min/maxval_char*.f90 test cases)Thomas Koenig5-12/+21
2017-12-11 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/83379 * gfortran.dg/minval_char_1.f90: Correct logic for mask calculation. * gfortran.dg/minval_char_2.f90: Likewise. * gfortran.dg/maxval_char_1.f90: Likewise. * gfortran.dg/maxval_char_2.f90: Likewise. From-SVN: r255543
2017-12-11re PR fortran/45689 ([F03] Missing transformational intrinsic in the ↵Thomas Koenig5-47/+145
trans_func_f2003 list) 2017-12-11 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/45689 * simplify.c (min_max_choose): Add prototype. (gfc_count): Format correctly. (simplify_transformation): Pass array argument to init_result_expr. (gfc_simplify_minval_maxval): Remove. (gfc_min): New function. (gfc_simplify_minval): Call simplify_transformation. (gfc_max): New function. (gfc_simplify_maxval): Call simplify_transformation. 2017-12-11 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/45689 * gfortran.dg/minval_parameter_1.f90: New test. * gfortran.dg/maxval_parameter_1.f90: New test. From-SVN: r255542
2017-12-11Fix stack overflow with autofdo (PR83355)Andi Kleen3-1/+9
g++.dg/bprob* is failing currently with autofdo. Running in gdb shows that there is a very deep recursion in get_index_by_decl until it overflows the stack. gcc/: 2017-12-11 Andi Kleen <ak@linux.intel.com> PR gcov-profile/83355 * auto-profile.c (string_table::get_index_by_decl): Don't recurse when abstract origin points to itself. From-SVN: r255540
2017-12-11re PR tree-optimization/83320 (Mismatched free() / delete / delete [] in ↵Bin Cheng2-2/+8
gimple-loop-interchange.cc:948) PR tree-optimization/83320 * gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete. (prune_datarefs_not_in_loop): Ditto. From-SVN: r255539
2017-12-11Daily bump.GCC Administrator1-1/+1
From-SVN: r255537
2017-12-10* ChangeLog: Fix whitespace some more.Uros Bizjak1-12/+12
From-SVN: r255534
2017-12-10ChangeLog: Fix whitespace.Uros Bizjak2-22/+23
* ChangeLog: Fix whitespace. * testsuite/ChangeLog: Ditto. From-SVN: r255533
2017-12-10re PR fortran/53478 (gfortran segfaults when module name clashes with C ↵Dominique d'Humieres14-26/+81
binding name of procedure) 2017-12-10 Dominique d'Humieres <dominiq@lps.ens.fr> PR fortran/53478 * gfortran.h (gfc_find_case_gsymbol): New prototype. * symbol.c (gfc_find_case_gsymbol): New procedure, case insensistive version of gfc_find_gsymbol. * resolve.c (resolve_common_blocks): Use it. Replace %s with %qs where needed. * gfortran.dg/binding_label_tests_4.f03: Update dg-error. * gfortran.dg/binding_label_tests_6.f03: Likewise. * gfortran.dg/binding_label_tests_7.f03: Likewise. * gfortran.dg/binding_label_tests_8.f03: Likewise. * gfortran.dg/binding_label_tests_10_main.f03: Likewise. * gfortran.dg/binding_label_tests_11_main.f03: Likewise. * gfortran.dg/binding_label_tests_13_main.f03: Likewise. * gfortran.dg/test_common_binding_labels_3_main.f03: Likewise. * gfortran.dg/binding_label_tests_29.f90: New test. From-SVN: r255530
2017-12-10* doc/install.texi (Specific): Tweak link to mkssoftware.com.Gerald Pfeifer2-1/+5
From-SVN: r255529
2017-12-10re PR tree-optimization/83337 (ICE at -O3 x86_64-linux-gnu: in ↵Jakub Jelinek5-0/+149
interpret_rhs_expr, at tree-scalar-evolution.c:1775) PR tree-optimization/83337 * gimple-loop-interchange.cc (compute_access_stride): Handle bitfield DRs properly. * gcc.dg/tree-ssa/loop-interchange-14.c: New test. * gcc.dg/tree-ssa/loop-interchange-15.c: New test. From-SVN: r255528
2017-12-10Daily bump.GCC Administrator1-1/+1
From-SVN: r255527
2017-12-09re PR fortran/82934 (Segfault on assumed character length in allocate)Steven G. Kargl4-8/+60
2017-12-09 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82934 PR fortran/83318 * match.c (gfc_match_allocate): Enforce F2008:C631. 2017-12-09 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82934 PR fortran/83318 * gfortran.dg/allocate_assumed_charlen_2.f90: new test. From-SVN: r255524
2017-12-09re PR lto/83338 (SPEC CPU2017 510.parest_r ICE)Jakub Jelinek4-2/+41
PR tree-optimization/83338 * tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from vector of unsigned integers to vector of signed integers. * gcc.dg/vect/pr83338.c: New test. From-SVN: r255523
2017-12-09re PR fortran/83316 (ICE: minval/maxval and characters)Thomas Koenig6-0/+50
2017-12-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/83316 * arith.c (gfc_character2character): New function. * arith.h: Add prototype. * simplify.c (gfc_convert_constant): Handle character type. 2017-12-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/83316 * gfortran.dg/minval_char_5.f90: New test. From-SVN: r255522
2017-12-09Daily bump.GCC Administrator1-1/+1
From-SVN: r255520
2017-12-08[multiple changes]Vladimir Makarov4-1/+33
2017-12-08 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/83317 * lra-constraints.c (process_address_1): Add insn code check. 2017-12-08 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/83317 * gcc.target/i386/pr83317.c: New test. From-SVN: r255517
2017-12-08re PR rtl-optimization/81595 (ICE: verify_flow_info failed (error: multiple ↵Jakub Jelinek2-0/+44
hot/cold transitions found)) PR rtl-optimization/81595 * gcc.c-torture/compile/pr81595.c: New test. From-SVN: r255516
2017-12-08re PR tree-optimization/83323 (186.crafty miscompares)Michael Matz8-34/+67
Fix PR83323 * gimple-loop-jam (unroll_jam_possible_p): Correct test for head-controlled loops and loop BBs. * common.opt (funroll-and-jam): Remove, instead ... (floop-unroll-and-jam): ... reuse this option. * opts.c (default_options_table): Use OPT_floop_unroll_and_jam. * doc/invoke.texi (-funroll-and-jam): Move docu to ... (-floop-unroll-and-jam): ... this option. testsuite/ * gcc.dg/pr83323.c: New test. * gcc.dg/unroll-and-jam.c: Use -floop-unroll-and-jam. From-SVN: r255514
2017-12-08ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix a comment ↵Jakub Jelinek3-2/+8
typo, get_base_ref_and_offset -> get_ref_base_and_extent. * ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent. * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise. From-SVN: r255513
2017-12-08re PR middle-end/81782 (Yet another -Wmaybe-uninitialized false positive ↵Richard Biener4-2/+27
with empty array) 2017-12-08 Richard Biener <rguenther@suse.de> PR middle-end/81782 * tree-ssa-uninit.c (warn_uninitialized_vars): Properly handle accesses outside of zero-sized vars. * gcc.dg/uninit-pr81782.c: New testcase. From-SVN: r255512
2017-12-08Disable hwcap on Solaris in g++.dg/opt/pr83252.CRainer Orth2-0/+5
* g++.dg/opt/pr83252.C: Add -mclear-hwcap on *-*-solaris*. From-SVN: r255511
2017-12-08Prevent SRA from removing type changing assignmentMartin Jambor5-24/+91
2017-12-08 Martin Jambor <mjambor@suse.cz> PR tree-optimization/83141 * tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also test for MEM_REFs implicitely changing types with padding. Remove inline keyword. (build_accesses_from_assign): Added contains_vce_or_bfcref_p checks. testsuite/ * gcc.dg/tree-ssa/pr83141.c: New test. * gcc.dg/guality/pr54970.c: XFAIL tests querying a[0]. From-SVN: r255510
2017-12-08arc.c (arc_attribute_table): Add exclusions to the comment.Jakub Jelinek12-12/+34
* config/arc/arc.c (arc_attribute_table): Add exclusions to the comment. * config/avr/avr.c (avr_attribute_table): Likewise. * config/msp430/msp430.c (msp430_attribute_table): Likewise. * config/rl78/rl78.c (rl78_attribute_table): Likewise. * config/nds32/nds32.c (nds32_attribute_table): Likewise. * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member of struct attribute_spec. * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. ada/ * gcc-interface/utils.c (gnat_internal_attribute_table): Add exclusions to the comment. brig/ * brig-lang.c (brig_attribute_table): Fix up comment. From-SVN: r255509
2017-12-08re PR target/82960 (spu_machine_dependent_reorg does not handle ↵Ulrich Weigand2-3/+9
jump_table_data insn) gcc/ PR target/82960 * config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true. From-SVN: r255508
2017-12-08re PR tree-optimization/83609 (ICE in read_complex_part at gcc/expr.c:3202)Jan Hubicka5-12/+49
* profile-count.c (profile_count::from_gcov_type): Move from profile-count.h; handle overflow. * profile-count. (profile_count::from_gcov_type): Move offline. PR middle-end/83609 * gcc.c-torture/compile/pr83069.c: New testcase. From-SVN: r255507
2017-12-08combine: Fix PR83304Segher Boessenkool2-0/+26
In PR83304 two insns are combined, where the I2 uses a register that has a REG_DEAD note on an insn after I2 but before I3. In such a case move_deaths should move that death note. But move_deaths only looks at the reg_stat[regno].last_death insn, and that field can be zeroed out (previously, use_crosses_set_p would prevent the combination in this case). If the last_death field is zero it means "unknown", not "no death", so we have to find if there is a REG_DEAD note. PR rtl-optimization/83304 * combine.c (move_deaths): If we do not know where a register died, search for it. From-SVN: r255506
2017-12-08gimple-loop-interchange.cc (tree_loop_interchange::interchange): Provide ↵Richard Biener2-1/+11
-fopt-info-loop feedback when we interchange in a nest. 2017-12-08 Richard Biener <rguenther@suse.de> * gimple-loop-interchange.cc (tree_loop_interchange::interchange): Provide -fopt-info-loop feedback when we interchange in a nest. From-SVN: r255505
2017-12-08[arm] PR target/83206: Make native driver select fp-capable armv6 coresRichard Earnshaw2-3/+8
A quirk in the historical naming of some ARMv6 products means that the main CPU name implies the presence or otherwise of the floating point unit. This causes problems when using -mfpu=auto with -mcpu=native: the driver is picking a CPU that does not support a floating-point unit, even though one may well exist. This patch addresses this by selecting the FP-capable names so that FP instructions will be generated if the other options suggest this is permitted. Note that a more complete fix is really needed here to look up the FP/simd capabilities and append the appropriate capability extensions. This will be the subject of some follow-up patches. * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names for armv6 ARM CPU IDs. From-SVN: r255504
2017-12-08[arm] Don't strip off all architecture features from -march passed to assemblerRichard Earnshaw2-12/+96
When GCC invokes the assembler it generates a sanitized version of the user-specified -march option to pass through, since the assembler does not understand all the new FPU-related architectural options. Unfortunately it goes too far and strips off all the architectural extensions, including some that are unrelated to the -mfpu variant selected. Again, this doesn't really matter when compiling C code because the compiler will override the command-line specified architecture with directives in the assembly file itself, but when using the compiler driver to invoke the assembler the only indiciation of the desired architecture might come from the command line. We fix this by adjusting the canonicalization pass to remove any option that only specifies features that can be expressed by -mfpu (any that go beyond that are already supported by the assembler). We do have to take care to re-order the options, though as the assembler expects feature options to be in a canonical order (unlike the compiler, where ordering is handled left-to-right: there's only a difference if there are negation options, but a canonicalized architecture string shouldn't have any of those). We do this by recording which options we need and then sorting the final list alphabetically. * common/config/arm/arm-common.c: Include <algorithm>. (INCLUDE_VECTOR): Define. (compare_opt_names): New function. (arm_rewrite_selected_arch): Only strip out extensions that can be expressed through -mfpu. Sort the remaining extensions alphabetically. From-SVN: r255503
2017-12-08[arm] Generate a -mfpu= option for passing to the assemblerRichard Earnshaw3-2/+92
When gcc runs with the new -mfpu=auto option (either explicitly or when that's the default behaviour) then this option is not passed through to the assembler as we cannot rely on the assembler understanding it (currently it doesn't understand it at all, but in future that might change). That means that the assembler falls back to its builtin default, which may not correspond to what the user expected based on the command-line options they passed. Normally that wouldn't matter because assembler files generated by the compiler will contain explicit directives that set the FPU type directly and override any internal defaults; but when the compiler driver is used to invoke the assembler directly (because the source file ends in .s or .S) then this might cause a problem if that assumes the FPU matches the compiler. To address this, this patch makes the driver construct a -mfpu= option for the assembler in the same way as the compiler generates an internal .fpu directive. As mentioned, this makes no difference if the assembler file explicitly overrides the command line options, but helps in the case where this is implicit. * config/arm/arm.h (arm_asm_auto_mfpu): Declare. (ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu. (ASM_CPU_SPEC): Use it if -mfpu is set to auto. * common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function. -- This line, and those below, will be ignored-- M gcc/ChangeLog M gcc/common/config/arm/arm-common.c M gcc/config/arm/arm.h From-SVN: r255502
2017-12-08re PR bootstrap/81470 (Bootstrap comparison failures in gcc/ada)Tristan Gingold2-1/+13
2017-06-08 Tristan Gingold <gindold@adacore.com> PR ada/81470 * dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit .cfi_personality or .cfi_lsda if the eh data format is dwarf2. From-SVN: r255501
2017-12-08Initialize new member of SOLARIS_ATTRIBUTE_TABLERainer Orth2-2/+7
* config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member of struct attribute_spec. From-SVN: r255500
2017-12-08re PR tree-optimization/81303 (410.bwaves regression caused by r249919)Richard Biener3-0/+100
2017-12-08 Richard Biener <rguenther@suse.de> PR tree-optimization/81303 * gfortran.dg/pr81303.f: New testcase. * gfortran.dg/vect/pr81303.f: Likewise. From-SVN: r255499
2017-12-08Enable VNNI support [5/5]Julia Koval8-0/+197
gcc/ * config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32, _mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics. * config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32, _mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32, _mm_dpwssds_epi32, _mm_mask_dpwssds_epi32, _mm_maskz_dpwssds_epi32): Ditto. gcc/testsuite/ * gcc.target/i386/avx512f-vnni-1.c: Add checks for vdpdwssds. * gcc.target/i386/avx512vl-vnni-1.c: Ditto. * gcc.target/i386/avx512f-vpdpwssds-2.c: New test. * gcc.target/i386/avx512vl-vpdpwssds-2.c: Ditto. From-SVN: r255498
2017-12-08re PR tree-optimization/81303 (410.bwaves regression caused by r249919)Richard Biener6-2/+91
2017-12-08 Richard Biener <rguenther@suse.de> PR tree-optimization/81303 * tree-vect-stmts.c (vect_is_simple_cond): For invariant conditions try to create a comparison vector type matching the data vector type. (vectorizable_condition): Adjust. * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Leave invariant conditions alone in case we can vectorize those. * gcc.target/i386/vectorize9.c: New testcase. * gcc.target/i386/vectorize10.c: New testcase. From-SVN: r255497
2017-12-08Enable VNNI support [4/5]Julia Koval8-14/+204
gcc/ * config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32, _mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics. * config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32, _mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32, _mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto. gcc/testsuite/ * gcc.target/i386/avx512f-vnni-1.c: Add vdpwssd checks. * gcc.target/i386/avx512vl-vnni-1.c: Ditto. * gcc.target/i386/avx512f-vpdpwssd-2.c: New. * gcc.target/i386/avx512vl-vpdpwssd-2.c: Ditto. From-SVN: r255496