https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70955

--- Comment #19 from Steven Shi <steven.shi at intel dot com> ---
(In reply to vries from comment #18)
> Created attachment 39484 [details]
> Tentative patch using attributes ms_abi/sysv_abi
> 
> not build or regression tested yet, but at least makes test-case pass.

Vries,
I tried apply your patch on latest gcc trunk, build and install the new gcc7,
it still cannot work. Below is my test case.

$ gcc --version
gcc (GCC) 7.0.0 20160823 (experimental)

$ 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 -flto -Os test2.c
$ ./a.out
Segmentation fault (core dumped)

But GCC5 works.
$ 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

Reply via email to