dojump: Fix gcc.dg/torture/pr91323.c for aarch64 targets
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 16 Jan 2020 19:20:18 +0000 (19:20 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Mon, 27 Jan 2020 10:53:33 +0000 (10:53 +0000)
PR91323 was fixed for x86 and sparc in target code, but aarch64
instead relies on the target-independent comparison splitters.
Since LTGT is an unordered-signalling operation, we should split
it into unordered-signalling operations for any input that could
be NaN, not just inputs that could be signalling NaNs.

2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* dojump.c (split_comparison): Use HONOR_NANS rather than
HONOR_SNANS when splitting LTGT.

gcc/ChangeLog
gcc/dojump.c

index 3541c6638f96bde3a6e18b7733409c077d8bc2da..36932a17a6d691e56863448d29e5617f70790b78 100644 (file)
@@ -1,3 +1,8 @@
+2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * dojump.c (split_comparison): Use HONOR_NANS rather than
+       HONOR_SNANS when splitting LTGT.
+
 2020-01-27  Martin Liska  <mliska@suse.cz>
 
        PR driver/91220
index 7bf578a7178317ca7365932628c17e6524b6d80a..28b47b7ab6d0ba0c88e58e08b1192fa73c620a62 100644 (file)
@@ -897,7 +897,7 @@ split_comparison (enum rtx_code code, machine_mode mode,
       return false;
     case LTGT:
       /* Do not turn a trapping comparison into a non-trapping one.  */
-      if (HONOR_SNANS (mode))
+      if (HONOR_NANS (mode))
        {
           *code1 = LT;
           *code2 = GT;