]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix generated assembler which writes the result to memory to correctly
authorTom Hughes <tom@compton.nu>
Mon, 28 Mar 2011 13:08:52 +0000 (13:08 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 28 Mar 2011 13:08:52 +0000 (13:08 +0000)
use an =m constraint to indicate that the address will be written to.

Partial fix to bug #266931.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11671

none/tests/amd64/gen_insn_test.pl
none/tests/x86/gen_insn_test.pl

index faa1c7f9b1e42b125e3325d0b1e2291ca7394c18..91dec10e8acd8d8389a12c687b2308716242e45c 100644 (file)
@@ -628,10 +628,7 @@ while (<>)
 
     foreach my $result (@results)
     {
-        if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
-        {
-            $result->{argnum} = $argnum++;
-        }
+        $result->{argnum} = $argnum++;
     }
     
     foreach my $arg (@presets, @args)
@@ -641,14 +638,6 @@ while (<>)
             $arg->{argnum} = $argnum++;
         }
     }
-    
-    foreach my $result (@results)
-    {
-        if ($result->{type} =~ /^(r(8|16|32|64)|mm|xmm)$/)
-        {
-            $result->{argnum} = $argnum++;
-        }
-    }
 
     my $stateargnum = $argnum++;
 
@@ -852,11 +841,8 @@ while (<>)
 
     foreach my $result (@results)
     {
-        if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
-        {
-            print qq|$prefix\"=m\" \($result->{name}\)|;
-            $prefix = ", ";
-        }
+        print qq|$prefix\"=m\" \($result->{name}\)|;
+        $prefix = ", ";
     }
 
     print qq|\n|;
@@ -871,15 +857,6 @@ while (<>)
             $prefix = ", ";
         }
     }
-    
-    foreach my $result (@results)
-    {
-        if ($result->{type} =~ /^(r(8|16|32|64)|mm|xmm)$/)
-        {
-            print qq|$prefix\"m\" \($result->{name}\)|;
-            $prefix = ", ";
-        }
-    }
 
     print qq|$prefix\"m\" \(state[0]\)\n|;
 
index 283583dc3e644a27c46bc5a77407ffec230db7c8..b6ecb639152af8c024b0377b0fb15df73ed6dd29 100644 (file)
@@ -605,10 +605,7 @@ while (<>)
 
     foreach my $result (@results)
     {
-        if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
-        {
-            $result->{argnum} = $argnum++;
-        }
+        $result->{argnum} = $argnum++;
     }
     
     foreach my $arg (@presets, @args)
@@ -618,14 +615,6 @@ while (<>)
             $arg->{argnum} = $argnum++;
         }
     }
-    
-    foreach my $result (@results)
-    {
-        if ($result->{type} =~ /^(r(8|16|32)|mm|xmm)$/)
-        {
-            $result->{argnum} = $argnum++;
-        }
-    }
 
     my $stateargnum = $argnum++;
 
@@ -817,11 +806,8 @@ while (<>)
 
     foreach my $result (@results)
     {
-        if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
-        {
-            print qq|$prefix\"=m\" \($result->{name}\)|;
-            $prefix = ", ";
-        }
+        print qq|$prefix\"=m\" \($result->{name}\)|;
+        $prefix = ", ";
     }
 
     print qq|\n|;
@@ -836,15 +822,6 @@ while (<>)
             $prefix = ", ";
         }
     }
-    
-    foreach my $result (@results)
-    {
-        if ($result->{type} =~ /^(r(8|16|32)|mm|xmm)$/)
-        {
-            print qq|$prefix\"m\" \($result->{name}\)|;
-            $prefix = ", ";
-        }
-    }
 
     print qq|$prefix\"m\" \(state[0]\)\n|;