]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
LoongArch: Implement TARGET_COMPARE_VERSION_PRIORITY.
authorLulu Cheng <chenglulu@loongson.cn>
Wed, 15 Oct 2025 08:51:21 +0000 (16:51 +0800)
committerLulu Cheng <chenglulu@loongson.cn>
Tue, 11 Nov 2025 07:33:37 +0000 (15:33 +0800)
gcc/ChangeLog:

* config/loongarch/loongarch.cc
(loongarch_compare_version_priority): Returns true if DECL1
and DECL2 are versions of the same function.
(TARGET_COMPARE_VERSION_PRIORITY): Define.

gcc/config/loongarch/loongarch.cc

index edec881365540fa79adc43d9e43f4dd213586f1e..a700e177dc86a0e3986a12f2ba059b05a5e5a677 100644 (file)
@@ -12013,6 +12013,23 @@ loongarch_generate_version_dispatcher_body (void *node_p)
   return resolver_decl;
 }
 
+/* Compare priorities of two version decls. Return:
+    1: decl1 has a higher priority
+   -1: decl2 has a higher priority
+    0: decl1 and decl2 have the same priority.
+*/
+
+int
+loongarch_compare_version_priority (tree decl1, tree decl2)
+{
+  unsigned int prio1, prio2;
+  get_feature_mask_for_version (decl1, NULL, &prio1);
+  get_feature_mask_for_version (decl2, NULL, &prio2);
+
+  return prio1 == prio2 ? 0
+    : prio1 > prio2 ? 1 : -1;
+}
+
 /* Initialize the GCC target structure.  */
 #undef TARGET_ASM_ALIGNED_HI_OP
 #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
@@ -12316,6 +12333,10 @@ loongarch_generate_version_dispatcher_body (void *node_p)
 #define TARGET_GENERATE_VERSION_DISPATCHER_BODY \
   loongarch_generate_version_dispatcher_body
 
+#undef TARGET_COMPARE_VERSION_PRIORITY
+#define TARGET_COMPARE_VERSION_PRIORITY \
+  loongarch_compare_version_priority
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 
 #include "gt-loongarch.h"