/* Check that displacement addressing is used for indexed addresses with a
   small offset, instead of re-calculating the index.  */
/* { dg-do compile }  */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler-not "add\t#1" } } */

int
test_00 (int tab[], int index)
{
  return tab[index + 1];
}

int
test_01 (short tab[], int index)
{
  return tab[index + 1];
}

int
test_02 (unsigned short tab[], int index)
{
  return tab[index + 1];
}

int
test_03 (long long tab[], int index)
{
  return (int)tab[index + 1];
}

void
test_04 (int tab[], int index, int val)
{
  tab[index + 1] = val;
}

void
test_05 (short tab[], int index, int val)
{
  tab[index + 1] = (short)val;
}

void
test_06 (unsigned short tab[], int index, int val)
{
  tab[index + 1] = (unsigned short)val;
}
