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.

Reply via email to