Ben Elliston schrieb:
> Perhaps you could get a stack backtrace and try to understand why you're
> getting a NULL_RTX passed in?

I already made a stack backtrace and posted it in my first mail:

Program received signal SIGSEGV, Segmentation fault.
0x081c5d48 in mark_jump_label_1 (x=0x0, insn=0xb7b77118, in_mem=0 '\0',
is_target=0 '\0') at ../.././gcc/jump.c:987
987       RTX_CODE code = GET_CODE (x);
(gdb) where
#0  0x081c5d48 in mark_jump_label_1 (x=0x0, insn=0xb7b77118, in_mem=0
'\0', is_target=0 '\0') at ../.././gcc/jump.c:987
#1  0x081c60e0 in mark_jump_label_1 (x=0xb7b70e28, insn=0xb7b77118,
in_mem=0 '\0', is_target=0 '\0') at ../.././gcc/jump.c:1108
#2  0x081c5d2f in mark_jump_label (x=0xb7b70e28, insn=0xb7b77118,
in_mem=0) at ../.././gcc/jump.c:974
#3  0x081c4af4 in mark_all_labels (f=0xb7bdb120) at ../.././gcc/jump.c:194
#4  0x081c48f7 in rebuild_jump_labels (f=0xb7bdb120) at
../.././gcc/jump.c:86
#5  0x08418fdf in tree_expand_cfg () at ../.././gcc/cfgexpand.c:1935
#6  0x08203198 in execute_one_pass (pass=0x856a640) at
../.././gcc/passes.c:1122
#7  0x082032e4 in execute_pass_list (pass=0x856a640) at
../.././gcc/passes.c:1175
#8  0x082ca0fd in tree_rest_of_compilation (fndecl=0xb7bd7a10) at
../.././gcc/tree-optimize.c:404
#9  0x083db7bd in cgraph_expand_function (node=0xb7b73280) at
../.././gcc/cgraphunit.c:1157
#10 0x083da461 in cgraph_assemble_pending_functions () at
../.././gcc/cgraphunit.c:523
#11 0x083da72d in cgraph_finalize_function (decl=0xb7bd7a10, nested=0
'\0') at ../.././gcc/cgraphunit.c:641
#12 0x0805a470 in finish_function () at ../.././gcc/c-decl.c:6803
#13 0x080a7f9b in c_parser_declaration_or_fndef (parser=0xb7be2b28,
fndef_ok=1 '\001', empty_ok=1 '\001', nested=0 '\0', start_attr_ok=1 '\001')
    at ../.././gcc/c-parser.c:1424
#14 0x080a7920 in c_parser_external_declaration (parser=0xb7be2b28) at
../.././gcc/c-parser.c:1179
#15 0x080a762c in c_parser_translation_unit (parser=0xb7be2b28) at
../.././gcc/c-parser.c:1081
#16 0x080b44c1 in c_parse_file () at ../.././gcc/c-parser.c:8011
#17 0x0809b675 in c_common_parse_file (set_yydebug=0) at
../.././gcc/c-opts.c:1291
#18 0x082861fa in compile_file () at ../.././gcc/toplev.c:1042
#19 0x08287bc4 in do_compile () at ../.././gcc/toplev.c:2247
#20 0x08287c26 in toplev_main (argc=2, argv=0xbfa608c4) at
../.././gcc/toplev.c:2279
#21 0x080bba42 in main (argc=Cannot access memory at address 0x0
) at ../.././gcc/main.c:35

But it doesn't really help me, because I don't know all this functions.
Do you know what they do and when they are called?


I found out that the RTX which enters mark_jump_label and later causes
the error is a "parallel". That is strange, because a don't use
parallels in my machine description file(*.md) yet.
The parallel RTX is passed to mark_jump_label() and from there to
mark_jump_label_1(). In mark_jump_label_1 in line 1108 it takes XVECEXP
(x, i, j) from the RTX x and the value of this XVECEXP-expression is
null. So I thik the error occures either because the RTX is not valid or
because VECEXP dont't work right or because the variables i and j are
too big/wrong. The value of i goes from GET_RTX_LENGTH (code), where
code is GET_CODE(RTX x), to 0. j goes from  XVECLEN (x, i) - 1 to 0.

Can I influence one of these things with the Target Makros or the
Machine Description?

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to