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~