This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, middle-end]: Fix PR tree-optimization/{31966, 32533}


Richard Guenther wrote:

> > > 2007-07-02 Uros Bizjak <ubizjak@gmail.com> > > > > > > PR tree-optimization/31966 > > > PR tree-optimization/32533

> On the 4.2 branch the testcase for PR32533 ICEs:
>
> /abuild/rguenther/gcc-4_2-branch/gcc/testsuite/gfortran.dg/pr32533.f90:
> In function 't':^M
> /abuild/rguenther/gcc-4_2-branch/gcc/testsuite/gfortran.dg/pr32533.f90:6:


> error: incorrect sharing of tree nodes^M
> D.1370_44 = M.2D.1253_16 > 1;^M
> ^M
> M.2D.1253_16 > 1;^M
> ^M
> /abuild/rguenther/gcc-4_2-branch/gcc/testsuite/gfortran.dg/pr32533.f90:6:


> internal compiler error: verify_stmts failed^M
> Please submit a full bug report,^M
> with preprocessed source if appropriate.^M
> See <URL:http://gcc.gnu.org/bugs.html> for instructions.^M

This seems to fix it.


Index: tree-if-conv.c
===================================================================
--- tree-if-conv.c (revision 126670)
+++ tree-if-conv.c (working copy)
@@ -764,7 +764,8 @@ find_phi_replacement_condition (struct l
value as condition. Various targets use different means to communicate
condition in vector compare operation. Using gimple value allows compiler
to emit vector compare and select RTL without exposing compare's
result. */
- *cond = force_gimple_operand (*cond, &new_stmts, false, NULL_TREE);
+ *cond = force_gimple_operand (unshare_expr (*cond),
+ &new_stmts, false, NULL_TREE);
if (new_stmts)
bsi_insert_before (bsi, new_stmts, BSI_SAME_STMT);
if (!is_gimple_reg (*cond) && !is_gimple_condexpr (*cond))


It looks that by touching tree-if-conv.c I somehow inherited this source ;)

Anyway, Richard's fix was bootstrapped and regression tested on i686-pc-linux-gnu 4.2 branch for all default languages, bootstrapped and regression tested mainline on x86_64-pc-linux-gnu for all default languages, bootstrap on gcc-4.1 branch is currently running.

Having hit the tree node sharing violation, the proposed patch is kind of obvious (but only exposed by --enable-checking config).
OK for mainline and branches?


2007-07-16  Richard Guenther  <rguenther@suse.de>
           Uros Bizjak  <ubizjak@gmail.com>

       * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
       before forcing it to gimple operand.

Uros.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]