tree-optimization/107554 - fix ICE in stlen optimization

The following fixes a wrongly typed variable causing an ICE.

	PR tree-optimization/107554
	* tree-ssa-strlen.cc (strlen_pass::count_nonzero_bytes):
	Use unsigned HOST_WIDE_INT type for the strlen.

	* gcc.dg/pr107554.c: New testcase.

Co-Authored-By: Nikita Voronov <nik_1357@mail.ru>
This commit is contained in:
Richard Biener 2022-11-11 14:28:52 +01:00
parent 4b3874d803
commit 81de403745
2 changed files with 13 additions and 1 deletions

View File

@ -0,0 +1,12 @@
/* { dg-do compile } */
/* { dg-options "-O -foptimize-strlen" } */
#define ELEMS 0x40000000
int a[ELEMS];
int b[ELEMS];
int main()
{
__builtin_memcpy(a, b, ELEMS*sizeof(int));
}

View File

@ -4735,7 +4735,7 @@ strlen_pass::count_nonzero_bytes (tree exp, gimple *stmt,
/* Compute the number of leading nonzero bytes in the representation
and update the minimum and maximum. */
unsigned n = prep ? strnlen (prep, nbytes) : nbytes;
unsigned HOST_WIDE_INT n = prep ? strnlen (prep, nbytes) : nbytes;
if (n < lenrange[0])
lenrange[0] = n;