Fix fnspec of math builtins
* builtin-attrs.def (STRERRNOC): New macro. (STRERRNOP): New macro. (ATTR_ERRNOCONST_NOTHROW_LEAF_LIST): New attr list. (ATTR_ERRNOPURE_NOTHROW_LEAF_LIST): New attr list. * builtins.def (ATTR_MATHFN_ERRNO): Use ATTR_ERRNOCONST_NOTHROW_LEAF_LIST. (ATTR_MATHFN_FPROUNDING_ERRNO): Use ATTR_ERRNOCONST_NOTHROW_LEAF_LIST or ATTR_ERRNOPURE_NOTHROW_LEAF_LIST.
This commit is contained in:
parent
e94de06fd6
commit
0365b9e4af
|
@ -67,6 +67,8 @@ DEF_ATTR_FOR_INT (6)
|
|||
DEF_ATTR_TREE_LIST (ATTR_LIST_##ENUM, ATTR_NULL, \
|
||||
ATTR_##ENUM, ATTR_NULL)
|
||||
DEF_ATTR_FOR_STRING (STR1, "1 ")
|
||||
DEF_ATTR_FOR_STRING (STRERRNOC, ".C")
|
||||
DEF_ATTR_FOR_STRING (STRERRNOP, ".P")
|
||||
#undef DEF_ATTR_FOR_STRING
|
||||
|
||||
/* Construct a tree for a list of two integers. */
|
||||
|
@ -136,6 +138,10 @@ DEF_ATTR_TREE_LIST (ATTR_CONST_NOTHROW_LIST, ATTR_CONST, \
|
|||
ATTR_NULL, ATTR_NOTHROW_LIST)
|
||||
DEF_ATTR_TREE_LIST (ATTR_CONST_NOTHROW_LEAF_LIST, ATTR_CONST, \
|
||||
ATTR_NULL, ATTR_NOTHROW_LEAF_LIST)
|
||||
DEF_ATTR_TREE_LIST (ATTR_ERRNOCONST_NOTHROW_LEAF_LIST, ATTR_FNSPEC,\
|
||||
ATTR_LIST_STRERRNOC, ATTR_NOTHROW_LEAF_LIST)
|
||||
DEF_ATTR_TREE_LIST (ATTR_ERRNOPURE_NOTHROW_LEAF_LIST, ATTR_FNSPEC,\
|
||||
ATTR_LIST_STRERRNOP, ATTR_NOTHROW_LEAF_LIST)
|
||||
DEF_ATTR_TREE_LIST (ATTR_PURE_NOTHROW_LIST, ATTR_PURE, \
|
||||
ATTR_NULL, ATTR_NOTHROW_LIST)
|
||||
DEF_ATTR_TREE_LIST (ATTR_PURE_NOTHROW_LEAF_LIST, ATTR_PURE, \
|
||||
|
|
|
@ -254,7 +254,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
`errno'. If !flag_errno_math they are instead "const". */
|
||||
#undef ATTR_MATHFN_ERRNO
|
||||
#define ATTR_MATHFN_ERRNO (flag_errno_math ? \
|
||||
ATTR_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
|
||||
ATTR_ERRNOCONST_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
|
||||
|
||||
/* Define an attribute list for math functions that are normally
|
||||
"const" but if flag_rounding_math is set they are instead "pure".
|
||||
|
@ -271,7 +271,8 @@ along with GCC; see the file COPYING3. If not see
|
|||
"const" depending on whether we care about FP rounding. */
|
||||
#undef ATTR_MATHFN_FPROUNDING_ERRNO
|
||||
#define ATTR_MATHFN_FPROUNDING_ERRNO (flag_errno_math ? \
|
||||
ATTR_NOTHROW_LEAF_LIST : ATTR_MATHFN_FPROUNDING)
|
||||
(flag_rounding_math ? ATTR_ERRNOPURE_NOTHROW_LEAF_LIST \
|
||||
: ATTR_ERRNOCONST_NOTHROW_LEAF_LIST) : ATTR_MATHFN_FPROUNDING)
|
||||
|
||||
/* Define an attribute list for math functions that need to mind FP
|
||||
rounding, but because they store into memory they are never "const"
|
||||
|
|
Loading…
Reference in New Issue