- 04 Jul, 2018 5 commits
-
-
gcc/ChangeLog: PR tree-optimization/86274 * gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify precondition. (format_floating): Correct handling of infinities and NaNs. gcc/testsuite/ChangeLog: PR tree-optimization/86274 * gcc.dg/tree-ssa/builtin-sprintf-9.c: New test. * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust. * gcc.dg/tree-ssa/builtin-sprintf-warn-10.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-15.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-7.c: Same. * gcc.dg/tree-ssa/builtin-sprintf.c: Same. * gcc.dg/tree-ssa/pr83198.c: Same. From-SVN: r262368
Martin Sebor committed -
gcc/ChangeLog: * print-tree.c (print_real_cst): New function. (print_node_brief): Call it. (print_node): Ditto. From-SVN: r262367
Martin Sebor committed -
* config/h8300/h8300.md (ors code_iterator): New. (bsetqi_msx, bnotqi_msx patterns and splitters): Consolidate into a single pattern and single splitter. (bsethi_msx, bnothi_msx patterns): Consolidate into a single pattern. (iorqi3_1, xorqi3_1): Likewise. (iorqi3, xorqi3 expanders): Similarly. From-SVN: r262366
Jeff Law committed -
h8300.md (movmd_internal_normal): Consolidated with (movmd_internal) into a single pattern using the P mode iterator. * config/h8300/h8300.md (movmd_internal_normal): Consolidated with (movmd_internal) into a single pattern using the P mode iterator. (movmd splitters): Similarly. (stpcpy_internal_normal, stpcpy_internal): Similarly for thes patterns. (movsd splitters): Similarly. From-SVN: r262365
Jeff Law committed -
From-SVN: r262364
GCC Administrator committed
-
- 03 Jul, 2018 28 commits
-
-
P0553R2 is not in the C++2a working draft yet, but is likely to be approved soon. Neither proposal supports std::byte but this adds overloads of each function for std::byte, assuming that will also get added. * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/precompiled/stdc++.h: Include new header. * include/std/bit: New header. (__rotl, __rotr, __countl_zero, __countl_one, __countr_zero) (__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1): Define for C++14. [!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero) (countr_one, popcount): Define for C++2a. Also overload for std::byte. (ispow2, ceil2, floor2, log2p1): Define for C++2a. [!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for std::byte. * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New. * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New. * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New. * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New. * testsuite/26_numerics/bit/bitops.rot/rotl.cc: New. * testsuite/26_numerics/bit/bitops.rot/rotr.cc: New. * testsuite/26_numerics/bit/bitops.count/countl_one.cc: New. * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New. * testsuite/26_numerics/bit/bitops.count/countr_one.cc: New. * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New. From-SVN: r262360
Jonathan Wakely committed -
The whole file is guarded by the same check already. * include/bits/alloc_traits.h: Remove redundant preprocessor condition. From-SVN: r262359
Jonathan Wakely committed -
/cp 2018-07-03 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (min_location): New. (smallest_type_quals_location): Use the latter. (check_concept_fn): Use DECL_SOURCE_LOCATION. (grokdeclarator): Use accurate locations in a number of error messages involving ds_thread, ds_storage_class, ds_virtual, ds_constexpr, ds_typedef and ds_friend; exploit min_location. /testsuite 2018-07-03 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/other/locations1.C: New. * g++.dg/tls/locations1.C: Likewise. * g++.dg/diagnostic/virtual-constexpr.C: Likewise. * g++.dg/diagnostic/virtual-static.C: Likewise. * g++.dg/concepts/fn-concept2.C: Test the locations too. * g++.dg/cpp0x/constexpr-virtual5.C: Likewise. * g++.dg/cpp0x/pr51463.C: Likewise. * g++.dg/other/typedef1.C: Likewise. * g++.dg/parse/dtor13.C: Likewise. * g++.dg/template/error44.C: Likewise. * g++.dg/template/typedef4.C: Likewise. * g++.dg/template/typedef5.C: Likewise. * g++.dg/tls/diag-2.C: Likewise. * g++.old-deja/g++.brendan/crash11.C: Likewise. From-SVN: r262358
Paolo Carlini committed -
* config/h8300/h8300.c (h8300_insn_length_from_table): Consolidate ADDB, ADDW and ADDL into a single ADD attribute which selects the right table based on the size of the operand. * config/h8300/h8300.md (length_table): Corresponding changes. All references to "addb", "addw" and "addl" changed to "add". (btst patterns): Merge two variants into a single pattern. (tstqi, tsthi): Likewise. (addhi3_incdec, addsi3_incdec): Likewise. (subhi3_h8300hs, subsi3_h8300hs): Likewise. (mulhi3, mulsi3): Likewise. (udivhi3, udivsi3): Likewise. (divhi3, divsi3): Likewise. (andorqi3, andorhi3, andorsi3): Likewise. From-SVN: r262357
Jeff Law committed -
PR target/85694 * config/i386/sse.md (uavg<mode>3_ceil): New expander. (<sse2_avx2>_uavg<mode>3<mask_name>): Simplify expander. testsuite/ChangeLog: PR target/85694 * gcc.target/i386/pr85694.c: New test. From-SVN: r262354
Uros Bizjak committed -
PR c++/86201 * typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings. * g++.dg/diagnostic/pr86201.C: New test. From-SVN: r262353
Marek Polacek committed -
2018-07-03 François Dumont <fdumont@gcc.gnu.org> * include/bits/stl_algobase.h (__niter_wrap): New. (__copy_move_a2(_II, _II, _OI)): Use latter. (__copy_move_backward_a2(_BI1, _BI1, _BI2)): Likewise. (fill_n(_OI, _Size, const _Tp&)): Likewise. (equal(_II1, _II1, _II2)): Use __glibcxx_requires_can_increment. * include/debug/stl_iterator.h (std::__niter_base(const __gnu_cxx::_Safe_iterator< __gnu_cxx::__normal_iterator<>, _Sequence>&)): New declaration. * include/debug/vector (__niter_base(const __gnu_cxx::_Safe_iterator< __gnu_cxx::__normal_iterator<>, _Sequence>&)): New. From-SVN: r262349
François Dumont committed -
* include/line-map.h (enum lc_reason): Add LC_HWM. (LINE_MAP_MAX_LOCATION): Define here. (struct line_map): Move reason field to line_map_ordinary. Adjust GTY tagging. (struct line_map_ordinary): Reorder fields for less padding. (struct line_map_macro): Likewise. (MAP_ORDINARY_P): New. (linemap_check_ordinary, linemap_check_macro): Adjust. * line-map.c (LINE_MAP_MAX_SOURCE_LOCATION): Delete. (new_linemap): Take start_location, not reason. Adjust. (linemap_add, linemap_enter_macro): Adjust. (linemap_line_start): Likewise. (linemap_macro_expansion_map_p): Use MAP_ORDINARY_P. (linemap_macro_loc_to_spelling_point): Likewise. (linemap_macro_loc_to_def_point): Likewise. (linemap_dump): Likewise. From-SVN: r262348
Nathan Sidwell committed -
This patch adds AArch64 patterns for the new AVG_FLOOR/CEIL operations. AVG_FLOOR is [SU]HADD and AVG_CEIL is [SU]RHADD. 2018-07-03 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR tree-optimization/85694 * config/aarch64/iterators.md (HADD, RHADD): New int iterators. (u): Handle UNSPEC_SHADD, UNSPEC_UHADD, UNSPEC_SRHADD and UNSPEC_URHADD. * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor) (<u>avg<mode>3_ceil): New patterns. gcc/testsuite/ PR tree-optimization/85694 * lib/target-supports.exp (check_effective_target_vect_avg_qi): Return true for AArch64 without SVE. * gcc.target/aarch64/vect_hadd_1.h: New file. * gcc.target/aarch64/vect_shadd_1.c: New test. * gcc.target/aarch64/vect_srhadd_1.c: Likewise. * gcc.target/aarch64/vect_uhadd_1.c: Likewise. * gcc.target/aarch64/vect_urhadd_1.c: Likewise. From-SVN: r262347
Richard Sandiford committed -
gcc/testsuite/ChangeLog: * gcc.dg/vect/slp-perm-1.c: Remove "note: " prefix from scan-tree-dump directive. * gcc.dg/vect/slp-perm-2.c: Likewise. * gcc.dg/vect/slp-perm-3.c: Likewise. * gcc.dg/vect/slp-perm-5.c: Likewise. * gcc.dg/vect/slp-perm-6.c: Likewise. * gcc.dg/vect/slp-perm-7.c: Likewise. * gcc.dg/vect/slp-perm-8.c: Likewise. From-SVN: r262346
David Malcolm committed -
PR c++/84306 * g++.dg/overload/conv-op3.C: New test. From-SVN: r262345
Marek Polacek committed -
PR middle-end/86202 * gimple-fold.c (size_must_be_zero_p): Check the type of the size. * gcc.dg/Wint-conversion-2.c: New test. From-SVN: r262344
Marek Polacek committed -
* tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration. From-SVN: r262343
Jason Merrill committed -
* config/h8300/h8300.md (HSI, QHSI, QHSIF): New mode iterators. (shifts): New code iterator. (movqi, movhi, movsi, movsf expanders): Consolidate into a single expander. Fix HImode handling on H8/SX. (addqi3, addhi3, addsi3 expanders): Consolidate into a single expander. (subqi3, subhi3, subsi3 expanders): Likewise. (andqi3, andhi3, andsi3 expanders): Likewise. (iorqi3, iorhi3, iorsi3 expanders): Likewise. (xorqi3, xorhi3, xorsi3 expanders): Likewise. (negqi2, neghi2, negsi2, negsf2 expanders): Likewise. (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise. (zero_extendqihi2, zero_extendqisi2): Likewise. (extendqihi2, extendqisi2): Likewise. (rotlqi3, rotlhi3, rotlsi3): Likewise. (neghi2_h8300, negsi2_h8300): Likewise for these patterns. (rotlqi3_1, rotlhi3_1): Likewise. (logicalhi3_sn, logicalsi3_sn): Likewise. (logicalhi3, logicalsi3): Likewise. From-SVN: r262342
Jeff Law committed -
2018-07-03 Richard Biener <rguenther@suse.de> PR ipa/86389 * tree-ssa-structalias.c (find_func_clobbers): Properly handle indirect calls. * gcc.dg/torture/pr86389.c: New testcase. From-SVN: r262341
Richard Biener committed -
The target has been removed, so we shouldn't try to build it. PR target/86382 * contrib/config-list.mk: Remove powerpc-linux_paired. From-SVN: r262340
Segher Boessenkool committed -
The PR85694 series added a vectype argument to append_pattern_def_seq. This patch makes more callers use it. 2018-07-03 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-patterns.c (vect_recog_rotate_pattern) (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern) (vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast) (adjust_bool_pattern, vect_recog_bool_pattern): Pass the vector type to append_pattern_def_seq instead of creating a stmt_vec_info directly. (build_mask_conversion): Likewise. Remove vinfo argument. (vect_add_conversion_to_patterm): Likewise, renaming to... (vect_add_conversion_to_pattern): ...this. (vect_recog_mask_conversion_pattern): Update call to build_mask_conversion. Pass the vector type to append_pattern_def_seq here too. (vect_recog_gather_scatter_pattern): Update call to vect_add_conversion_to_pattern. From-SVN: r262338
Richard Sandiford committed -
Various recognisers set PATTERN_DEF_SEQ to null before adding statements to it, but it should always be null at that point anyway. This patch asserts for that in vect_pattern_recog_1 and removes the redundant code. 2018-07-03 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-patterns.c (new_pattern_def_seq): Delete. (vect_recog_dot_prod_pattern, vect_recog_sad_pattern) (vect_recog_widen_op_pattern, vect_recog_over_widening_pattern) (vect_recog_rotate_pattern, vect_synth_mult_by_constant): Don't set STMT_VINFO_PATTERN_DEF_SEQ to null here. (vect_recog_pow_pattern, vect_recog_vector_vector_shift_pattern) (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern): Use append_pattern_def_seq instead of new_pattern_def_seq. (vect_recog_divmod_pattern): Do both of the above. (vect_pattern_recog_1): Assert that STMT_VINO_PATTERN_DEF_SEQ is null. From-SVN: r262337
Richard Sandiford committed -
The PR85694 series removed the only cases in which a pattern recogniser could attach patterns to more than one statement. I think it would be better to avoid adding any new instances of that, since it interferes with the normal matching order. This patch therefore switches the interface back to passing a single statement instead of a vector. It also gets rid of the clearing of STMT_VINFO_RELATED_STMT on failure, since no recognisers use it now. 2018-07-03 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-patterns.c (vect_recog_dot_prod_pattern): (vect_recog_sad_pattern, vect_recog_widen_op_pattern) (vect_recog_widen_mult_pattern, vect_recog_pow_pattern): (vect_recog_widen_sum_pattern, vect_recog_over_widening_pattern) (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern) (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern) (vect_recog_vector_vector_shift_pattern, vect_synth_mult_by_constant) (vect_recog_mult_pattern, vect_recog_divmod_pattern) (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern) (vect_recog_mask_conversion_pattern): Replace vec<gimple *> parameter with a single stmt_vec_info. (vect_recog_func_ptr): Likewise. (vect_recog_gather_scatter_pattern): Likewise, folding in... (vect_try_gather_scatter_pattern): ...this. (vect_pattern_recog_1): Remove stmts_to_replace and just pass the stmt_vec_info of the statement to be matched. Don't clear STMT_VINFO_RELATED_STMT. (vect_pattern_recog): Update call accordingly. From-SVN: r262336
Richard Sandiford committed -
This patch adds detection of average instructions: a = (((wide) b + (wide) c) >> 1); --> a = (wide) .AVG_FLOOR (b, c); a = (((wide) b + (wide) c + 1) >> 1); --> a = (wide) .AVG_CEIL (b, c); in cases where users of "a" need only the low half of the result, making the cast to (wide) redundant. The heavy lifting was done by earlier patches. This showed up another problem in vectorizable_call: if the call is a pattern definition statement rather than the main pattern statement, the type of vectorised call might be different from the type of the original statement. 2018-07-03 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR tree-optimization/85694 * doc/md.texi (avgM3_floor, uavgM3_floor, avgM3_ceil) (uavgM3_ceil): Document new optabs. * doc/sourcebuild.texi (vect_avg_qi): Document new target selector. * internal-fn.def (IFN_AVG_FLOOR, IFN_AVG_CEIL): New internal functions. * optabs.def (savg_floor_optab, uavg_floor_optab, savg_ceil_optab) (savg_ceil_optab): New optabs. * tree-vect-patterns.c (vect_recog_average_pattern): New function. (vect_vect_recog_func_ptrs): Add it. * tree-vect-stmts.c (vectorizable_call): Get the type of the zero constant directly from the associated lhs. gcc/testsuite/ PR tree-optimization/85694 * lib/target-supports.exp (check_effective_target_vect_avg_qi): New proc. * gcc.dg/vect/vect-avg-1.c: New test. * gcc.dg/vect/vect-avg-2.c: Likewise. * gcc.dg/vect/vect-avg-3.c: Likewise. * gcc.dg/vect/vect-avg-4.c: Likewise. * gcc.dg/vect/vect-avg-5.c: Likewise. * gcc.dg/vect/vect-avg-6.c: Likewise. * gcc.dg/vect/vect-avg-7.c: Likewise. * gcc.dg/vect/vect-avg-8.c: Likewise. * gcc.dg/vect/vect-avg-9.c: Likewise. * gcc.dg/vect/vect-avg-10.c: Likewise. * gcc.dg/vect/vect-avg-11.c: Likewise. * gcc.dg/vect/vect-avg-12.c: Likewise. * gcc.dg/vect/vect-avg-13.c: Likewise. * gcc.dg/vect/vect-avg-14.c: Likewise. From-SVN: r262335
Richard Sandiford committed -
The main over-widening patch can introduce quite a few extra casts, and in many cases those casts simply "tap into" an intermediate point in an existing extension. E.g. if we have: unsigned char a; int ax = (int) a; and a later operation using ax is shortened to "unsigned short", we would need: unsigned short ax' = (unsigned short) a; The a->ax extension requires one set of unpacks to get to unsigned short and another set of unpacks to get to int. The first set are then duplicated for ax'. If both ax and ax' are needed, the a->ax' extension would end up counting twice during cost calculations. This patch rewrites the original: int ax = (int) a; into a pattern: unsigned short ax' = (unsigned short) a; int ax = (int) ax'; so that each extension only counts once. 2018-07-03 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-patterns.c (vect_split_statement): New function. (vect_convert_input): Use it to try to split an existing cast. gcc/testsuite/ * gcc.dg/vect/vect-over-widen-5.c: Test that the extensions get split into two for use by the over-widening pattern. * gcc.dg/vect/vect-over-widen-6.c: Likewise. * gcc.dg/vect/vect-over-widen-7.c: Likewise. * gcc.dg/vect/vect-over-widen-8.c: Likewise. * gcc.dg/vect/vect-over-widen-9.c: Likewise. * gcc.dg/vect/vect-over-widen-10.c: Likewise. * gcc.dg/vect/vect-over-widen-11.c: Likewise. * gcc.dg/vect/vect-over-widen-12.c: Likewise. * gcc.dg/vect/vect-over-widen-13.c: Likewise. * gcc.dg/vect/vect-over-widen-14.c: Likewise. * gcc.dg/vect/vect-over-widen-15.c: Likewise. * gcc.dg/vect/vect-over-widen-16.c: Likewise. * gcc.dg/vect/vect-over-widen-22.c: New test. From-SVN: r262334
Richard Sandiford committed -
This patch is the main part of PR85694. The aim is to recognise at least: signed char *a, *b, *c; ... for (int i = 0; i < 2048; i++) c[i] = (a[i] + b[i]) >> 1; as an over-widening pattern, since the addition and shift can be done on shorts rather than ints. However, it ended up being a lot more general than that. The current over-widening pattern detection is limited to a few simple cases: logical ops with immediate second operands, and shifts by a constant. These cases are enough for common pixel-format conversion and can be detected in a peephole way. The loop above requires two generalisations of the current code: support for addition as well as logical ops, and support for non-constant second operands. These are harder to detect in the same peephole way, so the patch tries to take a more global approach. The idea is to get information about the minimum operation width in two ways: (1) by using the range information attached to the SSA_NAMEs (effectively a forward walk, since the range info is context-independent). (2) by back-propagating the number of output bits required by users of the result. As explained in the comments, there's a balance to be struck between narrowing an individual operation and fitting in with the surrounding code. The approach is pretty conservative: if we could narrow an operation to N bits without changing its semantics, it's OK to do that if: - no operations later in the chain require more than N bits; or - all internally-defined inputs are extended from N bits or fewer, and at least one of them is single-use. See the comments for the rationale. I didn't bother adding STMT_VINFO_* wrappers for the new fields since the code seemed more readable without. 2018-06-20 Richard Sandiford <richard.sandiford@arm.com> gcc/ * poly-int.h (print_hex): New function. * dumpfile.h (dump_dec, dump_hex): Declare. * dumpfile.c (dump_dec, dump_hex): New poly_wide_int functions. * tree-vectorizer.h (_stmt_vec_info): Add min_output_precision, min_input_precision, operation_precision and operation_sign. * tree-vect-patterns.c (vect_get_range_info): New function. (vect_same_loop_or_bb_p, vect_single_imm_use) (vect_operation_fits_smaller_type): Delete. (vect_look_through_possible_promotion): Add an optional single_use_p parameter. (vect_recog_over_widening_pattern): Rewrite to use new stmt_vec_info infomration. Handle one operation at a time. (vect_recog_cast_forwprop_pattern, vect_narrowable_type_p) (vect_truncatable_operation_p, vect_set_operation_type) (vect_set_min_input_precision): New functions. (vect_determine_min_output_precision_1): Likewise. (vect_determine_min_output_precision): Likewise. (vect_determine_precisions_from_range): Likewise. (vect_determine_precisions_from_users): Likewise. (vect_determine_stmt_precisions, vect_determine_precisions): Likewise. (vect_vect_recog_func_ptrs): Put over_widening first. Add cast_forwprop. (vect_pattern_recog): Call vect_determine_precisions. gcc/testsuite/ * gcc.dg/vect/vect-widen-mult-u8-u32.c: Check specifically for a widen_mult pattern. * gcc.dg/vect/vect-over-widen-1.c: Update the scan tests for new over-widening messages. * gcc.dg/vect/vect-over-widen-1-big-array.c: Likewise. * gcc.dg/vect/vect-over-widen-2.c: Likewise. * gcc.dg/vect/vect-over-widen-2-big-array.c: Likewise. * gcc.dg/vect/vect-over-widen-3.c: Likewise. * gcc.dg/vect/vect-over-widen-3-big-array.c: Likewise. * gcc.dg/vect/vect-over-widen-4.c: Likewise. * gcc.dg/vect/vect-over-widen-4-big-array.c: Likewise. * gcc.dg/vect/bb-slp-over-widen-1.c: New test. * gcc.dg/vect/bb-slp-over-widen-2.c: Likewise. * gcc.dg/vect/vect-over-widen-5.c: Likewise. * gcc.dg/vect/vect-over-widen-6.c: Likewise. * gcc.dg/vect/vect-over-widen-7.c: Likewise. * gcc.dg/vect/vect-over-widen-8.c: Likewise. * gcc.dg/vect/vect-over-widen-9.c: Likewise. * gcc.dg/vect/vect-over-widen-10.c: Likewise. * gcc.dg/vect/vect-over-widen-11.c: Likewise. * gcc.dg/vect/vect-over-widen-12.c: Likewise. * gcc.dg/vect/vect-over-widen-13.c: Likewise. * gcc.dg/vect/vect-over-widen-14.c: Likewise. * gcc.dg/vect/vect-over-widen-15.c: Likewise. * gcc.dg/vect/vect-over-widen-16.c: Likewise. * gcc.dg/vect/vect-over-widen-17.c: Likewise. * gcc.dg/vect/vect-over-widen-18.c: Likewise. * gcc.dg/vect/vect-over-widen-19.c: Likewise. * gcc.dg/vect/vect-over-widen-20.c: Likewise. * gcc.dg/vect/vect-over-widen-21.c: Likewise. From-SVN: r262333
Richard Sandiford committed -
r262275 allowed pattern matching on pattern statements. Testing for SVE on more benchmarks showed a case where this interacted badly with 14/n. The new over-widening detection could narrow a COND_EXPR A to another COND_EXPR B, which mixed_size_cond could then match. This was working as expected. However, we left B (now dead) in the pattern definition sequence with a non-null PATTERN_DEF_SEQ. mask_conversion also matched B, and unlike most recognisers, didn't clear PATTERN_DEF_SEQ before adding statements to it. This meant that the statements created by mixed_size_cond appeared in two supposedy separate sequences, causing much confusion. This patch removes pattern statements that are replaced by further pattern statements. As a belt-and-braces fix, it also nullifies PATTERN_DEF_SEQ on failure, in the same way Richard B. did recently for RELATED_STMT. I have patches to clean up the PATTERN_DEF_SEQ handling, but they only apply after the complete PR85694 sequence, whereas this needs to go in before 14/n. 2018-07-03 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern statements that have been replaced by further pattern statements. (vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure. gcc/testsuite/ * gcc.dg/vect/vect-mixed-size-cond-1.c: New test. From-SVN: r262332
Richard Sandiford committed -
2018-07-03 Richard Biener <rguenther@suse.de> * tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping, always set *dt. Dump vectype in vectype overload. * dumpfile.h (dump_gimple_expr): New function. (dump_gimple_expr_loc): Likewise. * dumpfile.c (dump_gimple_expr): New function. (dump_gimple_expr_loc): Likewise. From-SVN: r262330
Richard Biener committed -
h8300.md (movqi_h8300, [...]): Consolidate the H8/300, H8/300H and H8/S variants into a single pattern. * config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate the H8/300, H8/300H and H8/S variants into a single pattern. (movhi_h8300, movqi_h8300hs): Similarly. (pushqi_h8300hs, pushhi_h8300hs): Consolidate into a single pattern. (QHI mode iterator): New. From-SVN: r262329
Jeff Law committed -
From-SVN: r262328
Jeff Law committed -
gcc/ * config/riscv/riscv.c (riscv_expand_epilogue): Use emit_jump_insn instead of emit_insn for interrupt returns. * config/riscv/riscv.md (riscv_met): Add (return) to rtl. (riscv_sret, riscv_uret): Likewise. gcc/testsuite/ * gcc.target/riscv/interrupt-debug.c: New. From-SVN: r262327
Jim Wilson committed -
From-SVN: r262326
GCC Administrator committed
-
- 02 Jul, 2018 7 commits
-
-
Extend __is_convertible_helper to also detect whether the conversion is non-throwing, for std::is_nothrow_convertible in C++2a, * include/std/type_traits [__cplusplus > 201703] (__is_convertible_helper::__is_nothrow_type): Define new member. (__is_convertible_helper<_From, _To, false>::__test_aux1): Add noexcept. (__is_convertible_helper<_From, _To, false>::__test_nothrow) (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add new members. (is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a. * testsuite/20_util/is_nothrow_convertible/value.cc: New. * testsuite/20_util/is_nothrow_convertible/requirements/ explicit_instantiation.cc: New. * testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc: New. From-SVN: r262322
Jonathan Wakely committed -
parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range in error message about __thread and thread_local... /cp 2018-07-02 Paolo Carlini <paolo.carlini@oracle.com> * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range in error message about __thread and thread_local at the same time. /testsuite 2018-07-02 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/diagnostic/thread-thread_local.C: New. From-SVN: r262321
Paolo Carlini committed -
* include/std/type_traits (type_identity, type_identity_t): Define for C++2a. * testsuite/20_util/type_identity/requirements/alias_decl.cc: New. * testsuite/20_util/type_identity/requirements/ explicit_instantiation.cc:New. * testsuite/20_util/type_identity/requirements/typedefs.cc: New. From-SVN: r262319
Jonathan Wakely committed -
Avoid creation of unnecessary basic_string objects by using a simplified string_view type and performing comparisons on that type instead. A temporary basic_string object is still used when the sub_match's iterators are not contiguous, in order to get an object that the __string_view can reference. * include/bits/regex.h (sub_match::operator string_type): Call str(). (sub_match::compare): Use _M_str() instead of str(). (sub_match::_M_compare): New public function. (sub_match::__string_view): New helper type. (sub_match::_M_str): New overloaded functions to avoid creating a string_type object when not needed. (operator==, operator!=, operator<, operator>, operator<=, operator>=): Use sub_match::_M_compare instead of creating string_type objects. Fix Doxygen comments. * include/bits/regex_compiler.h (__has_contiguous_iter): Remove. (__is_contiguous_normal_iter): Rename to __is_contiguous_iter and simplify. (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use __enable_if_t. * include/std/type_traits (__enable_if_t): Define for C++11. * testsuite/28_regex/sub_match/compare.cc: New. * testsuite/util/testsuite_iterators.h (remove_cv): Add transformation trait. (input_iterator_wrapper): Use remove_cv for value_type argument of std::iterator base class. From-SVN: r262318
Jonathan Wakely committed -
This patch moves a workaround for locale differences from a selftest in pretty-print.c to selftest.h/c to make it reusable; I need this for a selftest in a followup patch. gcc/ChangeLog: * pretty-print.c (selftest::test_pp_format): Move save and restore of quotes to class auto_fix_quotes, and add an instance. * selftest.c: Include "intl.h". (selftest::auto_fix_quotes::auto_fix_quotes): New ctor. (selftest::auto_fix_quotes::~auto_fix_quotes): New dtor. * selftest.h (selftest::auto_fix_quotes): New class. From-SVN: r262317
David Malcolm committed -
PR go/86331 os: check return value as well as error from waitid https://gcc.gnu.org/PR86331 indicates that if a signal handler runs it is possible for syscall.Syscall6 to return a non-zero errno value even if no error occurs. That is a problem in general, but this fix will let us work around the general problem for the specific case of calling waitid. Reviewed-on: https://go-review.googlesource.com/121595 From-SVN: r262313
Ian Lance Taylor committed -
* config/aarch64/aarch64-protos.h, config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): Remove. * config/aarch64/aarch64-sve.md (cond_<SVE_INT_BINARY><SVE_I>): Allow aarch64_simd_reg_or_zero as select operand; remove the aarch64_sve_prepare_conditional_op call. (cond_<SVE_INT_BINARY_SD><SVE_SDI>): Likewise. (cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise. (*cond_<SVE_INT_BINARY><SVE_I>_z): New pattern. (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_z): New pattern. (*cond_<SVE_COND_FP_BINARY><SVE_F>_z): New pattern. (*cond_<SVE_INT_BINARY><SVE_I>_any): New pattern. (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_any): New pattern. (*cond_<SVE_COND_FP_BINARY><SVE_F>_any): New pattern and a splitters to match all of the *_any patterns. * config/aarch64/predicates.md (aarch64_sve_any_binary_operator): New. * config/aarch64/iterators.md (SVE_INT_BINARY_REV): Remove. (SVE_COND_FP_BINARY_REV): Remove. (sve_int_op_rev, sve_fp_op_rev): New. * config/aarch64/aarch64-sve.md (*cond_<SVE_INT_BINARY><SVE_I>_0): New. (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_0): New. (*cond_<SVE_COND_FP_BINARY><SVE_F>_0): New. (*cond_<SVE_INT_BINARY><SVE_I>_2): Rename, add movprfx alternative. (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_2): Similarly. (*cond_<SVE_COND_FP_BINARY><SVE_F>_2): Similarly. (*cond_<SVE_INT_BINARY><SVE_I>_3): Similarly; use sve_int_op_rev. (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_3): Similarly. (*cond_<SVE_COND_FP_BINARY><SVE_F>_3): Similarly; use sve_fp_op_rev. * config/aarch64/aarch64-sve.md (cond_<SVE_COND_FP_BINARY><SVE_F>): Remove match_dup 1 from the inner unspec. (*cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise. * config/aarch64/aarch64.md (movprfx): New attr. (length): Default movprfx to 8. * config/aarch64/aarch64-sve.md (*mul<SVE_I>3): Add movprfx alt. (*madd<SVE_I>, *msub<SVE_I): Likewise. (*<su>mul<SVE_I>3_highpart): Likewise. (*<SVE_INT_BINARY_SD><SVE_SDI>3): Likewise. (*v<ASHIFT><SVE_I>3): Likewise. (*<su><MAXMIN><SVE_I>3): Likewise. (*<su><MAXMIN><SVE_F>3): Likewise. (*fma<SVE_F>4, *fnma<SVE_F>4): Likewise. (*fms<SVE_F>4, *fnms<SVE_F>4): Likewise. (*div<SVE_F>4): Likewise. From-SVN: r262312
Richard Henderson committed
-