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