Skip to content
Snippets Groups Projects
  1. Mar 21, 2023
    • Arsen Arsenović's avatar
      update_web_docs_git: Update CSS reference to new manual CSS · 27334ebe
      Arsen Arsenović authored
      maintainer-scripts/ChangeLog:
      
      	* update_web_docs_git (CSS): Update CSS reference to point to
      	/texinfo-manuals.css.
      Unverified
      27334ebe
    • Arsen Arsenović's avatar
      doc: Remove the @gol macro/alias · 43b72ede
      Arsen Arsenović authored
      The @gol macro appears to have existed as a workaround for a bug in old
      versions of makeinfo and/or texinfo.tex, where they would, in some types
      of output, fail to emit line breaks in @gccoptlists.  After updating
      texinfo.tex, I noticed that this behavior appears to no longer be
      exhibited, instead, both acted correctly and inserted newlines.  The
      (groff) manual output also appears unaffected.
      
      gcc/ChangeLog:
      
      	* doc/implement-c.texi: Remove usage of @gol.
      	* doc/invoke.texi: Ditto.
      	* doc/sourcebuild.texi: Ditto.
      	* doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
      	texinfo.tex versions, the bug it was working around appears to
      	be gone.
      
      gcc/fortran/ChangeLog:
      
      	* invoke.texi: Remove usages of @gol.
      	* intrinsic.texi: Ditto.
      Unverified
      43b72ede
    • Arsen Arsenović's avatar
      doc: Update texinfo.tex · 8a1b089e
      Arsen Arsenović authored
      gcc/ChangeLog:
      
      	* doc/include/texinfo.tex: Update to 2023-01-17.19.
      Unverified
      8a1b089e
    • Arsen Arsenović's avatar
      docs: Add @defbuiltin family of helpers · f25efe50
      Arsen Arsenović authored
      The @defbuiltin{,x} macros are convenience macros for the often-repeated
      task of defining a built-in function in extend.texi.  Usage of this
      macro should lead to a higher degree of consistency across pieces of
      text written by different people, and provide a better reading
      experience, as they prevent easy-to-make errors, like forgetting index
      entries for these functions.
      
      gcc/ChangeLog:
      
      	* doc/include/gcc-common.texi: Add @defbuiltin{,x} and
      	@enddefbuiltin for defining built-in functions.
      	* doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
      	places where it should be used.
      Unverified
      f25efe50
    • Arsen Arsenović's avatar
      doc: Fix a few minor errors spotted by testers · e1e5ecb2
      Arsen Arsenović authored
      This commit addresses a few minor errors that were spotted while testing
      the GCC manual with a few people, and while working on wider changes.
      
      gcc/ChangeLog:
      
      	* doc/extend.texi (Formatted Output Function Checking): New
      	subsection for  grouping together printf et al.
      	(Exception handling) Fix missing @ sign before copyright
      	header, which lead to the copyright line leaking into
      	'(gcc)Exception handling'.
      	* doc/gcc.texi: Set document language to en_US.
      	(@copying): Wrap front cover texts in quotations, move in manual
      	description text.
      Unverified
      e1e5ecb2
    • Arsen Arsenović's avatar
      docs: Create Indices appendix · ab946809
      Arsen Arsenović authored
      The GCC manual has multiple indices.  By creating an appendix which
      lists them, we help makeinfo present a more accessible way for the
      reader to see all the indices.
      
      gcc/ChangeLog:
      
      	* doc/gcc.texi: Add the Indices appendix, to make texinfo
      	generate nice indices overview page.
      Unverified
      ab946809
    • Richard Biener's avatar
      tree-optimization/109170 - bogus use-after-free with __builtin_expect · 5f413dc4
      Richard Biener authored
      The following adds a missing range-op for __builtin_expect which
      helps -Wuse-after-free to detect the case a realloc original
      pointer is used when the result was NULL.  The implementation
      should handle all argument one pass-through builtins we handle
      in the fnspec machinery, but that's defered to GCC 14.
      
      The gcc.dg/tree-ssa/ssa-lim-21.c testcase needs adjustment because
      
         for (int j = 0; j < m; j++)
           if (__builtin_expect (m, 0))
             for (int i = 0; i < m; i++)
      
      is now correctly optimized to a unconditional jump by EVRP - m
      cannot be zero when the outer loop is entered.  I've adjusted
      the outer loop to iterate 'n' times which makes us apply store-motion
      to 'count' and 'q->data1' but only out of the inner loop and
      as expected not apply store motion to 'q->data' at all.
      
      The gcc.dg/predict-20.c testcase relies on broken behavior of
      profile estimation when trying to handle __builtin_expect values
      flowing into PHI nodes.  I have opened PR109210 and removed
      the expected matching from the testcase.
      
      	PR tree-optimization/109170
      	* gimple-range-op.cc (cfn_pass_through_arg1): New.
      	(gimple_range_op_handler::maybe_builtin_call): Handle
      	__builtin_expect via cfn_pass_through_arg1.
      
      	* gcc.dg/Wuse-after-free-pr109170.c: New testcase.
      	* gcc.dg/tree-ssa/ssa-lim-21.c: Adjust.
      	* gcc.dg/predict-20.c: Likewise.
      5f413dc4
    • Paul Thomas's avatar
      Fortran: Fix regression caused by PR37336 patch [PR109206] · 259bd768
      Paul Thomas authored
      2023-03-21  Paul Thomas  <pault@gcc.gnu.org>
      
      gcc/fortran
      	PR fortran/109206
      	* trans-array.cc (gfc_trans_array_constructor_value): Correct
      	incorrect setting of typespec.
      259bd768
    • Paul Thomas's avatar
      Fortran: Fix regression caused by PR37336 patch [PR109209] · 3a9caf78
      Paul Thomas authored
      2023-03-21  Paul Thomas  <pault@gcc.gnu.org>
      
      gcc/fortran
      	PR fortran/109209
      	* resolve.cc (generate_component_assignments): Restore the
      	exclusion of allocatable components from the loop.
      
      gcc/testsuite/
      	PR fortran/109209
      	* gfortran.dg/pr109209.f90: New test.
      3a9caf78
    • Gaius Mulley's avatar
      [modula2] Add $(CXX_FLAGS) to the bootstrap tool rules. · 76dda105
      Gaius Mulley authored
      
      The bootstrap tool mc is built using $(CXX) and it is missing
      $(CXXFLAGS).
      
      gcc/m2/ChangeLog:
      
      	* Make-lang.in (m2/mc-boot/$(SRC_PREFIX)%.o): Add $(CXXFLAGS).
      	(m2/mc-boot-ch/$(SRC_PREFIX)%.o): Add $(CXXFLAGS).
      	(m2/mc-boot-ch/$(SRC_PREFIX)%.o): Add $(CXXFLAGS).
      	(m2/mc-boot/main.o): Add $(CXXFLAGS).
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      76dda105
    • GCC Administrator's avatar
      Daily bump. · 582f246b
      GCC Administrator authored
      582f246b
  2. Mar 20, 2023
    • Jonathan Wakely's avatar
      libstdc++: Fix formatting in std::filesystem helper function · ccfca555
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* src/filesystem/ops-common.h (get_temp_directory_from_env): Fix
      	formatting.
      ccfca555
    • Joseph Myers's avatar
      Update gcc sv.po · 7cfc4da2
      Joseph Myers authored
      	* sv.po: Update.
      7cfc4da2
    • Harald Anlauf's avatar
      Fortran: fix documentation of -fno-underscoring [PR109216] · 6c2b28e4
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/109216
      	* invoke.texi: Correct documentation of how underscores are appended
      	to external names.
      6c2b28e4
    • Marek Polacek's avatar
      c++: explicit ctor and list-initialization [PR109159] · a226590f
      Marek Polacek authored
      When I implemented explicit(bool) in r9-3735, I added this code to
      add_template_candidate_real:
      +  /* Now the explicit specifier might have been deduced; check if this
      +     declaration is explicit.  If it is and we're ignoring non-converting
      +     constructors, don't add this function to the set of candidates.  */
      +  if ((flags & LOOKUP_ONLYCONVERTING) && DECL_NONCONVERTING_P (fn))
      +    return NULL;
      but as this test demonstrates, that's incorrect when we're initializing
      from a {}: for list-initialization we consider explicit constructors and
      complain if one is chosen.
      
      	PR c++/109159
      
      gcc/cp/ChangeLog:
      
      	* call.cc (add_template_candidate_real): Add explicit decls to the
      	set of candidates when the initializer is a braced-init-list.
      
      libstdc++-v3/ChangeLog:
      
      	* testsuite/20_util/pair/cons/explicit_construct.cc: Adjust dg-error.
      	* testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.
      	* testsuite/23_containers/span/explicit.cc: Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/explicit16.C: New test.
      a226590f
    • Jakub Jelinek's avatar
      c++: Drop TREE_READONLY on vars (possibly) initialized by tls wrapper [PR109164] · 0a846340
      Jakub Jelinek authored
      The following two testcases are miscompiled, because we keep TREE_READONLY
      on the vars even when they are (possibly) dynamically initialized by a TLS
      wrapper function.  Normally cp_finish_decl drops TREE_READONLY from vars
      which need dynamic initialization, but for TLS we do this kind of
      initialization upon every access to those variables.  Keeping them
      TREE_READONLY means e.g. PRE can hoist loads from those before loops
      which contain the TLS wrapper calls, so we can access the TLS variables
      before they are initialized.
      
      2023-03-20  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/109164
      	* cp-tree.h (var_needs_tls_wrapper): Declare.
      	* decl2.cc (var_needs_tls_wrapper): No longer static.
      	* decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables
      	for which a TLS wrapper will be needed.
      
      	* g++.dg/tls/thread_local13.C: New test.
      	* g++.dg/tls/thread_local13-aux.cc: New file.
      	* g++.dg/tls/thread_local14.C: New test.
      	* g++.dg/tls/thread_local14-aux.cc: New file.
      0a846340
    • Michael Meissner's avatar
      Rework 128-bit complex multiply and divide. · c67f312d
      Michael Meissner authored
      This patch reworks how the complex multiply and divide built-in functions are
      done.  Previously GCC created built-in declarations for doing long double complex
      multiply and divide when long double is IEEE 128-bit.  However, it did not
      support __ibm128 complex multiply and divide if long double is IEEE 128-bit.
      
      This code does not create the built-in declaration with the changed name.
      Instead, it uses the TARGET_MANGLE_DECL_ASSEMBLER_NAME hook to change the name
      before it is written out to the assembler file like it now does for all of the
      other long double built-in functions.
      
      2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
      
      gcc/
      
      	PR target/109067
      	* config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
      	(init_float128_ieee): Delete code to switch complex multiply and divide
      	for long double.
      	(complex_multiply_builtin_code): New helper function.
      	(complex_divide_builtin_code): Likewise.
      	(rs6000_mangle_decl_assembler_name): Add support for mangling the name
      	of complex 128-bit multiply and divide built-in functions.
      
      gcc/testsuite/
      
      	PR target/109067
      	* gcc.target/powerpc/divic3-1.c: New test.
      	* gcc.target/powerpc/divic3-2.c: Likewise.
      	* gcc.target/powerpc/mulic3-1.c: Likewise.
      	* gcc.target/powerpc/mulic3-2.c: Likewise.
      c67f312d
    • Harald Anlauf's avatar
      Fortran: simplification of NEAREST for large argument [PR109186] · 4410a08b
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/109186
      	* simplify.cc (gfc_simplify_nearest): Fix off-by-one error in setting
      	up real kind-specific maximum exponent for mpfr.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/109186
      	* gfortran.dg/nearest_6.f90: New test.
      4410a08b
    • Peter Bergner's avatar
      rs6000: Don't ICE when compiling the __builtin_vec_xst_trunc built-in [PR109178] · fbd50e86
      Peter Bergner authored
      When we expand the __builtin_vec_xst_trunc built-in, we use the wrong mode
      for the MEM operand which causes an unrecognizable insn ICE.  The solution
      is to use the correct TMODE mode.
      
      2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
      
      gcc/
      	PR target/109178
      	* config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
      
      gcc/testsuite/
      	PR target/109178
      	* gcc.target/powerpc/pr109178.c: New test.
      fbd50e86
    • Jakub Jelinek's avatar
      testsuite: Fix up 20230313.C test · e19234f4
      Jakub Jelinek authored
      I've noticed this testcase FAILs on i686-linux with
      -fstack-protector-strong.
      
      sizeof (auto_vec<int, 8>) == 16, which in this case contains
      4-byte m_vec (which points to to m_auto), then 8-byte m_auto
      which contains just 8-byte m_vecpfx and finally 1 byte m_data,
      rest is padding.  We then try to push 2 ints to it, so 8 bytes,
      starting at the end of m_vecpfx aka address of m_data, but there
      is just 1 byte + 3 bytes of padding.
      In the lp64 case, I think sizeof (auto_vec<int, 8>) == 24,
      because there is 8-byte m_vec, 8-byte m_vecpfx and 1-byte m_char
      all with 8-byte alignment.
      
      2023-03-20  Jakub Jelinek  <jakub@redhat.com>
      
      	* g++.dg/torture/20230313.C (auto_vec): Change m_data type
      	from char to char [2 * sizeof (int)].
      e19234f4
    • Jonathan Wakely's avatar
      libstdc++: Remove template-head from std::expected<void> ctor [PR109182] · 5194ad19
      Jonathan Wakely authored
      The presence of a template-head on this constructor is a copy & paste
      error from the primary template.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/109182
      	* include/std/expected (expected<void>::expected(in_place_t)):
      	Remove template-head.
      5194ad19
    • Paul Thomas's avatar
      Fortran: Allow external function from in an associate block [PR87127] · 5889c7bd
      Paul Thomas authored
      2023-03-20  Paul Thomas  <pault@gcc.gnu.org>
      
      gcc/fortran
      	PR fortran/87127
      	* resolve.cc (check_host_association): If an external function
      	is typed but not declared explicitly to be external, change the
      	old symbol from a variable to an external function.
      
      gcc/testsuite/
      	PR fortran/87127
      	* gfortran.dg/external_procedures_4.f90: New test.
      5889c7bd
    • GCC Administrator's avatar
      Daily bump. · 09abeb73
      GCC Administrator authored
      09abeb73
  3. Mar 19, 2023
    • Harald Anlauf's avatar
      Fortran: procedures with BIND(C) attribute require explicit interface [PR85877] · 5426ab34
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/85877
      	* resolve.cc (resolve_fl_procedure): Check for an explicit interface
      	of procedures with the BIND(C) attribute (F2018:15.4.2.2).
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/85877
      	* gfortran.dg/pr85877.f90: New test.
      5426ab34
    • Thomas Koenig's avatar
      Mention undefined behavior on integer overflow. · 655689f6
      Thomas Koenig authored
      gcc/fortran/ChangeLog:
      
      	* gfortran.texi: Mention behavior on overflow.
      655689f6
    • Xin Liu's avatar
      Re: [PATCH] Testsuite: Disable micromips for MSA tests · 14361c5a
      Xin Liu authored
      gcc/testsuite
      	* gcc.target/mips/mips.exp (mips-dg-options): Disable micromips
      	for MSA tests.
      14361c5a
    • Gaius Mulley's avatar
      [modula2] target independent doc and tools rebuilt · 8804eb0b
      Gaius Mulley authored
      
      The target independent documentation needs to be rebuilt together with the
      bootstrap tools after the library changes and after the <* noreturn *>
      attribute has been implemented.
      
      gcc/m2/ChangeLog:
      
      	* Make-maintainer.in (gm2.maintainer-clean): Remove.
      	(gm2.maintainer-help): Add gm2.maintainer-tools,
      	gm2.maintainer-doc.  Remove gm2.maintainer-clean.
      	Change target-independent directory to target-independent/m2.
      	* gm2-compiler/ppg.mod: Correct __FILE_ typo to __FILE__.
      	* gm2-compiler/M2Options.def (SetAutoInit): Update comment.
      	* gm2-compiler/M2Options.mod (SetAutoInit): Update comment.
      	* gm2-gcc/m2color.cc (m2color_colorize_start): Rename name_len
      	to _name_high.
      	* gm2-gcc/m2color.def (colorize_start): change ARRAY OF CHAR to
      	ADDRESS and add _name_high.
      	* gm2-gcc/m2decl.cc (m2decl_BuildStartFunctionDeclaration): Change
      	int to bool.
      	* gm2-gcc/m2decl.h (m2decl_BuildStartFunctionDeclaration): Change
      	int to bool.
      	* gm2-gcc/m2expr.cc (m2expr_BuildBinarySetDo): Change int to bool.
      	(m2expr_BuildIfConstInVar): Change int to bool.
      	(m2expr_BuildIfNotConstInVar): Change int to bool.
      	(m2expr_BuildIfVarInVar): Change int to bool.
      	(m2expr_BuildIfNotVarInVar): Change int to bool.
      	(m2expr_BuildForeachWordInSetDoIfExpr): Change int to bool.
      	* gm2-gcc/m2expr.h (m2expr_BuildIfNotVarInVar): Change int to bool.
      	(m2expr_BuildIfVarInVar): Change int to bool.
      	(m2expr_BuildIfNotConstInVar): Change int to bool.
      	(m2expr_BuildIfConstInVar): Change int to bool.
      	* gm2-gcc/m2options.h (M2Options_SetAutoInit): Change int to bool.
      	(M2Options_SetNilCheck): Change int to bool.
      	(M2Options_SetReturnCheck): Change int to bool.
      	(M2Options_SetCaseCheck): Change int to bool.
      	(M2Options_SetCheckAll): Change int to bool.
      	(M2Options_SetVerboseUnbounded): Change int to bool.
      	(M2Options_SetUnboundedByReference): Change int to bool.
      	(M2Options_SetOptimizing): Change int to bool.
      	(M2Options_SetQuiet): Change int to bool.
      	(M2Options_SetCpp): Change int to bool.
      	(M2Options_SetM2g): Change int to bool.
      	(M2Options_SetLowerCaseKeywords): Change int to bool.
      	(M2Options_SetVerbose): Change int to bool.
      	* gm2-gcc/m2treelib.cc (m2treelib_get_rvalue): Change int to bool.
      	(m2treelib_get_field_no): Change int to bool.
      	(m2treelib_get_set_value): Change int to bool.
      	(m2treelib_get_set_address): Change int to bool.
      	(m2treelib_get_set_address_if_var): Change int to bool.
      	* gm2-gcc/m2treelib.def (get_set_address_if_var): Change int to bool.
      	(get_set_address): Change int to bool.
      	(get_set_value): Change int to bool.
      	(get_field_no): Change int to bool.
      	(get_rvalue): Change int to bool.
      	* gm2-gcc/m2treelib.h (m2treelib_get_field_no): Change int to bool.
      	(m2treelib_get_set_value): Change int to bool.
      	(m2treelib_get_set_address): Change int to bool.
      	(m2treelib_get_set_address_if_var): Change int to bool.
      	* gm2-gcc/m2type.cc (m2type_BuildEndFunctionType): Change int to bool.
      	* gm2-gcc/m2type.h (m2type_BuildEndFunctionType): Change int to bool.
      	* gm2-libs-ch/dtoa.cc (dtoa_calcsign): Change int to bool.
      	* gm2-libs-ch/ldtoa.cc (dtoa_calcsign): Change int to bool.
      	(ldtoa_ldtoa): Change int to bool.
      	* m2.flex (functionInfo): Change int to bool.
      	(pushFunction): Change parameter from int to bool.
      	* mc-boot/GDebug.cc (Debug_Halt): Rebuild.
      	* mc-boot/GDebug.h (Debug_Halt): Rebuild.
      	* mc-boot/GDynamicStrings.cc: Rebuild.
      	* mc-boot/GDynamicStrings.h: Rebuild.
      	* mc-boot/GFIO.cc: Rebuild.
      	* mc-boot/GM2RTS.cc: Rebuild.
      	* mc-boot/GM2RTS.h: Rebuild.
      	* mc-boot/GPushBackInput.cc: Rebuild.
      	* mc-boot/GRTExceptions.cc: Rebuild.
      	* mc-boot/GRTint.cc: Rebuild.
      	* mc-boot/GSysStorage.cc: Rebuild.
      	* mc-boot/Gdecl.cc: Rebuild.
      	* mc-boot/GsymbolKey.cc: Rebuild.
      	* mc/symbolKey.mod: Rebuild.
      	* target-independent/m2/Builtins.texi: Rebuild.
      	* target-independent/m2/SYSTEM-iso.texi: Rebuild.
      	* target-independent/m2/SYSTEM-pim.texi: Rebuild.
      	* target-independent/m2/gm2-libs.texi: Rebuild.
      	* tools-src/def2doc.py (PIM_Log): Change gm2-libs-pim to
      	gm2-lib-log.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      8804eb0b
    • Stafford Horne's avatar
      or1k: Do not clear existing FPU exceptions before updating · 33fb1625
      Stafford Horne authored
      We should always carry the exceptions forward.  This bug was found when
      working on testing glibc math tests, many tests were failing with
      Overflow and Underflow flags not set.  This was traced to here.
      
      libgcc/ChangeLog:
      
      	* config/or1k/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Remove
      	statement clearing existing exceptions.
      33fb1625
    • Jonny Grant's avatar
      Docs: correct typo in nonnull function attribute description. · 0e38aedc
      Jonny Grant authored
      gcc/ChangeLog:
      	* doc/extend.texi (Common Function Attributes) <nonnull>:
      	Correct typo.
      0e38aedc
    • GCC Administrator's avatar
      Daily bump. · cffcb774
      GCC Administrator authored
      cffcb774
  4. Mar 18, 2023
    • David Malcolm's avatar
      analyzer: fix ICE on certain longjmp calls [PR109094] · 430d7d88
      David Malcolm authored
      
      PR analyzer/109094 reports an ICE in the analyzer seen on qemu's
      target/i386/tcg/translate.c
      
      The issue turned out to be that when handling a longjmp, the code
      to pop the frames was generating an svalue for the result_decl of any
      popped frame that had a non-void return type (and discarding it) leading
      to "uninit" poisoned_svalue_diagnostic instances being saved since the
      result_decl is only set by the greturn stmt.  Later, when checking the
      feasibility of the path to these diagnostics, m_check_expr was evaluated
      in the context of the frame of the longjmp, leading to an attempt to
      evaluate the result_decl of each intervening frames whilst in the
      context of the topmost frame, leading to an assertion failure in
      frame_region::get_region_for_local here:
      
      919		case RESULT_DECL:
      920		  gcc_assert (DECL_CONTEXT (expr) == m_fun->decl);
      921		  break;
      
      This patch updates the analyzer's longjmp implementation so that it
      doesn't attempt to generate svalues for the result_decls when popping
      frames, fixing the assertion failure (and presumably fixing "uninit"
      false positives in a release build).
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/109094
      	* region-model.cc (region_model::on_longjmp): Pass false for
      	new "eval_return_svalue" param of pop_frame.
      	(region_model::pop_frame): Add new "eval_return_svalue" param and
      	use it to suppress the call to get_rvalue on the result when
      	needed by on_longjmp.
      	* region-model.h (region_model::pop_frame): Add new
      	"eval_return_svalue" param.
      
      gcc/testsuite/ChangeLog:
      	PR analyzer/109094
      	* gcc.dg/analyzer/setjmp-pr109094.c: New test.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      430d7d88
    • Jonathan Wakely's avatar
      libstdc++: Fix test for hash<coroutine_handle<P>>::operator() [PR109165] · 9b83d475
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/109165
      	* testsuite/18_support/coroutines/hash.cc: Use const object
      	in second call.
      9b83d475
    • Paul Thomas's avatar
      Fortran: Fix bugs and missing features in finalization [PR37336] · d7caf313
      Paul Thomas authored
      2023-03-18  Paul Thomas  <pault@gcc.gnu.org>
      
      gcc/fortran
      	PR fortran/103854
      	PR fortran/96122
      	PR fortran/37336
      	* class.cc (finalize_component): Include the missing arguments
      	in the call to the component's finalizer wrapper.
      	(has_finalizer_component): Do not return true for procedure
      	pointer components.
      	(finalizer_insert_packed_call): Remove the redundant argument
      	in the call to the final subroutine.
      	(generate_finalization_wrapper): Add support for assumed rank
      	finalizers.
      	(gfc_may_be_finalized): New helper function.
      	* dump-parse-tree.cc (write_proc): Whitespace.
      	* gfortran.h : Add prototype for gfc_may_be_finalized.
      	* resolve.cc (resolve_function): Correct derived types that
      	have an incomplete namespace.
      	(resolve_where, gfc_resolve_where_code_in_forall,
      	gfc_resolve_forall_body, gfc_resolve_code): Check that the op
      	code is still EXEC_ASSIGN. If it is set lhs to must finalize.
      	(is_finalizable_type): New function.
      	(generate_component_assignments): Set must_finalize if needed.
      	(gfc_resolve_finalizers): Error if assumed rank finalizer is
      	not the only one. Warning on lack of scalar finalizer modified
      	to account for assumed rank finalizers.
      	(generate_final_call): New function.
      	(generate_component_assignments): Enclose the outermost call in
      	a block to capture automatic deallocation and final calls.
      	Set must_finalize as required to satisfy the standards. Use an
      	explicit pointer assignment for pointer components to capture
      	finalization of the target. Likewise use explicit assignment
      	for allocatable components. Do not use the temporary copy of
      	the lhs in defined assignment if the component is allocatable.
      	Put the temporary in the same namespace as the lhs symbol if
      	the component may be finalized. Remove the leading assignment
      	from the expansion of assignment of components that have their
      	own defined assignment components. Suppress finalization of
      	assignment of temporary components to the lhs. Make an explicit
      	final call for the rhs function temporary if it exists.
      	(gfc_resolve_code): Set must_finalize for assignments with an
      	array constructor on the rhs.
      	(gfc_resolve_finalizers): Ensure that an assumed rank finalizer
      	is the only finalizer for that type and correct the surprising
      	warning for the lack of a scalar finalizer.
      	(check_defined_assignments): Handle allocatable components.
      	(resolve_fl_derived): Set referenced the vtab for use
      	associated symbols.
      	(resolve_symbol): Set referenced an unreferenced symbol that
      	will be finalized.
      	* trans-array.cc (gfc_trans_array_constructor_value): Add code
      	to finalize the constructor result. Warn that this feature was
      	removed in F2018 and that it is suppressed by -std=2018.
      	(trans_array_constructor): Add finalblock, pass to previous
      	and apply to loop->post if filled.
      	(gfc_add_loop_ss_code): Add se finalblock to outer loop post.
      	(gfc_trans_array_cobounds, gfc_trans_array_bounds): Add any
      	generated finalization code to the main block.
      	(structure_alloc_comps): Add boolean argument to suppress
      	finalization and use it for calls from
      	gfc_deallocate_alloc_comp_no_caf. Otherwise it defaults to
      	false.
      	(gfc_copy_alloc_comp_no_fini): New wrapper for
      	structure_alloc_comps.
      	(gfc_alloc_allocatable_for_assignment): Suppress finalization
      	by setting new arg in call to gfc_deallocate_alloc_comp_no_caf.
      	(gfc_trans_deferred_array): Use gfc_may_be_finalized and do not
      	deallocate the components of entities with a leading '_' in the
      	name that are also marked as artificial.
      	* trans-array.h : Add the new boolean argument to the prototype
      	of gfc_deallocate_alloc_comp_no_caf with a default of false.
      	Add prototype for gfc_copy_alloc_comp_no_fini.
      	* trans-decl.cc(init_intent_out_dt): Tidy up the code.
      	* trans-expr.cc (gfc_init_se): Initialize finalblock.
      	(gfc_conv_procedure_call): Use gfc_finalize_tree_expr to
      	finalize function results. Replace in-line block for class
      	results with call to new function.
      	(gfc_conv_expr): Finalize structure constructors for F2003 and
      	F2008. Warn that this feature was deleted in F2018 and, unlike
      	array constructors, is not default. Add array constructor
      	finalblock to the post block.
      	(gfc_trans_scalar_assign): Suppress finalization by setting new
      	argument in call to gfc_deallocate_alloc_comp_no_caf. Add the
      	finalization blocks to the main block.
      	(gfc_trans_arrayfunc_assign): Use gfc_assignment_finalizer_call
      	and ensure that finalization occurs after the evaluation of the
      	rhs but using the initial value for the lhs. Finalize rhs
      	function results using gfc_finalize_tree_expr.
      	(trans_class_assignment, gfc_trans_assignment_1): As previous
      	function, taking care to order evaluation, assignment and
      	finalization correctly.
      	* trans-io.cc (gfc_trans_transfer): Add the final block.
      	* trans-stmt.cc (gfc_trans_call, gfc_trans_allocate): likewise.
      	(trans_associate_var): Nullify derived allocatable components
      	and finalize function targets with defined assignment
      	components on leaving the block scope.
      	(trans_allocate): Finalize source expressions, if required,
      	and set init_expr artificial temporarily to suppress the
      	finalization in gfc_trans_assignment.
      	* trans.cc (gfc_add_finalizer_call): Do not finalize the
      	temporaries generated in type assignment with defined
      	assignment components.
      	(gfc_assignment_finalizer_call): New function.
      	(gfc_finalize_tree_expr): New function.
      	* trans.h: Add finalblock to gfc_se. Add the prototypes for
      	gfc_finalize_tree_expr and gfc_assignment_finalizer_call.
      
      gcc/testsuite/
      	PR fortran/64290
      	* gfortran.dg/finalize_38.f90 : New test.
      	* gfortran.dg/finalize_38a.f90 : New test.
      	* gfortran.dg/allocate_with_source_25.f90 : The number of final
      	calls goes down from 6 to 4.
      	* gfortran.dg/associate_25.f90 : Remove the incorrect comment.
      	* gfortran.dg/auto_dealloc_2.f90 : Change the tree dump expr
      	but the final count remains the same.
      	* gfortran.dg/unlimited_polymorphic_8.f90 : Tree dump reveals
      	foo.1.x rather than foo.0.x
      
      	PR fortran/67444
      	* gfortran.dg/finalize_39.f90 : New test.
      
      	PR fortran/67471
      	* gfortran.dg/finalize_40.f90 : New test.
      
      	PR fortran/69298
      	PR fortran/70863
      	* gfortran.dg/finalize_41.f90 : New test.
      
      	PR fortran/71798
      	* gfortran.dg/finalize_42.f90 : New test.
      
      	PR fortran/80524
      	* gfortran.dg/finalize_43.f90 : New test.
      
      	PR fortran/82996
      	* gfortran.dg/finalize_44.f90 : New test.
      
      	PR fortran/84472
      	* gfortran.dg/finalize_45.f90 : New test.
      
      	PR fortran/88735
      	PR fortran/93691
      	* gfortran.dg/finalize_46.f90 : New test.
      
      	PR fortran/91316
      	* gfortran.dg/finalize_47.f90 : New test.
      
      	PR fortran/106576
      	* gfortran.dg/finalize_48.f90 : New test.
      
      	PR fortran/37336
      	* gfortran.dg/finalize_49.f90 : New test.
      	* gfortran.dg/finalize_50.f90 : New test.
      	* gfortran.dg/finalize_51.f90 : New test.
      d7caf313
    • GCC Administrator's avatar
      Daily bump. · 454a4d50
      GCC Administrator authored
      454a4d50
    • Peter Bergner's avatar
      lra: Ignore debug insns and notes in combine_reload_insn [PR109179] · 44a13125
      Peter Bergner authored
      We ICE in combine_reload_insn if we've deleted the TO insn operand during
      processing, because lra_get_insn_recog_data doesn't expect to see the note
      that replaces the deleted insn.  The solution here is to exit early if TO
      is a debug insn or note.
      
      2023-03-17  Peter Bergner  <bergner@linux.ibm.com>
      
      gcc/
      	PR rtl-optimization/109179
      	* lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
      	insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
      44a13125
  5. Mar 17, 2023
    • Hans-Peter Nilsson's avatar
      testsuite: Skip some gcc.dg/plugin tests for default_packed targets · ac81fea3
      Hans-Peter Nilsson authored
      Avoid unweildy structure-layout-specific message-matching
      expressions by exluding targets that lay out structures as
      if they had been specified with __attribute__ ((__packed__)),
      for tests where multiple messages depend on the structure
      layout.
      
      It's arguably a judgement call whether to skip some of these
      tests or add multiple lines of matches depending on the
      layout of structures.
      
      	* gcc.dg/plugin/infoleak-2.c,
      	gcc.dg/plugin/infoleak-CVE-2011-1078-1.c,
      	gcc.dg/plugin/infoleak-CVE-2011-1078-2.c,
      	gcc.dg/plugin/infoleak-CVE-2017-18549-1.c,
      	gcc.dg/plugin/infoleak-CVE-2017-18550-1.c,
      	gcc.dg/plugin/infoleak-antipatterns-1.c,
      	gcc.dg/plugin/infoleak-fixit-1.c: Skip for default_packed targets.
      ac81fea3
    • Jason Merrill's avatar
      c++: constant, array, lambda, template [PR108975] · 6f90de97
      Jason Merrill authored
      When a lambda refers to a constant local variable in the enclosing scope, we
      tentatively capture it, but if we end up pulling out its constant value, we
      go back at the end of the lambda and prune any unneeded captures.  Here
      while parsing the template we decided that the dim capture was unneeded,
      because we folded it away, but then we brought back the use in the template
      trees that try to preserve the source representation with added type info.
      So then when we tried to instantiate that use, we couldn't find what it was
      trying to use, and crashed.
      
      Fixed by not trying to prune when parsing a template; we'll prune at
      instantiation time.
      
      	PR c++/108975
      
      gcc/cp/ChangeLog:
      
      	* lambda.cc (prune_lambda_captures): Don't bother in a template.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/lambda/lambda-const11.C: New test.
      6f90de97
    • Jason Merrill's avatar
      c++: throw and private destructor [PR109172] · 89004331
      Jason Merrill authored
      Since we aren't going through the normal call machinery, we need to check
      the dtor access specifically.
      
      	PR c++/109172
      
      gcc/cp/ChangeLog:
      
      	* except.cc (build_throw): Check dtor access.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/eh/dtor4.C: New test.
      89004331
    • Jonathan Wakely's avatar
      libstdc++: Add const to hash<coroutine_handle<P>>::operator() [PR109165] · c48be829
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/109165
      	* include/std/coroutine (hash<>::operator()): Add const.
      	* testsuite/18_support/coroutines/hash.cc: New test.
      c48be829
    • Jason Merrill's avatar
      c++: namespace-scoped friend in local class [PR69410] · ae7190e3
      Jason Merrill authored
      do_friend was only considering class-qualified identifiers for the
      qualified-id case, but we also need to skip local scope when there's an
      explicit namespace scope.
      
      	PR c++/69410
      
      gcc/cp/ChangeLog:
      
      	* friend.cc (do_friend): Handle namespace as scope argument.
      	* decl.cc (grokdeclarator): Pass down in_namespace.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/lookup/friend24.C: New test.
      ae7190e3
Loading