This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Final backend patch to provide infrastructure for parameter lists
- From: Peter Bergner <bergner at vnet dot ibm dot com>
- To: Michael Meissner <michael dot meissner at amd dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, David Edelsohn <dje at watson dot ibm dot com>, "Harle, Christophe" <christophe dot harle at amd dot com>
- Date: Thu, 28 Jun 2007 22:12:12 -0500
- Subject: 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