/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-thread1-stats" } */ typedef struct basic_block_def *basic_block; struct basic_block_def; struct edge_def; typedef struct edge_def *edge; typedef struct VEC_edge_base { unsigned num; } VEC_edge_base; typedef struct VEC_edge_none { VEC_edge_base base; } VEC_edge_none; static __inline__ unsigned VEC_edge_base_length (VEC_edge_base * vec_) { return vec_ ? vec_->num : 0; } typedef struct VEC_edge_gc { VEC_edge_base base; } VEC_edge_gc; struct basic_block_def { VEC_edge_gc *succs; }; void foo (void); unsigned char cleanup_empty_eh (basic_block bb) { edge e_out; switch (VEC_edge_base_length (&bb->succs->base)) { case 1: foo (); } } /* { dg-final { scan-tree-dump "Jumps threaded: 1" "thread1"} } */