#include <stdlib.h>
#include <assert.h>

struct type *obj;
struct type {
  int elem1[81];
};

enum fpmath_unit
{
  FPMATH_387 = 1,
  FPMATH_SSE = 2
};

struct gcc_options
{
  enum fpmath_unit x_ix86_fpmath;
};

struct gcc_options global_options;

void foo(void)
{
   int pos = 0;
   int i;
   if (!((global_options.x_ix86_fpmath & FPMATH_SSE) != 0))
     for (i = 8; i <= 15; i++)
       (obj->elem1) [pos++] = i;
   for (i = 45; i <= 52; i++)
     (obj->elem1) [pos++] = i;
   if (((global_options.x_ix86_fpmath & FPMATH_SSE) != 0))
     for (i = 8; i <= 15; i++)
       (obj->elem1) [pos++] = i;
   for (i = 29; i <= 36; i++)
     (obj->elem1) [pos++] = i;
}

int main()
{
  int i;
  obj = (struct type*) malloc (sizeof (struct type));
  for (i = 0; i <= 80; i++)
    obj->elem1[i] = 0;
  foo();
  assert (obj->elem1[8] == 45);
  return 0;
}
