[ Jeff, approval request below ]
On Wed, 5 Aug 2020, Aldy Hernandez wrote:
>> I believe this has broken the bootstrap with clang (specifically
>> FreeBSD clang version 10.0.0):
>>
>> In file included from /scratch/tmp/gerald/GCC-HEAD/gcc/c/gimple-parser.c:44:
>> In file included from /scratch/tmp/gerald/GCC-HEAD/gcc/tree-vrp.h:23:
>> /scratch/tmp/gerald/GCC-HEAD/gcc/value-range.h:347:1: error: static
>> declaration of 'gt_ggc_mx' follows non-static declaration gt_ggc_mx
>> (int_range<N> *x)
>> /scratch/tmp/gerald/GCC-HEAD/gcc/value-range.h:150:37: note: previous
>> declaration is here
>> template <unsigned X> friend void gt_ggc_mx (int_range<X> *);
:
>> My daily tester started to 20200803T1640, so the root cause of this must
>> have entered GCC trunk between Sunday 16:40 UTC and Monday 16:40 UTC.
> Yeah, this is definitely caused by the irange patch.
>
> GTY makes my head spin, and it took forever to get these gt_* functions
> set up. I can't claim I understand them entirely :).
>
> Just a guess, does removing the static solve the problem?
Yes, that appears to solve this issue.
Thank you, Aldy! (And, yes, I ought to have thought of that myself. ;-)
Bootstrap still fails, but quite later (the log file is 13M as opposed
to 0.8M) and related to something else ... also triggered by your patch,
though, I'm afraid:
In file included from /scratch/tmp/gerald/GCC-HEAD/gcc/ipa-fnsummary.c:85:
In file included from /usr/include/c++/v1/vector:274:
In file included from /usr/include/c++/v1/__bit_reference:15:
In file included from /usr/include/c++/v1/algorithm:643:
In file included from /usr/include/c++/v1/memory:653:
/usr/include/c++/v1/typeinfo:346:5: error: no member named 'fancy_abort' in
namespace 'std::__1'; did you mean simply 'fancy_abort'?
_VSTD::abort();
^~~~~~~
/usr/include/c++/v1/__config:782:15: note: expanded from macro '_VSTD'
#define _VSTD std::_LIBCPP_ABI_NAMESPACE
^
/scratch/tmp/gerald/GCC-HEAD/gcc/system.h:762:13: note: 'fancy_abort' declared
here
extern void fancy_abort (const char *, int, const char *)
^
I believe this is due to the following:
diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c
index 55a0b272a96..49bab04524b 100644
--- a/gcc/ipa-fnsummary.c
+++ b/gcc/ipa-fnsummary.c
@@ -82,6 +82,7 @@ along with GCC; see the file COPYING3. If not see
#include "gimplify.h"
#include "stringpool.h"
#include "attribs.h"
+#include <vector>
#include "tree-into-ssa.h"
/* Summaries. */
This is nearly the only case in all of GCC where <vector> is included
directly; are you sure that's appropriate?
Digging a bit...
2017-01-22 Dimitry Andric <[email protected]>
* gcov.c (INCLUDE_ALGORITHM): Define.
(INCLUDE_VECTOR): Define.
No longer include <vector> and <algorithm> directly.
...makes me think this is a repeat of a similar situation around gcov
three years ago.
The patch below similarly uses INCLUDE_VECTOR and "system.h" and restores
bootstrap. Tested on i386-unknown-freebsd11.4 which uses clang 10.0.0 as
system compiler.
Okay?
Gerald
2020-08-05 Gerald Pfeifer <[email protected]>
* ipa-fnsummary.c (INCLUDE_VECTOR): Define.
Remove direct inclusion of <vector>.
diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c
index 49bab04524b..59e52927151 100644
--- a/gcc/ipa-fnsummary.c
+++ b/gcc/ipa-fnsummary.c
@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3. If not see
inlined performs analysis via its analyze_function method. */
#include "config.h"
+#define INCLUDE_VECTOR
#include "system.h"
#include "coretypes.h"
#include "backend.h"
@@ -82,7 +83,6 @@ along with GCC; see the file COPYING3. If not see
#include "gimplify.h"
#include "stringpool.h"
#include "attribs.h"
-#include <vector>
#include "tree-into-ssa.h"
/* Summaries. */