https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66013
Eric Gallager changed:
What|Removed |Added
Keywords||patch
--- Comment #8 from Eric Gallager
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66013
Eric Gallager changed:
What|Removed |Added
CC||egallager at gcc dot gnu.org
--- Comment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66013
vries at gcc dot gnu.org changed:
What|Removed |Added
Keywords|patch |
--- Comment #6 from vries at
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66013
vries at gcc dot gnu.org changed:
What|Removed |Added
Keywords||patch
--- Comment #5 from vrie
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66013
--- Comment #4 from vries at gcc dot gnu.org ---
Tentative patch:
...
diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c
index efabda7..b334e79 100644
--- a/gcc/tree-stdarg.c
+++ b/gcc/tree-stdarg.c
@@ -62,6 +62,7 @@ along with GCC; see the file C
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66013
--- Comment #3 from vries at gcc dot gnu.org ---
Before postponing expansion of va_arg to pass_stdarg, we had at pass_stdarg:
...
f2: va_list escapes 0, needs to save 4 GPR units and all FPR units.
...
On one hand, the optimization in pass_stdarg
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66013
--- Comment #2 from vries at gcc dot gnu.org ---
And in the pass_stdarg dump, for f2 we see why the va_list escapes:
...
va_list escapes in # .MEM_4 = VDEF <.MEM_2>
apD.1830 = ap.0_3;
...
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)
__