Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#53662 closed defect (fixed)

gcc48: incompatible with isl 0.18

Reported by: Alex-Vidal (Alex Vidal) Owned by: MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: ryandesign (Ryan Carsten Schmidt), mojca (Mojca Miklavec), jeremyhu (Jeremy Huddleston Sequoia), takeshi@…, gnw3, macdeport, Schamschula (Marius Schamschula), ballapete (Peter "Pete" Dyballa)
Port: gcc48 isl upc dragonegg-3.3-gcc-4.8 dragonegg-3.4-gcc-4.8

Description (last modified by mojca (Mojca Miklavec))

An update of isl broke gcc48 on all OS versions (see #53617).

Here's one part of the error from the 10.12 buildbot:

In file included from /path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:48:
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-poly.h:397:43: error: unknown type name 'isl_constraint'
extern void print_isl_constraint (FILE *, isl_constraint *);
                                          ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-poly.h:401:35: error: unknown type name 'isl_constraint'
extern void debug_isl_constraint (isl_constraint *);
                                  ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:56:24: error: use of undeclared identifier 'isl_union_set_empty'; did you mean 'isl_union_map_empty'?
  isl_union_set *res = isl_union_set_empty (space);
                       ^~~~~~~~~~~~~~~~~~~
                       isl_union_map_empty
/opt/local/include/isl/union_map.h:27:27: note: 'isl_union_map_empty' declared here
__isl_give isl_union_map *isl_union_map_empty(__isl_take isl_space *dim);
                          ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:56:18: error: cannot initialize a variable of type 'isl_union_set *' with an rvalue of type 'isl_union_map *'
  isl_union_set *res = isl_union_set_empty (space);
                 ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:144:7: error: unknown type name 'isl_constraint'
      isl_constraint *c;
      ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:147:11: error: use of undeclared identifier 'isl_equality_alloc'
      c = isl_equality_alloc(isl_local_space_copy(LocalSpace));
          ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:153:11: error: use of undeclared identifier 'isl_equality_alloc'
      c = isl_equality_alloc(isl_local_space_copy(LocalSpace));
          ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:159:11: error: use of undeclared identifier 'isl_inequality_alloc'
      c = isl_inequality_alloc(isl_local_space_copy(LocalSpace));
          ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:165:11: error: use of undeclared identifier 'isl_inequality_alloc'
      c = isl_inequality_alloc(isl_local_space_copy(LocalSpace));
          ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:268:3: error: unknown type name 'isl_constraint'
  isl_constraint *c;
  ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:287:11: error: use of undeclared identifier 'isl_equality_alloc'
      c = isl_equality_alloc(isl_local_space_copy(LocalSpace));
          ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:311:7: error: use of undeclared identifier 'isl_inequality_alloc'
  c = isl_inequality_alloc(isl_local_space_copy(LocalSpace));
      ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:317:7: error: use of undeclared identifier 'isl_inequality_alloc'
  c = isl_inequality_alloc(LocalSpace);
      ^
/path/to/gcc48/work/gcc-4.8.5/gcc/graphite-optimize-isl.c:432:7: error: use of undeclared identifier 'isl_union_set_from_set'; did you mean 'isl_union_map_from_map'?
                                                isl_union_set_from_set(domain));
                                                ^~~~~~~~~~~~~~~~~~~~~~
                                                isl_union_map_from_map

Attachments (2)

main.log (1.7 MB) - added by Alex-Vidal (Alex Vidal) 8 years ago.
Log
main.2.log (1.8 MB) - added by ruipacheco (Rui Pacheco) 8 years ago.

Change History (20)

Changed 8 years ago by Alex-Vidal (Alex Vidal)

Attachment: main.log added

Log

Changed 8 years ago by ruipacheco (Rui Pacheco)

Attachment: main.2.log added

comment:1 Changed 8 years ago by ruipacheco (Rui Pacheco)

Have a similar problem, different log output. Added main.2.log to ticket.

comment:2 Changed 8 years ago by mojca (Mojca Miklavec)

Cc: ryandesign mojca added
Description: modified (diff)
Keywords: gcc48 removed
Owner: set to MarcusCalhoun-Lopez
Port: isl added
Status: newassigned
Summary: gcc48: Failed to build, command execution failedgcc48: incompatible with isl 0.18
Version: 2.4.1

comment:3 Changed 8 years ago by mojca (Mojca Miklavec)

Description: modified (diff)

comment:4 Changed 8 years ago by mojca (Mojca Miklavec)

Cc: jeremyhu takeshi@… added
Port: upc dragonegg-3.3-gcc-4.8 dragonegg-3.4-gcc-4.8 added

upc is also affected in exactly the same way.

Dragonegg (using gcc48) cannot be built either.

We might have to provide an older version of isl (subport of isl) at a different location

comment:5 Changed 8 years ago by gnw3

Cc: gnw3 added

comment:6 Changed 8 years ago by macdeport

Cc: macdeport added

comment:7 Changed 8 years ago by Schamschula (Marius Schamschula)

Cc: Schamschula added

comment:8 Changed 8 years ago by kencu (Ken)

Will gcc use an isl source directory in the build directory if one exists? It seems to do that with a number of other components.

comment:9 Changed 8 years ago by gnw3

According to Installing GCC (no version specified):

isl Library version 0.15 or later.

    Necessary to build GCC with the Graphite loop optimizations. It can be 
downloaded from ftp://gcc.gnu.org/pub/gcc/infrastructure/. If an isl source 
distribution is found in a subdirectory of your GCC sources named isl, it will 
be built together with GCC. Alternatively, the --with-isl configure option 
should be used if isl is not installed in your default library search path.

Not entirely correct, as GCC 7 needs isl 1.0.18.

According to Installing GCC wiki:

Alternatively, after extracting the GCC source archive, simply run the 
./contrib/download_prerequisites script in the GCC source directory. That 
will download the support libraries and create symlinks, causing them to 
be built automatically as part of the GCC build process. Set 
GRAPHITE_LOOP_OPT=no in the script if you want to build GCC without ISL, 
which is only needed for the optional Graphite loop optimizations. 

I should know, but can't remember for sure, whether GGC puts libraries install from the GCC source tree in a private location.

comment:10 Changed 8 years ago by kencu (Ken)

So maybe that is worth a try? Hopefully it would be used to build gcc and then deleted along with everything else in the build directory.

I have never built gcc outside macports, so this is new ground for me. There are those on this list who have been building it for a decade or more.

Version 0, edited 8 years ago by kencu (Ken) (next)

comment:11 Changed 8 years ago by ballapete (Peter "Pete" Dyballa)

Cc: ballapete added

comment:12 Changed 8 years ago by kencu (Ken)

I tried installing a separate copy of isl 0.14 in ${prefix}/libexec/isl14 and then configuring gcc48 to use that isl version in the configuration options. Edit - looks like the "prepend" option was the easy way to fix this. Thanks.

Last edited 8 years ago by kencu (Ken) (previous) (diff)

comment:13 Changed 8 years ago by kencu (Ken)

gcc48 and other gcc versions will build without isl, which is needed only for Graphite loop optimizations. This can be achieved by the deleting the with system isl configuration option. I have no idea if Graphite loop optimizations are worthwhile, but nice to have them, anyway.

A copy of isl 0.14 in the gcc48 source directory, with the folder named isl, and a copy of cloog similarly, will allow a local build-only version. That might be useful someday.

Last edited 8 years ago by kencu (Ken) (previous) (diff)

comment:14 Changed 8 years ago by kencu (Ken)

A possible fix for gcc48 was in https://github.com/macports/macports-ports/pull/375. Deleted that now.

Last edited 8 years ago by kencu (Ken) (previous) (diff)

comment:15 Changed 8 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

In 4b67bd09/macports-ports:

isl14: new subport

See #53662

comment:16 Changed 8 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

In 93a5df74/macports-ports:

gcc48: use isl 1.4 instead of latest isl

See #53662

comment:17 Changed 8 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

In 510b72e5/macports-ports:

llvm-3.4: use isl 1.4 instead of latest isl

See #53662

comment:18 Changed 8 years ago by mojca (Mojca Miklavec)

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.