PATCH: PR target/53416: Wrong code when optimising loop involving _rdrand32_step

Uros Bizjak ubizjak@gmail.com
Sun May 20 19:03:00 GMT 2012


On Sun, May 20, 2012 at 8:43 PM, Andrew Pinski <pinskia@gmail.com> wrote:

> #include <stdio.h>
>
>  int
>  main(int argc, char **argv)
>  {
>  unsigned int number = 0;
>  int result0, result1, result2, result3;
>
>  result0 = __builtin_ia32_rdrand32_step (&number);
>  result1 = __builtin_ia32_rdrand32_step (&number);
>  result2 = __builtin_ia32_rdrand32_step (&number);
>  result3 = __builtin_ia32_rdrand32_step (&number);
>  printf("%d: %d\n", result0, number);
>  printf("%d: %d\n", result1, number);
>  printf("%d: %d\n", result2, number);
>  printf("%d: %d\n", result3, number);
>  return 0;
>  }
>

int test (void)
{
  unsigned int number = 0;
  int result0, result1, result2, result3;

  result0 = __builtin_ia32_rdrand32_step (&number);
  result1 = __builtin_ia32_rdrand32_step (&number);
  result2 = __builtin_ia32_rdrand32_step (&number);
  result3 = __builtin_ia32_rdrand32_step (&number);

  return result0 + result1 +result2 + result3;;
}

This is the simplest, and also good test.

Uros.



More information about the Gcc-patches mailing list