Patchwork PATCH: PR tree-optimization/45506: Add a testcase

login
register
mail settings
Submitter H.J. Lu
Date Sept. 3, 2010, 2:41 p.m.
Message ID <20100903144153.GA4421@intel.com>
Download mbox | patch
Permalink /patch/63686/
State New
Headers show

Comments

H.J. Lu - Sept. 3, 2010, 2:41 p.m.
Hi,

I checked in this patch to add a testcase for PR tree-optimization/45506.

H.J.
---

Patch

Index: gcc.dg/pr45506.c
===================================================================
--- gcc.dg/pr45506.c	(revision 0)
+++ gcc.dg/pr45506.c	(revision 0)
@@ -0,0 +1,47 @@ 
+/* { dg-do compile } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-g -O -w" } */
+
+typedef unsigned _GCC_ATTR_ALIGN_u32t;
+typedef _GCC_ATTR_ALIGN_u32t _Uint32t __attribute__((__aligned__(4)));
+typedef int _Intptrt __attribute__((__mode__(__pointer__)));
+typedef unsigned int _Uintptrt __attribute__((__mode__(__pointer__)));
+typedef _Intptrt ptrdiff_t;
+typedef _Uintptrt uintptr_t;
+typedef _Uint32t Elf32_Word;
+typedef struct list_head list_head_t;
+
+struct list_head {
+  list_head_t *next;
+};
+
+struct object { };
+
+struct objlist {
+  struct object *object;
+};
+
+static uintptr_t ldd(void *frame) __attribute__((__used__));
+static list_head_t *_dl_all_objects_ptr;
+static void fini_array(struct object *const obj) {
+  if ((dynvec(obj,(unsigned)26)) != ((Elf32_Word)-1)) {
+    unsigned i;
+    const unsigned funcs = (dynvec(obj,(unsigned)28)) / 4;
+    const Elf32_Word fa = (dynvec(obj,(unsigned)26));
+    const int *const p = relative_relocp(obj);
+    for (i = (funcs ? (funcs - 1) : 0U); i != 0U; i--) {
+      void (*const func)(void) = (void *) p[i];
+      (*func)();
+    }
+  }
+}
+static void _do_exit_fini(void) {
+  const struct objlist *o;
+  for (((o)) = ((void *)(((list_head_t *)(_dl_all_objects_ptr))->next));
+       !((((o))) == ((void *)((list_head_t *)(_dl_all_objects_ptr))));
+       ((o)) = ((void *)(((list_head_t *)((o)))->next)))
+    fini_array (o->object);
+}
+static uintptr_t ldd (void *frame) {
+  atexit(_do_exit_fini);
+}
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 163820)
+++ ChangeLog	(working copy)
@@ -1,3 +1,8 @@ 
+2010-09-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR tree-optimization/45506
+	* gcc.dg/pr45506.c: New.
+
 2010-09-03  Uros Bizjak  <ubizjak@gmail.com>
 
 	PR target/45476