Skip to content
Snippets Groups Projects
  1. Dec 29, 2021
    • Jakub Jelinek's avatar
      tree-ssa-dce: Fix up -fcompare-debug failures in make_forwarders_with_degenerate_phis [PR103742] · e5acfcad
      Jakub Jelinek authored
      make_forwarders_with_degenerate_phis causes a -fcompare-debug failure on the
      following testcase.
      The problem is that on:
        # iftmp.4_8 = PHI <&D.2582(6), &D.2583(4), &D.2582(7), &D.2583(5)>
      the exact DECL_UIDs are different between -g and -g0 (which is ok, with -g
      the decls can have larger gaps in between the uids), which means
      iterative_hash_expr is different and because there are 2 pairs of edges
      with matching phi arguments, the function processes them in different
      orders.
      The following patch fixes it by using the iterative_hash_expr order
      only to determine which arguments are the same, then replaces the hashes
      with the minimum dest_idx in the set of matching arguments and qsorts
      again (which makes it stable for -fcompare-debug) and only splits edges etc.
      on that stable order.
      As a small optimization, if no arguments are equal, it doesn't do the
      second qsort and continues, and if all arguments of the PHI are
      constants or SSA_NAMEs (I think that is a pretty common case for many
      PHIs), then it doesn't do the second qsort either, because in that case
      the hash values will be stable, only computed from the constant values or
      SSA_NAME_VERSIONs.
      
      2021-12-29  Jakub Jelinek  <jakub@redhat.com>
      
      	PR debug/103742
      	* tree-ssa-dce.c (make_forwarders_with_degenerate_phis): If any phi
      	argument is not CONSTANT_CLASS_P or SSA_NAME and any arguments are
      	equal, change second from hash value to lowest dest_idx from the
      	edges which have equal argument and resort to ensure -fcompare-debug
      	stability.
      
      	* g++.dg/opt/pr103742.C: New test.
      e5acfcad
    • Francois-Xavier Coudert's avatar
      Fortran: keep values of IEEE_CLASS_TYPE in sync · ade9130f
      Francois-Xavier Coudert authored
      Fortran 2018 added some synonyms to the existing values, namely
      IEEE_NEGATIVE_SUBNORMAL (which is the same as IEEE_NEGATIVE_DENORMAL)
      and IEEE_POSITIVE_SUBNORMAL (same as IEEE_POSITIVE_DENORMAL). When they
      were added to the C side, they were not kept in sync with the Fortran
      part of the library. Thew new values are not used (yet), so it is
      currently harmless, but better fix it.
      
      libgfortran/ChangeLog:
      
      	* ieee/ieee_helper.c: Fix enum values.
      ade9130f
    • Francois-Xavier Coudert's avatar
      LTO: Prune some warnings in the testsuite · 05edf6c4
      Francois-Xavier Coudert authored
      Warnings like:
      
          warning: using serial compilation of 2 LTRANS jobs
          warning: visibility attribute not supported in this configuration; ignored\[^\n\]*" $text "" text
      
      are pruned by lto.exp, but not for LTO testcases when run in other parts
      of the testsuite. They will be, now.
      
      gcc/testsuite/ChangeLog:
      
      	PR testsuite/47334
      	PR testsuite/103823
      	* lib/prune.exp: Prune some warnings related to LTO and
      	visibility.
      05edf6c4
    • Harald Anlauf's avatar
      Fortran: avoid several NULL pointer dereferences during error recovery · d8f6c48c
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/102332
      	* expr.c (gfc_get_variable_expr): Avoid NULL pointer dereferences
      	during handling of errors with invalid uses of CLASS variables.
      	* match.c (select_type_set_tmp): Likewise.
      	* primary.c (gfc_match_varspec): Likewise.
      	* resolve.c (resolve_variable): Likewise.
      	(resolve_select_type): Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/102332
      	* gfortran.dg/pr102332.f90: New test.
      d8f6c48c
    • Martin Liska's avatar
      Support ld.mold linker. · ad964f7e
      Martin Liska authored
      gcc/ChangeLog:
      
      	* collect2.c (main): Add ld.mold.
      	* common.opt: Add -fuse-ld=mold.
      	* doc/invoke.texi: Document it.
      	* gcc.c (driver_handle_option): Handle -fuse-ld=mold.
      	* opts.c (common_handle_option): Likewise.
      ad964f7e
    • Uros Bizjak's avatar
      i386: Robustify some expanders w.r.t. paradoxical SUBREGs · 52a6b06c
      Uros Bizjak authored
      lowpart_subreg might fail in some cases when trying to create paradoxical
      SUBREGs.  Use force_reg on input operand, use new temporary output operand
      and emit move into the destination afterwards.
      
      Also, replace simplify_gen_subreg (Mx, op, My, 0)
      with equivalent lowpart_subreg (Mx, op, My).
      
      2021-12-29  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/ChangeLog:
      
      	* config/i386/sse.md (vec_pack<floatprefix>_float_<mode>):
      	Perform gen_avx512dq_float<floatunssuffix>v2div2sf2 into a
      	pseudo and emit move insn into operands[0].
      	(fix<fixunssuffix>_truncv2sfv2di2): Use lowpart_subreg
      	instead of simplify_gen_subreg.
      	(trunc<mode><pmov_dst_3_lower>2): Perform
      	gen_avx512vl_truncate<mode>v<ssescalarnum>qi2 into a
      	pseudo and emit move insn into operands[0].
      	(trunc<mode><pmov_dst_4_lower>2): Perform
      	gen_avx512vl_truncate<mode>v<ssescalarnum>hi2 into a
      	pseudo and emit move insn into operands[0].
      	(truncv2div2si2): Perform gen_avx512vl_truncatev2div2si2 into a
      	pseudo and emit move insn into operands[0].
      	(truncv8div8qi2): Perform gen_avx512f_truncatev8div16qi2 into a
      	pseudo and emit move insn into operands[0].
      	(<any_extend:insn>v8qiv8hi2): Use lowpart_subreg
      	instead of simplify_gen_subreg.
      	(<any_extend:insn>v8qiv8si2): Ditto.
      	(<any_extend:insn>v4qiv4si2): Ditto.
      	(<any_extend:insn>v4hiv4si2): Ditto.
      	(<any_extend:insn>v8qiv8di2): Ditto.
      	(<any_extend:insn>v4qiv4di2): Ditto.
      	(<any_extend:insn>v2qiv2di2): Ditto.
      	(<any_extend:insn>v4hiv4di2): Ditto.
      	(<any_extend:insn>v2hiv2di2): Ditto.
      	(<any_extend:insn>v2siv2di2): Ditto.
      52a6b06c
    • Xionghu Luo's avatar
      Fix ICE in lsplit when built with -O3 -fno-guess-branch-probability [PR103793] · 44372676
      Xionghu Luo authored
      no-guess-branch-probability option requires profile_count scaling with
      initialized_p guard, use multiply instead of apply_scale, which will do
      the right thing to undefined probabilities and will not cause unnecesary
      roundoff errors and precision info loss.
      Also merge the missed part of r12-6086 of factor out function to avoid
      duplicate code.
      
      Regression testest pass on Power and X86.
      
      gcc/ChangeLog:
      
      	PR tree-optimization/103793
      	* tree-ssa-loop-split.c (fix_loop_bb_probability): New function.
      	(split_loop): Use multiply to scale loop1's exit probability.
      	(do_split_loop_on_cond): Call fix_loop_bb_probability.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/103793
      	* gcc.dg/pr103793.c: New test.
      44372676
    • GCC Administrator's avatar
      Daily bump. · 054e57e4
      GCC Administrator authored
      054e57e4
  2. Dec 28, 2021
    • Francois-Xavier Coudert's avatar
      Libbacktrace: Fix the use of newline in sed replacement · 0ac7bab6
      Francois-Xavier Coudert authored
      On non-ELF targets, the Makefile needs a newline inside the sed REPLACE
      string. The way it is currently done fails with GNU Make < 4, but GCC
      only requires "GNU make version 3.80 (or later)".
      
      The portable solution is given in the autoconf manual:
      https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Newlines-in-Make-Rules.html
      
      libbacktrace/ChangeLog:
      
      	PR libbacktrace/103822
      
      	* Makefile.am: Fix newline.
      	* Makefile.in: Regenerate.
      0ac7bab6
    • Francois-Xavier Coudert's avatar
      Fortran: Emit correct types for CHARACTER(C_CHAR), VALUE arguments · 906b4e15
      Francois-Xavier Coudert authored
      Make the front-end emit the right type for CHARACTER(C_CHAR), VALUE
      arguments to BIND(C) procedures. They are scalar integers of C type
      char, and should be emitted as such. They are not strings or arrays,
      and are not promoted to C int, either.
      
      gcc/fortran/ChangeLog:
      
      	PR fortran/103828
      	* trans-decl.c (generate_local_decl): Do not call
      	gfc_conv_scalar_char_value(), but check the type tree.
      	* trans-expr.c (gfc_conv_scalar_char_value): Rename to
      	conv_scalar_char_value, do not alter type tree.
      	(gfc_conv_procedure_call): Adjust call to renamed
      	conv_scalar_char_value() function.
      	* trans-types.c (gfc_sym_type): Take care of
      	CHARACTER(C_CHAR), VALUE arguments.
      	* trans.h (gfc_conv_scalar_char_value): Remove prototype.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/103828
      	* gfortran.dg/c_char_tests_3.f90: New file.
      	* gfortran.dg/c_char_tests_3_c.c: New file.
      	* gfortran.dg/c_char_tests_4.f90: New file.
      	* gfortran.dg/c_char_tests_5.f90: New file.
      906b4e15
    • Jason Merrill's avatar
      c++: ICE on enum with bool value [PR99968] · db25655f
      Jason Merrill authored
      BOOLEAN_TYPE also counts as integral, so verify_type should allow it.
      
      	PR c++/99968
      
      gcc/ChangeLog:
      
      	* tree.c (verify_type): Allow enumerator with BOOLEAN_TYPE.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/ext/is_enum2.C: New test.
      db25655f
    • Jakub Jelinek's avatar
      fold-const: Fix up fold_truth_andor_1 shift handling [PR103813] · 9258ac53
      Jakub Jelinek authored
      Some time ago I've changed const_binop -> wide_int_binop, so that it punts
      on shifts by negative count.  fold_truth_andor_1 doesn't check the results
      of const_binop (?SHIFT_EXPR, ) though and assumes they will be always
      non-NULL, which is no longer the case.
      
      2021-12-28  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/103813
      	* fold-const.c (fold_truth_andor_1): Punt of const_binop LSHIFT_EXPR
      	or RSHIFT_EXPR returns NULL.  Formatting fix.
      
      	* gcc.c-torture/compile/pr103813.c: New test.
      9258ac53
    • Jakub Jelinek's avatar
      loop-invariant: Fix -fcompare-debug failure [PR103837] · 3c5fd361
      Jakub Jelinek authored
      In the following testcase we have a -fcompare-debug failure, because
      can_move_invariant_reg doesn't ignore DEBUG_INSNs in its decisions.
      In the testcase we have due to uninitialized variable:
        loop_header
          debug_insn using pseudo84
          pseudo84 = invariant
          insn using pseudo84
        end loop
      and with -g decide not to move the pseudo84 = invariant before the
      loop header; in this case not resetting the debug insns might be fine.
      But, we could have also:
        pseudo84 = whatever
        loop_header
          debug_insn using pseudo84
          pseudo84 = invariant
          insn using pseudo84
        end loop
      and in that case not resetting the debug insns would result in wrong-debug.
      And, we don't really have generally a good substitution on what pseudo84
      contains, it could inherit various values from different paths.
      So, the following patch ignores DEBUG_INSNs in the decisions, and if there
      are any that previously prevented the optimization, resets them before
      return true.
      
      2021-12-28  Jakub Jelinek  <jakub@redhat.com>
      
      	PR rtl-optimization/103837
      	* loop-invariant.c (can_move_invariant_reg): Ignore DEBUG_INSNs in
      	the decisions whether to return false or continue and right before
      	returning true reset those debug insns that previously caused
      	returning false.
      
      	* gcc.dg/pr103837.c: New test.
      3c5fd361
    • Jakub Jelinek's avatar
      optabs: Fix up checking for CALLs in newly added code by double-word divmod [PR103838] · 78ee8381
      Jakub Jelinek authored
      These two spots are meant to punt if the newly added code contains
      any CALL_INSNs, because in that case having a large sequence of insns
      that also calls something is undesirable, better have one call that
      is optimized in itself well.
      The functions do last = get_last_insn (); before emitting any insns
      (and expand_binop as the ultimate caller uses delete_insns_since if
      the expansion fails), but the checks were incorrect for 2 reasons:
      1) it checked not just what follows after that last insn, but also
         the last insn itself; so, if the division or modulo is immediately
         preceded by a CALL_INSN, then we punt; this also causes -fcompare-debug
         failures if the CALL_INSN is with -g followed by one or more DEBUG_INSNs
      2) if get_last_insn () is NULL (i.e. emitting into a new sequence), then
         we didn't check anything
      
      2021-12-28  Jakub Jelinek  <jakub@redhat.com>
      
      	PR debug/103838
      	* optabs.c (expand_doubleword_mod, expand_doubleword_divmod): Only
      	check newly added insns for CALL_P, not the last insn of previous
      	code.
      
      	* gcc.dg/pr103838.c: New test.
      78ee8381
    • Martin Liska's avatar
      docs: Use https in manual. · cff8fa9a
      Martin Liska authored
      gcc/d/ChangeLog:
      
      	* gdc.texi: Use one more https.
      cff8fa9a
    • Martin Liska's avatar
      driver: Improve option diagnostics [PR103465] · a187edd2
      Martin Liska authored
      It happens that options are parsed and various diagnostics happen
      in finish_options. That's a proper place as the function is also called
      for optimize/target attributes (pragmas). However, it is possible that
      target overwrites an option from command line and so the diagnostics
      does not happen. That's fixed in the patch.
      
      - options are parsed and finish_options is called:
      
        if (opts->x_flag_unwind_tables
            && !targetm_common.unwind_tables_default
            && opts->x_flag_reorder_blocks_and_partition
            && (ui_except == UI_SJLJ || ui_except >= UI_TARGET))
          {
            if (opts_set->x_flag_reorder_blocks_and_partition)
              inform (loc,
      		"%<-freorder-blocks-and-partition%> does not support "
      		"unwind info on this architecture");
            opts->x_flag_reorder_blocks_and_partition = 0;
            opts->x_flag_reorder_blocks = 1;
          }
      
      It's not triggered because of opts->x_flag_unwind_tables is false by default, but
      the option is overwritten in target:
      
      ...
        if (TARGET_64BIT_P (opts->x_ix86_isa_flags))
          {
            if (opts->x_optimize >= 1)
      	SET_OPTION_IF_UNSET (opts, opts_set, flag_omit_frame_pointer,
      			     !USE_IX86_FRAME_POINTER);
            if (opts->x_flag_asynchronous_unwind_tables
      	  && TARGET_64BIT_MS_ABI)
      	SET_OPTION_IF_UNSET (opts, opts_set, flag_unwind_tables, 1);
      ...
      
      	PR driver/103465
      
      gcc/ChangeLog:
      
      	* opts.c (finish_options): More part of diagnostics to ...
      	(diagnose_options): ... here. Call the function from both
      	finish_options and process_options.
      	* opts.h (diagnose_options): Declare.
      	* toplev.c (process_options): Call diagnose_options.
      a187edd2
    • Martin Liska's avatar
      docs: replace http:// with https:// · 786973ce
      Martin Liska authored
      I replaced and verified http:// links for various domains.
      
      gcc/ada/ChangeLog:
      
      	* doc/share/gnu_free_documentation_license.rst: Replace http:// with https.
      	* gnat-style.texi: Likewise.
      	* gnat_rm.texi: Likewise.
      	* gnat_ugn.texi: Likewise.
      
      gcc/d/ChangeLog:
      
      	* gdc.texi: Replace http:// with https.
      
      gcc/ChangeLog:
      
      	* doc/contrib.texi: Replace http:// with https.
      	* doc/contribute.texi: Likewise.
      	* doc/extend.texi: Likewise.
      	* doc/gccint.texi: Likewise.
      	* doc/gnu.texi: Likewise.
      	* doc/implement-c.texi: Likewise.
      	* doc/implement-cxx.texi: Likewise.
      	* doc/include/fdl.texi: Likewise.
      	* doc/include/gpl_v3.texi: Likewise.
      	* doc/install.texi: Likewise.
      	* doc/invoke.texi: Likewise.
      	* doc/passes.texi: Likewise.
      	* doc/service.texi: Likewise.
      	* doc/sourcebuild.texi: Likewise.
      	* doc/standards.texi: Likewise.
      
      gcc/fortran/ChangeLog:
      
      	* gfortran.texi: Replace http:// with https.
      	* intrinsic.texi: Likewise.
      
      gcc/go/ChangeLog:
      
      	* gccgo.texi: Replace http:// with https.
      
      gcc/jit/ChangeLog:
      
      	* docs/_build/texinfo/libgccjit.texi: Replace http:// with https.
      	* docs/cp/index.rst: Likewise.
      	* docs/cp/intro/index.rst: Likewise.
      	* docs/cp/intro/tutorial01.rst: Likewise.
      	* docs/cp/intro/tutorial02.rst: Likewise.
      	* docs/cp/intro/tutorial03.rst: Likewise.
      	* docs/cp/intro/tutorial04.rst: Likewise.
      	* docs/cp/topics/asm.rst: Likewise.
      	* docs/cp/topics/compilation.rst: Likewise.
      	* docs/cp/topics/contexts.rst: Likewise.
      	* docs/cp/topics/expressions.rst: Likewise.
      	* docs/cp/topics/functions.rst: Likewise.
      	* docs/cp/topics/index.rst: Likewise.
      	* docs/cp/topics/locations.rst: Likewise.
      	* docs/cp/topics/objects.rst: Likewise.
      	* docs/cp/topics/types.rst: Likewise.
      	* docs/index.rst: Likewise.
      	* docs/internals/index.rst: Likewise.
      	* docs/intro/index.rst: Likewise.
      	* docs/intro/tutorial01.rst: Likewise.
      	* docs/intro/tutorial02.rst: Likewise.
      	* docs/intro/tutorial03.rst: Likewise.
      	* docs/intro/tutorial04.rst: Likewise.
      	* docs/intro/tutorial05.rst: Likewise.
      	* docs/topics/asm.rst: Likewise.
      	* docs/topics/compatibility.rst: Likewise.
      	* docs/topics/compilation.rst: Likewise.
      	* docs/topics/contexts.rst: Likewise.
      	* docs/topics/expressions.rst: Likewise.
      	* docs/topics/function-pointers.rst: Likewise.
      	* docs/topics/functions.rst: Likewise.
      	* docs/topics/index.rst: Likewise.
      	* docs/topics/locations.rst: Likewise.
      	* docs/topics/objects.rst: Likewise.
      	* docs/topics/performance.rst: Likewise.
      	* docs/topics/types.rst: Likewise.
      786973ce
    • Jakub Jelinek's avatar
      i386: Fix handling of SUBREGs in divv2sf3 [PR103842] · 242783c5
      Jakub Jelinek authored
      register_operand predicate allows not just REGs, but also SUBREGs of REGs,
      and for the latter lowpart_subreg might FAIL when trying to create paradoxical
      SUBREG in some cases.  For the input operand fixed by force_reg on it first,
      for the output operand handled by always dividing into a fresh V4SFmode temporary
      and emit_move_insn into the destination afterwards, that is also beneficial for
      combine.
      
      2021-12-28  Jakub Jelinek  <jakub@redhat.com>
      
      	PR target/103842
      	* config/i386/mmx.md (divv2sf3): Use force_reg on op1.  Always perform
      	divv4sf3 into a pseudo and emit_move_insn into operands[0].
      
      	* g++.dg/opt/pr103842.C: New test.
      242783c5
    • Haochen Jiang's avatar
      Fix tdpbf16ps testcase · 472568f5
      Haochen Jiang authored
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/amx-check.h (check_float_tile_register):
      	New check function for float to prevent precision loss.
      	* gcc.target/i386/amxbf16-dpbf16ps-2.c: Correct the type convert
      	and byte offset. Use the new check function.
      472568f5
    • GCC Administrator's avatar
      Daily bump. · d1e111da
      GCC Administrator authored
      d1e111da
  3. Dec 27, 2021
    • Francois-Xavier Coudert's avatar
      Fortran: fix use of static_assert() to conform to C11 · 3430132f
      Francois-Xavier Coudert authored
      libgfortran/ChangeLog:
      
      	PR libfortran/98076
      	* runtime/string.c (gfc_itoa): Use two args for static_assert().
      3430132f
    • John David Anglin's avatar
      Improve atomic store implementation on hppa-linux. · ea8b5640
      John David Anglin authored
      2021-12-27  John David Anglin  <danglin@gcc.gnu.org>
      
      gcc/ChangeLog:
      
      	* config/pa/pa-protos.h: Delete
      	pa_maybe_emit_compare_and_swap_exchange_loop() declaration.
      	* config/pa/pa.c (pa_expand_compare_and_swap_loop): Delete.
      	(pa_maybe_emit_compare_and_swap_exchange_loop): Delete.
      	* config/pa/pa.md (atomic_storeq): Use __sync_lock_test_and_set
      	instead of pa_maybe_emit_compare_and_swap_exchange_loop.
      	(atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
      ea8b5640
    • Patrick Palka's avatar
      c++: Add testcase for SFINAE w/ p[N] and incomplete type [PR101239] · 916ec36d
      Patrick Palka authored
      The r12-6123 fix for SFINAE with p+N and incomplete type also fixed
      the analogous issue with p[N].
      
      	PR c++/101239
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/template/sfinae32a.C: New test.
      916ec36d
    • Patrick Palka's avatar
      c++: hard error w/ ptr+N and incomplete type [PR103700] · 88cdcb5c
      Patrick Palka authored
      In pointer_int_sum when called from a SFINAE context, we need to avoid
      calling size_in_bytes_loc on an incomplete pointed-to type since this
      latter function isn't SFINAE-enabled and always emits an error on such
      input.
      
      	PR c++/103700
      
      gcc/c-family/ChangeLog:
      
      	* c-common.c (pointer_int_sum): When quiet, return
      	error_mark_node for an incomplete pointed-to type and don't
      	call size_in_bytes_loc.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/template/sfinae32.C: New test.
      88cdcb5c
    • H.J. Lu's avatar
      ix86: Don't use the 'm' constraint for x86_64_general_operand · 9407058a
      H.J. Lu authored
      The 'm' constraint is defined with define_memory_constraint which allows
      LRA to convert the operand to the form '(mem (reg X))', where X is a
      base register.  To prevent LRA from generating '(mem (reg X))' from a
      register:
      
      1. Add a 'BM' constraint which is similar to the 'm' constraint, but
      is defined with define_constraint.
      2. Add a 'm' mode attribute which is mapped to the 'm' constraint for
      general_operand and the 'BM' constraint for x86_64_general_operand.
      3. Replace the 'm' constraint on <general_operand> with the '<m>'
      constraint.
      4. Replace the 'm' constraint on x86_64_general_operand with the 'BM'
      constraint.
      
      gcc/
      
      	PR target/103762
      	* config/i386/constraints.md (BM): New constraint.
      	* config/i386/i386.md (m): New mode attribute.
      	Replace the 'm' constraint on <general_operand> with the '<m>'
      	constraint.
      	Replace the 'm' constraint on x86_64_general_operand with the
      	'BM' constraint.
      
      gcc/testsuite/
      
      	* gcc.target/i386/pr103762-1a.c: New test.
      	* gcc.target/i386/pr103762-1b.c: Likewise.
      	* gcc.target/i386/pr103762-1c.c: Likewise.
      9407058a
    • Uros Bizjak's avatar
      testsuite: Avoid unwanted vecorization [PR95046] · e078de24
      Uros Bizjak authored
      2021-12-27  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/testsuite/ChangeLog:
      
      	PR target/95046
      	* gfortran.dg/extract_recip_1.f: Adjust testcase.
      e078de24
    • LiaoShihua's avatar
      RISC-V: fixed testcase riscv/pr103302.c · 500d3f0a
      LiaoShihua authored
      Because riscv32 not support __int128, so skip if -march=rv32*.
      
      gcc/testsuite/ChangeLog:
      	* gcc.target/riscv/pr103302.c: skip if -march=rv32*
      500d3f0a
    • GCC Administrator's avatar
      Daily bump. · ad6091d1
      GCC Administrator authored
      ad6091d1
  4. Dec 26, 2021
    • H.J. Lu's avatar
      i386: Check AX input in any_mul_highpart peepholes · d8748301
      H.J. Lu authored
      When applying peephole optimization to transform
      
      	mov imm, %reg0
      	mov %reg1, %AX_REG
      	imul %reg0
      
      to
      
      	mov imm, %AX_REG
      	imul %reg1
      
      disable peephole optimization if reg1 == AX_REG.
      
      gcc/
      
      	PR target/103785
      	* config/i386/i386.md: Swap operand order in comments and check
      	AX input in any_mul_highpart peepholes.
      
      gcc/testsuite/
      
      	PR target/103785
      	* gcc.target/i386/pr103785.c: New test.
      d8748301
    • Francois-Xavier Coudert's avatar
      Fortran: speed up decimal output of integers · 9525c26b
      Francois-Xavier Coudert authored
      libgfortran/ChangeLog:
      
      	PR libfortran/98076
      	* runtime/string.c (itoa64, itoa64_pad19): New helper functions.
      	(gfc_itoa): On targets with 128-bit integers, call fast
      	64-bit functions to avoid many slow divisions.
      
      gcc/testsuite/ChangeLog:
      
      	PR libfortran/98076
      	* gfortran.dg/pr98076.f90: New test.
      9525c26b
    • GCC Administrator's avatar
      Daily bump. · 10ae9946
      GCC Administrator authored
      10ae9946
  5. Dec 25, 2021
    • Francois-Xavier Coudert's avatar
      Fortran: simplify library code for integer-to-decimal conversion · 4ae906e4
      Francois-Xavier Coudert authored
      libgfortran/ChangeLog:
      
      	PR libfortran/81986
      	PR libfortran/99191
      
      	* libgfortran.h: Remove gfc_xtoa(), adjust gfc_itoa() and
      	GFC_ITOA_BUF_SIZE.
      	* io/write.c (write_decimal): conversion parameter is always
      	gfc_itoa(), so remove it. Protect from overflow.
      	(xtoa): Move gfc_xtoa and update its name.
      	(xtoa_big): Renamed from ztoa_big for consistency.
      	(write_z): Adjust to new function names.
      	(write_i, write_integer): Remove last arg of write_decimal.
      	* runtime/backtrace.c (error_callback): Comment on the use of
      	gfc_itoa().
      	* runtime/error.c (gfc_xtoa): Move to io/write.c.
      	* runtime/string.c (gfc_itoa): Take an unsigned argument,
      	remove the handling of negative values.
      4ae906e4
    • GCC Administrator's avatar
      Daily bump. · ffb5418f
      GCC Administrator authored
      ffb5418f
  6. Dec 24, 2021
    • Uros Bizjak's avatar
      i386: Add V2SFmode DIV insn pattern [PR95046, PR103797] · 8f921393
      Uros Bizjak authored
      Use V4SFmode "DIVPS X,Y" with [y0, y1, 1.0f, 1.0f] as a divisor
      to avoid division by zero.
      
      2021-12-24  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/ChangeLog:
      
      	PR target/95046
      	PR target/103797
      	* config/i386/mmx.md (divv2sf3): New instruction pattern.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/95046
      	PR target/103797
      	* gcc.target/i386/pr95046-1.c (test_div): Add.
      	(dg-options): Add -mno-recip.
      8f921393
    • Iain Sandoe's avatar
      Darwin: Amend a comment to be more inclusive [NFC]. · 43dadcf3
      Iain Sandoe authored
      
      As per title.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/ChangeLog:
      
      	* config/darwin.c (darwin_override_options): Make a comment
      	more inclusive.
      43dadcf3
    • Iain Sandoe's avatar
      Darwin: Update rules for handling alignment of globals. · 19bf83a9
      Iain Sandoe authored
      
      The current rule was too strict and has not been required since Darwin11.
      
      This relaxes the constraint to allow up to 2^28 alignment for non-common
      entities.  Common is still restricted to a maximum aligment of 2^15.
      
      When the host is an older version of Darwin ( earlier that 11 ) then the
      existing constraint is still applied.  Note that this is a host constraint
      not a target one (so that a compilation on 10.7 targeting 10.6 is allowed
      to use a greater alignment than the tools on 10.6 support).  This matches
      the behaviour of clang.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/ChangeLog:
      
      	* config.gcc: Emit L2_MAX_OFILE_ALIGNMENT with suitable
      	values for the host.
      	* config/darwin.c (darwin_emit_common): Error for alignment
      	values > 32768.
      	* config/darwin.h (MAX_OFILE_ALIGNMENT): Rework to use the
      	configured L2_MAX_OFILE_ALIGNMENT.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/darwin-aligned-globals.c: New test.
      	* gcc.dg/darwin-comm-1.c: New test.
      	* gcc.dg/attr-aligned.c: Amend for new alignment values on
      	Darwin.
      	* gcc.target/i386/pr89261.c: Likewise.
      19bf83a9
    • Iain Sandoe's avatar
      Darwin: Check for that flag-reorder-and-partition. · 8381075f
      Iain Sandoe authored
      
      We were checking whether the flag had been set by the user, but not if
      it was set to true.  Which means that the check fails in its intent when
      the user puts -fno-reorder-and-partition.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/ChangeLog:
      
      	* config/darwin.c (darwin_override_options): When checking for the
      	flag-reorder-and-partition case, also check that it is set on.
      8381075f
    • Iain Sandoe's avatar
      Darwin: Define OBJECT_FORMAT_MACHO. · 9a4a29ea
      Iain Sandoe authored
      
      There are places that we need to make different codegen depending
      on the object format rather than on the arch.  We already have
      definitions for ELF, COFF etc. this adds one for MACHO.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/ChangeLog:
      
      	* config/darwin.h (OBJECT_FORMAT_MACHO): New.
      9a4a29ea
    • GCC Administrator's avatar
      Daily bump. · 7d01da81
      GCC Administrator authored
      7d01da81
  7. Dec 23, 2021
Loading