valgrind.h: add "r0" to the clobber list on PPC
authorRyan Lortie <desrt@desrt.ca>
Wed, 20 Nov 2013 21:57:26 +0000 (16:57 -0500)
committerRyan Lortie <desrt@desrt.ca>
Mon, 16 Dec 2013 19:55:28 +0000 (14:55 -0500)
Looks like the magic sequences trash this register, so make sure GCC
knows that.

https://bugzilla.gnome.org/show_bug.cgi?id=710983

glib/valgrind.h

index cc2cf3d..7bb1382 100644 (file)
@@ -442,7 +442,7 @@ typedef
                      "mr %0,3"     /*result*/                     \
                      : "=b" (_zzq_result)                         \
                      : "b" (_zzq_default), "b" (_zzq_ptr)         \
-                     : "cc", "memory", "r3", "r4");               \
+                     : "cc", "memory", "r3", "r4", "r0");         \
     _zzq_result;                                                  \
     })
 
@@ -455,7 +455,7 @@ typedef
                      "mr %0,3"                                    \
                      : "=b" (__addr)                              \
                      :                                            \
-                     : "cc", "memory", "r3"                       \
+                     : "cc", "memory", "r3", "r0"                 \
                     );                                            \
     _zzq_orig->nraddr = __addr;                                   \
   }
@@ -504,7 +504,7 @@ typedef
                      "mr %0,3"     /*result*/                     \
                      : "=b" (_zzq_result)                         \
                      : "b" (_zzq_default), "b" (_zzq_ptr)         \
-                     : "cc", "memory", "r3", "r4");               \
+                     : "cc", "memory", "r3", "r4", "r0");         \
     _zzq_result;                                                  \
   })
 
@@ -517,7 +517,7 @@ typedef
                      "mr %0,3"                                    \
                      : "=b" (__addr)                              \
                      :                                            \
-                     : "cc", "memory", "r3"                       \
+                     : "cc", "memory", "r3", "r0"                 \
                     );                                            \
     _zzq_orig->nraddr = __addr;                                   \
     __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
@@ -526,7 +526,7 @@ typedef
                      "mr %0,3"                                    \
                      : "=b" (__addr)                              \
                      :                                            \
-                     : "cc", "memory", "r3"                       \
+                     : "cc", "memory", "r3", "r0"                 \
                     );                                            \
     _zzq_orig->r2 = __addr;                                       \
   }