tree-optimization/115137 - more ptr-vs-ptr compare fixes

The following fixes the omission of const-pool included in NONLOCAL.

	PR tree-optimization/115137
	* tree-ssa-structalias.cc (pt_solution_includes_const_pool): NONLOCAL
	also includes constant pool entries.

	* gcc.dg/torture/pr115137.c: New testcase.
This commit is contained in:
Richard Biener 2024-05-21 10:12:40 +02:00
parent 7f35863ebb
commit 85f7828679
2 changed files with 35 additions and 0 deletions

View file

@ -0,0 +1,34 @@
/* { dg-do run } */
struct a {
int b;
} c;
int d;
long e;
static void f(char *g, char *h, struct a *l) {
char a[1024];
int j = 0;
if (d)
h = a;
for (; g < h; g++)
if (__builtin_iscntrl(*g))
++j;
while (l->b < j)
;
}
int main() {
static const struct {
char *input;
} k[] = {{"somepage.html"}, {""}};
for (unsigned int i = 0; i < 1; ++i) {
e = __builtin_strlen(k[i].input);
f(k[i].input, k[i].input + e, &c);
}
}

View file

@ -7087,6 +7087,7 @@ bool
pt_solution_includes_const_pool (struct pt_solution *pt)
{
return (pt->const_pool
|| pt->nonlocal
|| (pt->escaped && (!cfun || cfun->gimple_df->escaped.const_pool))
|| (pt->ipa_escaped && ipa_escaped_pt.const_pool));
}