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