https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50818
Tom de Vries <vries at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vries at gcc dot gnu.org --- Comment #10 from Tom de Vries <vries at gcc dot gnu.org> --- (In reply to Steven Shi from comment #9) > GCC6.10 lto fails to support below MS ABI buildin of va list, but GCC5 > works. This is a regression bug for GCC6. I suspect current GCC trunk also > has this regression bug. > __builtin_ms_va_list ap; > __builtin_ms_va_start (ap, n); > __builtin_ms_va_end (ap); > > Below is my testcase: > $cat test2.c > > #include <stdio.h> > > int > __attribute__((ms_abi)) > foo (int n, ...) > { > __builtin_ms_va_list ap; > int sum = 0; > > __builtin_ms_va_start (ap, n); > > while (n--) { > sum += __builtin_va_arg (ap, int); > printf("sum = %d\n", sum); > } > __builtin_ms_va_end (ap); > > return sum; > } > > int main () > { > int res = foo (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); > > if (res != 55) > __builtin_abort (); > > return 0; > } > $ gcc --version > gcc (GCC) 6.1.0 > > $ gcc -flto -Os test2.c > $ ./a.out > Segmentation fault (core dumped) > > $ gcc-5 -flto -Os test2.c > $ ./a.out > sum = 1 > sum = 3 > sum = 6 > sum = 10 > sum = 15 > sum = 21 > sum = 28 > sum = 36 > sum = 45 > sum = 55 FTR, this was filed as PR77341, which was marked as duplicate of PR70955.