[cfe-dev] Rendering of variable declarations specifying register allocation

Matthew Fernandez matthew.fernandez at gmail.com
Tue Sep 30 18:08:14 PDT 2014


OK, will do. While we're on the topic, Clang also seems to remove bracketing around parameters to 
inline asm:

  $ cat foo.c
  void foo() {
    int i = 0;
    asm ("mov %%eax, %%ebx"::"a"(i));
  }
  $ clang -c foo.c
  $ clang -cc1 -ast-print foo.c | tee bar.c
  void foo() {
      int i = 0;
      asm ("mov %%eax, %%ebx" :  : "a" i);
  }
  $ clang -c bar.c
  bar.c:3:38: error: expected '(' after 'asm operand'
      asm ("mov %%eax, %%ebx" :  : "a" i);
                                       ^
  1 error generated.

To me, this is indicative of a second bug. Should I file this one separately as well? My hesitancy 
is because I'm not sure how robust this functionality is intended to be. Should the output of 
-ast-print always be parseable as input to Clang? I would think yes.

On 01/10/14 09:33, Renato Golin wrote:
> Possibly. Opening a bug is definitely worth, though, at least to investigate.
>
> Cheers,
> Renato
>
> On 30 Sep 2014 22:48, "Matthew Fernandez" <matthew.fernandez at gmail.com
> <mailto:matthew.fernandez at gmail.com>> wrote:
>
>     Thanks, Renato. So this is definitely a bug? If so, I'll open a new one at
>     http://llvm.org/bugs/. Just wanted to make sure it wasn't intended behaviour.
>
>     On 01/10/14 06:51, Renato Golin wrote:
>
>         On 30 September 2014 02:57, Matthew Fernandez
>         <matthew.fernandez at gmail.com <mailto:matthew.fernandez at gmail.com>> wrote:
>
>             This seems to be independent of the target platform; at least I get similar
>             results for ARM and x86. What is the intended behaviour here?
>
>
>         Current tip does:
>
>         void foo() {
>               register int x asm("eax");
>         }
>
>         AND
>
>         void foo() {
>               register int x = 1 asm("eax");
>         }
>
>         The first looks correct, but the second looks weird. I don't know
>         what's the expected behaviour, or if this output can be regarded as
>         valid code (I'm guessing not), so in theory, it doesn't matter much.
>         But it does seem an easy fix for this particular case, I think.
>
>         cheers,
>         --renato
>



More information about the cfe-dev mailing list