Having realized that noreturn calls of __builtin_return are special, and other noreturn calls don't get edges to the exit block, I've realized the consequences of the logic to insert checking before noreturn and tail calls were not quite what I'd expected before. Specifically, noreturn calls other than __builtin_return don't get any checking whatsoever. Moreover, optional tail calls are only detected long after hardcfr; the logic should work for must-tail calls, but there doesn't seem to be a way to test it. Documentation has been simplified so as to remove mention of these possibilities, that can't really be relied on. Tested on x86_64-pc-linux-gnu, committed on trunk gcc/ada/ * doc/gnat_rm/security_hardening_features.rst (Control Flow Redundancy): Drop mentions of noreturn and tail calls. * gnat_rm.texi: Regenerate.