http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50712
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu.org --- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-10-13 10:10:50 UTC --- More likely caused by adding checking to pass_split_functions. It splits MSVCRT_vfprintf_s (struct MSVCRT_FILE * file, const char * format, char * valist) { int D.2058; <bb 2>: if (file_2(D) == 0B) goto <bb 3>; else goto <bb 4>; <bb 3>: MSVCRT__invalid_parameter (0B, 0B, 0B, 0, 0); goto <bb 5>; <bb 4>: D.2058_4 = pf_printf_a (&valist); <bb 5>: # D.2058_1 = PHI <-1(3), D.2058_4(4)> return D.2058_1; to MSVCRT_vfprintf_s (struct MSVCRT_FILE * file, const char * format, char * valist) { int D.2058; <bb 2>: if (file_2(D) == 0B) goto <bb 3>; else goto <bb 4>; <bb 3>: D.2058_5 = MSVCRT_vfprintf_s.part.0 (file_2(D), format_3(D), valist); goto <bb 5>; <bb 4>: D.2058_4 = pf_printf_a (&valist); <bb 5>: # D.2058_1 = PHI <D.2058_5(3), D.2058_4(4)> return D.2058_1; but fails to realize that for passing the address-taken parameter valist it has to gimplify it.