]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
mips: use local labels for do_acasW()
authorPetar Jovanovic <mips32r2@gmail.com>
Mon, 25 Mar 2019 18:53:21 +0000 (19:53 +0100)
committerPetar Jovanovic <mips32r2@gmail.com>
Mon, 25 Mar 2019 18:53:21 +0000 (19:53 +0100)
use local labels for do_acasW() to avoid defining symbols multiple times
when the function gets inlined.

It fixes assembler error reported in KDE #400164.

helgrind/tests/annotate_hbefore.c

index e311714f76654ea3ac6aa9f4b5f0c7112b26d4f7..71590d03a5d0d0d89c46527a0c954495de86c6e0 100644 (file)
@@ -234,15 +234,15 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
       "lw     $t2, 8(%1)"        "\n\t"
       "lw     $t3, 4(%1)"        "\n\t"
       "ll     $t1, 0($t0)"       "\n\t"
-      "bne    $t1, $t2, exit_0"  "\n\t"
+      "bne    $t1, $t2, 1f"      "\n\t"
       "nop"                      "\n\t"
       "sc     $t3, 0($t0)"       "\n\t"
       "move   %0, $t3"           "\n\t"
-      "b exit"                   "\n\t"
+      "b 2f"                     "\n\t"
       "nop"                      "\n\t"
-      "exit_0:"                  "\n\t"
+      "1:"                       "\n\t"
       "move   %0, $zero"         "\n\t"
-      "exit:"                    "\n\t"
+      "2:"                       "\n\t"
       : /*out*/ "=r"(success)
       : /*in*/ "r"(&block[0])
       : /*trash*/ "t0", "t1", "t2", "t3", "memory"
@@ -267,15 +267,15 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
       "ld     $t2, 16(%1)"       "\n\t"
       "ld     $t3, 8(%1)"        "\n\t"
       "ll     $t1, 0($t0)"       "\n\t"
-      "bne    $t1, $t2, exit_0"  "\n\t"
+      "bne    $t1, $t2, 1f"      "\n\t"
       "nop"                      "\n\t"
       "sc     $t3, 0($t0)"       "\n\t"
       "move   %0, $t3"           "\n\t"
-      "b exit"                   "\n\t"
+      "b 2f"                     "\n\t"
       "nop"                      "\n\t"
-      "exit_0:"                  "\n\t"
+      "1:"                       "\n\t"
       "move   %0, $zero"         "\n\t"
-      "exit:"                    "\n\t"
+      "2:"                       "\n\t"
       : /*out*/ "=r"(success)
       : /*in*/ "r"(&block[0])
       : /*trash*/ "t0", "t1", "t2", "t3", "memory"