From: Daniel Berlin Date: Mon, 27 Aug 2007 14:18:36 +0000 (+0000) Subject: re PR tree-optimization/33173 (ICE in set_uids_in_ptset, at tree-ssa-structalias... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=11df3da358dd7a2b946004bee03a9bad6bd875a5;p=gcc.git re PR tree-optimization/33173 (ICE in set_uids_in_ptset, at tree-ssa-structalias.c:4704) 2007-08-27 Daniel Berlin Fix PR tree-optimization/33173 * tree-ssa-alias.c (find_used_portions): Fix reversed test. From-SVN: r127834 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 91d1bfa9d55..ab630ad29fa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-08-27 Daniel Berlin + + Fix PR tree-optimization/33173 + * tree-ssa-alias.c (find_used_portions): Fix reversed test. + 2007-08-27 H.J. Lu PR target/31385 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 301693a76f7..a1530244c29 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2007-08-27 Daniel Berlin + + PR tree-optimization/33173 + + * gcc.c-torture/compile/pr33173.c: New. + 2007-08-27 H.J. Lu PR target/31385 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr33173.c b/gcc/testsuite/gcc.c-torture/compile/pr33173.c new file mode 100644 index 00000000000..503c7afbdac --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr33173.c @@ -0,0 +1,102 @@ +typedef long unsigned int size_t; +typedef struct +{ +} +_G_fpos_t; +extern int printf (__const char *__restrict __format, ...); +extern size_t strlen (__const char *__s) __attribute__ ((__nothrow__)) + __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +typedef struct rend_service_descriptor_t +{ + int patchlevel; + char status_tag[32]; +} +tor_version_t; +test_dir_format (void) +{ + tor_version_t ver1; + { + long v2 = (long) (ver1.patchlevel); + } + { + const char *v1 = (""), *v2 = (ver1.status_tag); + if (!__extension__ ( + { + size_t __s1_len, __s2_len; + (__builtin_constant_p (v1) + && (__s1_len = strlen (v1), __s2_len = + (!((size_t) (const void *) ((v1) + 1) - + (size_t) (const void *) (v1) == 1) + || __s1_len >= 4) + && + (!((size_t) (const void *) ((v2) + 1) - + (size_t) (const void *) (v2) == 1) + || __s2_len >= 4)) ? __builtin_strcmp (v1, + v2) + : (__builtin_constant_p (v1) + && ((size_t) (const void *) ((v1) + 1) - + __s1_len < 4) ? (__builtin_constant_p (v2) + && + ((size_t) (const void *) + (size_t) (const void + *) (v2) == + 1) ? __builtin_strcmp (v1, + v2) + : (__extension__ ( + { + __const + char + *__s2 + = + (__const + char + *) + (v2); + register + __result + = + (((__const unsigned char *) (__const char *) (v1))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) + { + } + __result;} + ))): + (__builtin_constant_p (v2) + && ((size_t) (const void *) ((v2) + 1) - + __s2_len < 4) ? (__builtin_constant_p (v1) + && ((size_t) (const void *) + 1) ? + __builtin_strcmp (v1, + v2) + : (__extension__ ( + { + __const + char + *__s1 + = + (__const + char + *) + (__const + *) + (v1); + register + __result + = + ((__const unsigned char *) (__const char *) (v2))[0]; if (__s2_len > 0 && __result == 0) + { + if + (__s2_len + == + 0) + { + } + } + __result;} + ))): __builtin_strcmp (v1, + v2))));} + )) + { + printf ("."); + } + } +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c b/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c index d2d99baf0a1..ef5bc6a5341 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c @@ -16,5 +16,5 @@ int foo(void) return a.i; } -/* { dg-final { scan-tree-dump-times "VDEF" 2 "salias" } } */ +/* { dg-final { scan-tree-dump-times "VDEF" 4 "salias" } } */ /* { dg-final { cleanup-tree-dump "salias" } } */ diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 103a0231fb3..2dc23513af9 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -3967,7 +3967,7 @@ find_used_portions (tree *tp, int *walk_subtrees, void *lhs_p) for (i = 0; i < nargs; i++) { tree *arg = &CALL_EXPR_ARG (*tp, i); - if (TREE_CODE (*arg) != ADDR_EXPR) + if (TREE_CODE (*arg) == ADDR_EXPR) find_used_portions (arg, walk_subtrees, NULL); } *walk_subtrees = 0;