aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-08-10 14:19:38 +0200
committerRichard Biener <rguenther@suse.de>2023-08-10 15:29:58 +0200
commitb0894a12e9e04dea26ebb424629564a5cc8c2418 (patch)
tree099a8f9721d6b555b1885b8eb730c1cb4885fd4b
parentda7b43fb0224cdce5157a747fdd6975b7c81c6cf (diff)
downloadgcc-b0894a12e9e04dea26ebb424629564a5cc8c2418.zip
gcc-b0894a12e9e04dea26ebb424629564a5cc8c2418.tar.gz
gcc-b0894a12e9e04dea26ebb424629564a5cc8c2418.tar.bz2
Make ISEL used internal functions const/nothrow where appropriate
Both .VEC_SET and .VEC_EXTACT and the various .VCOND internal functions are operating on registers only and they are not supposed to raise any exceptions. The following makes them const/nothrow. I've verified this avoids useless SSA updates in ISEL. * internal-fn.def (VCOND, VCONDU, VCONDEQ, VCOND_MASK, VEC_SET, VEC_EXTRACT): Make ECF_CONST | ECF_NOTHROW.
-rw-r--r--gcc/internal-fn.def16
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def
index bf6825c..b3c410f 100644
--- a/gcc/internal-fn.def
+++ b/gcc/internal-fn.def
@@ -209,13 +209,15 @@ DEF_INTERNAL_OPTAB_FN (STORE_LANES, ECF_CONST, vec_store_lanes, store_lanes)
DEF_INTERNAL_OPTAB_FN (MASK_STORE_LANES, 0,
vec_mask_store_lanes, mask_store_lanes)
-DEF_INTERNAL_OPTAB_FN (VCOND, 0, vcond, vec_cond)
-DEF_INTERNAL_OPTAB_FN (VCONDU, 0, vcondu, vec_cond)
-DEF_INTERNAL_OPTAB_FN (VCONDEQ, 0, vcondeq, vec_cond)
-DEF_INTERNAL_OPTAB_FN (VCOND_MASK, 0, vcond_mask, vec_cond_mask)
-
-DEF_INTERNAL_OPTAB_FN (VEC_SET, 0, vec_set, vec_set)
-DEF_INTERNAL_OPTAB_FN (VEC_EXTRACT, 0, vec_extract, vec_extract)
+DEF_INTERNAL_OPTAB_FN (VCOND, ECF_CONST | ECF_NOTHROW, vcond, vec_cond)
+DEF_INTERNAL_OPTAB_FN (VCONDU, ECF_CONST | ECF_NOTHROW, vcondu, vec_cond)
+DEF_INTERNAL_OPTAB_FN (VCONDEQ, ECF_CONST | ECF_NOTHROW, vcondeq, vec_cond)
+DEF_INTERNAL_OPTAB_FN (VCOND_MASK, ECF_CONST | ECF_NOTHROW,
+ vcond_mask, vec_cond_mask)
+
+DEF_INTERNAL_OPTAB_FN (VEC_SET, ECF_CONST | ECF_NOTHROW, vec_set, vec_set)
+DEF_INTERNAL_OPTAB_FN (VEC_EXTRACT, ECF_CONST | ECF_NOTHROW,
+ vec_extract, vec_extract)
DEF_INTERNAL_OPTAB_FN (LEN_STORE, 0, len_store, len_store)
DEF_INTERNAL_OPTAB_FN (MASK_LEN_STORE, 0, mask_len_store, mask_len_store)