The label is for branching *around* a block calling a noreturn function. See also the open-coded version which calls emit_cmp_and_jump_insns with EQ. All ports defining it seem ok. They'd notice very quickly, no code compiled with -fstack-protector code requiring stack-protection would work.
Also, there's a corresponding bug in the prediction set in function.c:stack_protect_epilogue; the predction is set as per the documentation. However, I can't see how to fix it, as there doesn't seem to be any predict.def value for the opposite, to fix parameters in the predict_insn_def call, i.e. to "branch around a basic block calling a noreturn function; predict as taken". Help? I'll install this patch as obvious. gcc: * doc/md.texi (stack_protect_test): Remove negation of branch to label. Index: doc/md.texi =================================================================== --- doc/md.texi (revision 187558) +++ doc/md.texi (working copy) @@ -6136,7 +6136,7 @@ If this pattern is not defined, then a p This pattern, if defined, compares a @code{ptr_mode} value from the memory in operand 1 with the memory in operand 0 without leaving the value in a register afterward and branches to operand 2 if the values -weren't equal. +were equal. If this pattern is not defined, then a plain compare pattern and conditional branch pattern is used. brgds, H-P