This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
RE: dwarf2out & var-tracking & cond_exec call
- From: BELBACHIR Selim <selim dot belbachir at fr dot thalesgroup dot com>
- To: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Fri, 29 Nov 2013 15:45:23 +0100
- Subject: RE: dwarf2out & var-tracking & cond_exec call
- Authentication-results: sourceware.org; auth=none
- References: <23937_1385731752_529896A8_23937_9953_1_9C88BF562A27AA41B242B2780441926E210C63035C at THSONEA01CMS05P dot one dot grp>
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-owner@gcc.gnu.org [mailto:gcc-owner@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