<div dir="ltr">You only need to add -no-integrated-as to compile actions like this one that are outputting invalid assembly. If Clang thinks it is going to use the integrated assembler, it will parse the inline assembly to validate that it&#39;s well-formed so we don&#39;t get assembler errors during codegen.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 13, 2015 at 7:12 PM, Jovi Zhangwei <span dir="ltr">&lt;<a href="mailto:jovi.zhangwei@gmail.com" target="_blank">jovi.zhangwei@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Thanks for help, it works.<br>
<br>
After strace clang, I found clang 3.4 don&#39;t invoke external assembler<br>
when compile files,<br>
is this means clang 3.4 use integrated assembler? then why clang 3.4<br>
don&#39;t failure when compile that kernel file?<br>
<br>
Actually what I wish in my case is clang 3.6 don&#39;t invoke external<br>
assembler, just like clang 3.4.<br>
<br>
Thank you.<br>
<div class="HOEnZb"><div class="h5"><br>
On Fri, Feb 13, 2015 at 6:09 PM, Reid Kleckner &lt;<a href="mailto:rnk@google.com">rnk@google.com</a>&gt; wrote:<br>
&gt; Add -no-integrated-as. This is a known abuse of the compiler to output<br>
&gt; something other than assembly:<br>
&gt; <a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-February/070522.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-February/070522.html</a><br>
&gt;<br>
&gt; On Fri, Feb 13, 2015 at 5:59 PM, Jovi Zhangwei &lt;<a href="mailto:jovi.zhangwei@gmail.com">jovi.zhangwei@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi,<br>
&gt;&gt;<br>
&gt;&gt; I just tried clang 3.6 compile on one file in Linux kernel, it failed,<br>
&gt;&gt; but clang 3.4 can success.<br>
&gt;&gt; (I didn&#39;t apply any patch on clang source code, it&#39;s from clang repo<br>
&gt;&gt; 36 release tag)<br>
&gt;&gt;<br>
&gt;&gt; Anyone can help this would be much appreciated.<br>
&gt;&gt;<br>
&gt;&gt; In Linux kernel:<br>
&gt;&gt;<br>
&gt;&gt; jovi@ubuntu:~/linux$ make CC=clang kernel/sched/core.o<br>
&gt;&gt;<br>
&gt;&gt;   CHK     include/config/kernel.release<br>
&gt;&gt;<br>
&gt;&gt;   CHK     include/generated/uapi/linux/version.h<br>
&gt;&gt;<br>
&gt;&gt;   CHK     include/generated/utsrelease.h<br>
&gt;&gt;<br>
&gt;&gt;   CC      kernel/bounds.s<br>
&gt;&gt;<br>
&gt;&gt; clang: warning: optimization flag &#39;-fno-delete-null-pointer-checks&#39; is<br>
&gt;&gt; not supported<br>
&gt;&gt;<br>
&gt;&gt; kernel/bounds.c:18:2: error: unexpected token at start of statement<br>
&gt;&gt;<br>
&gt;&gt;         DEFINE(NR_PAGEFLAGS, __NR_PAGEFLAGS);<br>
&gt;&gt;<br>
&gt;&gt;         ^<br>
&gt;&gt;<br>
&gt;&gt; include/linux/kbuild.h:5:25: note: expanded from macro &#39;DEFINE&#39;<br>
&gt;&gt;<br>
&gt;&gt;         asm volatile(&quot;\n-&gt;&quot; #sym &quot; %0 &quot; #val : : &quot;i&quot; (val))<br>
&gt;&gt;<br>
&gt;&gt;                         ^<br>
&gt;&gt;<br>
&gt;&gt; &lt;inline asm&gt;:2:1: note: instantiated into assembly here<br>
&gt;&gt;<br>
&gt;&gt; -&gt;NR_PAGEFLAGS $25 __NR_PAGEFLAGS<br>
&gt;&gt;<br>
&gt;&gt; ^<br>
&gt;&gt;<br>
&gt;&gt; kernel/bounds.c:19:2: error: unexpected token at start of statement<br>
&gt;&gt;<br>
&gt;&gt;         DEFINE(MAX_NR_ZONES, __MAX_NR_ZONES);<br>
&gt;&gt;<br>
&gt;&gt;         ^<br>
&gt;&gt;<br>
&gt;&gt; include/linux/kbuild.h:5:25: note: expanded from macro &#39;DEFINE&#39;<br>
&gt;&gt;<br>
&gt;&gt;         asm volatile(&quot;\n-&gt;&quot; #sym &quot; %0 &quot; #val : : &quot;i&quot; (val))<br>
&gt;&gt;<br>
&gt;&gt;                         ^<br>
&gt;&gt;<br>
&gt;&gt; &lt;inline asm&gt;:2:1: note: instantiated into assembly here<br>
&gt;&gt;<br>
&gt;&gt; -&gt;MAX_NR_ZONES $4 __MAX_NR_ZONES<br>
&gt;&gt;<br>
&gt;&gt; ^<br>
&gt;&gt;<br>
&gt;&gt; kernel/bounds.c:21:2: error: unexpected token at start of statement<br>
&gt;&gt;<br>
&gt;&gt;         DEFINE(NR_CPUS_BITS, ilog2(CONFIG_NR_CPUS));<br>
&gt;&gt;<br>
&gt;&gt;         ^<br>
&gt;&gt;<br>
&gt;&gt; include/linux/kbuild.h:5:25: note: expanded from macro &#39;DEFINE&#39;<br>
&gt;&gt;<br>
&gt;&gt;         asm volatile(&quot;\n-&gt;&quot; #sym &quot; %0 &quot; #val : : &quot;i&quot; (val))<br>
&gt;&gt;<br>
&gt;&gt;                         ^<br>
&gt;&gt;<br>
&gt;&gt; &lt;inline asm&gt;:2:1: note: instantiated into assembly here<br>
&gt;&gt;<br>
&gt;&gt; -&gt;NR_CPUS_BITS $8 ilog2(CONFIG_NR_CPUS)<br>
&gt;&gt;<br>
&gt;&gt; ^<br>
&gt;&gt;<br>
&gt;&gt; kernel/bounds.c:23:2: error: unexpected token at start of statement<br>
&gt;&gt;<br>
&gt;&gt;         DEFINE(SPINLOCK_SIZE, sizeof(spinlock_t));<br>
&gt;&gt;<br>
&gt;&gt;         ^<br>
&gt;&gt;<br>
&gt;&gt; include/linux/kbuild.h:5:25: note: expanded from macro &#39;DEFINE&#39;<br>
&gt;&gt;<br>
&gt;&gt;         asm volatile(&quot;\n-&gt;&quot; #sym &quot; %0 &quot; #val : : &quot;i&quot; (val))<br>
&gt;&gt;<br>
&gt;&gt;                         ^<br>
&gt;&gt;<br>
&gt;&gt; &lt;inline asm&gt;:2:1: note: instantiated into assembly here<br>
&gt;&gt;<br>
&gt;&gt; -&gt;SPINLOCK_SIZE $4 sizeof(spinlock_t)<br>
&gt;&gt;<br>
&gt;&gt; ^<br>
&gt;&gt;<br>
&gt;&gt; 4 errors generated.<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; cfe-dev mailing list<br>
&gt;&gt; <a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
&gt;&gt; <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div>