That's great news! Thanks a lot!
Excuse me if I drift off-topic, how about -flto? LTO requires both compiler
and linker support, however clang3? from ports still calls the system
linker 'ld'. LLVM has its own linker, 'lld', but it is not
straightforward,
AFAIK, to make clang3? call it.
My trick up to now is to create a symbolic link in the current directory
and have '.' in the PATH before anything else.
ln -s /usr/local/llvm37/bin/lld ./ld
clang37 -flto ...
Am I missing something or is there a chance for improvement here?
2016-08-31 3:17 GMT+02:00 K. Macy <kmacy at freebsd.org>:
> On Tue, Aug 30, 2016 at 10:39 AM, Eric A. Borisch <eborisch at
gmail.com>
> wrote:
> > FWIW, in MacPorts, we patch clang such that it can find the (MacPorts
> > provided) libomp headers and library. This lets -fopenmp "just
work,"
> > and configure scripts can do their job. The libomp headers and lib in
> > dedicated sub-directories to minimize the impact of -fopenmp adding
> > them to the include and link paths.
> >
> > It is a fairly minor patch, and shouldn't (tm) have any impact on
> > clang executions without an openmp flag:
> > https://trac.macports.org/browser/trunk/dports/lang/
> llvm-3.8/files/openmp-locations.patch
> >
> > To get a simple OpenMP test script to compile on FreeBSD, I currently
> > need to pass (note I'm not the one using -lm):
> >
> > clang38 -fopenmp -o test test.c -L /usr/local/llvm38/lib -lm
> >
> > instead of (~ what configure will try)
> >
> > clang38 -fopenmp -o test test.c
> >
> > (11.0RC2 w/ llvm38 installed via pkg)
> >
> > I'd love to see base include llvm's OpenMP support, but
failing that,
> > the one from ports should be made to work as configure scripts expect.
> >
> > And who knows, if it is there, maybe some items in base will start to
> > use it. We've got a chicken-and-egg problem right now.
>
> Thanks for the patch. Johannes Dieterich hacked the llvm38 port in my
> graphics branch and:
>
>
> mmacy at armageddon [~|18:13|81] clang++ omp.cpp -fopenmp
> mmacy at armageddon [~|18:13|81] cat omp.cpp
> #include <string>
> #include <iostream>
> using namespace std;
> int main(int argc, char** argv) {
>
>
> #pragma omp parallel for default(shared)
> for(int i = 0; i < 100; ++i){
> #ifdef _OPENMP
> cout << "WITH OPENMP " << i << endl;
> #else
> cout << "WITHOUT OPENMP " << i << endl;
> #endif
> }
> return 0;
> }
> mmacy at armageddon [~|18:13|82] clang++38 omp.cpp -fopenmp
> mmacy at armageddon [~|18:13|83] ./a.out| head -5
> WITH OPENMP WITH OPENMP 84WITH OPENMP 92WITH OPENMP
> 44
> WITH OPENMP WITH OPENMP 9352WITH OPENMP
> 76WITH OPENMP WITH OPENMP 0
> WITH OPENMP
>
>
>
> Fingers crossed that this can get propagated to master and the
> defaults for openblas, FFTW, and others can be made more sensible.
>
> -M
> _______________________________________________
> freebsd-stable at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-stable
> To unsubscribe, send any mail to "freebsd-stable-unsubscribe at
freebsd.org"
>