* internal compiler error: in df_reg_chain_mark
@ 2012-07-09 12:31 Andreas Geißler
0 siblings, 0 replies; only message in thread
From: Andreas Geißler @ 2012-07-09 12:31 UTC (permalink / raw)
To: gcc-help
Hi,
i have a problem again. When i am trying to compile the libgcc, with
my own define_insn "movmem" ,i get this error:
make log:
/u/Bachelorarbeit/gcc/gcc/build/./gcc/xgcc
-B/u/Bachelorarbeit/gcc/gcc/build/./gcc/
-B/u/Bachelorarbeit/GCC/gcc/menmic/bin/
-B/u/Bachelorarbeit/GCC/gcc/menmic/lib/ -isystem
/u/Bachelorarbeit/GCC/gcc/menmic/include -isystem
/u/Bachelorarbeit/GCC/gcc/menmic/sys-include -g -O2 -O2 -g -O2
-DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrite-strings
-Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
-Wold-style-definition -isystem ./include -g -DIN_LIBGCC2
-D__GCC_FLOAT_NOT_NEEDED -fno-stack-protector -Dinhibit_libc -I. -I.
-I../.././gcc -I../../../gcc-4.6.2/libgcc
-I../../../gcc-4.6.2/libgcc/. -I../../../gcc-4.6.2/libgcc/../gcc
-I../../../gcc-4.6.2/libgcc/../include -DHAVE_CC_TLS -DUSE_EMUTLS -o
unwind-dw2-fde.o -MT unwind-dw2-fde.o -MD -MP -MF unwind-dw2-fde.dep
-fexceptions -c ../../../gcc-4.6.2/libgcc/../gcc/unwind-dw2-fde.c
emit_block_move_via_movmem
../../../gcc-4.6.2/libgcc/../gcc/unwind-dw2-fde.c: In function 'search_object':
../../../gcc-4.6.2/libgcc/../gcc/unwind-dw2-fde.c:992:1: internal
compiler error: in df_reg_chain_mark, at df-scan.c:4231
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[2]: *** [unwind-dw2-fde.o] Error 1
make[2]: Leaving directory `/u/Bachelorarbeit/gcc/gcc/build/menmic/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `/u/Bachelorarbeit/gcc/gcc/build'
make: *** [all] Error 2
df-scan.c:
...
/* If there are no def-use or use-def chains, make sure that all
of the chains are clear. */
if (!df_chain)
gcc_assert (!DF_REF_CHAIN (ref));
/* Check to make sure the ref is in the correct chain. */
gcc_assert (DF_REF_REGNO (ref) == regno);
if (is_def)
gcc_assert (DF_REF_REG_DEF_P (ref));
else
gcc_assert (!DF_REF_REG_DEF_P (ref));
if (is_eq_use)
gcc_assert ((DF_REF_FLAGS (ref) & DF_REF_IN_NOTE));
else
gcc_assert ((DF_REF_FLAGS (ref) & DF_REF_IN_NOTE) == 0);
<----------------- Error --------------------
if (DF_REF_NEXT_REG (ref))
gcc_assert (DF_REF_PREV_REG (DF_REF_NEXT_REG (ref)) == ref);
...
The problem is solved if i remove the emit_insn(gen_ldri(tmp_reg)); in
the movmem instruction, so i think it has to do with my define_insn
"ldri":
.md:
(define_insn "ldri"
[(set (match_operand:SI 0 "pseudo_register_operand" "")
(mem:SI (post_modify:SI (reg:SI REG_RAR)
(plus (reg:SI REG_RAR)
(const_int 4) ))))]
""
"ldri\t%0"
[(set_attr "length" "1")]
)
;; True for register that is pseudo register.
(define_predicate "pseudo_register_operand"
(and (match_code "reg")
(match_test "!HARD_REGISTER_P (op)")))
But i don't see any mistake here. And if i use the memcpy function in
normal c programm with the same type of operants, i get no errors and
it work perfectly.
I would be very grateful if someone could help me.
Best regards,
Andreas
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2012-07-09 12:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-09 12:31 internal compiler error: in df_reg_chain_mark Andreas Geißler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).