[cfe-dev] Inline Assembly Comments

Nirav Davé via cfe-dev cfe-dev at lists.llvm.org
Thu Jul 13 07:36:25 PDT 2017


AFAIK we retain all assembly comments by default. I just tried this locally
and it seems to work as expected with inline assembly comments should be
preserved by default.

I suspect the comment does exist, but is on the next line. Currently, the
trailing semicolon at the end of your instruction is interpreted as an EOL
so the following comment is interpreted as a full line comment (We may want
to change that). If you remove the semicolon you should find it on the same
line.

-Nirav


On Thu, Jul 13, 2017 at 7:51 AM, Manuel Rigger via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Hi,
>
> I'm investigating how inline assembly is used in C projects. While doing
> so, I found that a number of projects include comments as part of their
> inline assembly snippets. The code snippet below is an example:
>
> #include <stdint.h>
>
> uint64_t atomic_swap_long(volatile uint64_t *p, uint64_t v) {
>   __asm __volatile(
>     "xchgq %1,%0; # atomic_swap_long"
> : "+r" (v),   /* 0 */
>  "+m" (*p)); /* 1 */
>   return v;
> }
>
>
> When compiling with GCC (gcc -O1 -S) the following code is produced for
> the inline assembly snippet on my system:
>
>  #APP
> # 4 "inline-assembly-comment.c" 1
> xchgq (%rdi),%rax; # atomic_swap_long
> # 0 "" 2
> #NO_APP
>
>
> With Clang 3.8 and below, an empty line is inserted instead of the comment:
>
> #APP
> xchgq %rsi, (%rdi)
> #NO_APP
>
>
> With Clang 3.9 and 4.0, the newline disappeared but the comment is still
> not part of the assembly code.
>
> The comment is retained on the LLVM IR level:
>
> %5 = call i64 asm sideeffect "xchgq\09$1,$0; # atomic_swap_long",
> "=r,=*m,0,*m,~{dirflag},~{fpsr},~{flags}"(i64* %4, i64 %3, i64* %4)
>
>
> Is this intended? Should I open a bug report?
>
> - Manuel
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170713/f91be9de/attachment.html>


More information about the cfe-dev mailing list