------- 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

Reply via email to