<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><div><blockquote type="cite" class=""><div class="">On Jun 27, 2017, at 7:00 AM, mats petersson <<a href="mailto:mats@planetcatfish.com" class="">mats@planetcatfish.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">Does it actually lock up, or just take a very long time. LLVM does have problems with very large functions, which leads to long times for "instruction selection" (worse in debug builds of the compiler too)<br class=""><br class=""> The same applies to g++ - I had something that was about 100k lines that took over 15 minutes to compile a while back - tweaking the options changed it to about 20s. Just because one compiler is "good" and the other "bad" doesn't mean that the "bad" one is broken, it's all depending on what the code looks like, one may well run through the compilation quickly, and the other take very long - "The devil is in the detail". In my g++ case, it was "dead store elimination, that took a long time, and on a file that is several megabytes, the difference with DSE enabled was a few kilobytes - from what I can tell [without looking at the code], g++ does DSE in O(n^2) time, by something akin to `for_each(instructions) { for_each(instructions) check_this_instruction(); }`<br class=""><br class="">--<br class=""></div>Mats<br class=""></div><div class="gmail_extra"><br class=""></div></div></blockquote><br class="">This was left running overnight. It was completely locked and wasn’t making any progress.<div class=""><br class=""></div><div class="">Just scraping the compile line from the PS output and pasting it into a shell has the compiler running in about 5-8 seconds. So something about running this through my compile daemon did something weird.</div><div class=""><br class=""></div><div class="">It doesn’t happen on the same file every time. If I delete the code cache and re-run my system again, it will pick another file to lock up on, or possibly run to completion without locking up. It appears random.</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space: pre;">   </span>David</div><div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""></blockquote></div></div><blockquote type="cite" class=""><div class=""><div class="gmail_extra"><div class="gmail_quote">On 27 June 2017 at 14:45, David Barto via cfe-dev <span dir="ltr" class=""><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank" class="">cfe-dev@lists.llvm.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class="">The file isn’t very large, at 181949 bytes, and is a machine generated bit of code.</div><div class=""><br class=""></div><div class="">The strange thing is that if I run the compile by hand by cutting/pasting the line into a shell window, it compiles in seconds. I run the same code generation/compile/execution with g++ (5.1) and it never locks up.</div><div class=""><br class=""></div><div class="">Another thing, the code is compiled from a daemon that places the compiler under execution limits. If it runs for more than 30 seconds or uses more than 500MB of RAM, it should have the appropriate limit applied to it. I fork the daemon and before exec() for the compiler do the following:</div><div class=""><br class=""></div><div class=""><font face="PT Mono" class="">      struct rlimit rlim;<br class="">      rlim.rlim_cur = rlim.rlim_max = m_compile_max_seconds;<span class="m_6451577194478360902Apple-tab-span" style="white-space:pre-wrap">   </span>// 30<br class=""><br class="">      if (0 != setrlimit(RLIMIT_CPU, &rlim))<br class="">      {<br class="">        xthrow(Sys_rlimit, errno, "system", "can't bound compilation time");<br class="">      }<br class=""><br class="">      rlim.rlim_cur = rlim.rlim_max = m_compile_max_memory * (1 << 20);<span class="m_6451577194478360902Apple-tab-span" style="white-space:pre-wrap">       </span>// 500 MB<br class=""><br class="">      if (0 != setrlimit(RLIMIT_AS, &rlim))<br class="">      {<br class="">        xthrow(Sys_rlimit, errno, "system", "can't limit compiler memory usage");<br class="">      }<br class=""></font><br class=""></div><div class="">This is the compile that locked up. If anyone believes that looking at the source would make a difference, let me know and I’ll send it along.</div><div class=""><br class=""></div><div class="">  501 59880 46191     4004   0  31 10  2495004   9612 -      SN                  0 ??         0:00.02 /opt/local/libexec/llvm-4.0/<wbr class="">bin/clang++ -pipe -c -o /Users/barto/<wbr class="">UnixEnvironment/CSI/internal/<wbr class="">repo4/internal.0/code/381/1.<wbr class="">opt -O3 -Winvalid-pch -march=core2 -fstack-protector-strong -D_BSD_SOURCE -DFOR_SPARQL -D_REENTRANT -D_PTHREADS -DTHREAD -D_GLIBCXX_USE_DEPRECATED=0 -DTURBO_GENCODE=1 -DDO_CASSANDRA=0 -DMEM_LIMIT_LEAK_CHECKING -DFULL_RESERVATIONS -DGCC5 -D_DARWIN_C_SOURCE -DDARWIN -DMAC_OSX=1 -std=gnu++14 -m64 -fPIC -I/Users/barto/<wbr class="">UnixEnvironment/CSI/repo4/lib -I/Users/barto/<wbr class="">UnixEnvironment/CSI/repo4/lib/<wbr class="">cgrsrc /Users/barto/UnixEnvironment/<wbr class="">CSI/internal/repo4/internal.0/<wbr class="">code/381/1.cpp</div>  501 59881 59880     4004   0  31 10  2554904  33884 -      SN                  0 ??        <b class="">21:37.14</b> /opt/local/libexec/llvm-4.0/<wbr class="">bin/clang -cc1 -triple x86_64-apple-macosx10.10.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-<wbr class="">usage -emit-obj -disable-free -disable-llvm-verifier -discard-value-names -main-file-name 1.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 274.2 -dwarf-column-info -debugger-tuning=lldb -coverage-notes-file /Users/barto/UnixEnvironment/<wbr class="">CSI/internal/repo4/internal.0/<wbr class="">code/381/1.gcno -resource-dir /opt/local/libexec/llvm-4.0/<wbr class="">bin/../lib/clang/4.0.0 -D _BSD_SOURCE -D FOR_SPARQL -D _REENTRANT -D _PTHREADS -D THREAD -D _GLIBCXX_USE_DEPRECATED=0 -D TURBO_GENCODE=1 -D DO_CASSANDRA=0 -D MEM_LIMIT_LEAK_CHECKING -D FULL_RESERVATIONS -D GCC5 -D _DARWIN_C_SOURCE -D DARWIN -D MAC_OSX=1 -I /Users/barto/UnixEnvironment/<wbr class="">CSI/repo4/lib -I /Users/barto/<wbr class="">UnixEnvironment/CSI/repo4/lib/<wbr class="">cgrsrc -stdlib=libc++ -O3 -Winvalid-pch -std=gnu++14 -fdeprecated-macro -fdebug-compilation-dir /<wbr class="">Users/barto/UnixEnvironment/<wbr class="">CSI/repo4/bin -ferror-limit 19 -fmessage-length 0 -stack-protector 2 -fblocks -fobjc-runtime=macosx-10.10.0 -fencode-extended-block-<wbr class="">signature -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -vectorize-loops -vectorize-slp -o /Users/barto/UnixEnvironment/<wbr class="">CSI/internal/repo4/internal.0/<wbr class="">code/381/1.opt -x c++ /Users/barto/UnixEnvironment/<wbr class="">CSI/internal/repo4/internal.0/<wbr class="">code/381/1.cpp<br class=""><br class=""><div class=""><span class="m_6451577194478360902Apple-tab-span" style="white-space:pre-wrap"> </span>David</div><div class=""><br class=""></div><br class=""><div class="">David Barto<br class=""><a href="mailto:barto@cambridgesemantics.com" target="_blank" class="">barto@cambridgesemantics.com</a><br class=""><br class="">Sometimes, my best code does nothing. Most of the rest of it has bugs.<br class=""><br class=""><br class=""></div><br class=""></div><br class="">______________________________<wbr class="">_________________<br class="">
cfe-dev mailing list<br class="">
<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/<wbr class="">mailman/listinfo/cfe-dev</a><br class="">
<br class=""></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""><div apple-content-edited="true" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">David Barto<br class=""><a href="mailto:barto@cambridgesemantics.com" class="">barto@cambridgesemantics.com</a></div><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Sometimes, my best code does nothing. Most of the rest of it has bugs.<br class=""><br class=""><br class=""></div></div>
</div>
<br class=""></div></body></html>