https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117665
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #9) > Actually I think a better way of fixing this is adding nothrow and leaf > attributes to __builtin_aarch64_im_lane_boundsi . Since this function will > either error out or be folded into nothing. > Plus this will help out basic block handling anyways. diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc index b860e22f01f..1bdc828d76e 100644 --- a/gcc/config/aarch64/aarch64-builtins.cc +++ b/gcc/config/aarch64/aarch64-builtins.cc @@ -1482,10 +1482,12 @@ aarch64_init_simd_builtin_functions (bool called_from_pragma) size_type_node, intSI_type_node, NULL); + tree attrs = aarch64_add_attribute ("nothrow", NULL_TREE); + attrs = aarch64_add_attribute ("leaf", attrs); aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_LANE_CHECK] = aarch64_general_add_builtin ("__builtin_aarch64_im_lane_boundsi", lane_check_fpr, - AARCH64_SIMD_BUILTIN_LANE_CHECK); + AARCH64_SIMD_BUILTIN_LANE_CHECK, attrs); } for (i = 0; i < ARRAY_SIZE (aarch64_simd_builtin_data); i++, fcode++) Better anyways.