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