<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, May 31, 2013 at 7:47 PM, Christian Thalinger <span dir="ltr">&lt;<a href="mailto:christian.thalinger@oracle.com" target="_blank">christian.thalinger@oracle.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=""><div class="h5"><br>
On May 31, 2013, at 12:41 AM, David Holmes &lt;<a href="mailto:david.holmes@oracle.com">david.holmes@oracle.com</a>&gt; wrote:<br>
<br>
&gt; I think this is mainly targetted at Volker but ...<br>
&gt;<br>
&gt; On 31/05/2013 4:32 AM, Christian Thalinger wrote:<br>
&gt;&gt;&gt; Here is what I have after merging in your new changes:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="http://cr.openjdk.java.net/~twisti/8015252/webrev/" target="_blank">http://cr.openjdk.java.net/~twisti/8015252/webrev/</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I see two problems:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 1)  It&#39;s not possible to turn off precompiled headers because of this:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; + ifeq ($(USE_CLANG), true)<br>
&gt;&gt;&gt; +   # clang has precompiled headers support by default, but the user can switch<br>
&gt;&gt;&gt; +   # it off by using &#39;USE_PRECOMPILED_HEADER=0&#39; on the compile command line.<br>
&gt;&gt;&gt; +   ifdef LP64<br>
&gt;&gt;&gt; +     USE_PRECOMPILED_HEADER=1<br>
&gt;&gt;&gt; +   else<br>
&gt;&gt;<br>
&gt;&gt; Let me rephrase that:  at least not with an environment variable.<br>
&gt;<br>
&gt; In this block:<br>
&gt;<br>
&gt; ! ifeq ($(USE_CLANG), true)<br>
&gt; !   # clang has precompiled headers support by default, but the user can switch<br>
&gt; !   # it off by using &#39;USE_PRECOMPILED_HEADER=0&#39; on the compile command line.<br>
&gt; !   ifdef LP64<br>
&gt; !     USE_PRECOMPILED_HEADER=1<br>
&gt; !   else<br>
&gt; !     # We don&#39;t support precompiled headers on 32-bit builds because there some files are<br>
&gt; !     # compiled with -fPIC while others are compiled without (see &#39;NONPIC_OBJ_FILES&#39; rules.make)<br>
&gt; !     # Clang produces an error if the PCH file was comiled with other options than the actual compilation unit.<br>
&gt; !     USE_PRECOMPILED_HEADER=0<br>
&gt; !   endif<br>
&gt;<br>
&gt; I think the LP64 case should be guarded by &quot;ifeq ($(USE_PRECOMPILED_HEADERS),)&quot;.<br>
<br>
</div></div>Yes, will change that.<br>
<div class="im"><br>
&gt;<br>
&gt; The comment &quot;on the compile command line&quot; should be &quot;on the make command line&quot; I think.<br>
<br>
</div>I removed the comment since with the above guard it works with either.<br>
<br>
&gt;<br>
&gt; Typo: comiled<br>
<br>
Fixed.<br>
<div class="im"><br>
&gt;<br>
&gt; David<br>
&gt; -----<br>
&gt;<br>
&gt;&gt; -- Chris<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 2)  If I compile with clang on Mac and run the compiler regression tests a lot of them fail but they work with a debug VM.  So it seems that one of the files is broken with optimization on (-Os or -O3; -O0 is okay).<br>

<br>
</div>I had some time yesterday to figure which file it is:  opto/loopTransform.cpp.  Compiling this one with NO_OPT makes everything to work.<br>
<br></blockquote><div><br></div><div>I can confirm this on Linux.<br></div><div><br></div><div>How did you fix it exactly? Have you added:<br><br>OPT_CFLAGS/loopTransform.o = $(OPT_CFLAGS/NOOPT)<br><br></div><div>to &#39;amd64.make&#39; and excluded &#39;loopTransform.o&#39; from precompiled header compilation in &#39;gcc.make&#39; with:<br>
<br>    PCH_FLAG/loopTransform.o = $(PCH_FLAG/NO_PCH)<br><br></div><div>That&#39;s what I&#39;ve done to solve solve the problem.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

Here are some build time numbers for my MacBook Pro:<br>
<br>
debug:<br>
------<br>
<br>
llvm-g++:<br>
<br>
real    2m28.831s<br>
user    12m58.277s<br>
sys     2m6.650s<br>
<br>
clang:<br>
<br>
real    1m28.552s<br>
user    8m4.760s<br>
sys     0m56.263s<br>
<br>
product:<br>
--------<br>
<br>
llvm-g++:<br>
<br>
real    2m16.939s<br>
user    12m32.473s<br>
sys     1m47.061s<br>
<br>
clang:<br>
<br>
real    1m35.744s<br>
user    8m50.101s<br>
sys     0m53.294s<br>
<br>
I think I know which I&#39;m going to use… :-)<br>
<br>
-- Chris<br>
<div class=""><div class="h5"><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Do you have any problems on Linux?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; -- Chris<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; David<br>
&gt;&gt;&gt;&gt;&gt; -----<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Please notice that I won&#39;t be in the office until the 3rd of June.<br>
&gt;&gt;&gt;&gt;&gt;&gt; Should you have any further change requests please feel free to edit the<br>
&gt;&gt;&gt;&gt;&gt;&gt; patch yourself if you like.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Regards,<br>
&gt;&gt;&gt;&gt;&gt;&gt; Volker<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;  -- Chris<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;      -- Chris<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; But you can say the exact same thing about the Solaris<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          gcc support.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          Btw. I just trying to resurrect this.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          -- Chris<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; David<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -----<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Once it&#39;s in we could start with the JDK forest and<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          the configure part<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; in the base repository. That would require two extra<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          change sets anyway.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; The HotSpot build currently isn&#39;t very<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          configure-agnostic anyway and<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; once the other parts have been completed, configure<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          could just pass<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; USE_CLANG=true (plus perhaps some extra variables in<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          the case we have<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; more than one clang version on the system) to the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          HotSpot build and<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; everything should work.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; As a last step we would have to test on Mac as well.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          I currently don&#39;t<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; have one at hand, but sponsors are always welcome:)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Volker<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  David H.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;      -- Chris<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;          David<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
<br>
</div></div></blockquote></div><br></div></div>