Pushed to r14-11275 and r15-7386.

在 2025/1/23 上午11:44, Lulu Cheng 写道:
        PR target/118561

gcc/ChangeLog:

        * config/loongarch/loongarch-builtins.cc
        (loongarch_expand_builtin_lsx_test_branch):
        NULL_RTX will not be returned when an error is detected.
        (loongarch_expand_builtin): Likewise.

gcc/testsuite/ChangeLog:

        * gcc.target/loongarch/pr118561.c: New test.

---
  gcc/config/loongarch/loongarch-builtins.cc    | 7 +++++--
  gcc/testsuite/gcc.target/loongarch/pr118561.c | 9 +++++++++
  2 files changed, 14 insertions(+), 2 deletions(-)
  create mode 100644 gcc/testsuite/gcc.target/loongarch/pr118561.c

diff --git a/gcc/config/loongarch/loongarch-builtins.cc 
b/gcc/config/loongarch/loongarch-builtins.cc
index 92d995a916a..1849b35357c 100644
--- a/gcc/config/loongarch/loongarch-builtins.cc
+++ b/gcc/config/loongarch/loongarch-builtins.cc
@@ -2996,7 +2996,10 @@ loongarch_expand_builtin_lsx_test_branch (enum insn_code 
icode, tree exp)
      ops[1].value = force_reg (ops[1].mode, ops[1].value);
if ((cbranch = maybe_gen_insn (icode, 3, ops)) == NULL_RTX)
-    error ("failed to expand built-in function");
+    {
+      error ("failed to expand built-in function");
+      return const0_rtx;
+    }
cmp_result = gen_reg_rtx (SImode); @@ -3036,7 +3039,7 @@ loongarch_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
      {
        error_at (EXPR_LOCATION (exp),
                "built-in function %qD is not enabled", fndecl);
-      return target;
+      return target ? target : const0_rtx;
      }
switch (d->builtin_type)
diff --git a/gcc/testsuite/gcc.target/loongarch/pr118561.c 
b/gcc/testsuite/gcc.target/loongarch/pr118561.c
new file mode 100644
index 00000000000..81a776eada3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/pr118561.c
@@ -0,0 +1,9 @@
+/* PR target/118561: ICE with -mfpu=none */
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=loongarch64 -mfpu=none" } */
+
+int
+test (void)
+{
+  return __builtin_loongarch_movfcsr2gr (0); /* { dg-error "built-in function 
'__builtin_loongarch_movfcsr2gr' is not enabled" } */
+}

Reply via email to