Linaro CI reported the following on v3:

```
  | # build_abe bootstrap:
  | # FAILED
  | # First few build errors in logs:
  | # 00:35:00 
/home/tcwg-build/workspace/tcwg_gnu_7/abe/snapshots/gcc.git~master/gcc/c/c-parser.cc:2038:19:
 error: comparison of integer expressions of different signedness: ‘unsigned 
int’ and ‘int’ [-Werror=sign-compare]
  | # 00:36:33 make[3]: *** [Makefile:1229: c/c-parser.o] Error 1
  | # 00:36:33 make[2]: *** [Makefile:5183: all-stage2-gcc] Error 2
  | # 00:36:33 make[1]: *** [Makefile:26491: stage2-bubble] Error 2
  | # 00:36:33 make: *** [Makefile:1139: all] Error 2
```

To fix this, I made the following change in the version that I pushed as 
r17-4966-gbaea2a0be30d84:

```diff
diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc
index e03c06da9a2..8aa4f54eb0d 100644
--- a/gcc/c/c-parser.cc
+++ b/gcc/c/c-parser.cc
@@ -2022,9 +2022,13 @@ private:
      as doing so would require a parser.
      Also handle the case where MACRO's definition is a single identifier
      that is itself a macro name (e.g. "#define O_CREAT _FCREAT"), by
-     following the chain of aliases up to MAX_ALIAS_DEPTH deep.  */
-  tree consider_macro (cpp_macro *macro, unsigned int depth = 0) const
+     following the chain of aliases.  */
+  tree consider_macro (cpp_macro *macro, int depth = 0) const
   {
+    /* UInteger option variables are stored as int, so "depth" must be signed
+       to avoid a signed/unsigned comparison here. */
+    gcc_assert (depth >= 0);
+
     if (macro->paramc > 0)
       return NULL_TREE;
     if (macro->kind != cmk_macro)
```

--
https://forge.sourceware.org/gcc/gcc/pulls/226#issuecomment-7742

Reply via email to