Author: sewardj
Date: 2007-11-06 22:47:45 +0000 (Tue, 06 Nov 2007)
New Revision: 7105

Log:
Build at -O2, and insert lots of ugly casts to stop gcc complaining
about violations of strict aliasing rules.  Whether these casts are
really a reasonable "solution" is another matter.

Modified:
   branches/THRCHECK/thrcheck/Makefile.am
   branches/THRCHECK/thrcheck/tc_main.c
   branches/THRCHECK/thrcheck/tc_wordset.c


Modified: branches/THRCHECK/thrcheck/Makefile.am
===================================================================
--- branches/THRCHECK/thrcheck/Makefile.am      2007-11-06 22:00:35 UTC (rev 
7104)
+++ branches/THRCHECK/thrcheck/Makefile.am      2007-11-06 22:47:45 UTC (rev 
7105)
@@ -23,8 +23,7 @@
 VGPRELOAD_THRCHECK_SOURCES_COMMON = tc_intercepts.c
 
 vgpreload_thrcheck_x86_linux_so_SOURCES      = 
$(VGPRELOAD_THRCHECK_SOURCES_COMMON)
-vgpreload_thrcheck_x86_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_X86_LINUX) \
-                                               -fno-omit-frame-pointer
+vgpreload_thrcheck_x86_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_X86_LINUX) -O -g 
-fno-omit-frame-pointer
 vgpreload_thrcheck_x86_linux_so_CFLAGS       = $(AM_CFLAGS_X86_LINUX) 
$(AM_CFLAGS_PIC)
 vgpreload_thrcheck_x86_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_LINUX)
 vgpreload_thrcheck_x86_linux_so_LDFLAGS      = \
@@ -32,7 +31,7 @@
        $(LIBREPLACEMALLOC_LDFLAGS_X86_LINUX)
 
 vgpreload_thrcheck_amd64_linux_so_SOURCES      = 
$(VGPRELOAD_THRCHECK_SOURCES_COMMON)
-vgpreload_thrcheck_amd64_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_AMD64_LINUX)
+vgpreload_thrcheck_amd64_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_AMD64_LINUX) -O 
-g
 vgpreload_thrcheck_amd64_linux_so_CFLAGS       = $(AM_CFLAGS_AMD64_LINUX) 
$(AM_CFLAGS_PIC)
 vgpreload_thrcheck_amd64_linux_so_DEPENDENCIES = 
$(LIBREPLACEMALLOC_AMD64_LINUX)
 vgpreload_thrcheck_amd64_linux_so_LDFLAGS      = \
@@ -40,7 +39,7 @@
        $(LIBREPLACEMALLOC_LDFLAGS_AMD64_LINUX)
 
 vgpreload_thrcheck_ppc32_linux_so_SOURCES      = 
$(VGPRELOAD_THRCHECK_SOURCES_COMMON)
-vgpreload_thrcheck_ppc32_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_LINUX)
+vgpreload_thrcheck_ppc32_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_LINUX) -O 
-g
 vgpreload_thrcheck_ppc32_linux_so_CFLAGS       = $(AM_CFLAGS_PPC32_LINUX) 
$(AM_CFLAGS_PIC)
 vgpreload_thrcheck_ppc32_linux_so_DEPENDENCIES = 
$(LIBREPLACEMALLOC_PPC32_LINUX)
 vgpreload_thrcheck_ppc32_linux_so_LDFLAGS      = \
@@ -48,7 +47,7 @@
        $(LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX)
 
 vgpreload_thrcheck_ppc64_linux_so_SOURCES      = 
$(VGPRELOAD_THRCHECK_SOURCES_COMMON)
-vgpreload_thrcheck_ppc64_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC64_LINUX)
+vgpreload_thrcheck_ppc64_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC64_LINUX) -O 
-g
 vgpreload_thrcheck_ppc64_linux_so_CFLAGS       = $(AM_CFLAGS_PPC64_LINUX) 
$(AM_CFLAGS_PIC)
 vgpreload_thrcheck_ppc64_linux_so_DEPENDENCIES = 
$(LIBREPLACEMALLOC_PPC64_LINUX)
 vgpreload_thrcheck_ppc64_linux_so_LDFLAGS      = \
@@ -56,7 +55,7 @@
        $(LIBREPLACEMALLOC_LDFLAGS_PPC64_LINUX)
 
 vgpreload_thrcheck_ppc32_aix5_so_SOURCES      = 
$(VGPRELOAD_THRCHECK_SOURCES_COMMON)
-vgpreload_thrcheck_ppc32_aix5_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_AIX5)
+vgpreload_thrcheck_ppc32_aix5_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_AIX5) -O -g
 vgpreload_thrcheck_ppc32_aix5_so_CFLAGS       = $(AM_CFLAGS_PPC32_AIX5) 
$(AM_CFLAGS_PIC)
 vgpreload_thrcheck_ppc32_aix5_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC32_AIX5)
 vgpreload_thrcheck_ppc32_aix5_so_LDFLAGS      = \
@@ -64,7 +63,7 @@
        $(LIBREPLACEMALLOC_LDFLAGS_PPC32_AIX5)
 
 vgpreload_thrcheck_ppc64_aix5_so_SOURCES      = 
$(VGPRELOAD_THRCHECK_SOURCES_COMMON)
-vgpreload_thrcheck_ppc64_aix5_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC64_AIX5)
+vgpreload_thrcheck_ppc64_aix5_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC64_AIX5) -O -g
 vgpreload_thrcheck_ppc64_aix5_so_CFLAGS       = $(AM_CFLAGS_PPC64_AIX5) 
$(AM_CFLAGS_PIC)
 vgpreload_thrcheck_ppc64_aix5_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC64_AIX5)
 vgpreload_thrcheck_ppc64_aix5_so_LDFLAGS      = \
@@ -75,42 +74,42 @@
 
 thrcheck_x86_linux_SOURCES      = $(THRCHECK_SOURCES_COMMON)
 thrcheck_x86_linux_CPPFLAGS     = $(AM_CPPFLAGS_X86_LINUX)
-thrcheck_x86_linux_CFLAGS       = $(AM_CFLAGS_X86_LINUX) -fomit-frame-pointer
+thrcheck_x86_linux_CFLAGS       = $(AM_CFLAGS_X86_LINUX) -O2
 thrcheck_x86_linux_DEPENDENCIES = $(COREGRIND_LIBS_X86_LINUX)
 thrcheck_x86_linux_LDADD        = $(TOOL_LDADD_X86_LINUX)
 thrcheck_x86_linux_LDFLAGS      = $(TOOL_LDFLAGS_X86_LINUX)
 
 thrcheck_amd64_linux_SOURCES      = $(THRCHECK_SOURCES_COMMON)
 thrcheck_amd64_linux_CPPFLAGS     = $(AM_CPPFLAGS_AMD64_LINUX)
-thrcheck_amd64_linux_CFLAGS       = $(AM_CFLAGS_AMD64_LINUX)
+thrcheck_amd64_linux_CFLAGS       = $(AM_CFLAGS_AMD64_LINUX) -O2
 thrcheck_amd64_linux_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_LINUX)
 thrcheck_amd64_linux_LDADD        = $(TOOL_LDADD_AMD64_LINUX)
 thrcheck_amd64_linux_LDFLAGS      = $(TOOL_LDFLAGS_AMD64_LINUX)
 
 thrcheck_ppc32_linux_SOURCES      = $(THRCHECK_SOURCES_COMMON)
 thrcheck_ppc32_linux_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_LINUX)
-thrcheck_ppc32_linux_CFLAGS       = $(AM_CFLAGS_PPC32_LINUX)
+thrcheck_ppc32_linux_CFLAGS       = $(AM_CFLAGS_PPC32_LINUX) -O2
 thrcheck_ppc32_linux_DEPENDENCIES = $(COREGRIND_LIBS_PPC32_LINUX)
 thrcheck_ppc32_linux_LDADD        = $(TOOL_LDADD_PPC32_LINUX)
 thrcheck_ppc32_linux_LDFLAGS      = $(TOOL_LDFLAGS_PPC32_LINUX)
 
 thrcheck_ppc64_linux_SOURCES      = $(THRCHECK_SOURCES_COMMON)
 thrcheck_ppc64_linux_CPPFLAGS     = $(AM_CPPFLAGS_PPC64_LINUX)
-thrcheck_ppc64_linux_CFLAGS       = $(AM_CFLAGS_PPC64_LINUX)
+thrcheck_ppc64_linux_CFLAGS       = $(AM_CFLAGS_PPC64_LINUX) -O2
 thrcheck_ppc64_linux_DEPENDENCIES = $(COREGRIND_LIBS_PPC64_LINUX)
 thrcheck_ppc64_linux_LDADD        = $(TOOL_LDADD_PPC64_LINUX)
 thrcheck_ppc64_linux_LDFLAGS      = $(TOOL_LDFLAGS_PPC64_LINUX)
 
 thrcheck_ppc32_aix5_SOURCES      = $(THRCHECK_SOURCES_COMMON)
 thrcheck_ppc32_aix5_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_AIX5)
-thrcheck_ppc32_aix5_CFLAGS       = $(AM_CFLAGS_PPC32_AIX5)
+thrcheck_ppc32_aix5_CFLAGS       = $(AM_CFLAGS_PPC32_AIX5) -O2
 thrcheck_ppc32_aix5_DEPENDENCIES = $(COREGRIND_LIBS_PPC32_AIX5)
 thrcheck_ppc32_aix5_LDADD        = $(TOOL_LDADD_PPC32_AIX5)
 thrcheck_ppc32_aix5_LDFLAGS      = $(TOOL_LDFLAGS_PPC32_AIX5)
 
 thrcheck_ppc64_aix5_SOURCES      = $(THRCHECK_SOURCES_COMMON)
 thrcheck_ppc64_aix5_CPPFLAGS     = $(AM_CPPFLAGS_PPC64_AIX5)
-thrcheck_ppc64_aix5_CFLAGS       = $(AM_CFLAGS_PPC64_AIX5)
+thrcheck_ppc64_aix5_CFLAGS       = $(AM_CFLAGS_PPC64_AIX5) -O2
 thrcheck_ppc64_aix5_DEPENDENCIES = $(COREGRIND_LIBS_PPC64_AIX5)
 thrcheck_ppc64_aix5_LDADD        = $(TOOL_LDADD_PPC64_AIX5)
 thrcheck_ppc64_aix5_LDFLAGS      = $(TOOL_LDFLAGS_PPC64_AIX5)

Modified: branches/THRCHECK/thrcheck/tc_main.c
===================================================================
--- branches/THRCHECK/thrcheck/tc_main.c        2007-11-06 22:00:35 UTC (rev 
7104)
+++ branches/THRCHECK/thrcheck/tc_main.c        2007-11-06 22:47:45 UTC (rev 
7105)
@@ -59,6 +59,13 @@
 /*---                                                          ---*/
 /*----------------------------------------------------------------*/
 
+/* Note there are a whole bunch of ugly double casts of the form
+   (Word*)(void*)&p.  These placate gcc at -O2.  The obvious form
+   (Word*)&p causes gcc to complain that 'dereferencing a type-punned
+   pointer ill break strict-aliasing rules'.  It stops complaining
+   when the intermediate void* type is inserted.  Is this a reasonable
+   "fix"?  I don't know. */
+
 // FIXME what is supposed to happen to locks in memory which
 // is relocated as a result of client realloc?
 
@@ -623,7 +630,7 @@
    Thread* thr;
    Word    count;
    TC_(initIterBag)( bag );
-   while (TC_(nextIterBag)( bag, (Word*)&thr, &count )) {
+   while (TC_(nextIterBag)( bag, (Word*)(void*)&thr, &count )) {
       if (count < 1) return False;
       if (!is_sane_Thread(thr)) return False;
    }
@@ -818,7 +825,7 @@
    }
    /* for each thread that holds this lock do ... */
    TC_(initIterBag)( lk->heldBy );
-   while (TC_(nextIterBag)( lk->heldBy, (Word*)&thr, NULL )) {
+   while (TC_(nextIterBag)( lk->heldBy, (Word*)(void*)&thr, NULL )) {
       tl_assert(is_sane_Thread(thr));
       tl_assert(TC_(elemWS)( univ_lsets,
                              thr->locksetA, (Word)lk ));
@@ -1100,7 +1107,7 @@
       Word    count;
       VG_(printf)(" { ");
       TC_(initIterBag)( lk->heldBy );
-      while (TC_(nextIterBag)( lk->heldBy, (Word*)&thr, &count ))
+      while (TC_(nextIterBag)( lk->heldBy, (Word*)(void*)&thr, &count ))
          VG_(printf)("%lu:%p ", count, thr);
       TC_(doneIterBag)( lk->heldBy );
       VG_(printf)("}");
@@ -1134,7 +1141,8 @@
    space(d); VG_(printf)("map_locks (%d entries) {\n",
                          (Int)TC_(sizeFM)( map_locks ));
    TC_(initIterFM)( map_locks );
-   while (TC_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )) {
+   while (TC_(nextIterFM)( map_locks, (Word*)(void*)&gla,
+                                      (Word*)(void*)&lk )) {
       space(d+3);
       VG_(printf)("guest %p -> Lock %p\n", gla, lk);
    }
@@ -1181,7 +1189,8 @@
    space(d); VG_(printf)("map_segments (%d entries) {\n", 
                          (Int)TC_(sizeFM)( map_segments ));
    TC_(initIterFM)( map_segments );
-   while (TC_(nextIterFM)( map_segments, (Word*)&segid, (Word*)&seg )) {
+   while (TC_(nextIterFM)( map_segments, (Word*)(void*)&segid,
+                                         (Word*)(void*)&seg )) {
       space(d+3);
       VG_(printf)("segid 0x%x -> Segment %p\n", (UInt)segid, seg);
    }
@@ -1300,7 +1309,8 @@
    SecMap* sm;
    space(d); VG_(printf)("map_shmem_ShR_and_ShM_only {\n");
    TC_(initIterFM)( map_shmem );
-   while (TC_(nextIterFM)( map_shmem, (Word*)&ga, (Word*)&sm )) {
+   while (TC_(nextIterFM)( map_shmem, (Word*)(void*)&ga,
+                                      (Word*)(void*)&sm )) {
       pp_SecMap_shared( d+3, sm, ga );
    }
    TC_(doneIterFM) ( map_shmem );
@@ -1511,7 +1521,8 @@
    Bool  found;
    Lock* oldlock = NULL;
    tl_assert(is_sane_ThreadId(tid));
-   found = TC_(lookupFM)( map_locks, NULL, (Word*)&oldlock, (Word)ga );
+   found = TC_(lookupFM)( map_locks, 
+                          NULL, (Word*)(void*)&oldlock, (Word)ga );
    if (!found) {
       Lock* lock = mk_LockN(lkk, ga);
       lock->appeared_at = VG_(record_ExeContext)( tid, 0 );
@@ -1535,7 +1546,7 @@
 {
    Bool  found;
    Lock* lk = NULL;
-   found = TC_(lookupFM)( map_locks, NULL, (Word*)&lk, (Word)ga );
+   found = TC_(lookupFM)( map_locks, NULL, (Word*)(void*)&lk, (Word)ga );
    tl_assert(found  ?  lk != NULL  :  lk == NULL);
    if (found) {
       // check the relevant secondary map has .mbHasLocks?
@@ -1548,7 +1559,8 @@
 {
    Addr  ga2 = 0;
    Lock* lk  = NULL;
-   TC_(delFromFM)( map_locks, (Word*)&ga2, (Word*)&lk, (Word)ga );
+   TC_(delFromFM)( map_locks,
+                   (Word*)(void*)&ga2, (Word*)(void*)&lk, (Word)ga );
    /* delFromFM produces the val which is being deleted, if it is
       found.  So assert it is non-null; that in effect asserts that we
       are deleting a (ga, Lock) pair which actually exists. */
@@ -1571,7 +1583,8 @@
    Bool     found;
    Segment* seg = NULL;
    tl_assert( is_sane_SegmentID(segid) );
-   found = TC_(lookupFM)( map_segments, NULL, (Word*)&seg, (Word)segid );
+   found = TC_(lookupFM)( map_segments,
+                          NULL, (Word*)(void*)&seg, (Word)segid );
    tl_assert(found);
    tl_assert(seg != NULL);
    return seg;
@@ -1582,7 +1595,8 @@
    Bool     found;
    Segment* seg = NULL;
    tl_assert( is_sane_SegmentID(segid) );
-   found = TC_(lookupFM)( map_segments, NULL, (Word*)&seg, (Word)segid );
+   found = TC_(lookupFM)( map_segments,
+                          NULL, (Word*)(void*)&seg, (Word)segid );
    if (!found) tl_assert(seg == NULL);
    return seg;
 }
@@ -2332,7 +2346,7 @@
    SecMap* sm    = NULL;
    Addr    gaKey = shmem__round_to_SecMap_base(ga);
    if (TC_(lookupFM)( map_shmem,
-                      NULL/*keyP*/, (Word*)&sm, (Word)gaKey )) {
+                      NULL/*keyP*/, (Word*)(void*)&sm, (Word)gaKey )) {
       /* Found; address of SecMap is in sm */
       tl_assert(sm);
    } else {
@@ -2353,7 +2367,8 @@
 {
    SecMap* sm;
    Addr aKey = shmem__round_to_SecMap_base(a);
-   if (TC_(lookupFM)( map_shmem, NULL/*keyP*/, (Word*)&sm, (Word)aKey )) {
+   if (TC_(lookupFM)( map_shmem,
+                      NULL/*keyP*/, (Word*)(void*)&sm, (Word)aKey )) {
       /* Found */
       return sm->mbHasLocks;
    } else {
@@ -2366,7 +2381,8 @@
    SecMap* sm;
    Addr aKey = shmem__round_to_SecMap_base(a);
    tl_assert(b == False || b == True);
-   if (TC_(lookupFM)( map_shmem, NULL/*keyP*/, (Word*)&sm, (Word)aKey )) {
+   if (TC_(lookupFM)( map_shmem,
+                      NULL/*keyP*/, (Word*)(void*)&sm, (Word)aKey )) {
       /* Found; address of SecMap is in sm */
    } else {
       /* create a new one */
@@ -2382,7 +2398,8 @@
    SecMap* sm;
    Addr aKey = shmem__round_to_SecMap_base(a);
    tl_assert(b == False || b == True);
-   if (TC_(lookupFM)( map_shmem, NULL/*keyP*/, (Word*)&sm, (Word)aKey )) {
+   if (TC_(lookupFM)( map_shmem,
+                      NULL/*keyP*/, (Word*)(void*)&sm, (Word)aKey )) {
       /* Found; address of SecMap is in sm */
    } else {
       /* create a new one */
@@ -2541,7 +2558,8 @@
    // for each entry (gla, lk) in map_locks
    //      gla == lk->guest_addr
    TC_(initIterFM)( map_locks );
-   while (TC_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )) {
+   while (TC_(nextIterFM)( map_locks,
+                           (Word*)(void*)&gla, (Word*)(void*)&lk )) {
       if (lk->guestaddr != gla) BAD("2");
    }
    TC_(doneIterFM)( map_locks );
@@ -2563,7 +2581,8 @@
          Thread* thr;
          Word    count;
          TC_(initIterBag)( lk->heldBy );
-         while (TC_(nextIterBag)( lk->heldBy, (Word*)&thr, &count )) {
+         while (TC_(nextIterBag)( lk->heldBy, 
+                                  (Word*)(void*)&thr, &count )) {
             // is_sane_LockN above ensures these
             tl_assert(count >= 1);
             tl_assert(is_sane_Thread(thr));
@@ -2653,7 +2672,8 @@
    Addr*   valid_tags;
    TC_(initIterFM)( map_shmem );
    // for sm in SecMaps {
-   while (TC_(nextIterFM)( map_shmem, (Word*)&smga, (Word*)&sm )) {
+   while (TC_(nextIterFM)( map_shmem,
+                           (Word*)(void*)&smga, (Word*)(void*)&sm )) {
       SecMapIter itr;
       UInt*      w32p;
       Bool       mbHasShared = False;
@@ -2923,7 +2943,8 @@
 {
    ExeContext* ec_hint = NULL;
    if (ga_to_lastlock != NULL 
-       && TC_(lookupFM)(ga_to_lastlock, NULL, (Word*)&ec_hint, ga)) {
+       && TC_(lookupFM)(ga_to_lastlock, 
+                        NULL, (Word*)(void*)&ec_hint, ga)) {
       tl_assert(ec_hint != NULL);
       return ec_hint;
    } else {
@@ -4920,7 +4941,8 @@
    
    /* FIXME: don't iterate over the complete lock set */
    TC_(initIterFM)( map_locks );
-   while (TC_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )) {
+   while (TC_(nextIterFM)( map_locks,
+                           (Word*)(void*)&gla, (Word*)(void*)&lk )) {
       tl_assert(is_sane_LockN(lk));
       if (gla < firstA || gla > lastA)
          continue;
@@ -4968,7 +4990,8 @@
      UInt*      w32p;
 
      TC_(initIterFM)( map_shmem );
-     while (TC_(nextIterFM)( map_shmem, (Word*)&ga, (Word*)&sm )) {
+     while (TC_(nextIterFM)( map_shmem,
+                             (Word*)(void*)&ga, (Word*)(void*)&sm )) {
         tl_assert(sm);
         stats_SMs++;
         /* Skip this SecMap if the summary bit indicates it is safe to
@@ -5631,7 +5654,8 @@
 
    stats_SMs = stats_SMs_scanned = stats_reExcls = 0;
    TC_(initIterFM)( map_shmem );
-   while (TC_(nextIterFM)( map_shmem, (Word*)&ga, (Word*)&sm )) {
+   while (TC_(nextIterFM)( map_shmem,
+                           (Word*)(void*)&ga, (Word*)(void*)&sm )) {
       SecMapIter itr;
       UInt*      w32p;
       tl_assert(sm);
@@ -6126,7 +6150,8 @@
          edge back to it. */
       signalling_seg = NULL;
       found = TC_(lookupFM)( map_cond_to_Segment, 
-                             NULL, (Word*)&signalling_seg, (Word)cond );
+                             NULL, (Word*)(void*)&signalling_seg,
+                                   (Word)cond );
       if (found) {
          tl_assert(is_sane_Segment(signalling_seg));
          tl_assert(new_seg->prev);
@@ -6321,7 +6346,7 @@
    tl_assert(seg);
    map_sem_to_Segment_stack_INIT();
    if (TC_(lookupFM)( map_sem_to_Segment_stack, 
-                      NULL, (Word*)&xa, (Word)sem )) {
+                      NULL, (Word*)(void*)&xa, (Word)sem )) {
       tl_assert(xa);
       VG_(addToXA)( xa, &seg );
    } else {
@@ -6336,7 +6361,7 @@
    Segment* seg;
    map_sem_to_Segment_stack_INIT();
    if (TC_(lookupFM)( map_sem_to_Segment_stack, 
-                      NULL, (Word*)&xa, (Word)sem )) {
+                      NULL, (Word*)(void*)&xa, (Word)sem )) {
       /* xa is the stack for this semaphore. */
       Word sz = VG_(sizeXA)( xa );
       tl_assert(sz >= 0);
@@ -6544,7 +6569,8 @@
    TC_(initIterFM)( laog );
    me = NULL;
    links = NULL;
-   while (TC_(nextIterFM)( laog, (Word*)&me, (Word*)&links )) {
+   while (TC_(nextIterFM)( laog, (Word*)(void*)&me,
+                                 (Word*)(void*)&links )) {
       tl_assert(me);
       tl_assert(links);
       VG_(printf)("   node %p:\n", me);
@@ -6581,7 +6607,7 @@
    /* Update the out edges for src */
    keyW  = 0;
    links = NULL;
-   if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)src )) {
+   if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)src )) {
       WordSetID outs_new;
       tl_assert(links);
       tl_assert(keyW == (Word)src);
@@ -6597,7 +6623,7 @@
    /* Update the in edges for dst */
    keyW  = 0;
    links = NULL;
-   if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)dst )) {
+   if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)dst )) {
       WordSetID inns_new;
       tl_assert(links);
       tl_assert(keyW == (Word)dst);
@@ -6648,7 +6674,7 @@
    /* Update the out edges for src */
    keyW  = 0;
    links = NULL;
-   if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)src )) {
+   if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)src )) {
       tl_assert(links);
       tl_assert(keyW == (Word)src);
       links->outs = TC_(delFromWS)( univ_laog, links->outs, (Word)dst );
@@ -6656,7 +6682,7 @@
    /* Update the in edges for dst */
    keyW  = 0;
    links = NULL;
-   if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)dst )) {
+   if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)dst )) {
       tl_assert(links);
       tl_assert(keyW == (Word)dst);
       links->inns = TC_(delFromWS)( univ_laog, links->inns, (Word)src );
@@ -6669,7 +6695,7 @@
    LAOGLinks* links;
    keyW  = 0;
    links = NULL;
-   if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)lk )) {
+   if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)lk )) {
       tl_assert(links);
       tl_assert(keyW == (Word)lk);
       return links->outs;
@@ -6684,7 +6710,7 @@
    LAOGLinks* links;
    keyW  = 0;
    links = NULL;
-   if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)lk )) {
+   if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)lk )) {
       tl_assert(links);
       tl_assert(keyW == (Word)lk);
       return links->inns;
@@ -6705,7 +6731,8 @@
    me = NULL;
    links = NULL;
    if (0) VG_(printf)("laog sanity check\n");
-   while (TC_(nextIterFM)( laog, (Word*)&me, (Word*)&links )) {
+   while (TC_(nextIterFM)( laog, (Word*)(void*)&me,
+                                 (Word*)(void*)&links )) {
       tl_assert(me);
       tl_assert(links);
       TC_(getPayloadWS)( &ws_words, &ws_size, univ_laog, links->inns );
@@ -6838,7 +6865,8 @@
       key.src_ec = NULL;
       key.dst_ec = NULL;
       found = NULL;
-      if (TC_(lookupFM)( laog_exposition, (Word*)&found, NULL, (Word)&key )) {
+      if (TC_(lookupFM)( laog_exposition,
+                         (Word*)(void*)&found, NULL, (Word)&key )) {
          tl_assert(found != &key);
          tl_assert(found->src_ga == key.src_ga);
          tl_assert(found->dst_ga == key.dst_ga);
@@ -7463,7 +7491,7 @@
                      (void*)args[1]);
          map_pthread_t_to_Thread_INIT();
          found = TC_(lookupFM)( map_pthread_t_to_Thread, 
-                                NULL, (Word*)&thr_q, (Word)args[1] );
+                                NULL, (Word*)(void*)&thr_q, (Word)args[1] );
           /* Can this fail?  It would mean that our pthread_join
              wrapper observed a successful join on args[1] yet that
              thread never existed (or at least, it never lodged an
@@ -7614,7 +7642,8 @@
       string_table = TC_(newFM)( tc_zalloc, tc_free, string_table_cmp );
       tl_assert(string_table);
    }
-   if (TC_(lookupFM)( string_table, NULL, (Word*)&copy, (Word)str )) {
+   if (TC_(lookupFM)( string_table,
+                      NULL, (Word*)(void*)&copy, (Word)str )) {
       tl_assert(copy);
       if (0) VG_(printf)("string_table_strdup: %p -> %p\n", str, copy );
       return copy;
@@ -7648,7 +7677,7 @@
       yaWFM = TC_(newFM)( tc_zalloc, tc_free, lock_unique_cmp );
       tl_assert(yaWFM);
    }
-   if (!TC_(lookupFM)( yaWFM, NULL, (Word*)&lkp, (Word)lkn)) {
+   if (!TC_(lookupFM)( yaWFM, NULL, (Word*)(void*)&lkp, (Word)lkn)) {
       lkp = tc_zalloc( sizeof(Lock) );
       *lkp = *lkn;
       lkp->admin = NULL;

Modified: branches/THRCHECK/thrcheck/tc_wordset.c
===================================================================
--- branches/THRCHECK/thrcheck/tc_wordset.c     2007-11-06 22:00:35 UTC (rev 
7104)
+++ branches/THRCHECK/thrcheck/tc_wordset.c     2007-11-06 22:47:45 UTC (rev 
7105)
@@ -281,7 +281,8 @@
       causes failures on a 64-bit platform. */
    tl_assert(wv_new->owner == wsu);
    have = TC_(lookupFM)( wsu->vec2ix, 
-                         (Word*)&wv_old, (Word*)&ix_old, (Word)wv_new );
+                         (Word*)(void*)&wv_old, (Word*)&ix_old,
+                         (Word)wv_new );
    if (have) {
       tl_assert(wv_old != wv_new);
       tl_assert(wv_old);


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Valgrind-developers mailing list
Valgrind-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-developers

Reply via email to