Skip to content
Snippets Groups Projects
  1. Dec 11, 2019
    • Matthias Klose's avatar
      configure.ac: Factor out common cases for compare_exclusions. · 4f943869
      Matthias Klose authored
      2019-12-11  Matthias Klose  <doko@ubuntu.com>
      
              * configure.ac: Factor out common cases for compare_exclusions.
              * configure: Regenerate.
      
      From-SVN: r279250
      4f943869
    • Martin Sebor's avatar
      builtins.c (compute_objsize): Add an argument and set it to offset into destination. · f7d86b5c
      Martin Sebor authored
      gcc/ChangeLog:
      
      	* builtins.c (compute_objsize): Add an argument and set it to offset
      	into destination.
      	* builtins.h (compute_objsize): Add an argument.
      	* tree-object-size.c (addr_object_size): Add an argument and set it
      	to offset into destination.
      	(compute_builtin_object_size): Same.
      	* tree-object-size.h (compute_builtin_object_size): Add an argument.
      	* tree-ssa-strlen.c (get_addr_stridx): Add an argument and set it
      	to offset into destination.
      	(maybe_warn_overflow): New function.
      	(handle_store): Call maybe_warn_overflow to issue warnings.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/Wstringop-overflow-2.c: Adjust text of expected messages.
      	* g++.dg/warn/Wstringop-overflow-3.C: Same.
      	* gcc.dg/Wstringop-overflow-17.c: Same.
      
      From-SVN: r279248
      f7d86b5c
    • Steven G. Kargl's avatar
      re PR fortran/92897 ([Coarray] ICE in gfc_set_array_spec, at fortran/array.c:864) · c7f5b4ed
      Steven G. Kargl authored
      2019-12-11 Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/92897
      	* array.c (gfc_set_array_spec):  Remove invalid assert() triggered
      	by invalid Fortran code.
       
      2019-12-11 Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/92897
      	* gfortran.dg/pr92897.f90: New test.
      
      From-SVN: r279247
      c7f5b4ed
    • Jozef Lawrynowicz's avatar
      MSP430: Add -fno-exceptions multilib · a9046e98
      Jozef Lawrynowicz authored
      ChangeLog:
      
      2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config-ml.in (msp430-*-*): Support --disable-no-exceptions configure
      	flag.
      
      gcc/ChangeLog:
      
      2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config/msp430/msp430.h (STARTFILE_SPEC) [!fexceptions]: Use
      	crtbegin_no_eh.o if building for the C language.
      	[fno-exceptions]: Use crtbegin_no_eh.o if building for any language
      	except C.
      	(ENDFILE_SPEC) [!fexceptions]: Use crtend_no_eh.o if building for 
      	the C language.
      	[fno-exceptions]: Use crtend_no_eh.o if building for any language
      	except C.
      	* config/msp430/t-msp430: Add -fno-exceptions multilib.
      	* doc/install.texi: Document --disable-no-exceptions multilib configure
      	option.
      	* doc/sourcebuild.texi: Document exceptions_enabled effective target.
      
      gcc/testsuite/ChangeLog:
      
      2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* lib/gcc-dg.exp: Add dg-prune messages for when exception handling is
      	disabled.
      	* lib/target-supports.exp (check_effective_target_exceptions_enabled):
      	New.
      
      libgcc/ChangeLog:
      
      2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config.host: Add crt{begin,end}_no_eh.o to "extra_parts".
      	* config.host (msp430*-*-elf): Add crt{begin,end}_no_eh.o to
      	"extra_parts".
      
      From-SVN: r279246
      a9046e98
    • David Malcolm's avatar
      Introduce pretty_printer::clone vfunc · 368877a1
      David Malcolm authored
      This patch provides a way to clone a pretty_printer.
      
      This is needed so that we can capture text in a label_text and make
      layout decisions based on it, using the policy of global_dc's printer,
      whilst within a call to diagnostic_show_locus.  We can't print with
      the pretty_printer itself within a call to diagnostic_show_locus since
      it has partly-buffered content.
      
      gcc/c-family/ChangeLog:
      	* c-pretty-print.c (c_pretty_printer::clone): New vfunc
      	implementation.
      	* c-pretty-print.h (c_pretty_printer::clone): New vfunc decl.
      
      gcc/cp/ChangeLog:
      	* cxx-pretty-print.c (cxx_pretty_printer::clone): New vfunc
      	implementation.
      	* cxx-pretty-print.h (cxx_pretty_printer::clone): New vfunc decl.
      	* error.c (cxx_format_postprocessor::clone): New vfunc.
      
      gcc/ChangeLog:
      	* pretty-print.c (pretty_printer::pretty_printer): New copy-ctor.
      	(pretty_printer::clone): New vfunc implementation.
      	* pretty-print.h (format_postprocessor::clone): New pure vfunc
      	decl.
      	(pretty_printer::pretty_printer): New copy-ctor decl.
      	(pretty_printer::clone): New vfunc decl.
      
      From-SVN: r279244
      368877a1
    • Jozef Lawrynowicz's avatar
      libgcc: Declare __dso_handle only if DEFAULT_USE_CXA_ATEXIT is true · 34a53788
      Jozef Lawrynowicz authored
      2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* crtstuff.c: Declare __dso_handle only if DEFAULT_USE_CXA_ATEXIT is
      	true.
      
      From-SVN: r279243
      34a53788
    • David Malcolm's avatar
      function-tests.c: expose selftest::make_fndecl for use elsewhere · 0230c897
      David Malcolm authored
      This is used by new selftests in the analyzer patch kit.
      
      gcc/ChangeLog:
      	* function-tests.c (selftest::make_fndecl): Make non-static.
      	* selftest.h (selftest::make_fndecl): New decl.
      
      From-SVN: r279242
      0230c897
    • Jakub Jelinek's avatar
      re PR c++/92869 (C++17 wrongly reports aggregate type as not-aggregate (when... · 34551153
      Jakub Jelinek authored
      re PR c++/92869 (C++17 wrongly reports aggregate type as not-aggregate (when explicitly defaulted ctors are added))
      
      	PR c++/92869
      	* class.c (finish_struct): For C++17 and earlier, check
      	type_has_user_provided_or_explicit_constructor rather than
      	TYPE_HAS_USER_CONSTRUCTOR whether to set CLASSTYPE_NON_AGGREGATE.
      
      	* g++.dg/cpp0x/aggr3.C: New test.
      
      From-SVN: r279241
      34551153
    • Marek Polacek's avatar
      PR c++/92878 - Parenthesized init of aggregates in new-expression. · c20f7e99
      Marek Polacek authored
      Ville pointed out that our paren init of aggregates doesn't work for
      
        auto a = new A(1, 2, 3);
      
      and I think it should:
      
      A new-expression that creates an object of type T initializes that object
      as follows:
      ...
      -- Otherwise, the new-initializer is interpreted according to the
         initialization rules of [dcl.init] for direct-initialization.
      
      so I think it follows that we should perform dcl.init#17.6.2.2.
      
      This doesn't work with new[]; we have:
        error ("parenthesized initializer in array new");
      
      	* init.c (build_new_1): Handle parenthesized initialization of
      	aggregates in new-expression.
      
      	* g++.dg/cpp2a/paren-init20.C: New test.
      
      From-SVN: r279240
      c20f7e99
    • Jason Merrill's avatar
      * g++.dg/cpp0x/initlist-new2.C: Clarify comment. · cc3b6728
      Jason Merrill authored
      From-SVN: r279239
      cc3b6728
    • Jason Merrill's avatar
      PR c++/92105 - decltype(decltype) error cascade. · 7ae01728
      Jason Merrill authored
      The primary change here is to do the CPP_DECLTYPE replacement even when we
      get an error, so we don't keep trying and giving the same parse error each
      time.  We also commit to the tentative firewall parse more often, leading to
      better diagnostics.
      
      	* parser.c (cp_parser_decltype_expr): Don't tentative_firewall here.
      	(cp_parser_decltype): Do it here.  Remember a non-tentative error.
      
      From-SVN: r279237
      7ae01728
    • Jason Merrill's avatar
      PR c++/57082 - new X{} and private destructor. · 0e5def81
      Jason Merrill authored
      build_new_1 already passes tf_no_cleanup to build_value_init, but in this
      testcase we end up calling build_value_init by way of
      build_special_member_call, so we need to pass it to that function as well.
      
      	* init.c (build_new_1): Also pass tf_no_cleanup to
      	build_special_member_call.
      
      From-SVN: r279236
      0e5def81
    • Jason Merrill's avatar
      PR c++/92774 - ICE with implicitly deleted operator<=>. · 60e457d9
      Jason Merrill authored
      Missing error-recovery code.  While I was poking at this I also figured we
      don't need to iterate over the members of a union.
      
      	* method.c (comp_info::~comp_info): Factor out of...
      	(build_comparison_op): Here.  Handle error return from build_new_op.
      
      From-SVN: r279235
      60e457d9
    • Thomas Schwinge's avatar
      [PR92843] [OpenACC] Fix dynamic reference counting for structured 'REFCOUNT_INFINITY' · d6e8c01c
      Thomas Schwinge authored
      	libgomp/
      	PR libgomp/92843
      	* oacc-mem.c (present_create_copy, delete_copyout): Fix dynamic
      	reference counting for structured 'REFCOUNT_INFINITY'.  Add some
      	assertions.
      	(goacc_insert_pointer, goacc_remove_pointer): Adjust accordingly.
      	* testsuite/libgomp.oacc-c-c++-common/pr92843-1.c: New file.
      	* testsuite/libgomp.oacc-c-c++-common/clauses-1.c: Fix OpenACC.
      	* testsuite/libgomp.oacc-c-c++-common/lib-82.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/nested-1.c: Likewise.
      
      From-SVN: r279234
      d6e8c01c
    • Thomas Schwinge's avatar
      [OpenACC] Consolidate 'GOACC_enter_exit_data' and its helper functions in 'libgomp/oacc-mem.c' · 57963e39
      Thomas Schwinge authored
      	libgomp/
      	* oacc-parallel.c (find_pointer, GOACC_enter_exit_data): Move...
      	* oacc-mem.c: ... here.
      	(gomp_acc_insert_pointer, gomp_acc_remove_pointer): Rename to
      	'goacc_insert_pointer', 'goacc_remove_pointer', and make 'static'.
      	* libgomp.h (gomp_acc_insert_pointer, gomp_acc_remove_pointer):
      	Remove.
      	* libgomp_g.h: Update.
      
      From-SVN: r279233
      57963e39
    • Thomas Schwinge's avatar
      [OpenACC] Consolidate 'async'/'wait' code in 'libgomp/oacc-async.c' · c5578b56
      Thomas Schwinge authored
      	libgomp/
      	* oacc-parallel.c (GOACC_wait, goacc_wait): Move...
      	* oacc-async.c: ... here.
      	* oacc-int.h (goacc_wait): Declare.
      	* libgomp_g.h: Update
      
      From-SVN: r279232
      c5578b56
    • Thomas Schwinge's avatar
      [PR92854] Add 'libgomp.oacc-c-c++-common/acc_map_data-device_already-*.c',... · 3d1b5e71
      Thomas Schwinge authored
      [PR92854] Add 'libgomp.oacc-c-c++-common/acc_map_data-device_already-*.c', 'libgomp.oacc-c-c++-common/acc_map_data-host_already-*.c'
      
      ... to document the status quo.
      
      	libgomp/
      	PR libgomp/92854
      	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-1.c:
      	New file.
      	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-2.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-3.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-1.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-2.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-3.c:
      	Likewise.
      
      From-SVN: r279231
      3d1b5e71
    • Thomas Schwinge's avatar
      [OpenACC] Initialize 'dynamic_refcount' whenever we initialize 'refcount' · 5e939438
      Thomas Schwinge authored
      
      Cases missed in r261813 "Update OpenACC data clause semantics to the 2.5
      behavior".
      
      	libgomp/
      	* target.c (gomp_load_image_to_device, omp_target_associate_ptr):
      	Initialize 'dynamic_refcount' whenever we initialize 'refcount'.
      
      Co-Authored-By: default avatarJulian Brown <julian@codesourcery.com>
      
      From-SVN: r279230
      5e939438
    • Jason Merrill's avatar
      PR c++/92859 - ADL and bit-field. · 7c0a6187
      Jason Merrill authored
      We also need unlowered_expr_type when considering associated types for ADL.
      
      	* name-lookup.c: Use unlowered_expr_type.
      
      From-SVN: r279229
      7c0a6187
    • Jason Merrill's avatar
      PR c++/92446 - deduction of class NTTP. · 3e7a892c
      Jason Merrill authored
      Another place we need to look through the VIEW_CONVERT_EXPR we add to make a
      use of a class NTTP have const type.
      
      	* pt.c (deducible_expression): Look through VIEW_CONVERT_EXPR.
      
      From-SVN: r279228
      3e7a892c
    • Martin Sebor's avatar
      PR middle-end/79221 - missing -Wstringop-overflow= on a strcat overflow · 0a22f996
      Martin Sebor authored
      gcc/testsuite/ChangeLog:
      	* gcc.dg/Wstringop-overflow-26.c: New test.
      
      From-SVN: r279227
      0a22f996
    • Lewis Hyatt's avatar
      Adds multibyte awareness to pretty-print.c · ddd0fd17
      Lewis Hyatt authored
      2019-12-11  Lewis Hyatt  <lhyatt@gmail.com>
      
      	PR 91853
      	* pretty-print.c (pp_quoted_string): Avoid hex-escaping valid
      	multibyte input.  Fix off-by-one-bug printing the last byte before a
      	hex-escaped output.
      	(pp_character): Don't apply line wrapping in the middle of multibyte
      	characters.
      	(test_utf8): New test.
      	(pretty_print_c_tests): Call the new test.
      
      From-SVN: r279226
      ddd0fd17
    • Andre Vieira's avatar
      [testsuite][arm] Remove xfail for vect-epilogues test · 0dc4e690
      Andre Vieira authored
      gcc/testsuite/ChangeLog:
      2019-12-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	* gcc.dg/vect/vect-epilogues.c: Remove xfail for arm.
      
      From-SVN: r279225
      0dc4e690
    • Jonathan Wakely's avatar
      libstdc++: Fix whitepace in changelog · 554c02a5
      Jonathan Wakely authored
      From-SVN: r279220
      554c02a5
    • Richard Earnshaw's avatar
      arm: Fix an incorrect warning when -mcpu=cortex-a55 is used with -mfloat-abi=soft · fd9058b6
      Richard Earnshaw authored
      When a CPU such as cortex-a55 is used with the soft-float ABI variant,
      the compiler is incorrectly issuing a warning about a mismatch between
      the architecture (generated internally) and the CPU.  This is not
      expected or intended.
      
      The problem stems from the fact that we generate (correctly) an
      architecture for a soft-float compilation, but then try to compare it
      against the one recorded for the CPU.  Normally we strip out the
      floating point information before doing that comparison, but we
      currently only do that for the features that can be affected by the
      -mfpu option.  For a soft-float environment we also need to strip out
      any bits that depend on having floating-point present.
      
      So this patch implements that and does a bit of housekeeping at the
      same time:
      
      - in arm-cpus.in it is not necessary for a CPU to specify both
        +dotprod and +simd in its architecture specification, since +dotprod
        implies +simd.
      
      - I've refactored the ALL_SIMD fgroup in arm-cpus.in to create a new
        subgroup ALL_SIMD_EXTERNAL and containing the bits that were
        previously added directly to ALL_SIMD.  Similarly, I've added an
        ALL_FPU_EXTERNAL subgroup.
      
      - in arm.c rename fpu_bitlist and all_fpubits to fpu_bitlist_internal
        and all_fpubits_internal for consistency with the fgroup bits which
        they contain.
      
      	* config/arm/arm-cpus.in (ALL_SIMD_EXTERNAL): New fgroup.
      	(ALL_SIMD): Use it.
      	(ALL_FPU_EXTERNAL): New fgroup.
      	(ALL_FP): Use it.
      	(cortex-a55, cortex-a75, cortex-a76, cortex-a76ae): Remove redundant
      	+simd from architecture specification.
      	(cortex-a77, neoverse-n1, cortex-a75.cortex-a55): Likewise.
      	* config/arm/arm.c (isa_all_fpubits, fpu_bitlist): Rename to ...
      	(isa_all_fpubits_internal, fpu_bitlist_internal): ... these.
      	(isa_all_fpbits): New bitmap.
      	(arm_option_override): Initialize it.
      	(arm_configure_build_target): If the target isa does not have any
      	FP enabled, do not warn about mismatches in FP-related feature bits.
      
      From-SVN: r279219
      fd9058b6
    • Tobias Burnus's avatar
      libgomp – spelling fixes, incl. omp_lib.h.in · 93d90219
      Tobias Burnus authored
              * omp_lib.h.in: Fix spelling of function declaration
              omp_get_cancell(l)ation.
              * libgomp.texi (acc_is_present, acc_async_test, acc_async_test_all):
              Fix typos.
              * env.c: Fix comment typos.
              * oacc-host.c: Likewise.
              * ordered.c: Likewise.
              * task.c: Likewise.
              * team.c: Likewise.
              * config/gcn/task.c: Likewise.
              * config/gcn/team.c: Likewise.
              * config/nvptx/task.c: Likewise.
              * config/nvptx/team.c: Likewise.
              * plugin/plugin-gcn.c: Likewise.
              * testsuite/libgomp.fortran/jacobi.f: Likewise.
              * testsuite/libgomp.hsa.c/tiling-2.c: Likewise.
              * testsuite/libgomp.oacc-c-c++-common/enter_exit-lib.c: Likewise.
      
      From-SVN: r279218
      93d90219
    • Tobias Burnus's avatar
      [OpenMP/OpenACC/Fortran] Fix mapping of optional (present|absent) arguments · a0221aee
      Tobias Burnus authored
              * testsuite/libgomp.oacc-fortran/optional-cache.f95: Add 'dg-do run'.
              * testsuite/libgomp.oacc-fortran/optional-reduction.f90: Remove
              unnecessary 'dg-additional-options "-w"'.
      
      From-SVN: r279217
      a0221aee
    • Stam Markianos-Wright's avatar
      Add ARM-specific Bfloat format support to middle-end · d5ffd47e
      Stam Markianos-Wright authored
      2019-12-11  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* real.c (struct arm_bfloat_half_format,
      	encode_arm_bfloat_half, decode_arm_bfloat_half): New.
      	* real.h (arm_bfloat_half_format): New.
      
      From-SVN: r279216
      d5ffd47e
    • Frederik Harwath's avatar
      Fix PR92901: Change test expectation for C++ in OpenACC test clause-locations.c · e6c90dba
      Frederik Harwath authored
      The columns of the clause locations that are reported for C and C++ are
      different and hence we need separate test expectations for both languages.
      
      2019-12-11  Frederik Harwath  <frederik@codesourcery.com>
      
      	PR other/92901
      	/gcc/testsuite/
      	* c-c++-common/clause-locations.c: Adjust test expectation for C++.
      
      From-SVN: r279215
      e6c90dba
    • Hongtao Liu's avatar
      Fix unrecognizable insn of pr92865. · a8654147
      Hongtao Liu authored
      gcc/
          PR target/92865
          * config/i386/i386-expand.c (ix86_valid_mask_cmp_mode): Enable
          integer mask cmov when available even with TARGET_XOP.
      
      gcc/testsuite
          * gcc.target/i386/pr92865-1.c: New test.
      
      From-SVN: r279214
      a8654147
    • Thomas Rodgers's avatar
      Restore enable_if lost during original import of pstl · 2aae713b
      Thomas Rodgers authored
              * include/pstl/glue_numeric_defs.h: Restore enable_if lost
              during original import of pstl.
              * include/pstl/glue_numeric_impl.h: Likewise.
      
      From-SVN: r279212
      2aae713b
    • GCC Administrator's avatar
      Daily bump. · 03e5f213
      GCC Administrator authored
      From-SVN: r279210
      03e5f213
    • Ian Lance Taylor's avatar
      compiler: generate type descriptor for pointer to alias defined in another package · 1e2b400b
      Ian Lance Taylor authored
          
          When a type descriptor is needed (for e.g. interface conversion),
          if the type is a pointer to a named type defined in another
          package, we don't generate the definition of the type descriptor
          because it is generated in the package where the type is defined.
          However, if the named type is an alias to an unnamed type, its
          descriptor is not generated in the other package, and we need to
          generate it.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210787
      
      From-SVN: r279207
      1e2b400b
  2. Dec 10, 2019
    • Jonathan Wakely's avatar
      libstdc++: Correct noexcept-specifiers on span constructors · cff87282
      Jonathan Wakely authored
      As discussed at https://github.com/cplusplus/draft/issues/3534 two
      std::span constructors specify incorrect conditions for throwing
      exceptions. This patch makes those constructors have correct
      noexcept-specifiers that accurately reflect what can actually throw.
      
      	(span(ContiguousIterator, Sentinel)): Add conditional noexcept.
      	* include/std/span (span(ContiguousIterator, size_type)): Change
      	noexcept to be unconditionally true.
      	* testsuite/23_containers/span/nothrow_cons.cc: New test.
      
      From-SVN: r279206
      cff87282
    • Jakub Jelinek's avatar
      re PR tree-optimization/92891 (ice in decompose, at wide-int.h:984) · a6ae300f
      Jakub Jelinek authored
      	PR tree-optimization/92891
      	* builtins.c (gimple_call_alloc_size): Convert size to sizetype
      	before returning it.
      
      	* gcc.c-torture/compile/pr92891.c: New test.
      
      From-SVN: r279205
      a6ae300f
    • Vladimir Makarov's avatar
      re PR rtl-optimization/92796 (ICE in lra_assign, at lra-assigns.c:1646 on powerpc64le-linux-gnu) · 7436a1c6
      Vladimir Makarov authored
      2019-12-10  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/92796
      	* lra-int.h (lra_risky_transformations_p): Rename to
      	check_and_force_assignment_correctness_p.
      	* lra-assigns.c: Ditto.
      	(lra_assign): Reset check_and_force_assignment_correctness_p.
      	* lra-constraints.c (lra_risky_transformations_p): Rename to
      	check_and_force_assignment_correctness_p.
      	(lra_constraints): Set up check_and_force_assignment_correctness_p
      	only for the 1st sub-pass.
      	* lra-eliminations.c (process_insn_for_elimination): Set up
      	check_and_force_assignment_correctness_p if the insn chnaged its
      	code.
      
      2019-12-10  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/92796
      	* gcc.target/powerpc/pr92796.c: New test.
      
      From-SVN: r279204
      7436a1c6
    • Thomas Koenig's avatar
      re PR fortran/91643 (ICE in gfc_trans_create_temp_array, at fortran/trans-array.c:1265) · 0cc063af
      Thomas Koenig authored
      2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
          PR fortran/91643
          * trans-array.c (gfc_conv_array_parameter): Do not repack
          an assumed rank dummy argument.
      
      2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
          PR fortran/91643
          * gfortran.dg/assumed_rank_18.f90: New test.
      
      From-SVN: r279203
      0cc063af
    • François Dumont's avatar
      libstdc++: Rework std::copy/copy_backward/move/move_backward/fill/fill_n algos · 6004c17b
      François Dumont authored
      Enhance those algos overloads to generalize existing optimization for
      __gnu_debug::_Safe_iterator w/o _GLIBCXX_DEBUG mode and for std::deque
       iterators.
      
      Also extend __copy_move_a2 ostreambuf_iterator overloads to std::vector and
      std::deque iterators.
      
      	* include/bits/stl_algobase.h
      	(__copy_move_a1<>(_II, _II, _OI)): New.
      	(__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
      	(__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>,
      	_Deque_iterator<>)): New.
      	(__copy_move_a1<>(_II, _II, _Deque_iterator<>)): New.
      	(__copy_move_a<>(_II, _II, _OI)): Adapt, call __copy_move_a1<>.
      	(__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
      	_OI)): New.
      	(__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
      	 const _Safe_iterator<>&)): New.
      	(__copy_move_a<>(_II, _II, const _Safe_iterator<>&)): New.
      	(copy, move): Adapt, call __copy_move_a.
      	(__copy_move_backward_a1<>(_II, _II, _OI)): New,
      	call __copy_move_backward_a2.
      	(__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
      	(__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>,
      	_Deque_iterator<>)): New.
      	(__copy_move_backward_a1<>(_II, _II, _Deque_iterator<>)): New.
      	(__copy_move_backward_a<>(_II, _II, _OI)): Adapt, call
      	__copy_move_backward_a1<>.
      	(__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
      	_OI)): New.
      	(__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
      	 const _Safe_iterator<>&)): New.
      	(__copy_move_backward_a<>(_II, _II, const _Safe_iterator<>&)): New.
      	(copy_backward, move_backward): Adapt, call __copy_move_backward_a<>.
      	(__fill_a): Rename into...
      	(__fill_a1): ... this.
      	(__fill_a1(__normal_iterator<>, __normal_iterator<>, const _Tp&)): New.
      	(__fill_a1(const _Deque_iterator<>&, const _Deque_iterator<>&, _VTp)):
      	New.
      	(__fill_a(_FIte, _FIte, const _Tp&)): New, call __fill_a1.
      	(__fill_a(const _Safe_iterator<>&, const _Safe_iterator<>&,
      	const _Tp&)): New.
      	(fill): Adapt, remove __niter_base usage.
      	(__fill_n_a): Rename into...
      	(__fill_n_a1): ...this.
      	(__fill_n_a(const _Safe_iterator<>&, _Size, const _Tp&,
      	input_iterator_tag)): New.
      	(__fill_n_a(_OI, _Size, const _Tp&, output_iterator_tag)): New, call
      	__fill_n_a1.
      	(__fill_n_a(_OI, _Size, const _Tp&, random_access_iterator_tag)): New,
      	call __fill_a.
      	(__equal_aux): Rename into...
      	(__equal_aux1): ...this.
      	(__equal_aux1(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
      	(__equal_aux1(_Deque_iterator<>, _Deque_iterator<>,
      	_Deque_iterator<>)): New.
      	(__equal_aux1(_II, _II, _Deque_iterator<>)): New.
      	(__equal_aux(_II1, _II1, _II2)): New, call __equal_aux1.
      	(__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&,
      	_OI)): New.
      	(__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&,
      	 const _Safe_iterator<>&)): New.
      	(__equal_aux(_II, _II, const _Safe_iterator<>&)): New.
      	(equal(_II1, _II1, _II2)): Adapt.
      	* include/bits/stl_deque.h
      	(fill, copy, copy_backward, move, move_backward): Remove.
      	* include/bits/deque.tcc: Include <bits/stl_algobase.h>.
      	(__fill_a1): New.
      	(__copy_move_dit): New.
      	(__copy_move_a1): New, use latter.
      	(__copy_move_a1(_II, _II, _Deque_iterator<>)): New.
      	(__copy_move_backward_dit): New.
      	(__copy_move_backward_a1): New, use latter.
      	(__copy_move_backward_a1(_II, _II, _Deque_iterator<>)): New.
      	(__equal_dit): New.
      	(__equal_aux1): New, use latter.
      	(__equal_aux1(_II, _II, _Deque_iterator<>)): New.
      	* include/std/numeric (__is_random_access_iter): Move...
      	* include/bits/stl_iterator_base_types.h (__is_random_access_iter): ...
      	here. Provide pre-C++11 definition.
      	* include/debug/debug.h (_Safe_iterator<>): New declaration.
      	* include/debug/safe_iterator.h (_Safe_iterator<>::_M_can_advance): Add
      	__strict parameter.
      	* include/debug/safe_iterator.tcc: Include <bits/stl_algobase.h>.
      	(_Safe_iterator<>::_M_can_advance): Adapt.
      	(std::__copy_move_a, std::__copy_move_backward_a, __fill_a): New.
      	(__fill_n_a, __equal_aux): New.
      	* include/debug/stl_iterator.h (__niter_base): Remove.
      	* include/debug/vector (__niter_base): Remove.
      	* testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc:
      	Include <vector> and <list>. Add benches.
      	* testsuite/performance/25_algorithms/copy_deque_iterators.cc: Likewise.
      	* testsuite/performance/25_algorithms/equal_deque_iterators.cc: Likewise.
      	* testsuite/25_algorithms/copy/debug/1_neg.cc: New.
      	* testsuite/25_algorithms/copy/deque_iterators/2.cc: New.
      	* testsuite/25_algorithms/copy/deque_iterators/31.cc: New.
      	* testsuite/25_algorithms/copy/deque_iterators/32.cc: New.
      	* testsuite/25_algorithms/copy/deque_iterators/33.cc: New.
      	* testsuite/25_algorithms/copy/deque_iterators/41.cc: New.
      	* testsuite/25_algorithms/copy/deque_iterators/42.cc: New.
      	* testsuite/25_algorithms/copy/deque_iterators/43.cc: New.
      	* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc (test02):
      	New.
      	* testsuite/25_algorithms/copy_backward/deque_iterators/2.cc: New.
      	* testsuite/25_algorithms/equal/deque_iterators/1.cc: New.
      	* testsuite/25_algorithms/fill/deque_iterators/1.cc: New.
      	* testsuite/25_algorithms/move/deque_iterators/2.cc: New.
      	* testsuite/25_algorithms/move_backward/deque_iterators/2.cc: New.
      
      From-SVN: r279201
      6004c17b
    • Jakub Jelinek's avatar
      re PR rtl-optimization/92882 (ICE in regstat_bb_compute_calls_crossed, at... · 5e72bcc1
      Jakub Jelinek authored
      re PR rtl-optimization/92882 (ICE in regstat_bb_compute_calls_crossed, at regstat.c:327 since r279124)
      
      	PR rtl-optimization/92882
      	* regstat.c (regstat_bb_compute_calls_crossed): Don't check
      	INSN_UID against DF_INSN_SIZE or use DF_INSN_INFO_GET unless
      	NONDEBUG_INSN_P.
      
      	* gfortran.dg/pr92882.f: New test.
      
      From-SVN: r279196
      5e72bcc1
    • Jakub Jelinek's avatar
      re PR ipa/92883 (ICE in compare_values_warnv) · 27f418b8
      Jakub Jelinek authored
      	PR ipa/92883
      	* ipa-cp.c (propagate_vr_across_jump_function): Pass jvr rather
      	than *jfunc->m_vr to intersect.  Formatting fix.
      
      	* gcc.dg/ipa/pr92883.c: New test.
      
      From-SVN: r279194
      27f418b8
Loading