Open Quuxplusone opened 9 years ago
Attached PulseTable.cc
(70085 bytes, text/x-c++src): Pulse Table .cc
I can confirm this file DOES compile under 3.4.1/FreeBSD (see "3.4.1" below).
It takes roughly 8 minutes. The prior 3.8.0 case is still working after 123
minutes but appears appears to be related to optimization (see "3.8.0" below).
Specifically, without -O the file compiles quickly under 3.8.0.
I have also run 3.5.2 and 3.6.2 but on a different host (Junker). Both
optimization and no optimization compile (see "3.5.2" and "3.6.2" below for
optimization cases).
3.4.1 WITH optimization:
root@mc# time clang++ -UNDEBUG -march=bdver1 -fopenmp -fPIC -std=c++11 -pthread
-I/usr/local/include -I. -O -o foo.o PulseTable.cc -c -v
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
Target: x86_64-unknown-freebsd10.2
Thread model: posix
Selected GCC installation:
clang++: warning: argument unused during compilation: '-fopenmp'
"/usr/bin/clang++" -cc1 -triple x86_64-unknown-freebsd10.2 -emit-obj -disable-free -disable-llvm-verifier -main-file-name PulseTable.cc -mrelocation-model pic -pic-level 2 -mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu bdver1 -v -coverage-file /root/gr-adsb/lib/foo.o -resource-dir /usr/bin/../lib/clang/3.4.1 -U NDEBUG -I /usr/local/include -I . -internal-isystem /usr/include/c++/v1 -O2 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /root/gr-adsb/lib -ferror-limit 19 -fmessage-length 80 -pthread -mstackrealign -fobjc-runtime=gnustep -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o foo.o -x c++ PulseTable.cc
clang -cc1 version 3.4.1 based upon LLVM 3.4.1 default target x86_64-unknown-
freebsd10.2
ignoring nonexistent directory "/usr/bin/../lib/clang/3.4.1/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
.
/usr/include/c++/v1
/usr/include/clang/3.4.1
/usr/include
End of search list.
419.077u 3.417s 7:02.50 99.9% 35210+609k 0+3io 0pf+0w
3.5.2 -- WITH optimization:
root@Junker# time clang++35 -UNDEBUG -march=bdver1 -fopenmp -fPIC -std=c++11 -
pthread -I/usr/local/include -I. -O -o bar.o -c PulseTable.cc -c -v
clang version 3.5.2 (tags/RELEASE_352/final)
Target: x86_64-portbld-freebsd10.2
Thread model: posix
"/usr/local/llvm35/bin/clang" -cc1 -triple x86_64-portbld-freebsd10.2 -emit-obj -disable-free -disable-llvm-verifier -main-file-name PulseTable.cc -mrelocation-model pic -pic-level 2 -mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu bdver1 -target-linker-version 2.17.50 -v -dwarf-column-info -coverage-file /tmp/bar.o -resource-dir /usr/local/llvm35/bin/../lib/clang/3.5.2 -U NDEBUG -I /usr/local/include -I . -internal-isystem /usr/include/c++/v1 -O2 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 129 -pthread -mstackrealign -fobjc-runtime=gnustep -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o bar.o -x c++ PulseTable.cc
clang -cc1 version 3.5.2 based upon LLVM 3.5.2 default target x86_64-portbld-
freebsd10.2
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
.
/usr/include/c++/v1
/usr/local/llvm35/bin/../lib/clang/3.5.2/include
/usr/include
End of search list.
104.472u 1.455s 1:45.98 99.9% 20644+1041k 0+4io 0pf+0w
root@Junker#
3.6.2 -- WITH optimization:
root@Junker# time clang++36 -UNDEBUG -march=bdver1 -fopenmp -fPIC -std=c++11 -
pthread -I/usr/local/include -I. -O -o bar.o -c PulseTable.cc -c -v
clang version 3.6.2 (tags/RELEASE_362/final)
Target: x86_64-portbld-freebsd10.2
Thread model: posix
"/usr/local/llvm36/bin/clang" -cc1 -triple x86_64-portbld-freebsd10.2 -emit-obj -disable-free -disable-llvm-verifier -main-file-name PulseTable.cc -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu bdver1 -target-linker-version 2.17.50 -v -dwarf-column-info -coverage-file /tmp/bar.o -resource-dir /usr/local/llvm36/bin/../lib/clang/3.6.2 -U NDEBUG -I /usr/local/include -I . -internal-isystem /usr/include/c++/v1 -O2 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 129 -pthread -mstackrealign -fobjc-runtime=gnustep -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o bar.o -x c++ PulseTable.cc
clang -cc1 version 3.6.2 based upon LLVM 3.6.2 default target x86_64-portbld-
freebsd10.2
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
.
/usr/include/c++/v1
/usr/local/llvm36/bin/../lib/clang/3.6.2/include
/usr/include
End of search list.
151.564u 0.542s 2:32.21 99.9% 21765+1082k 0+3io 0pf+0w
root@Junker#
3.8.0 -- NO optimization:
root@mc# time clang++-devel -UNDEBUG -march=bdver1 -fopenmp -fPIC -std=c++11 -
pthread -I/usr/local/include -I. -o foobar.o PulseTable.cc -c -v
clang version 3.8.0
Target: x86_64-unknown-freebsd10.2
Thread model: posix
InstalledDir: /usr/local/llvm-devel/bin
"/usr/local/llvm-devel/bin/clang-3.8" -cc1 -triple x86_64-unknown-freebsd10.2 -emit-obj -mrelax-all -disable-free -main-file-name PulseTable.cc -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu bdver1 -v -dwarf-column-info -coverage-file /root/gr-adsb/lib/foobar.o -resource-dir /usr/local/llvm-devel/bin/../lib/clang/3.8.0 -U NDEBUG -I /usr/local/include -I . -internal-isystem /usr/include/c++/v1 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /root/gr-adsb/lib -ferror-limit 19 -fmessage-length 80 -fopenmp -fnoopenmp-use-tls -pthread -mstackrealign -fobjc-runtime=gnustep -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o foobar.o -x c++ PulseTable.cc
clang -cc1 version 3.8.0 based upon LLVM 3.8.0svn default target x86_64-unknown-
freebsd10.2
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
.
/usr/include/c++/v1
/usr/local/llvm-devel/bin/../lib/clang/3.8.0/include
/usr/include
End of search list.
2.722u 0.110s 0:02.84 99.6% 116+287k 0+3io 0pf+0w
MC:
root@mc# uname -a
FreeBSD mc 10.2-STABLE FreeBSD 10.2-STABLE #0 r286965: Thu Aug 20 11:49:26 PDT
2015 root@mc:/disk-2/obj/disk-1/src/sys/GENERIC amd64
Junker:
root@Junker# uname -a
FreeBSD Junker 10.2-STABLE FreeBSD 10.2-STABLE #0 r286923: Wed Aug 19 12:06:04
PDT 2015 root@Junker:/usr/obj/usr/src/sys/GENERIC amd64
It works for me on FreeBSD 11; with trunk r242221:
$ /usr/bin/time -l clang++ -O2 -std=c++11 -I. -c PulseTable.cc
71.35 real 70.03 user 1.69 sys
897312 maximum resident set size
43525 average shared memory size
210 average unshared data size
127 average unshared stack size
361213 page reclaims
0 page faults
0 swaps
0 block input operations
3 block output operations
0 messages sent
0 messages received
0 signals received
7 voluntary context switches
1086 involuntary context switches
With trunk r245199 it does take a lot longer, though:
$ /usr/bin/time -l /share/dim/llvm/245199-trunk-freebsd11-i386-aconf-rel-
1/bin/clang++ -O2 -std=c++11 -I. -c PulseTable.cc
189.45 real 188.07 user 1.67 sys
912552 maximum resident set size
46887 average shared memory size
1889 average unshared data size
127 average unshared stack size
361966 page reclaims
641 page faults
0 swaps
7 block input operations
3 block output operations
0 messages sent
0 messages received
0 signals received
656 voluntary context switches
2940 involuntary context switches
It looks like SROA is *really* slow on this.
(In reply to comment #2)
> It works for me on FreeBSD 11; with trunk r242221:
>
> $ /usr/bin/time -l clang++ -O2 -std=c++11 -I. -c PulseTable.cc
> 71.35 real 70.03 user 1.69 sys
> 897312 maximum resident set size
> 43525 average shared memory size
> 210 average unshared data size
> 127 average unshared stack size
> 361213 page reclaims
> 0 page faults
> 0 swaps
> 0 block input operations
> 3 block output operations
> 0 messages sent
> 0 messages received
> 0 signals received
> 7 voluntary context switches
> 1086 involuntary context switches
>
> With trunk r245199 it does take a lot longer, though:
>
> $ /usr/bin/time -l
> /share/dim/llvm/245199-trunk-freebsd11-i386-aconf-rel-1/bin/clang++ -O2
> -std=c++11 -I. -c PulseTable.cc
> 189.45 real 188.07 user 1.67 sys
> 912552 maximum resident set size
> 46887 average shared memory size
> 1889 average unshared data size
> 127 average unshared stack size
> 361966 page reclaims
> 641 page faults
> 0 swaps
> 7 block input operations
> 3 block output operations
> 0 messages sent
> 0 messages received
> 0 signals received
> 656 voluntary context switches
> 2940 involuntary context switches
I haven't tried compiling on FreeBSD 11. I have FreBSD 11 r286926 in a virtual
instance however clang++ on r286926 identifies itself as:
root@Head:~ # clang++ -fopenmp -v foo.cc
FreeBSD clang version 3.6.1 (tags/RELEASE_361/final 237755) 20150525
In a follow-on Bugzilla note I wrote 3.6 works however my problem is 3.8 where
I /require/ OpenMP (I also require FORTRAN (numpy) but GCC/clang seems to have
issues with the many libraries GNURadio requires).
I haven't tried 3.7rc2 because I was looking for devel/clang* and not
devel/llvm*, which is compiling now. :)
3.7rc2 also has the problem. Still running after more than an hour:
root@Junker# time clang++37 -UNDEBUG -fopenmp -fPIC -std=c++11 -pthread -
I/usr/local/include -I. -O -o bar.o -c PulseTable.cc -c -v
clang version 3.7.0 (tags/RELEASE_370/rc2)
Target: x86_64-unknown-freebsd10.2
Thread model: posix
"/usr/local/llvm37/bin/clang-3.7" -cc1 -triple x86_64-unknown-freebsd10.2 -emit-obj -disable-free -main-file-name PulseTable.cc -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -v -dwarf-column-info -coverage-file /root/bar.o -resource-dir /usr/local/llvm37/bin/../lib/clang/3.7.0 -U NDEBUG -I /usr/local/include -I . -internal-isystem /usr/include/c++/v1 -O2 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /root -ferror-limit 19 -fmessage-length 128 -fopenmp -fnoopenmp-use-tls -pthread -mstackrealign -fobjc-runtime=gnustep -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o bar.o -x c++ PulseTable.cc
clang -cc1 version 3.7.0 based upon LLVM 3.7.0 default target x86_64-unknown-
freebsd10.2
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
.
/usr/include/c++/v1
/usr/local/llvm37/bin/../lib/clang/3.7.0/include
/usr/include
End of search list.
Hm, I just don't see it here. With r245248 from the release_37 branch (which
corresponds more or less with rc2/rc3):
$ /usr/bin/time -l /share/dim/llvm/245248-rel37-freebsd11-i386-aconf-rel-
1/bin/clang++ -fopenmp -fPIC -std=c++11 -pthread -O -I. -c PulseTable.cc
84.62 real 76.63 user 4.43 sys
913864 maximum resident set size
46416 average shared memory size
1818 average unshared data size
127 average unshared stack size
364986 page reclaims
658 page faults
0 swaps
3 block input operations
8 block output operations
698 messages sent
0 messages received
0 signals received
780 voluntary context switches
1191 involuntary context switches
Even the -fopenmp flag does not matter.
How exactly are you building your clang executables? Manually, or via ports?
Ports.
(In reply to comment #7)
> Ports.
Sorry. Should have been more explicit:
3.7: ports/devel/llvm37
3.5: ports/lang/clang35
3.6: ports/lang/clang36
Attached PulseTable.bc
(789808 bytes, application/octet-stream): Bitcode without LLVM optimizations of PulseTable.cc
PulseTable.cc
(70085 bytes, text/x-c++src)PulseTable.bc
(789808 bytes, application/octet-stream)