------- Comment #8 from rguenth at gcc dot gnu dot org  2010-09-10 13:26 -------
(In reply to comment #6)
> (In reply to comment #5)
> > I see before SLP:
> > 
> > <bb 2>:
> >   MEM[(struct A *)this_1(D)].a = 0;
> >   MEM[(struct A *)this_1(D)].b = 0;
> >   MEM[(struct A *)this_1(D)].c = 0;
> >   [LP 2] MEM[(struct A *)this_1(D) + 12B].a = 0;
> > 
> > and after:
> > 
> > <bb 2>:
> >   vect_cst_.1_16 = { 0, 0, 0, 0 };
> >   vect_p.5_17 = &MEM[(struct A *)this_1(D)].a;
> >   M*vect_p.5_17{misalignment: 0} = vect_cst_.1_16;
> > 
> > so EH info has not been properly transfered.  
> 
> How should it be done? Is it ok to assume that if one of the old stmts can
> throw, then we can set TREE_THIS_NOTRAP for the new access to 0? (and then we
> can call maybe_duplicate_eh_stmt (new_stmt, old_stmt)).
> 
> Or maybe it's better to avoid vectorization?...

I think it's best to avoid vectorization if one of the old stmts can
throw.

Richard.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45470

Reply via email to