https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124056
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
It looks like generated RTL is wrong. We start from:
<bb 2> [local count: 1073741824]:
__asm__ __volatile__ goto("insn" : "=@ccz" err_3 : : : "lab" lab);
<bb 3> [local count: 536870912]:
if (err_3 != 0)
goto <bb 4>; [0.52%]
else
goto <bb 7>; [99.48%]
...
lab:
if (err_3 != 0)
goto <bb 6>; [0.52%]
else
goto <bb 7>; [99.48%]
but the compiler forgets to initialize r100:QI in BB7:
;;
;; Full RTL generated for this function:
;;
1: NOTE_INSN_DELETED
;; basic block 2, loop depth 0, count 1073741824 (estimated locally, freq
1.0000), maybe hot
;; prev block 0, next block 4, flags: (NEW, REACHABLE, RTL, MODIFIED, VISITED)
;; pred: ENTRY
7: NOTE_INSN_BASIC_BLOCK 2
2: NOTE_INSN_FUNCTION_BEG
11: flags:CC=asm_operands
;; succ: 7
;; 4
;; basic block 4, loop depth 0, count 536870912 (estimated locally, freq
0.5000), maybe hot
;; prev block 2, next block 6, flags: (NEW, REACHABLE, RTL, MODIFIED, VISITED)
;; pred: 2
43: NOTE_INSN_BASIC_BLOCK 4
10: r100:QI=flags:CCZ==0
9: r98:QI=r100:QI
15: flags:CCZ=cmp(r98:QI,0)
...
;; basic block 7, loop depth 0, count 536870912 (estimated locally, freq
0.5000), maybe hot
;; prev block 6, next block 8, flags: (NEW, REACHABLE, RTL, MODIFIED, VISITED)
;; pred: 2
21: L21:
22: NOTE_INSN_BASIC_BLOCK 7
13: r98:QI=r100:QI
23: flags:CCZ=cmp(r98:QI,0)
Please note that r100:QI is uninitialized in BB 7.