On 02/15/2011 12:35 AM, Patrick Marlier wrote:
> When I was looking at this problem of tail call optimization, I have
> found that _ITM_abortTransaction was not considered as a 'noreturn'
> function. Do you have any reason not doing this? If not, I propose to
> add ECF_NORETURN in calls.c:special_function_p().
DEF_TM_BUILTIN (BUILT_IN_TM_ABORT, "_ITM_abortTransaction",
BT_FN_INT, ATTR_TM_NORETURN_NOTHROW_LIST)
It's already marked noreturn. The big switch in special_function_p is
only there to add ECF_TM_OPS, for which we do not have an attribute.
Do you have a test case for the lack of noreturn? A trivial test here
says that it's present:
# BLOCK 6 freq:2
# PRED: 5 [0.0%] (true,exec)
Invalid sum of outgoing probabilities 0.0%
__builtin__ITM_abortTransaction (1);
# SUCC: 3 (ab,abcall)
Notice there's no fallthru edge.
r~