[Bug tree-optimization/68529] scev failed for while(i--)

rguenther at suse dot de gcc-bugzilla@gcc.gnu.org
Wed Nov 25 11:34:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68529

--- Comment #3 from rguenther at suse dot de <rguenther at suse dot de> ---
On Wed, 25 Nov 2015, majun4950646 at 163 dot com wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68529
> 
> --- Comment #2 from majun <majun4950646 at 163 dot com> ---
> (In reply to Richard Biener from comment #1)
> > Confirmed, mine.  This happens because get_inner_reference converts nchar_14
> > to sizetype and thus we analyze the evolution of (uint64_t) nchar_14 which
> > isn't affine unless we can prove nchar_14 will never wrap in its type
> > (unsigned int).
> 
> how does scev handle type conversion now ? 

Correctly, but not optimally in this case.

> I see many type conversion in ev function,And I think this may casue vect/para
> failed for some loops.

One issue is that we ask SCEV about (uint64_t) nchar_14 in the first place
(of course data-ref users expect DR_OFFSET to be of sizetype).  This is
an "artifact" of get_inner_reference.  But as soon as you get a size
multiplier != 1 you'd need the cast anyway.

> I hit a parallel problem caused by scev type conversion handle in 
> spec2k6 410. for now I have no idea with this problem,I will open a new 
> bug to report this.

Thanks.


More information about the Gcc-bugs mailing list