https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101941
Aldy Hernandez <aldyh at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |aldyh at gcc dot gnu.org --- Comment #11 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #8) > BTW, this one seems to have regressed with > r12-2591-g2e96b5f14e4025691b57d2301d71aa6092ed44bc There are 2 threads, both in ethread: a.c.034t.ethread: [1] Registering jump thread: (4, 5) incoming edge; (5, 6) normal (6, 7) nocopy; a.c.034t.ethread: [2] Registering jump thread: (4, 6) incoming edge; (6, 8) nocopy; Both are correct. We're basically eliding subsequent checks for the same thing: =========== BB 4 ============ Imports: p_size_14 Exports: p_size_14 <bb 4> : p_size_14 = __builtin_object_size (hash_subkey_8(D), 0); if (p_size_14 <= 15) goto <bb 5>; [33.00%] else goto <bb 6>; [67.00%] 4->5 (T) p_size_14 : size_t [0, 15] 4->6 (F) p_size_14 : size_t [16, +INF] =========== BB 5 ============ p_size_14 size_t [0, 15] <bb 5> : __write_overflow (); =========== BB 6 ============ Imports: p_size_14 Exports: p_size_14 p_size_14 long unsigned int VARYING <bb 6> : if (p_size_14 <= 15) goto <bb 7>; [0.04%] else goto <bb 8>; [99.96%]