This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 1/2] [graphite] add more dumps on data dependence graph
- From: Gerald Pfeifer <gerald at pfeifer dot com>
- To: Sebastian Pop <sebpop at gmail dot com>
- Cc: Sebastian Pop <s dot pop at samsung dot com>, Richard Guenther <richard dot guenther at gmail dot com>, gcc-patches at gcc dot gnu dot org, Aditya K <hiraditya at msn dot com>
- Date: Sat, 9 Jan 2016 21:26:01 +0800 (WITA)
- Subject: Re: [PATCH 1/2] [graphite] add more dumps on data dependence graph
- Authentication-results: sourceware.org; auth=none
- References: <1450129723-10910-1-git-send-email-s dot pop at samsung dot com> <alpine dot LSU dot 2 dot 20 dot 1512251827470 dot 5144 at anthias> <CAFk3UF-T=Xg01QFe9EonVc+xQtr3y9dzNGp3ybHHYRKg-ygqPw at mail dot gmail dot com>
Hi Sebastian,
On Fri, 25 Dec 2015, Sebastian Pop wrote:
>> on December 17th 2015, my nightly bootstrap (on i386-unknown-freebsd10.1,
>> but I don't think this is material) started to fail as follows:
>>
>> /scratch/tmp/gerald/gcc-HEAD/gcc/graphite-scop-detection.c:1892:17:
>> note: in instantiation of member function 'vec<dr_info, va_heap, vl_ptr>::safe_push'
>> requested here
>> scop->drs.safe_push (dr_info (dr, pbb));
> I do not see what the error is. Do you happen to have
> the few lines with the error before this note?
thanks for the quick response. My Internet (non-)connectivity the
last two weeks did not allow me to debug this further. Now I'm back
to normal, and here is what I found:
When I remove the isl package, GCC bootstraps just fine. As soon as
I add the package again, things fail again.
>From the configure log:
checking for isl 0.15 (or deprecated 0.14)... yes
checking Checking for isl_options_set_schedule_serialize_sccs... no
And here is the actual failure, which is different from my original
report (probably due to forcing serial building). Invocation:
c++ -std=gnu++98 -fno-PIE -c -g -DIN_GCC -fno-strict-aliasing
-fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall
-Wno-narrowing -Wwrite-string s -Wcast-qual -Wno-format
-Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long
-Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H
:
-o graphite-dependences.o -MT graphite-dependences.o -MMD -MP -MF
./.deps/graphite-dependences.TPo /scratch/tmp/gerald/gcc-HEAD/gcc/graphite-dependences.c
Error:
/scratch/tmp/gerald/gcc-HEAD/gcc/graphite-dependences.c:240:3: error: no matching function for call to 'isl_union_map_foreach_map'
isl_union_map_foreach_map (x, max_number_of_out_dimensions, (void *) &max);
^~~~~~~~~~~~~~~~~~~~~~~~~
/home/gerald/10-i386/include/isl/union_map.h:204:10: note: candidate
function not viable: no known conversion from 'int (isl_map *, void *)'
to 'isl_stat (*)(isl_map *, void *)' for 2nd argument
isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap,
At first I thought this is related to FreeBSD now using clang as the
system compiler, but the same happens using a current GCC 6 build.
Then I started digging into this, wondering why apparently it had
as the return type for the second argument as opposed to "isl_stat".
My .../include/isl/union_map.h has
isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap,
isl_stat (*fn)(__isl_take isl_map *map, void *user), void *user);
whereas graphite_dependences.c has
static isl_stat
max_number_of_out_dimensions (__isl_take isl_map *map, void *user)
so everything should be fine, shouldn't it?
Turns out gcc/graphite.h is causing all this:
#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
/* isl 0.15 or later. */
#include <isl/schedule_node.h>
#else
/* isl 0.14 or 0.13. */
# define isl_stat int
# define isl_stat_ok 0
#endif
So, despite actually _having_ type isl_stat we #define isl_stat to int
and do so after having all the isl/ include files use the proper type.
Digging deeper, there appear to be two issues:
1. Instead of a feature test (for isl_stat) we use a version check
based on another feature test (isl_options_set_schedule_serialize_sccs).
2. That feature test for isl_options_set_schedule_serialize_sccs does
not work properly.
It would be great could you look into issue 1 in any case, but for the
time being let's focus on issue 2. Here is what gcc/config.log shows:
configure:28943: checking Checking for isl_options_set_schedule_serialize_sccs
configure:28956: /home/gerald/gcc-ref10-i386/bin/g++ -std=gnu++98 -o conftest -g
-static-libstdc++ -static-libgcc conftest.cpp -lisl
-L/home/gerald/10-i386 /lib -lmpc -lmpfr -lgmp >&5
conftest.cpp:258:26: fatal error: isl/schedule.h: No such file or directory
#include <isl/schedule.h>
compilation terminated.
configure:28956: $? = 1
Note the -L option pointing to /home/gerald/10-i386 (where I have my
local packages for this kind of testing), whereas the associated -I
option is missing. And indeed, that's it: We use GMPLIB in that
configure test, but not GMPINC.
(For MPFR and MPC, the include and library paths for GMP are always
included as well, by the way. It is only necessary to use --with-gmp=
if one has a non-standard tree structure.)
With the patch allow, my bootstraps in that environment succeed again,
so I went ahead and applied it.
Gerald
2016-01-09 Gerald Pfeifer <gerald@pfeifer.com>
* configure.ac (isl_options_set_schedule_serialize_sccs): Also
use GMPINC.
* configure: Regenerate.
Index: gcc/configure.ac
===================================================================
--- gcc/configure.ac (revision 232188)
+++ gcc/configure.ac (working copy)
@@ -5918,7 +5918,7 @@
# it's new in isl 0.15.
if test "x${ISLLIBS}" != "x" ; then
saved_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$CXXFLAGS $ISLINC"
+ CXXFLAGS="$CXXFLAGS $ISLINC $GMPINC"
saved_LIBS="$LIBS"
LIBS="$LIBS $ISLLIBS $GMPLIBS"