Opened 9 years ago

Closed 9 years ago

#45984 closed defect (fixed)

gcc48, gcc49: depends on cloog but doesn't link with it

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: larryv (Lawrence Velázquez)
Priority: Normal Milestone:
Component: ports Version: 2.3.99
Keywords: Cc: mww@…
Port: gcc48 gcc49

Description

I have these versions of gcc installed:

$ port -v installed gcc5 gcc46 gcc47 gcc48 gcc49 libgcc-devel
The following ports are currently installed:
  gcc5 @5-20141116_0+universal (active) platform='darwin 14' archs='i386 x86_64'
  gcc46 @4.6.4_7+universal (active) platform='darwin 14' archs='i386 x86_64'
  gcc47 @4.7.4_3+universal (active) platform='darwin 14' archs='i386 x86_64'
  gcc48 @4.8.3_2+universal (active) platform='darwin 14' archs='i386 x86_64'
  gcc49 @4.9.2_0+universal (active) platform='darwin 14' archs='i386 x86_64'
  libgcc-devel @5-20141116_0+universal (active) platform='darwin 14' archs='i386 x86_64'

gcc46, gcc47, gcc48 and gcc49 depend on cloog, which depends on isl.

gcc46 and gcc47 link with those libraries:

$ port -q contents gcc46 | xargs otool -L | grep -E '(cloog|isl)' | sort -u
	/opt/local/lib/libcloog-isl.4.dylib (compatibility version 5.0.0, current version 5.0.0)
	/opt/local/lib/libisl.13.dylib (compatibility version 15.0.0, current version 15.0.0)
$ port -q contents gcc47 | xargs otool -L | grep -E '(cloog|isl)' | sort -u
	/opt/local/lib/libcloog-isl.4.dylib (compatibility version 5.0.0, current version 5.0.0)
	/opt/local/lib/libisl.13.dylib (compatibility version 15.0.0, current version 15.0.0)

gcc48 and gcc49 don't link with them:

$ port -q contents gcc48 | xargs otool -L | grep -E '(cloog|isl)' | sort -u
error: otool: can't open file: /opt/local/lib/gcc48/i386/libasan.0.dylib (No such file or directory)
error: otool: can't open file: /opt/local/lib/gcc48/i386/libasan.dylib (No such file or directory)
error: otool: can't open file: /opt/local/lib/gcc48/libasan.0.dylib (No such file or directory)
error: otool: can't open file: /opt/local/lib/gcc48/libasan.dylib (No such file or directory)
$ port -q contents gcc49 | xargs otool -L | grep -E '(cloog|isl)' | sort -u

When I updated gcc5 I changed its dependency and configure arguments to reference isl only, which is what it links with:

$ port -q contents gcc5 | xargs otool -L | grep -E '(cloog|isl)' | sort -u
	/opt/local/lib/libisl.13.dylib (compatibility version 15.0.0, current version 15.0.0)

Based on the above, I think we need to change gcc48 and gcc49 but I do not know if they should be using cloog or isl or neither.

Change History (7)

comment:1 Changed 9 years ago by larryv (Lawrence Velázquez)

Among other issues, gcc48’s configure script (and probably gcc49’s too) cannot find a suitable version of isl because the version provided by the isl port is too new. It also doesn’t seem to look for CLooG at all, which is odd. Maybe it doesn’t bother looking after striking out in its isl search?

I’m working on patching gcc49 to use our isl.

comment:2 Changed 9 years ago by larryv (Lawrence Velázquez)

To be clear, the documentation for 4.8 and 4.9 do both mention CLooG, so I think our packaging is broken. From 4.8:

ISL Library version 0.11.1

Necessary to build GCC with the Graphite loop optimizations. It can be downloaded from ftp://gcc.gnu.org/pub/gcc/infrastructure/ as isl-0.11.1.tar.bz2.

The --with-isl configure option should be used if ISL is not installed in your default library search path.

CLooG 0.18.0

Necessary to build GCC with the Graphite loop optimizations. It can be downloaded from ftp://gcc.gnu.org/pub/gcc/infrastructure/ as cloog-0.18.0.tar.gz. The --with-cloog configure option should be used if CLooG is not installed in your default library search path. CLooG needs to be built against ISL 0.11.1. Use --with-isl=system to direct CLooG to pick up an already installed ISL, otherwise it will use ISL 0.11.1 as bundled with CLooG. CLooG needs to be configured to use GMP internally, use --with-bits=gmp to direct it to do that.

…and 4.9:

ISL Library version 0.12.2

Necessary to build GCC with the Graphite loop optimizations. It can be downloaded from ftp://gcc.gnu.org/pub/gcc/infrastructure/ as isl-0.12.2.tar.bz2. 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.

CLooG 0.18.1

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

If you want to install CLooG separately it needs to be built against ISL 0.12.2 by using the --with-isl=system to direct CLooG to pick up an already installed ISL. Using the ISL library as bundled with CLooG is not supported.

comment:3 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Just to make sure you've seen it, I want to mention my newer-ISL patch that is already committed to the gcc5 port.

comment:4 in reply to:  3 Changed 9 years ago by larryv (Lawrence Velázquez)

I hadn’t seen it, no. I think the only bit I’d need is

  • gcc/graphite-optimize-isl.c

    old new  
    460460              if (flag_loop_unroll_jam && (i != (ScheduleDimensions - depth)))
    461461                continue;
    462462
    463               if (isl_band_member_is_zero_distance (Band, i))
     463              if (isl_band_member_is_coincident (Band, i))
    464464                {
    465465                  isl_map *TileMap;
    466466                  isl_union_map *TileUMap;

Do these two function calls actually do the same thing?

comment:5 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

There's some discussion in the mailing list post the patch came from.

comment:6 Changed 9 years ago by larryv (Lawrence Velázquez)

Cc: mww@… added; larryv@… removed
Owner: changed from mww@… to larryv@…
Port: gcc48, gcc49gcc48 gcc49
Status: newassigned

comment:7 Changed 9 years ago by larryv (Lawrence Velázquez)

Resolution: fixed
Status: assignedclosed

I’m skeptical of that function swap, but we can always fix it later if need be.

r128720

Note: See TracTickets for help on using tickets.