re PR tree-optimization/33173 (ICE in set_uids_in_ptset, at tree-ssa-structalias...
authorDaniel Berlin <dberlin@dberlin.org>
Mon, 27 Aug 2007 14:18:36 +0000 (14:18 +0000)
committerDaniel Berlin <dberlin@gcc.gnu.org>
Mon, 27 Aug 2007 14:18:36 +0000 (14:18 +0000)
2007-08-27  Daniel Berlin  <dberlin@dberlin.org>

Fix PR tree-optimization/33173
* tree-ssa-alias.c (find_used_portions): Fix reversed test.

From-SVN: r127834

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr33173.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/pr26421.c
gcc/tree-ssa-alias.c

index 91d1bfa9d55e1fe50577c50dc6f85e220f71129b..ab630ad29fa8d661c862f08793f828dc8d1d3d60 100644 (file)
@@ -1,3 +1,8 @@
+2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
+       
+       Fix PR tree-optimization/33173
+       * tree-ssa-alias.c (find_used_portions): Fix reversed test.
+
 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/31385
index 301693a76f714e155ca0693c8d09567342702144..a1530244c294156e9d44f2fee392c9707699d9e7 100644 (file)
@@ -1,3 +1,9 @@
+2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
+
+       PR tree-optimization/33173
+       
+       * gcc.c-torture/compile/pr33173.c: New.
+
 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
 
        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 (file)
index 0000000..503c7af
--- /dev/null
@@ -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 (".");
+      }
+  }
+}
index d2d99baf0a149863dfaa770b158388f79e9f237f..ef5bc6a5341e56881b249b4a3b14d32ebed0e698 100644 (file)
@@ -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" } } */
index 103a0231fb3e61506b77ef5fc38776010953a31f..2dc23513af9a68e5b70d2e1c54a0bc02cad10c7a 100644 (file)
@@ -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;