Skip to content
Snippets Groups Projects
  1. Nov 16, 2016
    • Jakub Jelinek's avatar
      re PR bootstrap/72823 (r239175 causes build failure) · 3549e181
      Jakub Jelinek authored
      	PR bootstrap/72823
      	* configure.ac (ENABLE_ASSERT_CHECKING): Define if gcc configure
      	would define that macro.
      	* configure: Regenerated.
      	* config.in: Regenerated.
      
      From-SVN: r242510
      3549e181
    • Ian Lance Taylor's avatar
      runtime: replace runtime1.goc with Go and C code · 350767bf
      Ian Lance Taylor authored
          
          A step toward eliminating goc2c.
          
          Drop the exported parfor code; it was needed for tests in the past, but
          no longer is. The Go 1.7 runtime no longer uses parfor.
          
          Reviewed-on: https://go-review.googlesource.com/33324
      
      From-SVN: r242509
      350767bf
    • Thomas Preud'homme's avatar
      Fix ICE on empty FIQ interrupt handler on ARM · 660e6c2c
      Thomas Preud'homme authored
      2016-11-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * config/arm/arm.md (arm_addsi3): Add alternative for addition of
          general register with general register or ARM constant into SP
          register.
      
          gcc/testsuite/
          * gcc.target/arm/empty_fiq_handler.c: New test.
      
      From-SVN: r242508
      660e6c2c
    • Jakub Jelinek's avatar
      re PR fortran/78299 (ICE in expand_omp_for_static_nochunk, at omp-low.c:9622) · 5e8d7713
      Jakub Jelinek authored
      	PR fortran/78299
      	* omp-low.c (expand_omp_for_static_nochunk): Don't assert
      	that loop->header == body_bb if broken_loop.
      
      	* gfortran.dg/gomp/pr78299.f90: New test.
      
      From-SVN: r242507
      5e8d7713
    • Wilco Dijkstra's avatar
      Looking at PR77308, one of the issues is that the bswap optimization phase doesn't work on ARM. · dd784916
      Wilco Dijkstra authored
      Looking at PR77308, one of the issues is that the bswap optimization 
      phase doesn't work on ARM.  This is due to an odd check that uses
      SLOW_UNALIGNED_ACCESS (which is always true on ARM).  Since the testcase
      in PR77308 generates much better code with this patch (~13% fewer
      instructions), it seems best to remove this check.
      
          gcc/
      	* tree-ssa-math-opts.c (bswap_replace): Remove test
      	of SLOW_UNALIGNED_ACCESS.
      
          testsuite/
      	* gcc.dg/optimize-bswapdi-3.c: Remove xfail.
      	* gcc.dg/optimize-bswaphi-1.c: Likewise. 	
      	* gcc.dg/optimize-bswapsi-2.c: Likewise.
      
      From-SVN: r242506
      dd784916
    • Szabolcs Nagy's avatar
      [PR libgfortran/78314] Fix ieee_support_halting · 0af30954
      Szabolcs Nagy authored
      ieee_support_halting only checked the availability of status
      flags, not trapping support.  On some targets the later can
      only be checked at runtime: feenableexcept reports if
      enabling traps failed.
      
      So check trapping support by enabling/disabling it.
      
      Updated the test that enabled trapping to check if it is
      supported.
      
      gcc/testsuite/
      
      	PR libgfortran/78314
      	* gfortran.dg/ieee/ieee_6.f90: Use ieee_support_halting.
      
      libgfortran/
      
      	PR libgfortran/78314
      	* config/fpu-glibc.h (support_fpu_trap): Use feenableexcept.
      
      From-SVN: r242505
      0af30954
    • Bin Cheng's avatar
      ivopts-orig_biv-inc.c: Adjust test string according to updated dump info. · e38f6572
      Bin Cheng authored
      	gcc/testsuite	
      	* gcc.target/arm/ivopts-orig_biv-inc.c: Adjust test string
      	according to updated dump info.
      
      From-SVN: r242504
      e38f6572
    • Alexander Monakov's avatar
      nvptx backend prerequisites for OpenMP offloading · 5012919d
      Alexander Monakov authored
      gcc/
      	* config/nvptx/mkoffload.c (main): Check that either OpenACC or OpenMP
      	is selected.  Pass -mgomp to offload compiler in OpenMP case.
      	* config/nvptx/nvptx-protos.h (nvptx_shuffle_kind): Move enum
      	declaration from nvptx.c.
      	(nvptx_gen_shuffle): Declare.
      	(nvptx_output_set_softstack): Declare.
      	* config/nvptx/nvptx.c (nvptx_shuffle_kind): Move to nvptx-protos.h.
      	(need_softstack_decl): New variable.
      	(need_unisimt_decl): New variable.
      	(diagnose_openacc_conflict): New.  Use it...
      	(nvptx_option_override): ...here.  Handle TARGET_GOMP.
      	(nvptx_encode_section_info): Handle "shared" attribute.
      	(write_as_kernel): Restrict to OpenACC target regions.
      	(init_softstack_frame): New.
      	(nvptx_init_unisimt_predicate): New.
      	(write_omp_entry): New.  Use it...
      	(nvptx_declare_function_name): ...here to emit OpenMP target region
      	entrypoints.  Handle TARGET_SOFT_STACK.  Call
      	nvptx_init_unisimt_predicate.
      	(nvptx_output_set_softstack): New.
      	(nvptx_get_drap_rtx): Return %argp as the DRAP if needed.
      	(nvptx_gen_shuffle): Export.
      	(nvptx_output_call_insn): Handle COND_EXEC patterns.  Emit instruction
      	predicate.
      	(nvptx_print_operand): Fix handling of instruction predicates.
      	(nvptx_get_unisimt_master): New helper function.
      	(nvptx_get_unisimt_predicate): Ditto.
      	(nvptx_call_insn_is_syscall_p): Ditto.
      	(nvptx_unisimt_handle_set): Ditto.
      	(nvptx_reorg_uniform_simt): New.  Transform code for -muniform-simt.
      	(nvptx_reorg): Call nvptx_reorg_uniform_simt.
      	(nvptx_handle_shared_attribute): New.  Use it...
      	(nvptx_attribute_table): ... here (new entry).
      	(nvptx_record_offload_symbol): Handle NULL attributes.
      	(nvptx_file_end): Handle need_softstack_decl and need_unisimt_decl.
      	(nvptx_simt_vf): New.
      	(TARGET_SIMT_VF): Define.
      	* config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Define
      	__nvptx_softstack or __nvptx_unisimt__ when -msoft-stack, or resp.
      	-muniform-simt option is active.
      	(STACK_SIZE_MODE): Define.
      	(FIXED_REGISTERS): Adjust.
      	(SOFTSTACK_SLOT_REGNUM): New.
      	(SOFTSTACK_PREV_REGNUM): New.
      	(REGISTER_NAMES): Adjust.
      	(struct machine_function): New fields.
      	* config/nvptx/nvptx.md (UNSPEC_SET_SOFTSTACK): New.
      	(UNSPEC_VOTE_BALLOT): Ditto.
      	(UNSPEC_LANEID): Ditto.
      	(UNSPECV_NOUNROLL): Ditto.
      	(atomic): New attribute.
      	(predicable): New attribute.  Generate predicated forms via
      	define_cond_exec.
      	(br_true): Mark as not predicable.
      	(br_false): Ditto.
      	(br_true_uni): Ditto.
      	(br_false_uni): Ditto.
      	(return): Ditto.
      	(trap_if_true): Ditto.
      	(trap_if_false): Ditto.
      	(nvptx_fork): Ditto.
      	(nvptx_forked): Ditto.
      	(nvptx_joining): Ditto.
      	(nvptx_join): Ditto.
      	(nvptx_barsync): Ditto.
      	(epilogue): Emit stack restore if TARGET_SOFT_STACK.
      	(allocate_stack): Implement for TARGET_SOFT_STACK.  Remove unused code.
      	(allocate_stack_<mode>): Remove unused pattern.
      	(set_softstack_insn): New pattern.
      	(restore_stack_block): Handle for TARGET_SOFT_STACK.
      	(nvptx_vote_ballot): New pattern.
      	(omp_simt_lane): Ditto.
      	(omp_simt_last_lane): Ditto.
      	(omp_simt_ordered): Ditto.
      	(omp_simt_vote_any): Ditto.
      	(omp_simt_xchg_bfly): Ditto.
      	(omp_simt_xchg_idx): Ditto.
      	(nvptx_nounroll): Ditto.
      	(atomic_compare_and_swap<mode>_1): Mark with atomic attribute.
      	(atomic_exchange<mode>): Ditto.
      	(atomic_fetch_add<mode>): Ditto.
      	(atomic_fetch_addsf): Ditto.
      	(atomic_fetch_<logic><mode>): Ditto.
      	* config/nvptx/nvptx.opt: (msoft-stack): New option.
      	(muniform-simt): Ditto.
      	(mgomp): Ditto.
      	* config/nvptx/t-nvptx (MULTILIB_OPTIONS): New.
      	* doc/extend.texi (Nvidia PTX Variable Attributes): New section.
      	* doc/invoke.texi (msoft-stack): Document.
      	(muniform-simt): Document
      	(mgomp): Document.
      	* doc/tm.texi: Regenerate.
      	* doc/tm.texi.in: (TARGET_SIMT_VF): New hook.
      	* target.def: Define it.
      	* target-insns.def (omp_simt_lane): New.
      	(omp_simt_last_lane): New.
      	(omp_simt_ordered): New.
      	(omp_simt_vote_any): New.
      	(omp_simt_xchg_bfly): New.
      	(omp_simt_xchg_idx): New.
      
      libgcc/
      	* config/nvptx/crt0.c (__main): Setup __nvptx_stacks and __nvptx_uni.
      	* config/nvptx/mgomp.c: New file.
      	* config/nvptx/t-nvptx: Add mgomp.c
      
      gcc/testsuite/
      	* lib/target-supports.exp (check_effective_target_alloca): Use a
      	compile test.
      	* gcc.target/nvptx/softstack.c: New test.
      	* gcc.target/nvptx/decl-shared.c: New test.
      	* gcc.target/nvptx/decl-shared-init.c: New test.
      
      From-SVN: r242503
      5012919d
    • Maciej W. Rozycki's avatar
      MIPS/GCC: Mark text contents as code or data · 2fe2aba3
      Maciej W. Rozycki authored
      	gcc/
      	* config/mips/mips-protos.h (mips_set_text_contents_type): New
      	prototype.
      	* config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): New macro.
      	(ASM_OUTPUT_CASE_END): Likewise.
      	* config/mips/mips.c (mips_set_text_contents_type): New
      	function.
      	(mips16_emit_constants): Record the pool's initial label number
      	with the `consttable' insn.  Emit a `consttable_end' insn at the
      	end.
      	(mips_final_prescan_insn): Call `mips_set_text_contents_type'
      	for `consttable' insns.
      	(mips_final_postscan_insn): Call `mips_set_text_contents_type'
      	for `consttable_end' insns.
      	* config/mips/mips.md (unspec): Add UNSPEC_CONSTTABLE_END enum
      	value.
      	(consttable): Add operand.
      	(consttable_end): New insn.
      
      	gcc/testsuite/
      	* gcc.target/mips/data-sym-jump.c: New test case.
      	* gcc.target/mips/data-sym-pool.c: New test case.
      	* gcc.target/mips/insn-pseudo-4.c: Adjust for constant pool
      	annotation.
      
      From-SVN: r242502
      2fe2aba3
    • Yuri Rumyantsev's avatar
      Support non-masked epilogue vectoriziation · 598eaaa2
      Yuri Rumyantsev authored
      gcc/
      
      2016-11-16  Yuri Rumyantsev  <ysrumyan@gmail.com>
      
      	* params.def (PARAM_VECT_EPILOGUES_NOMASK): New.
      	* tree-if-conv.c (tree_if_conversion): Make public.
      	* * tree-if-conv.h: New file.
      	* tree-vect-data-refs.c (vect_analyze_data_ref_dependences) Avoid
      	dynamic alias checks for epilogues.
      	* tree-vect-loop-manip.c (vect_do_peeling): Return created epilog.
      	* tree-vect-loop.c: include tree-if-conv.h.
      	(new_loop_vec_info): Add zeroing orig_loop_info field.
      	(vect_analyze_loop_2): Don't try to enhance alignment for epilogues.
      	(vect_analyze_loop): Add argument ORIG_LOOP_INFO which is not NULL
      	if epilogue is vectorized, set up orig_loop_info field of loop_vinfo
      	using passed argument.
      	(vect_transform_loop): Check if created epilogue should be returned
      	for further vectorization with less vf.  If-convert epilogue if
      	required. Print vectorization success for epilogue.
      	* tree-vectorizer.c (vectorize_loops): Add epilogue vectorization
      	if it is required, pass loop_vinfo produced during vectorization of
      	loop body to vect_analyze_loop.
      	* tree-vectorizer.h (struct _loop_vec_info): Add new field
      	orig_loop_info.
      	(LOOP_VINFO_ORIG_LOOP_INFO): New.
      	(LOOP_VINFO_EPILOGUE_P): New.
      	(LOOP_VINFO_ORIG_VECT_FACTOR): New.
      	(vect_do_peeling): Change prototype to return epilogue.
      	(vect_analyze_loop): Add argument of loop_vec_info type.
      	(vect_transform_loop): Return created loop.
      
      gcc/testsuite/
      
      2016-11-16  Yuri Rumyantsev  <ysrumyan@gmail.com>
      
      	* lib/target-supports.exp (check_avx2_hw_available): New.
      	(check_effective_target_avx2_runtime): New.
      	* gcc.dg/vect/vect-tail-nomask-1.c: New test.
      
      From-SVN: r242501
      598eaaa2
    • Tamar Christina's avatar
      Fix test names for trad.exp tests · 03b85dcd
      Tamar Christina authored
      	 PR testsuite/78136
      	 * gcc.dg/cpp/trad/trad.exp
      	 (dg-runtest): Moved $srcdir/$subdir/ to DEFAULT_TRADCPPFLAGS.
      
      From-SVN: r242500
      03b85dcd
    • Segher Boessenkool's avatar
      df: Change defs in entry and uses in exit block during separate shrink-wrapping · 7157aa85
      Segher Boessenkool authored
      So far all target implementations of the separate shrink-wrapping hooks
      use the DF LIVE info to figure out around which basic blocks the non-
      volatile registers need to be saved.  This is done by looking at the
      IN+GEN+KILL sets of the basic blocks.  However, that doesn't work for
      registers that DF says are defined in the entry block, or used in the
      exit block.
      
      This patch introduces a local flag DF_SCAN_EMPTY_ENTRY_EXIT that says
      no registers should be defined in the entry block, and none used in the
      exit block.  It also makes try_shrink_wrapping_separate use it.  The
      rs6000 port is changed to use IN+GEN+KILL for the LR component.
      
      
      	* config/rs6000/rs6000.c (rs6000_components_for_bb): Mark the LR
      	component as used also if LR_REGNO is a live input to the bb.
      	* df-scan.c (df_get_entry_block_def_set): Return immediately after
      	clearing the set if DF_SCAN_EMPTY_ENTRY_EXIT is set.
      	(df_get_exit_block_use_set): Ditto.
      	* df.h (df_scan_flags): New enum.
      	* shrink-wrap.c (try_shrink_wrapping_separate): Set
      	DF_SCAN_EMPTY_ENTRY_EXIT in df_scan->local_flags, and call
      	df_update_entry_block_defs and df_update_exit_block_uses
      	at the start; clear the flag and call those functions at the end.
      
      From-SVN: r242497
      7157aa85
    • Ian Lance Taylor's avatar
      compiler: separate incomparable types from comparable ones · 307ca543
      Ian Lance Taylor authored
          
          Otherwise we can accidentally and incorrectly mark an actual user type
          as incomparable.  This fixes the gccgo version of
          https://golang.org/issue/17752.  The test case for gccgo is
          https://golang.org/cl/33249.
          
          Reviewed-on: https://go-review.googlesource.com/33292
      
      From-SVN: r242494
      307ca543
    • Richard Sandiford's avatar
      Fix nb_iterations calculation in tree-vect-loop-manip.c · 71118889
      Richard Sandiford authored
      
      We previously stored the number of loop iterations rather
      than the number of latch iterations.
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Set
      	nb_iterations to the number of latch iterations rather than the
      	number of loop iterations.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242493
      71118889
    • Richard Sandiford's avatar
      An alternative fix for PR70944 · ae1a0866
      Richard Sandiford authored
      
      The transformations made by make_compound_operation apply
      only to scalar integer modes.  The fix for PR70944 had enforced
      that by returning early for vector modes at the top of the
      function.  However, the function is supposed to be recursive,
      so we should continue to look at integer suboperands even if
      the outer operation is a vector one.
      
      This patch instead splits out the non-recursive parts
      of make_compound_operation into a subroutine and checks
      that the mode is a scalar integer before calling it.
      The patch was originally written to help with the later
      conversion to static type checking of mode classes, but it
      also happened to reenable optimisation of things like
      vec_duplicate operands.
      
      Note that the gen_lowparts in the PLUS and MINUS cases
      were redundant, since new_rtx already had mode "mode"
      at those points.
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* combine.c (maybe_swap_commutative_operands): New function.
      	(combine_simplify_rtx): Use it.
      	(change_zero_ext): Likewise.
      	(make_compound_operation_int): New function, split out of...
      	(make_compound_operation): ...here.  Use
      	maybe_swap_commutative_operands for both.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242492
      ae1a0866
    • Richard Earnshaw's avatar
      [arm] Add vfpv2 and neon-vfpv3 · 0c012e9b
      Richard Earnshaw authored
      	* arm/arm-fpus.def (vfpv2): New FPU, currently an alias for 'vfp'.
      	(neon-vfpv3): New FPU, currently an alias for 'neon'.
      	* arm/arm-tables.opt: Regenerated.
              * arm/t-aprofile (MULTILIB_REUSE): Add reuse rules for vfpv2 and
              neon-vfpv3.
      	* doc/invoke.texi (ARM: -mfpu): Document new options.  Note that 'vfp'
      	and 'neon' are aliases for specific implementations.
      
      From-SVN: r242491
      0c012e9b
    • Andre Vehreschild's avatar
      re PR fortran/78356 ([OOP] segfault allocating polymorphic variable with... · dc9e0b66
      Andre Vehreschild authored
      re PR fortran/78356 ([OOP] segfault allocating polymorphic variable with polymorphic component with allocatable component)
      
      gcc/fortran/ChangeLog:
      
      2016-11-16  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/78356
      	* class.c (gfc_is_class_scalar_expr): Prevent taking an array ref for
      	a component ref.
      	* trans-expr.c (gfc_trans_assignment_1): Ensure a reference to the
      	object to copy is generated, when assigning class objects.
      
      gcc/testsuite/ChangeLog:
      
      2016-11-16  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/78356
      	* gfortran.dg/class_allocate_23.f08: New test.
      
      From-SVN: r242490
      dc9e0b66
    • Richard Sandiford's avatar
      Fix vec_cmp comparison mode · 45a9968b
      Richard Sandiford authored
      
      vec_cmps assign the result of a vector comparison to a mask.
      The optab was called with the destination having mode mask_mode
      but with the source (the comparison) having mode VOIDmode,
      which led to invalid rtl if the source operand was used directly.
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* optabs.c (vector_compare_rtx): Add a cmp_mode parameter
      	and use it in the final call to gen_rtx_fmt_ee.
      	(expand_vec_cond_expr): Update accordingly.
      	(expand_vec_cmp_expr): Likewise.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242489
      45a9968b
    • Richard Sandiford's avatar
      Use df_read_modify_subreg_p in cprop.c · 41c7cac5
      Richard Sandiford authored
      
      local_cprop_find_used_regs punted on all multiword registers,
      with the comment:
      
                /* Setting a subreg of a register larger than word_mode leaves
                   the non-written words unchanged.  */
      
      But this only applies if the outer mode is smaller than the
      inner mode.  If they're the same size then writes to the subreg
      are a normal full update.
      
      This patch uses df_read_modify_subreg_p instead.  A later patch
      adds more uses of the same routine, but this part had a (positive)
      effect on code generation for the testsuite whereas the others
      seemed to be simple clean-ups.
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* cprop.c (local_cprop_find_used_regs): Use df_read_modify_subreg_p.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242488
      41c7cac5
    • Richard Biener's avatar
      re PR middle-end/78333 (always-inline gnu-inline functions break -finstrument-functions) · d964ba07
      Richard Biener authored
      2016-11-16  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/78333
      	* gimplify.c (gimplify_function_tree): Do not instrument
      	GNU extern inline functions.
      
      	* gcc.dg/pr78333.c: New testcase.
      
      From-SVN: r242487
      d964ba07
    • Martin Liska's avatar
      Fix PR sanitizer/78270 (part 2) · 080140bc
      Martin Liska authored
      	PR sanitizer/78270
      	* gimplify.c (gimplify_switch_expr): Always save previous
      	gimplify_ctxp->live_switch_vars.
      	PR sanitizer/78270
      	* gcc.dg/asan/pr78270.c: Update comment style.
      	* gcc.dg/asan/pr78270-2.c: New test.
      
      From-SVN: r242485
      080140bc
    • Andrew Burgess's avatar
      [ARC] Fix LE tests for nps400 variant. · 3e077364
      Andrew Burgess authored
      gcc/arc: New peephole2 and little endian arc test fixes
      
      Resolve some test failures introduced for little endian arc as a result
      of the recent arc/nps400 additions.
      
      There's a new peephole2 optimisation to merge together two zero_extracts
      in order that the movb instruction can be used.
      
      One of the test cases is extended so that the test does something
      meaningful in both big and little endian arc mode.
      
      Other tests have their expected results updated to reflect improvements
      in other areas of GCC.
      
      gcc/ChangeLog:
      
       Andrew Burgess  <andrew.burgess@embecosm.com>
      
      	* config/arc/arc.md (movb peephole2): New peephole2 to merge two
      	zero_extract operations to allow a movb to occur.
      	* gcc.target/arc/movb-1.c: Update little endian arc results.
      	* gcc.target/arc/movb-2.c: Likewise.
      	* gcc.target/arc/movb-5.c: Likewise.
      	* gcc.target/arc/movh_cl-1.c: Extend test to cover little endian
      	arc.
      
      From-SVN: r242484
      3e077364
    • Markus Trippelsdorf's avatar
      Add revsison to libsanitizer/LOCAL_PATCHES · 61a58d07
      Markus Trippelsdorf authored
      From-SVN: r242481
      61a58d07
    • Markus Trippelsdorf's avatar
      Fix PR78294 - thread sanitizer broken when using ld.gold · 8c32ae0e
      Markus Trippelsdorf authored
      When one uses ld.gold to build gcc, the thread sanitizer doesn't work,
      because gold is more conservative when applying TLS relaxations than
      ld.bfd. In this case a missing initial-exec attribute on a declaration
      causes gcc to assume the general dynamic model. With ld.bfd this gets
      relaxed to initial exec when linking the shared library, so the missing
      attribute doesn't matter. But ld.gold doesn't perform this optimization
      and this leads to crashes on tsan instrumented binaries.
      
      See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78294
      and: https://sourceware.org/bugzilla/show_bug.cgi?id=20805
      
      The fix is easy, just add the missing attribute.
      
        PR sanitizer/78294
        * tsan/tsan_rtl.cc: Add missing attribute.
      
      From-SVN: r242480
      8c32ae0e
    • Maxim Ostapenko's avatar
      LOCAL_PATCHES: New file. · 949cc52d
      Maxim Ostapenko authored
      libsanitizer/
      
      	* LOCAL_PATCHES: New file.
      
      From-SVN: r242479
      949cc52d
    • Maxim Ostapenko's avatar
      re PR sanitizer/78307 (missing symbols in libubsan without changing the soname) · 511c8687
      Maxim Ostapenko authored
      	PR sanitizer/78307
      	* ubsan/ubsan_handlers.cc (__ubsan_handle_cfi_bad_icall): New function.
      	( __ubsan_handle_cfi_bad_icall_abort): Likewise. 
      	* ubsan/ubsan_handlers.h (struct CFIBadIcallData): New type.
      	* ubsan/ubsan_handlers_cxx.cc (__ubsan_handle_cfi_bad_type): New
      	function.
      	(__ubsan_handle_cfi_bad_type_abort): Likewise.
      	* ubsan/ubsan_handlers_cxx.h (struct CFIBadTypeData): New type.
      	(__ubsan_handle_cfi_bad_type): Export function.
      	(__ubsan_handle_cfi_bad_type_abort): Likewise.
      	* HOWTO_MERGE: Update documentation.
      
      From-SVN: r242478
      511c8687
    • Richard Sandiford's avatar
      Optimise CONCAT handling in emit_group_load · 024f701c
      Richard Sandiford authored
      
      The CONCAT handling in emit_group_load chooses between doing
      an extraction from a single component or forcing the whole
      thing to memory and extracting from there.  The condition for
      the former (more efficient) option was:
      
      	  if ((bytepos == 0 && bytelen == slen0)
      	      || (bytepos != 0 && bytepos + bytelen <= slen))
      
      On the one hand this seems dangerous, since the second line
      allows bit ranges that start in the first component and leak
      into the second.  On the other hand it seems strange to allow
      references that start after the first byte of the second
      component but not those that start after the first byte
      of the first component.  This led to a pessimisation of
      things like gcc.dg/builtins-54.c for hppa64-hp-hpux11.23.
      
      This patch simply checks whether the reference is contained
      within a single component.  It also makes sure that we do
      an extraction on anything that doesn't span the whole
      component (even if it's constant).
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* expr.c (emit_group_load_1): Tighten check for whether an
      	access involves only one operand of a CONCAT.  Use extract_bit_field
      	for constants if the bit range does span the whole operand.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242477
      024f701c
    • Richard Sandiford's avatar
      Fix handling of unknown sizes in rtx_addr_can_trap_p · 0e0af689
      Richard Sandiford authored
      
      If the size passed in to rtx_addr_can_trap_p was zero, the frame
      handling would get the size from the mode instead.  However, this
      too can be zero if the mode is BLKmode, i.e. if we have a BLKmode
      memory reference with no MEM_SIZE (which should be rare these days).
      This meant that the conditions for a 4-byte access at offset X were
      stricter than those for an access of unknown size at offset X.
      
      This patch checks whether the size is still zero, as the
      SYMBOL_REF handling does.
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* rtlanal.c (rtx_addr_can_trap_p_1): Handle unknown sizes.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242476
      0e0af689
    • Richard Sandiford's avatar
      Fix nb_iterations_estimate calculation in tree-vect-loop.c · 29220523
      Richard Sandiford authored
      
      vect_transform_loop has to reduce three iteration counts by
      the vectorisation factor: nb_iterations_upper_bound,
      nb_iterations_likely_upper_bound and nb_iterations_estimate.
      All three are latch execution counts rather than loop body
      execution counts.  The calculations were taking that into
      account for the first two, but not for nb_iterations_estimate.
      
      This patch updates the way the calculations are done to fix
      this and to add a bit more commentary about what is going on.
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* tree-vect-loop.c (vect_transform_loop): Protect the updates of
      	all three iteration counts with an any_* test.  Use a single update
      	for each count.  Fix the calculation of nb_iterations_estimate.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242475
      29220523
    • Richard Sandiford's avatar
      Fix pdp11 build · 3623815a
      Richard Sandiford authored
      Needed this to test the effect of the SVE patches on other targets.
      
      gcc/
      	* config/pdp11/pdp11.c: Include dbxout.h.
      
      From-SVN: r242474
      3623815a
    • Richard Sandiford's avatar
      Fix missing brackets in arc.c · f857b8ef
      Richard Sandiford authored
      The old code still built thanks to the brackets in the definition
      of XVECEXP.
      
      gcc/
      	* config/arc/arc.c (arc_loop_hazard): Add missing brackets.
      
      From-SVN: r242473
      f857b8ef
    • Senthil Kumar Selvaraj's avatar
      Fix bogus failure of Wlogical-op-1.c for avr · 4786fabe
      Senthil Kumar Selvaraj authored
      The test assumes short is always smaller than int, and therefore does not 
      expect a warning when the logical operands are of type short and int.
      
      This isn't true for the avr - shorts and ints are of the same size, and
      therefore the warning triggers for the above case also.
      
      Fix by explicitly typedef'ing __INT32_TYPE for int and __INT16_TYPE__ for short
      if the target's int size is less than 4 bytes.
      
      gcc/testsuite/
      2016-11-16  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
      
      	* c-c++-common/Wlogical-op-1.c: Use __INT{16,32}_TYPE__ instead
      	of {short,int} if __SIZEOF_INT__ is less than 4 bytes.
      
      From-SVN: r242472
      4786fabe
    • Kyrylo Tkachov's avatar
      [ARM] PR target/78364: Add proper restrictions to zero and sign_extract patterns operands · b6adf1c5
      Kyrylo Tkachov authored
      	PR target/78364
      	* config/arm/arm.md (*extv_reg): Restrict operands 2 and 3 to the
      	proper ranges for an SBFX instruction.
      	(extzv_t2): Likewise for UBFX.
      
      From-SVN: r242471
      b6adf1c5
    • Richard Biener's avatar
      re PR tree-optimization/78348 ([7 REGRESSION] 15% performance drop for... · 510d73a0
      Richard Biener authored
      re PR tree-optimization/78348 ([7 REGRESSION] 15% performance drop for coremark-pro/nnet-test after r242038)
      
      2016-11-16  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/78348
      	* tree-loop-distribution.c (enum partition_kind): Add PKIND_MEMMOVE.
      	(generate_memcpy_builtin): Honor PKIND_MEMCPY on the partition.
      	(classify_partition): Set PKIND_MEMCPY if dependence analysis
      	revealed no dependency, PKIND_MEMMOVE otherwise.
      
      	* gcc.dg/tree-ssa/ldist-24.c: New testcase.
      
      From-SVN: r242470
      510d73a0
    • Jakub Jelinek's avatar
      re PR sanitizer/77823 (ICE: in ubsan_encode_value, at ubsan.c:137 with... · 1705cebd
      Jakub Jelinek authored
      re PR sanitizer/77823 (ICE: in ubsan_encode_value, at ubsan.c:137 with -fsanitize=undefined and vector types)
      
      	PR sanitizer/77823
      	* ubsan.c (ubsan_build_overflow_builtin): Add DATAP argument, if
      	it points to non-NULL tree, use it instead of ubsan_create_data.
      	(instrument_si_overflow): Handle vector signed integer overflow
      	checking.
      	* ubsan.h (ubsan_build_overflow_builtin): Add DATAP argument.
      	* tree-vrp.c (simplify_internal_call_using_ranges): Punt for
      	vector IFN_UBSAN_CHECK_*.
      	* internal-fn.c (expand_addsub_overflow): Add DATAP argument,
      	pass it through to ubsan_build_overflow_builtin.
      	(expand_neg_overflow, expand_mul_overflow): Likewise.
      	(expand_vector_ubsan_overflow): New function.
      	(expand_UBSAN_CHECK_ADD, expand_UBSAN_CHECK_SUB,
      	expand_UBSAN_CHECK_MUL): Use tit for vector arithmetics.
      	(expand_arith_overflow): Adjust expand_*_overflow callers.
      
      	* c-c++-common/ubsan/overflow-vec-1.c: New test.
      	* c-c++-common/ubsan/overflow-vec-2.c: New test.
      
      From-SVN: r242469
      1705cebd
    • Waldemar Brodkorb's avatar
      re PR libgcc/68468 (frv/bfin FDPIC toolchain build error) · 00178b98
      Waldemar Brodkorb authored
      	PR libgcc/68468
      	* unwind-dw2-fde-dip.c: Fix build on FDPIC targets.
      
      From-SVN: r242468
      00178b98
    • Marek Polacek's avatar
      * g++.dg/cpp1z/init-statement6.C: Rename a function. · ed66ba99
      Marek Polacek authored
      From-SVN: r242467
      ed66ba99
    • GCC Administrator's avatar
      Daily bump. · bb00603d
      GCC Administrator authored
      From-SVN: r242466
      bb00603d
  2. Nov 15, 2016
    • Matthias Klose's avatar
      install.texi: Remove references to java/libjava. · 648e68d5
      Matthias Klose authored
      2016-11-16  Matthias Klose  <doko@ubuntu.com>
      
              * doc/install.texi: Remove references to java/libjava.
      
      From-SVN: r242463
      648e68d5
    • Jerry DeLisle's avatar
      [multiple changes] · 5d70ab07
      Jerry DeLisle authored
      2016-11-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      	    Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR libgfortran/51119
      	* Makefile.am: Add new optimization flags matmul.
      	* Makefile.in: Regenerate.
      	* m4/matmul.m4: For the case of all strides = 1, implement a
      	fast blocked matrix multiply. Fix some whitespace.
      	* generated/matmul_c10.c: Regenerate.
      	* generated/matmul_c16.c: Regenerate.
      	* generated/matmul_c4.c: Regenerate.
      	* generated/matmul_c8.c: Regenerate.
      	* generated/matmul_i1.c: Regenerate.
      	* generated/matmul_i16.c: Regenerate.
      	* generated/matmul_i2.c: Regenerate.
      	* generated/matmul_i4.c: Regenerate.
      	* generated/matmul_i8.c: Regenerate.
      	* generated/matmul_r10.c: Regenerate.
      	* generated/matmul_r16.c: Regenerate.
      	* generated/matmul_r4.c: Regenerate.
      	* generated/matmul_r8.c: Regenerate.
      
      2016-11-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR libgfortran/51119
      	* gfortran.dg/matmul_12.f90: New test case.
      
      From-SVN: r242462
      5d70ab07
Loading