From: Stefan Schulze Frielinghaus <[email protected]>
With the recent switch in commit r16-5628 defaulting to C++20 some
enumeration arithmetic errors are thrown during bootstrap, now. Fixed
by casting those to type int. I'm using type int here merely because
S390_ALL_BUILTIN_MAX is used in comparisons with other operands of type
int.
gcc/ChangeLog:
* config/s390/s390-builtins.h
(S390_OVERLOADED_BUILTIN_VAR_OFFSET,S390_ALL_BUILTIN_MAX): Fix
enum arithmetic.
* config/s390/s390.cc (OB_DEF): Ditto.
---
gcc/config/s390/s390-builtins.h | 12 +++++-------
gcc/config/s390/s390.cc | 10 ++++------
2 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/gcc/config/s390/s390-builtins.h b/gcc/config/s390/s390-builtins.h
index e19fc7eec51..1e596aef7ce 100644
--- a/gcc/config/s390/s390-builtins.h
+++ b/gcc/config/s390/s390-builtins.h
@@ -134,10 +134,10 @@ S390_OVERLOADED_BUILTIN_VAR_MAX
#define S390_OVERLOADED_BUILTIN_OFFSET S390_BUILTIN_MAX
#define S390_OVERLOADED_BUILTIN_VAR_OFFSET \
- (S390_BUILTIN_MAX + S390_OVERLOADED_BUILTIN_MAX)
-#define S390_ALL_BUILTIN_MAX \
- (S390_BUILTIN_MAX + S390_OVERLOADED_BUILTIN_MAX + \
- S390_OVERLOADED_BUILTIN_VAR_MAX)
+ ((int)S390_BUILTIN_MAX + (int)S390_OVERLOADED_BUILTIN_MAX)
+#define S390_ALL_BUILTIN_MAX \
+ ((int)S390_BUILTIN_MAX + (int)S390_OVERLOADED_BUILTIN_MAX + \
+ (int)S390_OVERLOADED_BUILTIN_VAR_MAX)
extern const unsigned int bflags_builtin[S390_BUILTIN_MAX + 1];
extern const unsigned int opflags_builtin[S390_BUILTIN_MAX + 1];
@@ -172,6 +172,4 @@ opflags_for_builtin (int fcode)
return opflags_builtin[fcode];
}
-extern GTY(()) tree s390_builtin_decls[S390_BUILTIN_MAX +
- S390_OVERLOADED_BUILTIN_MAX +
- S390_OVERLOADED_BUILTIN_VAR_MAX];
+extern GTY(()) tree s390_builtin_decls[S390_ALL_BUILTIN_MAX];
diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc
index d65109026f2..359ea1c3d64 100644
--- a/gcc/config/s390/s390.cc
+++ b/gcc/config/s390/s390.cc
@@ -686,9 +686,7 @@
opflags_overloaded_builtin_var[S390_OVERLOADED_BUILTIN_VAR_MAX + 1] =
tree s390_builtin_types[BT_MAX];
tree s390_builtin_fn_types[BT_FN_MAX];
-tree s390_builtin_decls[S390_BUILTIN_MAX +
- S390_OVERLOADED_BUILTIN_MAX +
- S390_OVERLOADED_BUILTIN_VAR_MAX];
+tree s390_builtin_decls[S390_ALL_BUILTIN_MAX];
static enum insn_code const code_for_builtin[S390_BUILTIN_MAX + 1] = {
#undef B_DEF
@@ -771,12 +769,12 @@ s390_init_builtins (void)
ATTRS);
#undef OB_DEF
#define OB_DEF(NAME, FIRST_VAR_NAME, LAST_VAR_NAME, BFLAGS, FNTYPE) \
- if (s390_builtin_decls[S390_OVERLOADED_BUILTIN_##NAME + S390_BUILTIN_MAX] \
+ if (s390_builtin_decls[(int)S390_OVERLOADED_BUILTIN_##NAME +
(int)S390_BUILTIN_MAX] \
== NULL) \
- s390_builtin_decls[S390_OVERLOADED_BUILTIN_##NAME + S390_BUILTIN_MAX] = \
+ s390_builtin_decls[(int)S390_OVERLOADED_BUILTIN_##NAME +
(int)S390_BUILTIN_MAX] = \
add_builtin_function ("__builtin_" #NAME,
\
s390_builtin_fn_types[FNTYPE], \
- S390_OVERLOADED_BUILTIN_##NAME + S390_BUILTIN_MAX, \
+ (int)S390_OVERLOADED_BUILTIN_##NAME +
(int)S390_BUILTIN_MAX, \
BUILT_IN_MD, \
NULL, \
0);
--
2.52.0