/* { dg-do run } */ /* { dg-options "-O2 -fsplit-loops -fdump-tree-lsplit-details" } */ /* { dg-require-effective-target int32plus } */ #ifdef __cplusplus extern "C" void abort (void); #else extern void abort (void); #endif typedef struct { int n; } region_t; void set (region_t *region) __attribute__((noinline)); void doit (region_t *beg, region_t *end, region_t *limit) __attribute__((noinline)); region_t regions[10]; void set (region_t *region) { region->n = 1; } void doit (region_t *beg, region_t *end, region_t *limit) { for (region_t *cur = beg; cur < end; cur++) { if (cur < limit) { set(cur); } } } int main (void) { doit(®ions[0], ®ions[2], ®ions[10]); if (regions[1].n != 1) abort(); }