This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Final backend patch to provide infrastructure for parameter lists


> Enclosed is a revised patch for adding infrastructure to allow the backends not
> to care about how function arguments are stored internally in the compiler
> (linked list vs. vector).
[snip]
> 5) The rs6000 and spu ports both handle overloaded builtins are are more
>    complex than just looking to see if a function was prototyped or uses
>    stdarg.  I would appreciate if maintainers could test to see if I got the
>    semantics right.  I would speculate that we may want to also think about
>    adding infrastructure for overloaded builtins, to allow them to change as
>    well.

I tried bootstrapping this on powerpc64-linux and it dies during the build.
I have a reduced testcase below and gdb backtrace.  If there's something more
you need me to do to help you debug this, let me know.  In case you want them
I uploaded the tree dumps for the compile at:

    http://www.bergner.org/gcc/bug.i.tree-dumps.tar.gz


Peter


bergner@vervain:~/gcc/meissner> cat bug.i 
extern int __fixunssfti (float);
int
__fixsfti (float a)
{
  return __fixunssfti (a);
}
bergner@vervain:~/gcc/meissner> /home/bergner/gcc/meissner/build/gcc-mainline-func-arg-debug/gcc/xgcc -B/home/bergner/gcc/meissner/build/gcc-mainline-func-arg-debug/gcc/ -m64 -O2 -c bug.i 
bug.i: In function â__fixsftiâ:
bug.i:5: internal compiler error: tree check: expected function_type or method_type, have function_decl in function_args_iter_init, at tree.h:4396
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

Using the debugger, we get:

Breakpoint 1, tree_check_failed (node=0x4016ba00, 
    file=0x10c24a70 "/home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/tree.h", line=4396, 
    function=0x10c24aac "function_args_iter_init") at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/tree.c:6616
6616      unsigned length = 0;

(gdb) call debug_tree (node)
 <function_decl 0x4016ba00 __fixunssfti
    type <function_type 0x400aacb0
        type <integer_type 0x400a0310 int public SI
            size <integer_cst 0x4008e438 constant invariant 32>
            unit size <integer_cst 0x4008e140 constant invariant 4>
            align 32 symtab 0 alias set -1 canonical type 0x400a0310 precision 32 min <integer_cst 0x4008e3c0 -2147483648> max <integer_cst 0x4008e3e8 2147483647>
            pointer_to_this <pointer_type 0x400a0ee0>>
        SI size <integer_cst 0x4008e438 32> unit size <integer_cst 0x4008e140 4>
        align 32 symtab 0 alias set -1 structural equality
        arg-types <tree_list 0x40097ea0 value <real_type 0x400a0c40 float>
            chain <tree_list 0x40097b20 value <void_type 0x400a0a80 void>>>
        pointer_to_this <pointer_type 0x4016a690>>
    addressable used public external decl_5 SI file bug.i line 1 chain <function_decl 0x4016bb00 __fixsfti>>

(gdb) bt
#0  tree_check_failed (node=0x4016ba00, file=0x10c24a70 "/home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/tree.h", 
    line=4396, function=0x10c24aac "function_args_iter_init")
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/tree.c:6616
#1  0x1084c524 in function_args_iter_init (i=0xffffc8b8, fntype=0x4016ba00)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/tree.h:4396
#2  0x10838f48 in rs6000_function_ok_for_sibcall (decl=0x4016ba00, exp=0x4009b090)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/config/rs6000/rs6000.c:13931
#3  0x1017a8c4 in expand_call (exp=0x4009b090, target=0x0, ignore=0)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/calls.c:2243
#4  0x10294004 in expand_expr_real_1 (exp=0x4009b090, target=0x0, tmode=DImode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.c:7848
#5  0x1028bb24 in expand_expr_real (exp=0x4009b090, target=0x0, tmode=DImode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.c:6856
#6  0x102b168c in expand_expr (exp=0x4009b090, target=0x0, mode=DImode, modifier=EXPAND_NORMAL)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.h:504
#7  0x102955dc in expand_expr_real_1 (exp=0x40178960, target=0x40178740, tmode=VOIDmode, modifier=EXPAND_NORMAL, 
    alt_rtl=0x0) at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.c:7920
#8  0x1028bb58 in expand_expr_real (exp=0x40178960, target=0x40178740, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.c:6862
#9  0x102b168c in expand_expr (exp=0x40178960, target=0x40178740, mode=VOIDmode, modifier=EXPAND_NORMAL)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.h:504
#10 0x102797d4 in store_expr (exp=0x40178960, target=0x401722b0, call_param_p=0, nontemporal=0 '\0')
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.c:4457
#11 0x10278480 in expand_assignment (to=0x4016a700, from=0x4009b090, nontemporal=0 '\0')
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.c:4309
#12 0x102a80e0 in expand_expr_real_1 (exp=0x40171760, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.c:8881
#13 0x1028bb24 in expand_expr_real (exp=0x40171760, target=0x40093400, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.c:6856
#14 0x10518964 in expand_expr (exp=0x40171760, target=0x40093400, mode=VOIDmode, modifier=EXPAND_NORMAL)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/expr.h:504
#15 0x1050eaac in expand_expr_stmt (exp=0x40171760) at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/stmt.c:1360
#16 0x109f01e8 in expand_gimple_tailcall (bb=0x400884c0, stmt=0x40171760, can_fallthru=0xffffdbc8 "\b")
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/cfgexpand.c:1391
#17 0x109f0c94 in expand_gimple_basic_block (bb=0x400884c0)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/cfgexpand.c:1603
#18 0x109f272c in tree_expand_cfg () at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/cfgexpand.c:1922
#19 0x10437ebc in execute_one_pass (pass=0x10d421dc) at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/passes.c:1125
#20 0x10438080 in execute_pass_list (pass=0x10d421dc) at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/passes.c:1178
#21 0x105cdc94 in tree_rest_of_compilation (fndecl=0x4016bb00)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/tree-optimize.c:406
#22 0x100b1e38 in c_expand_body (fndecl=0x4016bb00) at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/c-common.c:4335
#23 0x108552c0 in cgraph_expand_function (node=0x4016bc00)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/cgraphunit.c:1073
#24 0x108555a4 in cgraph_expand_all_functions () at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/cgraphunit.c:1142
#25 0x10855d1c in cgraph_optimize () at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/cgraphunit.c:1349
#26 0x10035a2c in c_write_global_declarations () at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/c-decl.c:7911
#27 0x1052f868 in compile_file () at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/toplev.c:1064
#28 0x10531edc in do_compile () at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/toplev.c:2150
#29 0x10531f68 in toplev_main (argc=13, argv=0xffffe1b4)
    at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/toplev.c:2182
#30 0x101037bc in main (argc=13, argv=0xffffe1b4) at /home/bergner/gcc/meissner/gcc-mainline-func-arg/gcc/main.c:35




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]