public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] x86_64: Fix asm constraints in feraiseexcept (bug 30305)
@ 2023-04-03 15:43 Florian Weimer
  2023-04-03 15:55 ` Noah Goldstein
  0 siblings, 1 reply; 2+ messages in thread
From: Florian Weimer @ 2023-04-03 15:43 UTC (permalink / raw)
  To: libc-alpha

The divss instruction clobbers its first argument, and the constraints
need to reflect that.  Fortunately, with GCC 12, generated code does
not actually change, so there is no externally visible bug.

Tested on x86_64-linux-gnu.

Suggested-by: Jakub Jelinek <jakub@redhat.com>

---
 sysdeps/x86_64/fpu/fraiseexcpt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sysdeps/x86_64/fpu/fraiseexcpt.c b/sysdeps/x86_64/fpu/fraiseexcpt.c
index 924eed96a9..e7430a4158 100644
--- a/sysdeps/x86_64/fpu/fraiseexcpt.c
+++ b/sysdeps/x86_64/fpu/fraiseexcpt.c
@@ -33,7 +33,7 @@ __feraiseexcept (int excepts)
       /* One example of an invalid operation is 0.0 / 0.0.  */
       float f = 0.0;
 
-      __asm__ __volatile__ ("divss %0, %0 " : : "x" (f));
+      __asm__ __volatile__ ("divss %0, %0 " : "+x" (f));
       (void) &f;
     }
 
@@ -43,7 +43,7 @@ __feraiseexcept (int excepts)
       float f = 1.0;
       float g = 0.0;
 
-      __asm__ __volatile__ ("divss %1, %0" : : "x" (f), "x" (g));
+      __asm__ __volatile__ ("divss %1, %0" : "+x" (f) : "x" (g));
       (void) &f;
     }
 

base-commit: ac2a14343e81098c196cef5d67b52e440c05c230


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

* Re: [PATCH] x86_64: Fix asm constraints in feraiseexcept (bug 30305)
  2023-04-03 15:43 [PATCH] x86_64: Fix asm constraints in feraiseexcept (bug 30305) Florian Weimer
@ 2023-04-03 15:55 ` Noah Goldstein
  0 siblings, 0 replies; 2+ messages in thread
From: Noah Goldstein @ 2023-04-03 15:55 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha

On Mon, Apr 3, 2023 at 10:43 AM Florian Weimer via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> The divss instruction clobbers its first argument, and the constraints
> need to reflect that.  Fortunately, with GCC 12, generated code does
> not actually change, so there is no externally visible bug.
>
> Tested on x86_64-linux-gnu.
>
> Suggested-by: Jakub Jelinek <jakub@redhat.com>
>
> ---
>  sysdeps/x86_64/fpu/fraiseexcpt.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sysdeps/x86_64/fpu/fraiseexcpt.c b/sysdeps/x86_64/fpu/fraiseexcpt.c
> index 924eed96a9..e7430a4158 100644
> --- a/sysdeps/x86_64/fpu/fraiseexcpt.c
> +++ b/sysdeps/x86_64/fpu/fraiseexcpt.c
> @@ -33,7 +33,7 @@ __feraiseexcept (int excepts)
>        /* One example of an invalid operation is 0.0 / 0.0.  */
>        float f = 0.0;
>
> -      __asm__ __volatile__ ("divss %0, %0 " : : "x" (f));
> +      __asm__ __volatile__ ("divss %0, %0 " : "+x" (f));
>        (void) &f;
>      }
>
> @@ -43,7 +43,7 @@ __feraiseexcept (int excepts)
>        float f = 1.0;
>        float g = 0.0;
>
> -      __asm__ __volatile__ ("divss %1, %0" : : "x" (f), "x" (g));
> +      __asm__ __volatile__ ("divss %1, %0" : "+x" (f) : "x" (g));
>        (void) &f;
>      }
>
>
> base-commit: ac2a14343e81098c196cef5d67b52e440c05c230
>

LGTM.

Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com

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

end of thread, other threads:[~2023-04-03 15:55 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-03 15:43 [PATCH] x86_64: Fix asm constraints in feraiseexcept (bug 30305) Florian Weimer
2023-04-03 15:55 ` Noah Goldstein

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).