public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/108548] New: gcc asm goto with outputs not implicitly volatile
@ 2023-01-25 22:10 ndesaulniers at google dot com
  2023-01-25 22:17 ` [Bug middle-end/108548] " pinskia at gcc dot gnu.org
  0 siblings, 1 reply; 2+ messages in thread
From: ndesaulniers at google dot com @ 2023-01-25 22:10 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108548

            Bug ID: 108548
           Summary: gcc asm goto with outputs not implicitly volatile
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ndesaulniers at google dot com
                CC: eli.friedman at gmail dot com, foom at fuhm dot net
  Target Milestone: ---

https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Volatile mentions:

> GCC’s optimizers sometimes discard asm statements if they determine there is no need for the output variables. ... Using the volatile qualifier disables these optimizations. asm statements that have no output operands and asm goto statements, are implicitly volatile.

So what about asm goto statements that do have outputs, which GCC recently
gained support for?

Looks like I get different codegen targeting x86 at -O2 with:

```
int foo (void) {
    void *x;
    asm goto (
        "movq   %l1, %0\n\t"
        "jmp    *%0"
        :"=r"(x):::bar);
    return 0;
bar:
    return 1;
}
```
based on whether the asm goto statement is marked volatile or not.

Should asm goto statements with outputs be implicitly volatile (implying a bug
currently in GCC) or not (implying the documentation could perhaps be updated)?

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug middle-end/108548] gcc asm goto with outputs not implicitly volatile
  2023-01-25 22:10 [Bug c/108548] New: gcc asm goto with outputs not implicitly volatile ndesaulniers at google dot com
@ 2023-01-25 22:17 ` pinskia at gcc dot gnu.org
  0 siblings, 0 replies; 2+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-01-25 22:17 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108548

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |DUPLICATE

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Dup of bug 103979.

*** This bug has been marked as a duplicate of bug 103979 ***

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-01-25 22:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-25 22:10 [Bug c/108548] New: gcc asm goto with outputs not implicitly volatile ndesaulniers at google dot com
2023-01-25 22:17 ` [Bug middle-end/108548] " pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).