[gcc(refs/vendors/AWS/heads/Arm64/gcc-7-branch)] re PR target/90724 (ICE with __sync_bool_compare_and_swap with -march=armv8.2-a+sve)

Sebastian Pop spop@gcc.gnu.org
Thu Oct 1 16:39:10 GMT 2020


https://gcc.gnu.org/g:57927b2e7e2aa9c7ae703a110cc86dfc40e7659c

commit 57927b2e7e2aa9c7ae703a110cc86dfc40e7659c
Author: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Date:   Wed Aug 21 18:34:43 2019 +0000

    re PR target/90724 (ICE with __sync_bool_compare_and_swap with -march=armv8.2-a+sve)
    
    2019-08-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
    
    gcc/
            PR target/90724
            * config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): Force y
            in reg if it fails aarch64_plus_operand predicate.
    
    (cherry picked from commit 846f78d414101dbd33ff9c370d379bae73ae0efa)

Diff:
---
 gcc/config/aarch64/aarch64.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index a0685a5ad41..9535d688ee5 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -1248,6 +1248,9 @@ aarch64_gen_compare_reg_maybe_ze (RTX_CODE code, rtx x, rtx y,
 	}
     }
 
+  if (!aarch64_plus_operand (y, y_mode))
+    y = force_reg (y_mode, y);
+
   return aarch64_gen_compare_reg (code, x, y);
 }


More information about the Gcc-cvs mailing list