https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104236

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
On the gimple level we have:
  if (_2 == 0)
    goto <bb 4>; [10.00%]
  else
    goto <bb 3>; [90.00%]

  <bb 3> [local count: 966367639]:
  _6 = MEM[(struct media_request
*)media_request_object_complete_obj.0_1].state;
  if (_6 != 0)
    goto <bb 5>; [10.00%]
  else
    goto <bb 6>; [90.00%]

  <bb 4> [local count: 107374184]:
  __asm__ __volatile__(".byte 0x0f, 0x0b");
  __asm__ __volatile__(".Lreachable%=:
        .pushsection .discard.reachable
        .long .Lreachable%= - .
        .popsection
        " :  :  : "memory");
  _raw_spin_unlock_irqrestore (pretmp_46, 0); [tail call]
  goto <bb 10>; [100.00%]

  <bb 5> [local count: 96636765]:
  __asm__ __volatile__(".byte 0x0f, 0x0b" :  : "i" 0);
  __asm__ __volatile__(".Lreachable%=:
        .pushsection .discard.reachable
        .long .Lreachable%= - .
        .popsection
        " :  :  : "memory");
  _raw_spin_unlock_irqrestore (pretmp_46, 0); [tail call]
  goto <bb 10>; [100.00%]

So what the RTL level is doing looks fine, BB 4 and BB 5 are exactly the same
so its combining the two.

I don't see why this is a bug.
The documentation does have:
> (or remove duplicates of)


%= is only matters at the end.

Reply via email to