https://gcc.gnu.org/bugzilla/show_bug.cgi?id=13563
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |msebor at gcc dot gnu.org Known to fail| |3.3, 4.5.3, 4.8.3, 4.9.3, | |5.3.0, 6.3.0, 7.0 --- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> --- No progress in GCC 7.0: $ cat t.c && gcc -O2 -S -Wall -Wextra -Wpedantic -Wshadow -fdump-tree-optimized=/dev/stdout -o/dev/stdout t.c void foo (int); void bar (int a) { if (a) foo (1); else foo (0); } void baz (int a) { foo (!!a); } .file "t.c" ;; Function bar (bar, funcdef_no=0, decl_uid=1797, cgraph_uid=0, symbol_order=0) bar (int a) { <bb 2> [100.00%]: if (a_2(D) != 0) goto <bb 3>; [46.00%] else goto <bb 4>; [54.00%] <bb 3> [46.00%]: foo (1); [tail call] goto <bb 5>; [100.00%] <bb 4> [54.00%]: foo (0); [tail call] <bb 5> [100.00%]: return; } .text .p2align 4,,15 .globl bar .type bar, @function bar: .LFB0: .cfi_startproc testl %edi, %edi jne .L4 xorl %edi, %edi jmp foo .p2align 4,,10 .p2align 3 .L4: movl $1, %edi jmp foo .cfi_endproc .LFE0: .size bar, .-bar ;; Function baz (baz, funcdef_no=1, decl_uid=1800, cgraph_uid=1, symbol_order=1) baz (int a) { _Bool _1; int _2; <bb 2> [100.00%]: _1 = a_3(D) != 0; _2 = (int) _1; foo (_2); [tail call] return; } .p2align 4,,15 .globl baz .type baz, @function baz: .LFB1: .cfi_startproc testl %edi, %edi setne %dil movzbl %dil, %edi jmp foo .cfi_endproc .LFE1: .size baz, .-baz .ident "GCC: (GNU) 7.0.0 20170110 (experimental)" .section .note.GNU-stack,"",@progbits