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.

Reply via email to