1. 23 Oct, 2015 1 commit
  2. 22 Oct, 2015 21 commits
    • re PR driver/68043 (many undocumented options, missing punctuation) · ffbd5e09
      gcc/ChangeLog:
      
      2015-10-22  Martin Sebor  <msebor@redhat.com>
      
      	PR driver/68043
      	* config/i386/i386.opt: Add missing periods to the ends of sentences.
      	* config/msp430/msp430.opt: Same.
      
      gcc/testsuite/ChangeLog:
      
      2015-10-22  Martin Sebor  <msebor@redhat.com>
      
      	PR driver/68043
      	* gcc.misc-tests/help.exp: Verify that option descriptions
      	end in periods.
      	* lib/options.exp (check_for_options): Use the regexp --line option.
      	Print unexpected match on failure.
      
      From-SVN: r229205
      Martin Sebor committed
    • pr67985-3.c (dg-options): Add -mfpmath=sse. · efee9dc4
      	* gcc.target/i386/pr67985-3.c (dg-options): Add -mfpmath=sse.
      
      From-SVN: r229199
      Uros Bizjak committed
    • Fix up ChangeLog for rev. 229155. · b1726d6c
      From-SVN: r229195
      Martin Sebor committed
    • Proposed doc update for Explicit Reg Vars 3/3 · aba77695
      	* doc/extend.exp (Global Register Variables): Rewrite.
      
      From-SVN: r229188
      David Wohlferd committed
    • [PATCH 3/9] ENABLE_CHECKING refactoring: Java and Ada · 9abe8b74
      [PATCH 3/9] ENABLE_CHECKING refactoring: Java and Ada
      gcc/java/ChangeLog:
      
      2015-10-05  Mikhail Maltsev  <maltsevm@gmail.com>
      
      	* decl.c (java_mark_decl_local): Use flag_checking instead of
      	ENABLE_CHECKING.
      
      gcc/ada/ChangeLog:
      
      2015-10-05  Mikhail Maltsev  <maltsevm@gmail.com>
      
      	* gcc-interface/decl.c (gnat_to_gnu_entity): Use gcc_checking_assert.
      	* gcc-interface/trans.c (assoc_to_constructor): Use flag_checking.
      	* gcc-interface/utils.c (relate_alias_sets): Likewise.
      	* gcc-interface/utils2.c (build_binary_op, build_unary_op): Use
      	gcc_checking_assert
      
      From-SVN: r229185
      Mikhail Maltsev committed
    • [PATCH] Fix abort in write_eligible_delay · 71e558ef
      [PATCH] Fix abort in write_eligible_delay
              * genattrtab.c (main): If we do not have any annul-true or annul-false
              slots, then write out a dummy eligible_for_annul_true or
              eligible_for_annul_false as needed.
      
      From-SVN: r229184
      Jeff Law committed
    • msp430.opt: Add -msilicon-errata and -msilicon-errata-warn. · 8d535dab
      	* config/msp430/msp430.opt: Add -msilicon-errata and
      	-msilicon-errata-warn.
      	* config/msp430/msp430.h (ASM_SPEC): Pass new options on to
      	assembler.
      	* doc/invoke.texi: Document new options.
      
      From-SVN: r229177
      Nick Clifton committed
    • re PR c++/67838 (Rejects-valid-code: templated lambda variable.) · 2c34eb74
      2015-10-22  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/67838
      	* g++.dg/cpp1y/var-templ46.C: New.
      
      From-SVN: r229175
      Paolo Carlini committed
    • oops- omitted by accident from the previous delta. · 5eec02d0
      From-SVN: r229174
      Nick Clifton committed
    • re PR tree-optimization/58497 (SLP vectorizes identical operations) · 975b6ff3
      2015-10-22  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/58497
      	* tree-vect-generic.c (ssa_uniform_vector_p): New helper.
      	(expand_vector_operations_1): Use it.  Lower operations on
      	all uniform vectors to scalar operations if the HW supports it.
      
      	* gcc.dg/tree-ssa/vector-5.c: New testcase.
      
      From-SVN: r229173
      Richard Biener committed
    • re PR tree-optimization/19049 (not vectorizing a fortran loop) · 90a7a1b5
      2015-10-22  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/19049
      	PR tree-optimization/65962
      	* tree-vect-data-refs.c (vect_analyze_group_access_1): Fall back
      	to strided accesses if single-element interleaving doesn't work.
      
      	* gcc.dg/vect/vect-strided-store-pr65962.c: New testcase.
      	* gcc.dg/vect/vect-63.c: Adjust.
      	* gcc.dg/vect/vect-70.c: Likewise.
      	* gcc.dg/vect/vect-strided-u8-i2-gap.c: Likewise.
      	* gcc.dg/vect/vect-strided-a-u8-i2-gap.c: Likewise.
      	* gfortran.dg/vect/pr19049.f90: Likewise.
      	* gfortran.dg/vect/vect-8.f90: Likewise.
      
      From-SVN: r229172
      Richard Biener committed
    • re PR middle-end/68046 (-ftrapv doesn't catch leaq-based overflows on x86-64) · a51ca2f4
      2015-10-22  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/68046
      	PR middle-end/61893
      	* optabs.c (emit_libcall_block_1): Allow a NULL_RTX equiv.
      	(expand_binop): For -ftrapv optabs do not record an REG_EQUAL note.
      	(expand_unop): Likewise.
      
      	* gcc.dg/torture/ftrapv-2.c: New testcase.
      
      From-SVN: r229170
      Richard Biener committed
    • ChangeLog: Fix whitespace. · 08e99efb
      From-SVN: r229169
      Uros Bizjak committed
    • Fix bootstrap on x86_64-apple-darwin14 after r229119. · 692b1131
      libsanitizer/
      
      	PR bootstrap/68041
      	* configure.ac (link_sanitizer_common): Link against librt only if it
      	contains shm_open, required by sanitizers.
      	(CXX_ABI_NEEDED): Remove variable.
      	* configure: Regenerate.
      	* ubsan/Makefile.am (libubsan_la_LIBADD): Do not add -lc++abi anymore.
      	* ubsan/Makefile.in: Regenerate.
      
      From-SVN: r229168
      Max Ostapenko committed
    • fold-const.c (fold_addr_of_array_ref_difference): Properly convert operands… · a8fc2579
      fold-const.c (fold_addr_of_array_ref_difference): Properly convert operands before folding a MINUS_EXPR.
      
      2015-10-22  Richard Biener  <rguenther@suse.de>
      
      	* fold-const.c (fold_addr_of_array_ref_difference): Properly
      	convert operands before folding a MINUS_EXPR.
      	(fold_binary_loc): Move simplification of MINUS_EXPR on
      	converted POINTER_PLUS_EXPRs ...
      	* match.pd: ... here.
      
      	c/
      	* c-typeck.c (c_finish_omp_clauses): Properly convert operands
      	before folding a MINUS_EXPR.
      
      	cp/
      	* semantics.c (cp_finish_omp_clause_depend_sink): Properly convert
      	before folding a MINUS_EXPR.
      	(finish_omp_clauses): Likewise.
      
      From-SVN: r229167
      Richard Biener committed
    • Move tan simplifications to match.pd · cfed37a0
      Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
      
      gcc/
      	* builtins.c (fold_builtin_tan): Delete.
      	(fold_builtin_1): Handle constant tan arguments here.
      	* match.pd: Simplify (tan (atan x)) to x.
      
      From-SVN: r229166
      Richard Sandiford committed
    • Move more cproj simplifications to match.pd · 92c52eab
      Also make build_complex_cproj available globally and use
      it for the existing match.pd rules.
      
      Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
      
      gcc/
      	* builtins.c (fold_builtin_cproj): Delete.
      	(fold_builtin_1): Handle constant arguments here.
      	(build_complex_cproj): Move and rename to...
      	* tree.c: (build_complex_inf): ...this.
      	* tree.h (build_complex_inf): Declare.
      	* match.pd: Fold cproj(x)->x if x has no infinity.
      	Use build_complex_inf for existing cproj rules.
      
      From-SVN: r229164
      Richard Sandiford committed
    • S/390: PR68015 Fix ICE in s390_emit_compare · 7477de01
      gcc/ChangeLog:
      
      2015-10-22  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/68015
      	* config/s390/s390.md (mov<mode>cc): Emit compare only if we don't
      	already have a comparison result.
      
      gcc/testsuite/ChangeLog:
      
      2015-10-22  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/68015
      	* gcc.target/s390/pr68015.c: New test.
      
      From-SVN: r229163
      Andreas Krebbel committed
    • [PATCH][ARM] Fix for testcase after r228661 · 597bb9db
      
      This patch addresses PR-67948 by changing the xor-and.c test,
      initially written for a simplify-rtx pattern, to make it pass post
      r228661 (see
      https://gcc.gnu.org/ml/gcc-patches/2015-10/msg00676.html). This test
      no longer triggered the simplify-rtx pattern it was written for prior
      to r228661, though other optimizations did lead to the same assembly
      the test checked for. The optimization added with r228661 matches the
      pattern used in the test and optimizes it to a better and still valid
      sequence. Being unable to easily change the test to trigger the
      original simplify-rtx pattern, I chose to change it to pass with the
      new produced assembly sequence.
      
      This is correct because the transformation is valid and it yields a
      more efficient pattern. However, as I pointed out before this test
      doesn't test the optimization it originally was intended for.
      
      Tested by running regression tests for armv6.
      
      Is this OK to commit?
      
      Thanks, Andre
      
      2015-10-22  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	PR testsuite/67948
      	* gcc.target/arm/xor-and.c: Adjust test to check for eor
      	instead of orr.
      
      From-SVN: r229161
      Andre Vieira committed
    • [Patch AArch64 63304] Fix issue with global state. · 1be34295
      
      Jiong pointed out privately that there was a thinko
      in the way in which the global state was being
      set and reset. I don't like adding such
      global state but ....
      
      
      2015-10-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
      
              PR target/63304
              * config/aarch64/aarch64.c (aarch64_nopcrelative_literal_loads): New.
              (aarch64_expand_mov_immediate): Use aarch64_nopcrelative_literal_loads.
              (aarch64_classify_address): Likewise.
              (aarch64_secondary_reload): Likewise.
              (aarch64_override_options_after_change_1): Adjust.
              * config/aarch64/aarch64.md (aarch64_reload_movcp<GPF_TF:mode><P:mode>):
              Use aarch64_nopcrelative_literal_loads.
              (aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
              * config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads): 
      	Declare
      
      2015-10-22  Jiong Wang  <jiong.wang@arm.com>
                  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
      
              PR target/63304
              * gcc.target/aarch64/pr63304_1.c: New test.
      
      From-SVN: r229160
      Ramana Radhakrishnan committed
    • Daily bump. · 01f32f32
      From-SVN: r229159
      GCC Administrator committed
  3. 21 Oct, 2015 18 commits
    • re PR c++/66781 ("confused by earlier errors, bailing out" with wrong enum within class) · f523e68a
      /cp
      2015-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/66781
      	* parser.c (cp_parser_enum_specifier): Upon error_at set
      	nested_name_specifier to error_mark_node; improve error message.
      
      /testsuite
      2015-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/66781
      	* g++.dg/parse/enum13.C: New.
      
      /cp
      2015-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/67847
      	* parser.c (cp_parser_enum_specifier): Reject a nested_name_specifier
      	which doesn't name a class or namespace.
      
      /testsuite
      2015-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/67847
      	* g++.dg/parse/enum12.C: New.
      
      From-SVN: r229156
      Paolo Carlini committed
    • Improve --help output to generate references to option aliases. · a7b2e184
      gcc/
      	PR driver/68043
      	* opts.c (undocumented_msg, use_diagnosed_msg): New globals.
      	(print_filtered_help): Reference aliased option's name and encourage
      	readers to use it in preference to the alias if the former is not
      	documented.  Mention when using an option is diagnosed.
      	* gcc.c (display_help): End each sentence with a period.
      
      	* ada/gcc-interface/lang.opt: End each sentence that describes
      	an option with a period.
      	* c-family/c.opt: Same.
      	* common.opt: Same.
      	* config/aarch64/aarch64.opt: Same.
      	* config/alpha/alpha.opt: Same.
      	* config/arc/arc.opt: Same.
      	* config/arm/arm.opt: Same.
      	* config/avr/avr.opt: Same.
      	* config/bfin/bfin.opt: Same.
      	* config/c6x/c6x.opt: Same.
      	* config/cr16/cr16.opt: Same.
      	* config/cris/cris.opt: Same.
      	* config/cris/linux.opt: Same.
      	* config/darwin.opt: Same.
      	* config/epiphany/epiphany.opt: Same.
      	* config/fr30/fr30.opt: Same.
      	* config/frv/frv.opt: Same.
      	* config/ft32/ft32.opt: Same.
      	* config/g.opt: Same.
      	* config/h8300/h8300.opt: Same.
      	* config/i386/cygming.opt: Same.
      	* config/i386/djgpp.opt: Same.
      	* config/i386/i386.opt: Same.
      	* config/i386/interix.opt: Same.
      	* config/i386/mingw-w64.opt: Same.
      	* config/i386/mingw.opt: Same.
      	* config/ia64/ia64.opt: Same.
      	* config/ia64/ilp32.opt: Same.
      	* config/iq2000/iq2000.opt: Same.
      	* config/linux.opt: Same.
      	* config/lm32/lm32.opt: Same.
      	* config/lynx.opt: Same.
      	* config/m32c/m32c.opt: Same.
      	* config/m32r/m32r.opt: Same.
      	* config/m68k/ieee.opt: Same.
      	* config/m68k/m68k.opt: Same.
      	* config/mcore/mcore.opt: Same.
      	* config/mep/mep.opt: Same.
      	* config/microblaze/microblaze.opt: Same.
      	* config/mips/mips.opt: Same.
      	* config/mmix/mmix.opt: Same.
      	* config/mn10300/mn10300.opt: Same.
      	* config/moxie/moxie.opt: Same.
      	* config/msp430/msp430.opt: Same.
      	* config/nios2/elf.opt: Same.
      	* config/nios2/nios2.opt: Same.
      	* config/nvptx/nvptx.opt: Same.
      	* config/pa/pa-hpux.opt: Same.
      	* config/pa/pa-hpux1010.opt: Same.
      	* config/pa/pa-hpux1111.opt: Same.
      	* config/pa/pa-hpux1131.opt: Same.
      	* config/pa/pa.opt: Same.
      	* config/pa/pa64-hpux.opt: Same.
      	* config/pdp11/pdp11.opt: Same.
      	* config/rl78/rl78.opt: Same.
      	* config/rs6000/476.opt: Same.
      	* config/rs6000/aix64.opt: Same.
      	* config/rs6000/darwin.opt: Same.
      	* config/rs6000/linux64.opt: Same.
      	* config/rs6000/rs6000.opt: Same.
      	* config/rs6000/sysv4.opt: Same.
      	* config/s390/s390.opt: Same.
      	* config/s390/tpf.opt: Same.
      	* config/sh/sh.opt: Same.
      	* config/sol2.opt: Same.
      	* config/sparc/long-double-switch.opt: Same.
      	* config/sparc/sparc.opt: Same.
      	* config/spu/spu.opt: Same.
      	* config/stormy16/stormy16.opt: Same.
      	* config/tilegx/tilegx.opt: Same.
      	* config/tilepro/tilepro.opt: Same.
      	* config/v850/v850.opt: Same.
      	* config/vax/vax.opt: Same.
      	* config/visium/visium.opt: Same.
      	* config/vms/vms.opt: Same.
      	* config/vxworks.opt: Same.
      	* config/xtensa/xtensa.opt: Same.
      	* fortran/lang.opt: Same.
      
      testsuite/
      	PR driver/68043
      	* gcc.misc-tests/help.exp: Adjust.
      	* lib/options.exp (check_for_options): Add detail to output.
      
      From-SVN: r229155
      Martin Sebor committed
    • [PATCH 2/9] ENABLE_CHECKING refactoring: libcpp · 22d66382
      [PATCH 2/9] ENABLE_CHECKING refactoring: libcpp
              * include/line-map.h: Use CHECKING_P instead of ENABLE_CHECKING.
              * init.c: Likewise.
              * macro.c (struct macro_arg_token_iter, set_arg_token,
              macro_arg_token_iter_init, macro_arg_token_iter_forward,
              macro_arg_token_iter_get_token, macro_arg_token_iter_get_location,
              alloc_expanded_arg_mem, _cpp_backup_tokens): Likewise.
      
      From-SVN: r229154
      Mikhail Maltsev committed
    • re PR fortran/67939 (ICE on using data with negative substring range) · 44f92b59
      2015-10-21  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/67939
      	* data.c (create_character_initializer): Deal with zero length string.
      
      
      2015-10-21  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/67939
      	* gfortran.dg/pr67939.f90: New test.
      
      From-SVN: r229153
      Steven G. Kargl committed
    • a scalar depending on vdefs in the current region is not invariant · 78fd2726
      When a scalar is defined in function of an array reference in the current scop,
      it does variate.  Graphite cannot represent the condition in scop-11.c, as a[*]
      variates in the current region, and it is not an affine condition:
      
        for (j = 0; j <= 20; j++)
          a[j] = b + i;
      
        if (a[12] == 23)
          b = 3;
        else
          b = 1;
      
        for (j = 0; j <= 20; j++)
          a[j] = b + i;
      
      	* graphite-scop-detection.c (parameter_index_in_region): Update call to
      	invariant_in_sese_p_rec.
      	* graphite-sese-to-poly.c (extract_affine): Same.
      	* sese.c (invariant_in_sese_p_rec): Pass in an extra parameter has_vdefs.
      	(scalar_evolution_in_region): Return chrec_dont_know when the scalar variable
      	depends on virtual definitions in the current region.
      	* sese.h (invariant_in_sese_p_rec): Update declaration.
      
      testsuite/
      	* gcc.dg/graphite/scop-11.c: Update pattern.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r229151
      Aditya Kumar committed
    • add an upper limit on the number of array references · 8b76e7fe
      	* graphite-scop-detection.c (build_scops): Do not handle scops with more
      	than PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP arrays.
      	* params.def (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP): New.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r229150
      Aditya Kumar committed
    • [PATCH 1/9] ENABLE_CHECKING refactoring · 7ec491c0
      gcc/
      	* config.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac (CHECKING_P): Define.
      	* system.h: Use CHECKING_P.
      
      libcpp/
      	* config.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac (CHECKING_P): Define.
      	* system.h (fancy_abort): Declare.
      	(abort): Define.
      	(gcc_assert): Define. Use CHECKING_P.
      
      From-SVN: r229149
      Mikhail Maltsev committed
    • re PR ipa/67056 (Wrong code generated) · 74bb7709
      	PR ipa/67056
      	* ipa-polymorphic-call.c (possible_placement_new): If cur_offset
      	is negative we don't know the type.
      	(check_stmt_for_type_change): Skip constructors of non-polymorphic
      	types as those won't help devirutalization.
      	* g++.dg/ipa/pr67056.C: New testcase.
      
      From-SVN: r229148
      Jan Hubicka committed
    • fold-const.c (operand_equal_p): Add code matching empty constructors. · 1567db2f
      	* fold-const.c (operand_equal_p): Add code matching empty
      	constructors.
      	* gcc.dg/tree-ssa/operand-equal-1.c: Verify that empty constructors
      	are matched.
      
      From-SVN: r229147
      Jan Hubicka committed
    • tree.def (CEIL_DIV_EXPR, [...]): Tweak comments. · c26065cc
      	* tree.def (CEIL_DIV_EXPR, FLOOR_DIV_EXPR, ROUND_DIV_EXPR): Tweak
      	comments.
      	(TRUNC_MOD_EXPR, CEIL_MOD_EXPR, FLOOR_MOD_EXPR, ROUND_MOD_EXPR):
      	Add comments on sign of the result.
      	* fold-const.c (tree_binary_nonnegative_warnv_p) <FLOOR_MOD_EXPR>:
      	Recurse on operand #1 instead of operand #0.
      	<CEIL_MOD_EXPR>: Do not recurse.
      	<ROUND_MOD_EXPR>: Likewise.
      
      From-SVN: r229146
      Eric Botcazou committed
    • unconditionally compile most of the delay slot code · e90bedf5
      gcc/ChangeLog:
      
      2015-10-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	* cfgrtl.c (pass_free_cfg::execute): Adjust.
      	* final.c (dbr_sequence_length): Always define.
      	(shorten_branches): Adjust.
      	* genattr-common.c (main): Always define DELAY_SLOTS.
      	* genattr.c (main): Unconditionally declare functions and define
      	macros related to delay slots.
      	* genattrtab.c (write_eligible_delay): Adjust.
      	(main): Always write out delay slot functions.
      	* opts.c (default_options_table): Adjust.
      	* reorg.c (redirect_with_delay_slots_safe_p): Likewise.
      	(redirect_with_delay_list_safe_p): Likewise.
      	(fill_simple_delay_slots): Likewise.
      	(fill_slots_from_thread): Likewise.
      	(make_return_insns): Likewise.
      	(dbr_schedule): Likewise.
      	(rest_of_handle_delay_slots): Likewise.
      	(pass_delay_slots::gate): Likewise.
      	* toplev.c (process_options): Likewise.
      
      From-SVN: r229145
      Trevor Saunders committed
    • Update documentation for address space hooks · 0a798c16
              * target.def (addr_space.pointer_mode): Update documentation
              of default behavior.
              (addr_space.address_mode): Likewise.
              * tm.texi: Update.
      
      From-SVN: r229144
      Richard Henderson committed
    • Relax ADDR_SPACE_GENERIC_P checks for default address space hooks · 0f16c572
      If all address spaces use the same modes and forms, we would
      be forced to replicate these hooks in the backend.  Which would
      then require the creation of a new hook to replace
      target_default_pointer_address_modes_p.
      
      	* targhooks.c (default_addr_space_pointer_mode): Remove check
      	for generic address space.
      	(default_addr_space_address_mode): Likewise.
      	(default_addr_space_valid_pointer_mode): Likewise.
      	(default_addr_space_legitimate_address_p): Likewise.
      	(default_addr_space_legitimize_address): Likewise.
      
      From-SVN: r229143
      Richard Henderson committed
    • Change default of non-overlapping address space conversion · 2e44cd8b
      The current default of making all undefined coversions being
      set to null is not useful.  It has caused all users to lie
      and say that spaces are subsets when they are not, just so
      that they can override the conversion.
      
      	* expr.c (expand_expr_real_2): Use convert_modes on disjoint
      	address spaces.
      
      From-SVN: r229142
      Richard Henderson committed
    • Move cabs simplifications to match.pd · abcc43f5
      The fold code also expanded cabs(x+yi) to fsqrt(x*x+y*y) when optimising
      for speed.  tree-ssa-math-opts.c has this transformation too, but unlike
      the fold code, it first checks whether the target implements the sqrt
      optab.  The patch simply removes the fold code and keeps the
      tree-ssa-math-opts.c logic the same.
      
      gcc.dg/lto/20110201-1_0.c was relying on us replacing cabs
      with fsqrt even on targets where fsqrt is itself a library call.
      The discussion leading up to that patch suggested that we only
      want to test the fold on targets with a square root instruction,
      so it would be OK to skip the test on other targets:
      
              https://gcc.gnu.org/ml/gcc-patches/2011-07/msg01961.html
              https://gcc.gnu.org/ml/gcc-patches/2011-07/msg02036.html
      
      The patch does that using the sqrt_insn effective target.
      
      It's possible that removing the tree folds renders the LTO trick
      unnecessary, but since the test was originally for an ICE, it seems
      better to leave it as-is.
      
      Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
      20110201-1_0.c passes on all three.
      
      gcc/
      	* builtins.c (fold_builtin_cabs): Delete.
      	(fold_builtin_1): Update accordingly.  Handle constant arguments here.
      	* match.pd: Add rules previously handled by fold_builtin_cabs.
      
      gcc/testsuite/
      	* gcc.dg/lto/20110201-1_0.c: Restrict to sqrt_insn targets.
      	Add associated options for arm*-*-*.
      	(sqrt): Remove dummy definition.
      
      From-SVN: r229141
      Richard Sandiford committed
    • Remove fold_strip_sign_ops · 4adfc9a5
      This patch deletes fold_strip_sign_ops in favour of the
      gimple-ssa-backprop.c pass.
      
      Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
      
      gcc/
      	* fold-const.h (fold_strip_sign_ops): Delete.
      	* fold-const.c (fold_strip_sign_ops): Likewise.
      	(fold_unary_loc, fold_binary_loc): Remove calls to it.
      	* builtins.c (fold_builtin_cos, fold_builtin_cosh)
      	(fold_builtin_ccos): Delete.
      	(fold_builtin_pow): Don't call fold_strip_sign_ops.
      	(fold_builtin_hypot, fold_builtin_copysign): Likewise.
      	Remove fndecl argument.
      	(fold_builtin_1): Update calls accordingly.  Handle constant
      	cos, cosh, ccos and ccosh here.
      
      gcc/testsuite/
      	* gcc.dg/torture/builtin-symmetric-1.c: Don't run at -O0.
      
      From-SVN: r229140
      Richard Sandiford committed
    • Add a pass to back-propagate use information · 6a75d560
      This patch adds a pass that collects information that is common to
      all uses of an SSA name X and back-propagates that information up
      the statements that generate X.  The general idea is to use the
      information to simplify instructions (rather than a pure DCE) so
      I've simply called it gimple-ssa-backprop.c, to go with
      tree-ssa-forwprop.c.
      
      At the moment the only use of the pass is to remove unnecessary
      sign operations, so that it's effectively a global version of
      fold_strip_sign_ops.  I'm hoping it could be extended in future
      to record which bits of an integer are significant.  There are
      probably other potential uses too.
      
      A later patch gets rid of fold_strip_sign_ops.
      
      Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
      
      gcc/
      	* doc/invoke.texi (-fdump-tree-backprop, -fssa-backprop): Document.
      	* Makefile.in (OBJS): Add gimple-ssa-backprop.o.
      	* common.opt (fssa-backprop): New option.
      	* fold-const.h (negate_mathfn_p): Declare.
      	* fold-const.c (negate_mathfn_p): Make public.
      	* timevar.def (TV_TREE_BACKPROP): New.
      	* tree-pass.h (make_pass_backprop): Declare.
      	* passes.def (pass_backprop): Add.
      	* gimple-ssa-backprop.c: New file.
      
      gcc/testsuite/
      	* gcc.dg/tree-ssa/backprop-1.c, gcc.dg/tree-ssa/backprop-2.c,
      	gcc.dg/tree-ssa/backprop-3.c, gcc.dg/tree-ssa/backprop-4.c,
      	gcc.dg/tree-ssa/backprop-5.c, gcc.dg/tree-ssa/backprop-6.c: New tests.
      
      From-SVN: r229139
      Richard Sandiford committed