blob: 28133aa4226eedbef6e5de9aa39db4d62af8db5b [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2 -dp" } */
/* This was extracted from coremark. */
typedef signed short ee_s16;
typedef struct list_data_s
{
ee_s16 data16;
ee_s16 idx;
} list_data;
typedef struct list_head_s
{
struct list_head_s *next;
struct list_data_s *info;
} list_head;
list_head *
core_list_find(list_head *list, list_data *info)
{
if (info->idx >= 0)
{
while (list && (list->info->idx != info->idx))
list = list->next;
return list;
}
else
{
while (list && ((list->info->data16 & 0xff) != info->data16))
list = list->next;
return list;
}
}
/* There is only one legitimate unconditional jump, so test for that,
which will catch the case where bb-reorder leaves a jump to a ret
in the IL. */
/* { dg-final { scan-assembler-times "jump" 1 } } */