Opened 10 years ago
Closed 10 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 10 years ago by larryv (Lawrence Velázquez)
comment:2 Changed 10 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 follow-up: 4 Changed 10 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 Changed 10 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 460 460 if (flag_loop_unroll_jam && (i != (ScheduleDimensions - depth))) 461 461 continue; 462 462 463 if (isl_band_member_is_ zero_distance(Band, i))463 if (isl_band_member_is_coincident (Band, i)) 464 464 { 465 465 isl_map *TileMap; 466 466 isl_union_map *TileUMap;
Do these two function calls actually do the same thing?
comment:5 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
There's some discussion in the mailing list post the patch came from.
comment:6 Changed 10 years ago by larryv (Lawrence Velázquez)
Cc: | mww@… added; larryv@… removed |
---|---|
Owner: | changed from mww@… to larryv@… |
Port: | gcc48, gcc49 → gcc48 gcc49 |
Status: | new → assigned |
comment:7 Changed 10 years ago by larryv (Lawrence Velázquez)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
I’m skeptical of that function swap, but we can always fix it later if need be.
Among other issues,
gcc48
’s configure script (and probablygcc49
’s too) cannot find a suitable version of isl because the version provided by theisl
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 ourisl
.