------- Comment #16 from hjl dot tools at gmail dot com 2010-04-29 23:53 ------- Another testcase
--- char * bar (void) { extern char ext[]; return ext; } char * foo (void) { return bar (); } -- #2 0x0000000000cecc94 in can_be_nonlocal (decl=0x7ffff190b0a0, id=0x7fffffffdba0) at /export/gnu/import/git/gcc/gcc/tree-inline.c:506 #3 0x0000000000cecd7f in remap_decls (decls=0x7ffff190b0a0, nonlocalized_list=0x7ffff18fb2e8, id=0x7fffffffdba0) at /export/gnu/import/git/gcc/gcc/tree-inline.c:542 #4 0x0000000000ced348 in remap_block (block=0x7fffffffd808, id=0x7fffffffdba0) at /export/gnu/import/git/gcc/gcc/tree-inline.c:603 #5 0x0000000000ced3c5 in remap_blocks (block=0x7ffff18fb058, id=0x7fffffffdba0) at /export/gnu/import/git/gcc/gcc/tree-inline.c:624 #6 0x0000000000cf9255 in expand_call_inline (bb=0x7ffff18f5340, stmt=0x7ffff1952000, id=0x7fffffffdba0) at /export/gnu/import/git/gcc/gcc/tree-inline.c:3742 #7 0x0000000000cf9b80 in gimple_expand_calls_inline (bb=0x7ffff18f5340, id=0x7fffffffdba0) at /export/gnu/import/git/gcc/gcc/tree-inline.c:3926 #8 0x0000000000cfa1c9 in optimize_inline_calls (fn=0x7ffff18f6b00) at /export/gnu/import/git/gcc/gcc/tree-inline.c:4076 #9 0x0000000000cb3d07 in cgraph_early_inlining () at /export/gnu/import/git/gcc/gcc/ipa-inline.c:1696 ---Type <return> to continue, or q <return> to quit--- #10 0x00000000008c51de in execute_one_pass (pass=0x1781240) at /export/gnu/import/git/gcc/gcc/passes.c:1590 #11 0x00000000008c53d2 in execute_pass_list (pass=0x1781240) at /export/gnu/import/git/gcc/gcc/passes.c:1645 #12 0x00000000008c4531 in do_per_function_toporder ( callback=0x8c5391 <execute_pass_list>, data=0x16ba1e0) at /export/gnu/import/git/gcc/gcc/passes.c:1156 #13 0x00000000008c5e3e in execute_ipa_pass_list (pass=0x16ba060) at /export/gnu/import/git/gcc/gcc/passes.c:1925 #14 0x0000000000ca7b9d in ipa_passes () at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1849 #15 0x0000000000ca7d0e in cgraph_optimize () at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1910 #16 0x0000000000ca58e7 in cgraph_finalize_compilation_unit () at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1166 #17 0x00000000004b6614 in c_write_global_declarations () at /export/gnu/import/git/gcc/gcc/c-decl.c:9552 #18 0x00000000009bef13 in compile_file () at /export/gnu/import/git/gcc/gcc/toplev.c:1065 #19 0x00000000009c1192 in do_compile () at /export/gnu/import/git/gcc/gcc/toplev.c:2424 #20 0x00000000009c1268 in toplev_main (argc=15, argv=0x7fffffffdf58) at /export/gnu/import/git/gcc/gcc/toplev.c:2466 ---Type <return> to continue, or q <return> to quit--- #21 0x00000000005733b0 in main (argc=15, argv=0x7fffffffdf58) at /export/gnu/import/git/gcc/gcc/main.c:35 #2 0x0000000000cecc94 in can_be_nonlocal (decl=0x7ffff190b0a0, id=0x7fffffffdba0) at /export/gnu/import/git/gcc/gcc/tree-inline.c:506 506 && !auto_var_in_fn_p (decl, id->src_fn)) (gdb) call debug_tree (decl) <var_decl 0x7ffff190b0a0 ext type <array_type 0x7ffff18f7540 type <integer_type 0x7ffff1a152a0 char public string-flag QI size <integer_cst 0x7ffff1a03758 constant 8> unit size <integer_cst 0x7ffff1a03780 constant 1> align 8 symtab 0 alias set -1 canonical type 0x7ffff1a152a0 precision 8 min <integer_cst 0x7ffff1a03708 -128> max <integer_cst 0x7ffff1a03820 127> pointer_to_this <pointer_type 0x7ffff1a2a930>> BLK align 8 symtab 0 alias set -1 canonical type 0x7ffff18f7540 pointer_to_this <pointer_type 0x7ffff18f75e8>> addressable public external common BLK defer-output file y.i line 4 col 15 align 8 context <function_decl 0x7ffff18f6a00 bar>> (gdb) I don't think auto_var_in_fn_p should return true. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43942