re PR tree-optimization/34029 (internal compiler error: verify_stmts failed)
2008-01-04 Richard Guenther <rguenther@suse.de> PR middle-end/34029 * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs for verifying purposes if they are is_gimple_min_invariant. * gcc.c-torture/compile/pr34029-1.c: New testcase. * gcc.c-torture/compile/pr34029-2.c: Likewise. From-SVN: r131325
This commit is contained in:
parent
578c21cb86
commit
bdb69beee9
@ -1,3 +1,9 @@
|
||||
2008-01-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/34029
|
||||
* tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
|
||||
for verifying purposes if they are is_gimple_min_invariant.
|
||||
|
||||
2008-01-04 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
PR tree-optimization/34448
|
||||
|
@ -1,3 +1,9 @@
|
||||
2008-01-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/34029
|
||||
* gcc.c-torture/compile/pr34029-1.c: New testcase.
|
||||
* gcc.c-torture/compile/pr34029-2.c: Likewise.
|
||||
|
||||
2008-01-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR gcov-profile/34609
|
||||
|
22
gcc/testsuite/gcc.c-torture/compile/pr34029-1.c
Normal file
22
gcc/testsuite/gcc.c-torture/compile/pr34029-1.c
Normal file
@ -0,0 +1,22 @@
|
||||
static const char s[] = "ab.cd.efghijk";
|
||||
|
||||
int
|
||||
foo (const char *x)
|
||||
{
|
||||
const char *a;
|
||||
int b = 0;
|
||||
|
||||
a = __builtin_strchr (s, '.');
|
||||
if (a == 0)
|
||||
b = 1;
|
||||
else if ((a = __builtin_strchr (a + 1, '.')) == 0)
|
||||
b = 1;
|
||||
else if (__builtin_strncmp (s, x, a - s))
|
||||
b = 1;
|
||||
else if (__builtin_strncmp (a + 1, x + (a - s + 1), 4) < 0)
|
||||
b = 1;
|
||||
|
||||
if (b)
|
||||
return 4;
|
||||
return 0;
|
||||
}
|
12
gcc/testsuite/gcc.c-torture/compile/pr34029-2.c
Normal file
12
gcc/testsuite/gcc.c-torture/compile/pr34029-2.c
Normal file
@ -0,0 +1,12 @@
|
||||
static const char s[] = "ab.cd.efghijk";
|
||||
static const char t[] = "abcde";
|
||||
|
||||
long
|
||||
foo (const char *x)
|
||||
{
|
||||
const char *a;
|
||||
long b = 0;
|
||||
|
||||
a = __builtin_strchr (s, '.');
|
||||
return ((long) a) + (1 - (long) t);
|
||||
}
|
@ -3218,6 +3218,11 @@ verify_expr (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
|
||||
error ("address taken, but ADDRESSABLE bit not set");
|
||||
return x;
|
||||
}
|
||||
|
||||
/* Stop recursing and verifying invariant ADDR_EXPRs, they tend
|
||||
to become arbitrary complicated. */
|
||||
if (is_gimple_min_invariant (t))
|
||||
*walk_subtrees = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user