clang O3/O2 error for Linpack with NEON instructions
<p>I am using code Neonlinpack code from,
[<a href="http://www.roylongbottom.org.uk/Raspberry_Pi_Benchmarks.zip][1]" rel="nofollow">http://www.roylongbottom.org.uk/Raspberry_Pi_Benchmarks.zip][1]</a></p>

<p>When I compile it with clang without any optimization flags, it runs OK. But when I use O3/O2 flags in command,</p>

<pre><code>clang -target armv7a-linux-gnueabihf -mfpu=neon -mfloat-abi=hard linpackneon.c cpuidc.c -O3 -o linpackneon
</code></pre>

<p>I get the following errors</p>

<pre><code>In file included from cpuidc.c:13:
In file included from /usr/include/math.h:426:
/usr/include/bits/mathinline.h:756:25: error: invalid output constraint '=&amp;q' in
      asm
                    : "=t" (__value), "=&amp;q" (__ignore), "=m" (__cwtmp),       \
                                      ^
/usr/include/bits/mathinline.h:756:25: error: invalid output constraint '=&amp;q' in
      asm
/usr/include/bits/mathinline.h:756:25: error: invalid output constraint '=&amp;q' in
      asm
/usr/include/bits/mathinline.h:774:25: error: invalid output constraint '=&amp;q' in
      asm
                    : "=t" (__value), "=&amp;q" (__ignore), "=m" (__cwtmp),       \
                                      ^
/usr/include/bits/mathinline.h:774:25: error: invalid output constraint '=&amp;q' in
      asm
/usr/include/bits/mathinline.h:774:25: error: invalid output constraint '=&amp;q' in
      asm
/usr/include/bits/mathinline.h:881:3: error: unknown register name 'st' in asm
  __lrint_code;
  ^
/usr/include/bits/mathinline.h:876:40: note: expanded from macro '__lrint_code'
     : "=m" (__lrintres) : "t" (__x) : "st");
</code></pre>

<p>What is the reason behind these errors. I do not encounter such errors with GCC. </p>