- 05 Sep, 2018 18 commits
-
-
* config/i386/i386.md (truncdfsf2): Remove expander. (truncdfsf2_with_temp): Ditto. (truncxf<mode>2): Ditto. (*truncdfsf_fast_mixed): Remove insn pattern. (*truncdfsf_fast_i387): Ditto. (*truncdfsf_mixed): Ditto. (*truncdfsf_i387): Ditto. (*truncdfsf2_i387_1): Ditto. (*truncxfsf2_mixed): Ditto. (*truncxfdf2_mixed): Ditto. (*truncxf<mode>2_i387_noop): Ditto. Update callers to call gen_truncxf<mode>2 instead. (*truncxf<mode>2_i387): Remove. (reg->reg splitters): Remove splitter pattern. (reg->mem splitters): Ditto. (truncdfsf2): New insn pattern. (truncxf<mode>2): Ditto. From-SVN: r264130
Uros Bizjak committed -
A branch with a name matching scan-assembler pattern triggers inappropriate FAIL. E.g. branch fixups-testsuite and - gcc.target/i386/pr65871-?.c (scan-assembler-not "test") - gcc.target/i386/pr41442.c (scan-assembler-times "test|cmp" 2) etc. This is a recurring problem as can be seen by some -fno-ident additions by commits from e.g. Michael Meissner over the years: builtins-58.c, powerpc/pr46728-?.c The patch below adds -fno-ident if a testcase contains one of scan-assembler, scan-assembler-not or scan-assembler-times. Regression tested on x86_64-unknown-linux on a fixups-testsuite branch where it fixes several false FAILs without regressions. gcc/testsuite/ChangeLog 2016-06-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> PR testsuite/52665 * lib/gcc-dg.exp (gcc-dg-test-1): Iterate over _required_options. * lib/target-supports.exp (scan-assembler_required_options, scan-assembler-not_required_options, scan-assembler-times_required_options): Add -fno-ident. * lib/scanasm.exp (scan-assembler-times): Fix error message. * c-c++-common/ident-0a.c: New test. * c-c++-common/ident-0b.c: New test. * c-c++-common/ident-1a.c: New test. * c-c++-common/ident-1b.c: New test. * c-c++-common/ident-2a.c: New test. * c-c++-common/ident-2b.c: New test. From-SVN: r264128
Bernhard Reutner-Fischer committed -
From-SVN: r264127
Jonathan Wakely committed -
This patch aims to optimise sequences involving uses of 1.0 / sqrt (a) under -freciprocal-math and -funsafe-math-optimizations. In particular consider: x = 1.0 / sqrt (a); r1 = x * x; // same as 1.0 / a r2 = a * x; // same as sqrt (a) If x, r1 and r2 are all used further on in the code, this can be transformed into: tmp1 = 1.0 / a tmp2 = sqrt (a) tmp3 = tmp1 * tmp2 x = tmp3 r1 = tmp1 r2 = tmp2 A bit convoluted, but this saves us one multiplication and, more importantly, the sqrt and division are now independent. This also allows optimisation of a subset of these expressions. For example: x = 1.0 / sqrt (a) r1 = x * x can be transformed to r1 = 1.0 / a, eliminating the sqrt if x is not used anywhere else. And similarly: x = 1.0 / sqrt (a) r1 = a * x can be transformed to sqrt (a) eliminating the division. For the testcase: double res, res2, tmp; void foo (double a, double b) { tmp = 1.0 / __builtin_sqrt (a); res = tmp * tmp; res2 = a * tmp; } We now generate for aarch64 with -Ofast: foo: fmov d2, 1.0e+0 adrp x2, res2 fsqrt d1, d0 adrp x1, res fdiv d0, d2, d0 adrp x0, tmp str d1, [x2, #:lo12:res2] fmul d1, d1, d0 str d0, [x1, #:lo12:res] str d1, [x0, #:lo12:tmp] ret where before it generated: foo: fsqrt d2, d0 fmov d1, 1.0e+0 adrp x1, res2 adrp x2, tmp adrp x0, res fdiv d1, d1, d2 fmul d0, d1, d0 fmul d2, d1, d1 str d1, [x2, #:lo12:tmp] str d0, [x1, #:lo12:res2] str d2, [x0, #:lo12:res] ret As you can see, the new sequence has one fewer multiply and the fsqrt and fdiv are independent. * tree-ssa-math-opts.c (is_mult_by): New function. (is_square_of): Use the above. (optimize_recip_sqrt): New function. (pass_cse_reciprocals::execute): Use the above. * gcc.dg/recip_sqrt_mult_1.c: New test. * gcc.dg/recip_sqrt_mult_2.c: Likewise. * gcc.dg/recip_sqrt_mult_3.c: Likewise. * gcc.dg/recip_sqrt_mult_4.c: Likewise. * gcc.dg/recip_sqrt_mult_5.c: Likewise. * g++.dg/recip_sqrt_mult_1.C: Likewise. * g++.dg/recip_sqrt_mult_2.C: Likewise. From-SVN: r264126
Kyrylo Tkachov committed -
2018-09-05 Richard Biener <rguenther@suse.de> PR bootstrap/87134 * tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure to zero-init the emplaced vec. From-SVN: r264125
Richard Biener committed -
2018-09-05 Martin Liska <mliska@suse.cz> PR tree-optimization/87205 * tree-switch-conversion.c (pass_lower_switch::execute): Group cases for switch statements. 2018-09-05 Martin Liska <mliska@suse.cz> PR tree-optimization/87205 * gcc.dg/tree-ssa/pr87205-2.c: New test. * gcc.dg/tree-ssa/pr87205.c: New test. From-SVN: r264124
Martin Liska committed -
re PR tree-optimization/87217 (ICE in in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709 when compiling SPEC2000 starting with r264069) 2018-09-05 Richard Biener <rguenther@suse.de> PR tree-optimization/87217 * tree-ssa-sccvn.c (vuse_valueize): New. (vn_reference_lookup_pieces): Use it. (vn_reference_lookup): Likewise. * gfortran.dg/pr87217.f: New testcase. From-SVN: r264121
Richard Biener committed -
From-SVN: r264120
Hans-Peter Nilsson committed -
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01966.html PR c++/87137 * stor-layout.c (place_field): Scan forwards to check last bitfield when ms_bitfield_placement is in effect. gcc/testsuite/ * g++.dg/abi/pr87137.C: New. From-SVN: r264119
Nathan Sidwell committed -
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00249.html cp/ PR c++/87185 * lambda.c (prune_lambda_captures): Protect against const_vars.get returning NULL. testsuite/ PR c++/87185 * g++.dg/pr87185.C: New. From-SVN: r264118
Pádraig Brady committed -
re PR bootstrap/87225 (tree-vect-stmts.c:3748 error: converting to 'bool' from 'std::nullptr_t' requires direct-initialization [-fpermissive]) 2018-09-05 Richard Biener <rguenther@suse.de> PR bootstrap/87225 * tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus return. From-SVN: r264116
Richard Biener committed -
This is a rewrite of the tag collision avoidance patch that Kugan had written as a machine reorg pass back in February. The falkor hardware prefetching system uses a combination of the source, destination and offset to decide which prefetcher unit to train with the load. This is great when loads in a loop are sequential but sub-optimal if there are unrelated loads in a loop that tag to the same prefetcher unit. This pass attempts to rename the desination register of such colliding loads using routines available in regrename.c so that their tags do not collide. This shows some performance gains with mcf and xalancbmk (~5% each) and will be tweaked further. The pass is placed near the fag end of the pass list so that subsequent passes don't inadvertantly end up undoing the renames. 2018-07-02 Siddhesh Poyarekar <siddhesh@sourceware.org> Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org> * config/aarch64/falkor-tag-collision-avoidance.c: New file. * config.gcc (extra_objs): Build it. * config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o): Likewise. * config/aarch64/aarch64-passes.def (pass_tag_collision_avoidance): New pass. * config/aarch64/aarch64.c (qdf24xx_tunings): Add AARCH64_EXTRA_TUNE_RENAME_LOAD_REGS to tuning_flags. (aarch64_classify_address): Remove static qualifier. (aarch64_address_info, aarch64_address_type): Move to... * config/aarch64/aarch64-protos.h: ... here. (make_pass_tag_collision_avoidance): New function. * config/aarch64/aarch64-tuning-flags.def (rename_load_regs): New tuning flag. Co-Authored-By: Kugan Vivekanandarajah <kuganv@linaro.org> From-SVN: r264115
Siddhesh Poyarekar committed -
From-SVN: r264114
Martin Liska committed -
2018-09-05 Martin Liska <mliska@suse.cz> PR testsuite/87216 * gcc.dg/tree-prof/pr59521-3.c: Update scanned pattern to support Dawring names. From-SVN: r264113
Martin Liska committed -
2018-09-05 Martin Liska <mliska@suse.cz> * doc/gcov.texi: Update documentation of humar readable mode. * gcov.c (format_count): Print one decimal place, it provides more fine number of situations like '1G' vs. '1.4G'. 2018-09-05 Martin Liska <mliska@suse.cz> * g++.dg/gcov/loop.C: Update test to support new format. From-SVN: r264112
Martin Liska committed -
2018-09-05 Martin Liska <mliska@suse.cz> PR target/87164 * config/rs6000/rs6000.opt: Mark the option as Deprecated. * optc-gen.awk: Allow 'Var' for Deprecated options in order to generate a MASK value. From-SVN: r264111
Martin Liska committed -
* cp-tree.h (treat_lvalue_as_rvalue_p): Declare. * except.c (build_throw): Use it. Use CP_TYPE_VOLATILE_P. * typeck.c (treat_lvalue_as_rvalue_p): No longer static. Add PARM_OK parameter. (maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call. (check_return_expr): Likewise. From-SVN: r264101
Marek Polacek committed -
From-SVN: r264100
GCC Administrator committed
-
- 04 Sep, 2018 14 commits
-
-
r251028 commit cd557ff63f388ad27c376d0a225e74d3594a6f9d Author: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu Aug 10 15:29:05 2017 +0000 i386: Don't use frame pointer without stack access When there is no stack access, there is no need to use frame pointer even if -fno-omit-frame-pointer is used and caller's frame pointer is unchanged. frame pointer may not be available even if -fno-omit-frame-pointer is used. When this happened, arg pointer may be eliminated by hard frame pointer. Since hard frame pointer is encoded with DW_OP_fbreg which uses the DW_AT_frame_base attribute, not hard frame pointer directly, we should allow hard frame pointer when generating DWARF info even if frame pointer isn't used. gcc/ PR debug/86593 * dwarf2out.c (based_loc_descr): Allow hard frame pointer even if frame pointer isn't used. (compute_frame_pointer_to_fb_displacement): Likewise. gcc/testsuite/ PR debug/86593 * g++.dg/pr86593.C: New test. From-SVN: r264096
H.J. Lu committed -
PR target/87198 * common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET, OPTION_MASK_ISA_XSAVES_SET, OPTION_MASK_ISA_XSAVEC_SET): Use OPTION_MASK_ISA_XSAVE_SET instead of OPTION_MASK_ISA_XSAVE. (OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_XSAVES_UNSET and OPTION_MASK_ISA_XSAVEC_UNSET. * gcc.target/i386/pr87198.c: New test. From-SVN: r264088
Jakub Jelinek committed -
NAND is ~(a1 & a2), but xtensa_expand_atomic does ~a1 & a2. That fixes libatomic tests atomic-op-{1,2}. gcc/ 2018-09-04 Max Filippov <jcmvbkbc@gmail.com> * config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and XOR operations in NAND case. From-SVN: r264087
Max Filippov committed -
PR target/86744 * gcc.target/i386/addr-sel-1.c: Don't xfail "b\\+1" scan. From-SVN: r264086
Rainer Orth committed -
* wide-int-range.cc (wide_int_range_convert): New. * wide-int-range.h (wide_int_range_convert): New. * tree-vrp.c (extract_range_from_unary_expr): Abstract wide int code into wide_int_range_convert. (extract_range_into_wide_ints): Do not munge anti range constants into the entire domain. Just return the range back. From-SVN: r264085
Aldy Hernandez committed -
2018-09-04 Martin Liska <mliska@suse.cz> * genmatch.c (output_line_directive): Add new argument fnargs. (dt_simplify::gen_1): Encapsulate dump within __builtin_expect. From-SVN: r264084
Martin Liska committed -
* doc/invoke.texi (Option Summary): Add whitespace. From-SVN: r264083
Jonathan Wakely committed -
* doc/invoke.texi (Option Summary): Add -Waligned-new. From-SVN: r264080
Jonathan Wakely committed -
2018-09-04 Richard Biener <rguenther@suse.de> PR tree-optimization/87211 * tree-ssa-sccvn.c (visit_phi): When value-numbering to a backedge value we're supposed to treat as VARYING also number the PHI to VARYING in case it got a different value-number already. * gcc.dg/torture/pr87211.c: New testcase. From-SVN: r264079
Richard Biener committed -
* tree-vrp.c (vrp_can_optimize_bit_op): Remove. (extract_range_from_binary_expr_1): Do not call vrp_can_optimize_bit_op. * wide-int-range.cc (wide_int_range_can_optimize_bit_op): Make static. (wide_int_range_get_mask_and_bounds): New. (wide_int_range_optimize_bit_op): New. (wide_int_range_bit_ior): Call wide_int_range_optimize_bit_op. (wide_int_range_bit_and): Same. * wide-int-range.h (wide_int_range_can_optimize_bit_op): Remove. (wide_int_range_optimize_bit_op): New. (wide_int_range_get_mask_and_bounds): New. From-SVN: r264078
Aldy Hernandez committed -
2018-09-04 Richard Biener <rguenther@suse.de> PR tree-optimization/87176 * tree-ssa-sccvn.c (visit_phi): Remove redundant allsame variable. When value-numbering a virtual PHI node make sure to not value-number to the backedge value. * gcc.dg/torture/pr87176.c: New testcase. * gcc.dg/torture/ssa-fre-1.c: Likewise. From-SVN: r264077
Richard Biener committed -
* doc/extend.texi (Long Long, Hex Floats): Document support for long long and hex floats in more recent versions of ISO C++. From-SVN: r264076
Jonathan Wakely committed -
From-SVN: r264075
Xuepeng Guo committed -
From-SVN: r264074
GCC Administrator committed
-
- 03 Sep, 2018 8 commits
-
-
simplify.c (gfc_simplify_modulo): Re-arrange code to test whether 'P' is zero and issue an error if it is. 2018-09-03 Jerry DeLisle <jvdelisle@gcc.gnu.org> * simplify.c (gfc_simplify_modulo): Re-arrange code to test whether 'P' is zero and issue an error if it is. * gfortran.dg/modulo_check: New test. From-SVN: r264070
Jerry DeLisle committed -
2018-09-03 Richard Biener <rguenther@suse.de> PR tree-optimization/87177 * tree-ssa-sccvn.c (vuse_ssa_val): Revert previous change, keep cleanup. * gcc.dg/torture/pr87177.c: New testcase. * gcc.dg/torture/pr87177-2.c: Likewise. From-SVN: r264069
Richard Biener committed -
* bb-reorder.c (edge_order): Convert to C-qsort-style tri-state comparator. (reorder_basic_blocks_simple): Change std::stable_sort to gcc_stablesort. From-SVN: r264068
Alexander Monakov committed -
* tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style tri-state comparator. (fuse_memset_builtins): Change std::stable_sort to gcc_stablesort. From-SVN: r264067
Alexander Monakov committed -
* sort.cc (struct sort_ctx): New field 'nlim'. Use it... (mergesort): ... here as maximum count for using netsort. (gcc_qsort): Set nlim to 3 if stable sort is requested. (gcc_stablesort): New. * system.h (gcc_stablesort): Declare. From-SVN: r264066
Alexander Monakov committed -
* sort.cc (gcc_qsort) [CHECKING_P]: Call qsort_chk. * system.h (qsort): Always redirect to gcc_qsort. Update comment. * vec.c (qsort_chk): Do not call gcc_qsort. Update comment. From-SVN: r264065
Alexander Monakov committed -
Our md files refer to {l,st}xsd%U<n>x, but no {l,st}xsdux insns exist. This patch removes the update forms. All these use constraint "Z" which does not allow update form, so there is no practical difference. * config/rs6000/rs6000.md (*mov<mode>_hardfloat32): Remove %U from the lxsdx and stxsdx alternatives. (*mov<mode>_hardfloat64): Ditto. * config/rs6000/vsx.md (*vsx_extract_<mode>_store): Ditto. From-SVN: r264064
Segher Boessenkool committed -
Split the long double testing into a separate file, so that we can XFAIL targets where the long double precision doesn't meet the expected tolerances. The float and double tests are still expefted to PASS for all targets. PR libstdc++/78179 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: New test that runs the long double part of hypot.cc. * testsuite/26_numerics/headers/cmath/hypot.cc: Disable long double tests unless TEST_HYPOT_LONG_DOUBLE is defined. From-SVN: r264063
Jonathan Wakely committed
-