I just built 4.4.3 - very simply mkdir obdir cd objdir ../configure --enable-languages=c,c++ make make finished without errors, so then with a file foo.c void foo() { } I debug steve@Ubuntu:~/gcc-4.4.3/objdir$ gdb --args gcc/cc1 ~/scratch/foo.c GNU gdb (GDB) 7.0-ubuntu ... This GDB was configured as "i486-linux-gnu". ... Reading symbols from /home/steve/gcc-4.4.3/objdir/gcc/cc1...done. (gdb) b gimplify.c:6249 Breakpoint 1 at 0x81a520c: file ../../gcc/gimplify.c, line 6249. (gdb) run Starting program: /home/steve/gcc-4.4.3/objdir/gcc/cc1 /home/steve/scratch/foo.c foo Breakpoint 1, gimplify_expr (expr_p=0xb7f41758, pre_p=0xbffff1b8, post_p=0x0, gimple_test_f=0x819b000 <is_gimple_stmt>, fallback=fb_none) at ../../gcc/gimplify.c:6249 6249 save_expr = *expr_p; (gdb) n 6250 if (save_expr == NULL_TREE) (gdb) n 6254 is_statement = gimple_test_f == is_gimple_stmt; (gdb) n 6255 if (is_statement) (gdb) n 6256 gcc_assert (pre_p); (gdb) n 6259 if (gimple_test_f == is_gimple_reg) (gdb) n 6261 else if (gimple_test_f == is_gimple_val (gdb) n 6274 else if (gimple_test_f == is_gimple_min_lval (gdb) n 6277 else if (gimple_test_f == is_gimple_addressable) (gdb) n 6279 else if (gimple_test_f == is_gimple_stmt) (gdb) n 6280 gcc_assert (fallback == fb_none); (gdb) n 6293 if (pre_p == NULL) (gdb) n 6296 if (post_p == NULL) (gdb) n 6307 pre_last_gsi = gsi_last (*pre_p); (gdb) n 6308 post_last_gsi = gsi_last (*post_p); (gdb) n 6310 saved_location = input_location; (gdb) n 6311 if (save_expr != error_mark_node (gdb) n 6312 && EXPR_HAS_LOCATION (*expr_p)) (gdb) n 6311 if (save_expr != error_mark_node (gdb) n 6313 input_location = EXPR_LOCATION (*expr_p); (gdb) n 6729 post_p == &internal_post ? NULL : post_p, Things go pear shaped after line 6312 - after that, next seems to get you somewhere rather arbitrary. I guess I'm doing something stupid - can anyone tell me what? Thanks Steve