I found my problem totally elsewhere (sorry to bother) I was loosing proper NOTES during a COND_EXEC((..)(CALL(..))) split ...
Selim -----Message d'origine----- De : gcc-ow...@gcc.gnu.org [mailto:gcc-ow...@gcc.gnu.org] De la part de BELBACHIR Selim Envoyé : vendredi 29 novembre 2013 14:29 À : gcc@gcc.gnu.org Objet : dwarf2out & var-tracking & cond_exec call Hi, I'm still porting my private backing from gcc 4.5.2 to gcc 4.7.3. When compiling the following code with -g option, I encountered "internal compiler error: in dwarf2out_var_location, at dwarf2out.c:20883" void toto(int* , float); void foo(int a, float b, int * c) { if (b) toto(c, b); } I don't know well what should contain NOTES but when I look at the gcc_assert at dwarf2out.c:20883 : gcc_assert (prev && (CALL_P (prev) || (NONJUMP_INSN_P (prev) && GET_CODE (PATTERN (prev)) == SEQUENCE && CALL_P (XVECEXP (PATTERN (prev), 0, 0))))); I would say that COND_EXEC(CALL(..)) handling is missing. Is It right or something went wrong on previous pass (var-tracking pass for example ...) Here is my conditional call pattern : (define_insn "call_cond" [(cond_exec (match_operator 3 "comparison_operator" [(match_operand 4 "cc_register" "") (const_int 0)]) (parallel[ (call (mem:SI (match_operand:SI 0 "call_address_op" " i,r")) (match_operand:SI 1 "immediate_operand" " X,X")) (clobber (match_operand:SI 2 "register_operand" "=r,r"))]))] Regards, Selim