[Bug target/15896] Strange behaviour for inline assembler input constraint

2019-01-03 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15896

Eric Gallager  changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |WORKSFORME

--- Comment #4 from Eric Gallager  ---
(In reply to Eric Gallager from comment #3)
> (In reply to Eric Gallager from comment #2)
> > (In reply to Andrew Pinski from comment #1)
> > > I don't know Ada that well (in terms of promotions and types) but the
> > > following C code produces the 
> > > same ICE so I might assume the issue is that My_Type+constant is being
> > > promoted to unsigned long 
> > > long or something along that line:
> > > int f()
> > > {
> > > unsigned long long cu32 = 1;
> > >   asm("%0"::"a"(cu32));
> > > }
> > 
> > Does this still happen with newer versions of GCC? I can't reproduce with
> > gcc 7, but I'm assuming that's due to target differences; I get different
> > messages depending on 32-bit or 64-bit, but neither of them are an ICE:
> > 
> > $ gcc -c -m32 15896.c
> > 15896.c: In function 'f':
> > 15896.c:4:3: error: inconsistent operand constraints in an 'asm'
> >asm("%0"::"a"(cu32));
> >^~~
> > $ gcc -c -m64 15896.c
> > 15896.c:4:Junk character 37 (%).
> > 15896.c:4:Rest of line ignored. 1st junk character valued 114 (r).
> > $
> 
> WAITING on a reply

No reply; closing.

[Bug target/15896] Strange behaviour for inline assembler input constraint

2018-10-02 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15896

Eric Gallager  changed:

   What|Removed |Added

 Status|NEW |WAITING

--- Comment #3 from Eric Gallager  ---
(In reply to Eric Gallager from comment #2)
> (In reply to Andrew Pinski from comment #1)
> > I don't know Ada that well (in terms of promotions and types) but the
> > following C code produces the 
> > same ICE so I might assume the issue is that My_Type+constant is being
> > promoted to unsigned long 
> > long or something along that line:
> > int f()
> > {
> > unsigned long long cu32 = 1;
> >   asm("%0"::"a"(cu32));
> > }
> 
> Does this still happen with newer versions of GCC? I can't reproduce with
> gcc 7, but I'm assuming that's due to target differences; I get different
> messages depending on 32-bit or 64-bit, but neither of them are an ICE:
> 
> $ gcc -c -m32 15896.c
> 15896.c: In function 'f':
> 15896.c:4:3: error: inconsistent operand constraints in an 'asm'
>asm("%0"::"a"(cu32));
>^~~
> $ gcc -c -m64 15896.c
> 15896.c:4:Junk character 37 (%).
> 15896.c:4:Rest of line ignored. 1st junk character valued 114 (r).
> $

WAITING on a reply

[Bug target/15896] Strange behaviour for inline assembler input constraint

2018-07-02 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15896

Eric Gallager  changed:

   What|Removed |Added

 CC||egallager at gcc dot gnu.org,
   ||pinskia at gcc dot gnu.org

--- Comment #2 from Eric Gallager  ---
(In reply to Andrew Pinski from comment #1)
> I don't know Ada that well (in terms of promotions and types) but the
> following C code produces the 
> same ICE so I might assume the issue is that My_Type+constant is being
> promoted to unsigned long 
> long or something along that line:
> int f()
> {
> unsigned long long cu32 = 1;
>   asm("%0"::"a"(cu32));
> }

Does this still happen with newer versions of GCC? I can't reproduce with gcc
7, but I'm assuming that's due to target differences; I get different messages
depending on 32-bit or 64-bit, but neither of them are an ICE:

$ gcc -c -m32 15896.c
15896.c: In function 'f':
15896.c:4:3: error: inconsistent operand constraints in an 'asm'
   asm("%0"::"a"(cu32));
   ^~~
$ gcc -c -m64 15896.c
15896.c:4:Junk character 37 (%).
15896.c:4:Rest of line ignored. 1st junk character valued 114 (r).
$