Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/gcc.old/usr.bin/gcc/arch/mipsn64el import GCC ...



details:   https://anonhg.NetBSD.org/src/rev/e645512d498c
branches:  trunk
changeset: 377502:e645512d498c
user:      mrg <mrg%NetBSD.org@localhost>
date:      Fri Jul 14 19:35:59 2023 +0000

description:
import GCC 10.5.0 into gcc.old (this time properly.)

diffstat:

 external/gpl3/gcc.old/dist/fixincludes/tests/base/objc/runtime.h         |   24 +
 external/gpl3/gcc.old/dist/gcc/c-family/c-warn.c                         |   89 +++-
 external/gpl3/gcc.old/dist/gcc/common/config/i386/i386-cpuinfo.h         |    6 +-
 external/gpl3/gcc.old/dist/gcc/config/aarch64/aarch64-sve-builtins.cc    |   12 +-
 external/gpl3/gcc.old/dist/gcc/config/aarch64/aarch64-sve.md             |   98 ++++-
 external/gpl3/gcc.old/dist/gcc/config/i386/i386-builtin.def              |   36 +-
 external/gpl3/gcc.old/dist/gcc/config/i386/i386-expand.c                 |    2 +-
 external/gpl3/gcc.old/dist/gcc/config/i386/i386-features.c               |    8 +-
 external/gpl3/gcc.old/dist/gcc/config/i386/i386-options.c                |    4 +-
 external/gpl3/gcc.old/dist/gcc/config/riscv/t-rtems                      |   17 +-
 external/gpl3/gcc.old/dist/gcc/config/rs6000/mma.md                      |   45 ++-
 external/gpl3/gcc.old/dist/gcc/config/rs6000/rs6000-call.c               |   13 +-
 external/gpl3/gcc.old/dist/gcc/config/rs6000/rs6000-logue.c              |    2 +-
 external/gpl3/gcc.old/dist/gcc/config/rs6000/rs6000-p8swap.c             |   20 +-
 external/gpl3/gcc.old/dist/gcc/d/d-convert.cc                            |   75 +++-
 external/gpl3/gcc.old/dist/gcc/d/decl.cc                                 |   12 +-
 external/gpl3/gcc.old/dist/gcc/d/dmd/dinterpret.c                        |   12 +-
 external/gpl3/gcc.old/dist/gcc/d/dmd/expressionsem.c                     |    1 +
 external/gpl3/gcc.old/dist/gcc/d/expr.cc                                 |   17 +-
 external/gpl3/gcc.old/dist/gcc/d/gdc.texi                                |    6 +-
 external/gpl3/gcc.old/dist/gcc/d/imports.cc                              |   22 +-
 external/gpl3/gcc.old/dist/gcc/d/toir.cc                                 |   26 +-
 external/gpl3/gcc.old/dist/gcc/doc/lto-dump.1                            |   24 +-
 external/gpl3/gcc.old/dist/gcc/fortran/array.c                           |    4 -
 external/gpl3/gcc.old/dist/gcc/fortran/check.c                           |    2 +
 external/gpl3/gcc.old/dist/gcc/fortran/decl.c                            |   35 +-
 external/gpl3/gcc.old/dist/gcc/fortran/dependency.c                      |    5 +
 external/gpl3/gcc.old/dist/gcc/fortran/expr.c                            |   17 +-
 external/gpl3/gcc.old/dist/gcc/fortran/f95-lang.c                        |   38 +-
 external/gpl3/gcc.old/dist/gcc/fortran/gfortran.info                     |  Bin 
 external/gpl3/gcc.old/dist/gcc/fortran/interface.c                       |   41 +-
 external/gpl3/gcc.old/dist/gcc/fortran/iresolve.c                        |    9 +-
 external/gpl3/gcc.old/dist/gcc/fortran/match.c                           |   10 +
 external/gpl3/gcc.old/dist/gcc/fortran/parse.c                           |   25 +-
 external/gpl3/gcc.old/dist/gcc/fortran/primary.c                         |    3 +-
 external/gpl3/gcc.old/dist/gcc/fortran/resolve.c                         |   63 ++-
 external/gpl3/gcc.old/dist/gcc/fortran/simplify.c                        |  181 +++------
 external/gpl3/gcc.old/dist/gcc/fortran/symbol.c                          |    4 +
 external/gpl3/gcc.old/dist/gcc/fortran/trans-decl.c                      |   10 +-
 external/gpl3/gcc.old/dist/gcc/fortran/trans-expr.c                      |  117 +++--
 external/gpl3/gcc.old/dist/gcc/fortran/trans-intrinsic.c                 |   10 +
 external/gpl3/gcc.old/dist/gcc/fortran/trans-types.c                     |   15 +-
 external/gpl3/gcc.old/dist/gcc/fortran/trans.h                           |    3 +-
 external/gpl3/gcc.old/dist/gcc/gimple-ssa-store-merging.c                |    2 +-
 external/gpl3/gcc.old/dist/gcc/opts-jobserver.h                          |   46 ++
 external/gpl3/gcc.old/dist/gcc/selftest-diagnostic.c                     |    1 +
 external/gpl3/gcc.old/dist/libgcc/config/avr/libf7/libf7-asm.sx          |   50 --
 external/gpl3/gcc.old/dist/libgcc/config/darwin10-unwind-find-enc-func.c |   35 +-
 external/gpl3/gcc.old/dist/libgcc/config/riscv/div.S                     |   21 +-
 external/gpl3/gcc.old/dist/libgcc/config/riscv/riscv-asm.h               |    6 +
 external/gpl3/gcc.old/dist/libgcc/config/t-darwin-min-1                  |    3 +
 external/gpl3/gcc.old/dist/libgcc/config/t-darwin-min-5                  |    3 +
 external/gpl3/gcc.old/dist/libgcc/config/t-darwin-min-8                  |    3 +
 external/gpl3/gcc.old/dist/libphobos/src/std/path.d                      |   23 +-
 external/gpl3/gcc.old/dist/libquadmath/libquadmath.info                  |    7 +-
 external/gpl3/gcc.old/dist/libquadmath/strtod/strtod_l.c                 |   38 +-
 external/gpl3/gcc.old/dist/libstdc++-v3/include/bits/fs_path.h           |   28 +-
 external/gpl3/gcc.old/dist/libstdc++-v3/include/std/any                  |   26 +-
 external/gpl3/gcc.old/dist/libstdc++-v3/include/std/ranges               |   20 +-
 external/gpl3/gcc.old/dist/libstdc++-v3/include/std/span                 |    2 +
 external/gpl3/gcc.old/dist/libstdc++-v3/src/c++17/fs_path.cc             |   13 +
 external/gpl3/gcc.old/lib/libgcc/libgcov/arch/mipsn64eb/gcov-iov.h       |    4 +-
 external/gpl3/gcc.old/lib/libgcc/libgcov/arch/mipsn64el/gcov-iov.h       |    4 +-
 external/gpl3/gcc.old/lib/libstdc++-v3/arch/mipsn64eb/c++config.h        |    8 +-
 external/gpl3/gcc.old/lib/libstdc++-v3/arch/mipsn64eb/gstdint.h          |    2 +-
 external/gpl3/gcc.old/lib/libstdc++-v3/arch/mipsn64eb/symver-config.h    |    8 +-
 external/gpl3/gcc.old/lib/libstdc++-v3/arch/mipsn64el/c++config.h        |    8 +-
 external/gpl3/gcc.old/lib/libstdc++-v3/arch/mipsn64el/gstdint.h          |    2 +-
 external/gpl3/gcc.old/lib/libstdc++-v3/arch/mipsn64el/symver-config.h    |    8 +-
 external/gpl3/gcc.old/usr.bin/gcc/arch/mipsn64eb/bversion.h              |    2 +-
 external/gpl3/gcc.old/usr.bin/gcc/arch/mipsn64eb/configargs.h            |    2 +-
 external/gpl3/gcc.old/usr.bin/gcc/arch/mipsn64eb/defs.mk                 |    2 +-
 external/gpl3/gcc.old/usr.bin/gcc/arch/mipsn64eb/plugin-version.h        |    6 +-
 external/gpl3/gcc.old/usr.bin/gcc/arch/mipsn64el/bversion.h              |    2 +-
 external/gpl3/gcc.old/usr.bin/gcc/arch/mipsn64el/configargs.h            |    2 +-
 external/gpl3/gcc.old/usr.bin/gcc/arch/mipsn64el/defs.mk                 |    2 +-
 external/gpl3/gcc.old/usr.bin/gcc/arch/mipsn64el/plugin-version.h        |    6 +-
 77 files changed, 1000 insertions(+), 558 deletions(-)

diffs (truncated from 3227 to 300 lines):

diff -r 2fe8729224fe -r e645512d498c external/gpl3/gcc.old/dist/fixincludes/tests/base/objc/runtime.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/gpl3/gcc.old/dist/fixincludes/tests/base/objc/runtime.h  Fri Jul 14 19:35:59 2023 +0000
@@ -0,0 +1,24 @@
+/*  DO NOT EDIT THIS FILE.
+
+    It has been auto-edited by fixincludes from:
+
+       "fixinc/tests/inc/objc/runtime.h"
+
+    This had to be done to correct non-standard usages in the
+    original, manufacturer supplied header file.  */
+
+
+
+#if defined( DARWIN_OBJC_RUNTIME_1_CHECK )
+#if __BLOCKS__
+OBJC_EXPORT void
+objc_enumerateClasses(const void * _Nullable image,
+                      const char * _Nullable namePrefix,
+                      Protocol * _Nullable conformingTo,
+                      Class _Nullable subclassing,
+                      void (^ _Nonnull block)(Class _Nonnull aClass, BOOL * _Nonnull stop)
+                      OBJC_NOESCAPE)
+OBJC_AVAILABLE(13.0, 16.0, 16.0, 9.0, 7.0)
+OBJC_REFINED_FOR_SWIFT;
+#endif
+#endif  /* DARWIN_OBJC_RUNTIME_1_CHECK */
diff -r 2fe8729224fe -r e645512d498c external/gpl3/gcc.old/dist/gcc/c-family/c-warn.c
--- a/external/gpl3/gcc.old/dist/gcc/c-family/c-warn.c  Fri Jul 14 13:05:59 2023 +0000
+++ b/external/gpl3/gcc.old/dist/gcc/c-family/c-warn.c  Fri Jul 14 19:35:59 2023 +0000
@@ -2340,42 +2340,63 @@ warn_for_sign_compare (location_t locati
      have all bits set that are set in the ~ operand when it is
      extended.  */
 
-  op0 = c_common_get_narrower (op0, &unsignedp0);
-  op1 = c_common_get_narrower (op1, &unsignedp1);
+  /* bits0 is the bit index of op0 extended to result_type, which will
+     be always 0 and so all bits above it.  If there is a BIT_NOT_EXPR
+     in that operand possibly sign or zero extended to op0 and then
+     possibly further sign or zero extended to result_type, bits0 will
+     be the precision of result type if all the extensions involved
+     if any are sign extensions, and will be the place of the innermost
+     zero extension otherwise.  We warn only if BIT_NOT_EXPR's operand is
+     zero extended from some even smaller precision, in that case after
+     BIT_NOT_EXPR some bits below bits0 will be guaranteed to be set.
+     Similarly for bits1.  */
+  int bits0 = TYPE_PRECISION (result_type);
+  if (TYPE_UNSIGNED (TREE_TYPE (op0)))
+    bits0 = TYPE_PRECISION (TREE_TYPE (op0));
+  tree arg0 = c_common_get_narrower (op0, &unsignedp0);
+  if (TYPE_PRECISION (TREE_TYPE (arg0)) == TYPE_PRECISION (TREE_TYPE (op0)))
+    unsignedp0 = TYPE_UNSIGNED (TREE_TYPE (op0));
+  else if (unsignedp0)
+    bits0 = TYPE_PRECISION (TREE_TYPE (arg0));
+  op0 = arg0;
+  int bits1 = TYPE_PRECISION (result_type);
+  if (TYPE_UNSIGNED (TREE_TYPE (op1)))
+    bits1 = TYPE_PRECISION (TREE_TYPE (op1));
+  tree arg1 = c_common_get_narrower (op1, &unsignedp1);
+  if (TYPE_PRECISION (TREE_TYPE (arg1)) == TYPE_PRECISION (TREE_TYPE (op1)))
+    unsignedp1 = TYPE_UNSIGNED (TREE_TYPE (op1));
+  else if (unsignedp1)
+    bits1 = TYPE_PRECISION (TREE_TYPE (arg1));
+  op1 = arg1;
 
   if ((TREE_CODE (op0) == BIT_NOT_EXPR)
       ^ (TREE_CODE (op1) == BIT_NOT_EXPR))
     {
-      if (TREE_CODE (op0) == BIT_NOT_EXPR)
-       op0 = c_common_get_narrower (TREE_OPERAND (op0, 0), &unsignedp0);
       if (TREE_CODE (op1) == BIT_NOT_EXPR)
-       op1 = c_common_get_narrower (TREE_OPERAND (op1, 0), &unsignedp1);
-
-      if (tree_fits_shwi_p (op0) || tree_fits_shwi_p (op1))
        {
-         tree primop;
-         HOST_WIDE_INT constant, mask;
-         int unsignedp;
-         unsigned int bits;
-
-         if (tree_fits_shwi_p (op0))
+         std::swap (op0, op1);
+         std::swap (unsignedp0, unsignedp1);
+         std::swap (bits0, bits1);
+       }
+
+      int unsignedp;
+      arg0 = c_common_get_narrower (TREE_OPERAND (op0, 0), &unsignedp);
+
+      /* For these warnings, we need BIT_NOT_EXPR operand to be
+        zero extended from narrower type to BIT_NOT_EXPR's type.
+        In that case, all those bits above the narrower's type
+        are after BIT_NOT_EXPR set to 1.  */
+      if (tree_fits_shwi_p (op1))
+       {
+         HOST_WIDE_INT constant = tree_to_shwi (op1);
+         unsigned int bits = TYPE_PRECISION (TREE_TYPE (arg0));
+         if (unsignedp
+             && bits < TYPE_PRECISION (TREE_TYPE (op0))
+             && bits < HOST_BITS_PER_WIDE_INT)
            {
-             primop = op1;
-             unsignedp = unsignedp1;
-             constant = tree_to_shwi (op0);
-           }
-         else
-           {
-             primop = op0;
-             unsignedp = unsignedp0;
-             constant = tree_to_shwi (op1);
-           }
-
-         bits = TYPE_PRECISION (TREE_TYPE (primop));
-         if (bits < TYPE_PRECISION (result_type)
-             && bits < HOST_BITS_PER_LONG && unsignedp)
-           {
-             mask = HOST_WIDE_INT_M1U << bits;
+             HOST_WIDE_INT mask = HOST_WIDE_INT_M1U << bits;
+             if (bits0 < HOST_BITS_PER_WIDE_INT)
+               mask &= ~(HOST_WIDE_INT_M1U << bits0);
              if ((mask & constant) != mask)
                {
                  if (constant == 0)
@@ -2389,11 +2410,11 @@ warn_for_sign_compare (location_t locati
                }
            }
        }
-      else if (unsignedp0 && unsignedp1
-              && (TYPE_PRECISION (TREE_TYPE (op0))
-                  < TYPE_PRECISION (result_type))
-              && (TYPE_PRECISION (TREE_TYPE (op1))
-                  < TYPE_PRECISION (result_type)))
+      else if ((TYPE_PRECISION (TREE_TYPE (arg0))
+               < TYPE_PRECISION (TREE_TYPE (op0)))
+              && unsignedp
+              && unsignedp1
+              && TYPE_PRECISION (TREE_TYPE (op1)) < bits0)
        warning_at (location, OPT_Wsign_compare,
                    "comparison of promoted bitwise complement "
                    "of an unsigned value with unsigned");
diff -r 2fe8729224fe -r e645512d498c external/gpl3/gcc.old/dist/gcc/common/config/i386/i386-cpuinfo.h
--- a/external/gpl3/gcc.old/dist/gcc/common/config/i386/i386-cpuinfo.h  Fri Jul 14 13:05:59 2023 +0000
+++ b/external/gpl3/gcc.old/dist/gcc/common/config/i386/i386-cpuinfo.h  Fri Jul 14 19:35:59 2023 +0000
@@ -30,8 +30,10 @@ enum processor_vendor
   VENDOR_INTEL = 1,
   VENDOR_AMD,
   VENDOR_OTHER,
-  BUILTIN_VENDOR_MAX = VENDOR_OTHER,
-  VENDOR_MAX
+
+  /* Maximum values must be at the end of this enum.  */
+  VENDOR_MAX,
+  BUILTIN_VENDOR_MAX = VENDOR_OTHER
 };
 
 /* Any new types or subtypes have to be inserted at the end. */
diff -r 2fe8729224fe -r e645512d498c external/gpl3/gcc.old/dist/gcc/config/aarch64/aarch64-sve-builtins.cc
--- a/external/gpl3/gcc.old/dist/gcc/config/aarch64/aarch64-sve-builtins.cc     Fri Jul 14 13:05:59 2023 +0000
+++ b/external/gpl3/gcc.old/dist/gcc/config/aarch64/aarch64-sve-builtins.cc     Fri Jul 14 19:35:59 2023 +0000
@@ -530,7 +530,8 @@ static CONSTEXPR const function_group_in
 };
 
 /* The scalar type associated with each vector type.  */
-GTY(()) tree scalar_types[NUM_VECTOR_TYPES];
+extern GTY(()) tree scalar_types[NUM_VECTOR_TYPES];
+tree scalar_types[NUM_VECTOR_TYPES];
 
 /* The single-predicate and single-vector types, with their built-in
    "__SV..._t" name.  Allow an index of NUM_VECTOR_TYPES, which always
@@ -538,13 +539,16 @@ GTY(()) tree scalar_types[NUM_VECTOR_TYP
 static GTY(()) tree abi_vector_types[NUM_VECTOR_TYPES + 1];
 
 /* Same, but with the arm_sve.h "sv..._t" name.  */
-GTY(()) tree acle_vector_types[MAX_TUPLE_SIZE][NUM_VECTOR_TYPES + 1];
+extern GTY(()) tree acle_vector_types[MAX_TUPLE_SIZE][NUM_VECTOR_TYPES + 1];
+tree acle_vector_types[MAX_TUPLE_SIZE][NUM_VECTOR_TYPES + 1];
 
 /* The svpattern enum type.  */
-GTY(()) tree acle_svpattern;
+extern GTY(()) tree acle_svpattern;
+tree acle_svpattern;
 
 /* The svprfop enum type.  */
-GTY(()) tree acle_svprfop;
+extern GTY(()) tree acle_svprfop;
+tree acle_svprfop;
 
 /* The list of all registered function decls, indexed by code.  */
 static GTY(()) vec<registered_function *, va_gc> *registered_functions;
diff -r 2fe8729224fe -r e645512d498c external/gpl3/gcc.old/dist/gcc/config/aarch64/aarch64-sve.md
--- a/external/gpl3/gcc.old/dist/gcc/config/aarch64/aarch64-sve.md      Fri Jul 14 13:05:59 2023 +0000
+++ b/external/gpl3/gcc.old/dist/gcc/config/aarch64/aarch64-sve.md      Fri Jul 14 19:35:59 2023 +0000
@@ -9228,45 +9228,41 @@
 (define_insn "*aarch64_brk<brk_op>_cc"
   [(set (reg:CC_NZC CC_REGNUM)
        (unspec:CC_NZC
-         [(match_operand:VNx16BI 1 "register_operand" "Upa, Upa")
+         [(match_operand:VNx16BI 1 "register_operand" "Upa")
           (match_dup 1)
           (match_operand:SI 4 "aarch64_sve_ptrue_flag")
           (unspec:VNx16BI
             [(match_dup 1)
-             (match_operand:VNx16BI 2 "register_operand" "Upa, Upa")
-             (match_operand:VNx16BI 3 "aarch64_simd_reg_or_zero" "Dz, 0")]
+             (match_operand:VNx16BI 2 "register_operand" "Upa")
+             (match_operand:VNx16BI 3 "aarch64_simd_imm_zero")]
             SVE_BRK_UNARY)]
          UNSPEC_PTEST))
-   (set (match_operand:VNx16BI 0 "register_operand" "=Upa, Upa")
+   (set (match_operand:VNx16BI 0 "register_operand" "=Upa")
        (unspec:VNx16BI
          [(match_dup 1)
           (match_dup 2)
           (match_dup 3)]
          SVE_BRK_UNARY))]
   "TARGET_SVE"
-  "@
-   brk<brk_op>s\t%0.b, %1/z, %2.b
-   brk<brk_op>s\t%0.b, %1/m, %2.b"
+  "brk<brk_op>s\t%0.b, %1/z, %2.b"
 )
 
 ;; Same, but with only the flags result being interesting.
 (define_insn "*aarch64_brk<brk_op>_ptest"
   [(set (reg:CC_NZC CC_REGNUM)
        (unspec:CC_NZC
-         [(match_operand:VNx16BI 1 "register_operand" "Upa, Upa")
+         [(match_operand:VNx16BI 1 "register_operand" "Upa")
           (match_dup 1)
           (match_operand:SI 4 "aarch64_sve_ptrue_flag")
           (unspec:VNx16BI
             [(match_dup 1)
-             (match_operand:VNx16BI 2 "register_operand" "Upa, Upa")
-             (match_operand:VNx16BI 3 "aarch64_simd_reg_or_zero" "Dz, 0")]
+             (match_operand:VNx16BI 2 "register_operand" "Upa")
+             (match_operand:VNx16BI 3 "aarch64_simd_imm_zero")]
             SVE_BRK_UNARY)]
          UNSPEC_PTEST))
-   (clobber (match_scratch:VNx16BI 0 "=Upa, Upa"))]
-  "TARGET_SVE"
-  "@
-   brk<brk_op>s\t%0.b, %1/z, %2.b
-   brk<brk_op>s\t%0.b, %1/m, %2.b"
+   (clobber (match_scratch:VNx16BI 0 "=Upa"))]
+  "TARGET_SVE"
+  "brk<brk_op>s\t%0.b, %1/z, %2.b"
 )
 
 ;; -------------------------------------------------------------------------
@@ -9293,7 +9289,61 @@
   "brk<brk_op>\t%0.b, %1/z, %2.b, %<brk_reg_opno>.b"
 )
 
-;; Same, but also producing a flags result.
+;; BRKN, producing both a predicate and a flags result.  Unlike other
+;; flag-setting instructions, these flags are always set wrt a ptrue.
+(define_insn_and_rewrite "*aarch64_brkn_cc"
+  [(set (reg:CC_NZC CC_REGNUM)
+       (unspec:CC_NZC
+         [(match_operand:VNx16BI 4)
+          (match_operand:VNx16BI 5)
+          (const_int SVE_KNOWN_PTRUE)
+          (unspec:VNx16BI
+            [(match_operand:VNx16BI 1 "register_operand" "Upa")
+             (match_operand:VNx16BI 2 "register_operand" "Upa")
+             (match_operand:VNx16BI 3 "register_operand" "0")]
+            UNSPEC_BRKN)]
+         UNSPEC_PTEST))
+   (set (match_operand:VNx16BI 0 "register_operand" "=Upa")
+       (unspec:VNx16BI
+         [(match_dup 1)
+          (match_dup 2)
+          (match_dup 3)]
+         UNSPEC_BRKN))]
+  "TARGET_SVE"
+  "brkns\t%0.b, %1/z, %2.b, %0.b"
+  "&& (operands[4] != CONST0_RTX (VNx16BImode)
+       || operands[5] != CONST0_RTX (VNx16BImode))"
+  {
+    operands[4] = CONST0_RTX (VNx16BImode);
+    operands[5] = CONST0_RTX (VNx16BImode);
+  }
+)
+
+;; Same, but with only the flags result being interesting.
+(define_insn_and_rewrite "*aarch64_brkn_ptest"
+  [(set (reg:CC_NZC CC_REGNUM)
+       (unspec:CC_NZC
+         [(match_operand:VNx16BI 4)
+          (match_operand:VNx16BI 5)
+          (const_int SVE_KNOWN_PTRUE)
+          (unspec:VNx16BI
+            [(match_operand:VNx16BI 1 "register_operand" "Upa")
+             (match_operand:VNx16BI 2 "register_operand" "Upa")
+             (match_operand:VNx16BI 3 "register_operand" "0")]
+            UNSPEC_BRKN)]
+         UNSPEC_PTEST))
+   (clobber (match_scratch:VNx16BI 0 "=Upa"))]
+  "TARGET_SVE"



Home | Main Index | Thread Index | Old Index