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



Reply via email to