remove va_arg hacks in printf core with undefined behavior
authorRich Felker <dalias@aerifal.cx>
Sat, 22 Apr 2017 21:48:37 +0000 (17:48 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 22 Apr 2017 21:48:37 +0000 (17:48 -0400)
commit58e2396a9aa23c132faf4198ca4d779c84955b38
treec44110554d20ffaefe7a286aac5842999fd29d81
parente1232f5b5185e8f337806841018369407e32e77d
remove va_arg hacks in printf core with undefined behavior

the code being removed was written to optimize for size assuming the
compiler cannot collapse code paths for different types with the same
underlying representation. modern compilers sometimes succeed in
making this optimization themselves, but either way it's a small size
difference and not worth the source-level complexity or the UB
involved in this hack.

some incorrect use of va_arg still remains, particularly use of void *
where the actual argument has a different pointer type. fixing this
requires some actual code additions, rather than just removing cruft,
so I'm leaving it to be done later as a separate commit.
src/stdio/vfprintf.c