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

--- Comment #1 from vries at gcc dot gnu.org ---
Before pass_stdarg, we observe in f1 that va_start and va_arg use the same
argument:
...
  # .MEM_2 = VDEF <.MEM_1(D)>
  # USE = nonlocal escaped
  # CLB = nonlocal escaped { D.1806 } (escaped)
  __builtin_va_startD.1021 (&apD.1806, 0);

  # .MEM_3 = VDEF <.MEM_2>
  # USE = nonlocal null { D.1806 } (escaped)
  # CLB = nonlocal null { D.1806 } (escaped)
  res_4 = VA_ARG (&apD.1806, 0B);
...

Before pass_stdarg, we observe in f2 that va_start and va_arg do not use the
same argument:
...
  # .MEM_2 = VDEF <.MEM_1(D)>
  # USE = nonlocal escaped
  # CLB = nonlocal escaped { D.1814 }
  __builtin_va_startD.1021 (&apD.1814, 0);

  # VUSE <.MEM_2>
  # PT = nonlocal
  ap.0_3 = apD.1814;

  # .MEM_4 = VDEF <.MEM_2>
  apD.1830 = ap.0_3;

  # .MEM_8 = VDEF <.MEM_4>
  # USE = nonlocal null { D.1830 } (escaped)
  # CLB = nonlocal null { D.1830 } (escaped)
  _7 = VA_ARG (&apD.1830, 0B);
...

Reply via email to