/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-threadfull1-details -fdisable-tree-ethread" } */ extern void abort (void); typedef union tree_node *tree; union tree_node { int code; tree chain; int omp_code; } bitmap_head; extern int c_omp_predetermined_sharing (tree); tree c_finish_omp_clauses (tree clauses) { tree c, t, *pc = &clauses; for (pc = &clauses, c = clauses; c; c = *pc) { unsigned char remove = 0; switch (((c->omp_code))) { case 1: if (t->code != 42) remove = 1; switch (c_omp_predetermined_sharing (t)) { case 2: abort (); } } if (remove) *pc = c->chain; } } /* There are 3 jump threading opportunities. */ /* { dg-final { scan-tree-dump-times "Registering jump" 3 "threadfull1"} } */