diff --git a/compiler/optimizing/code_generator_x86.cc b/compiler/optimizing/code_generator_x86.cc
index e151c6b..1101569 100644
--- a/compiler/optimizing/code_generator_x86.cc
+++ b/compiler/optimizing/code_generator_x86.cc
@@ -1809,7 +1809,7 @@
     case Primitive::kPrimFloat:
     case Primitive::kPrimDouble: {
       locations->SetInAt(0, Location::RequiresFpuRegister());
-      locations->SetInAt(1, Location::Any());
+      locations->SetInAt(1, Location::RequiresFpuRegister());
       locations->SetOut(Location::SameAsFirstInput());
       break;
     }
@@ -1853,8 +1853,6 @@
     case Primitive::kPrimFloat: {
       if (second.IsFpuRegister()) {
         __ addss(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>());
-      } else {
-        __ addss(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex()));
       }
       break;
     }
@@ -1862,8 +1860,6 @@
     case Primitive::kPrimDouble: {
       if (second.IsFpuRegister()) {
         __ addsd(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>());
-      } else {
-        __ addsd(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex()));
       }
       break;
     }
diff --git a/test/451-regression-add-float/expected.txt b/test/451-regression-add-float/expected.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/451-regression-add-float/expected.txt
diff --git a/test/451-regression-add-float/info.txt b/test/451-regression-add-float/info.txt
new file mode 100644
index 0000000..83a5f9d
--- /dev/null
+++ b/test/451-regression-add-float/info.txt
@@ -0,0 +1,2 @@
+Tests a regression in float addition for optimizing. The second argument
+could be now be a constant for floating point numbers.
diff --git a/test/451-regression-add-float/src/Main.java b/test/451-regression-add-float/src/Main.java
new file mode 100644
index 0000000..0d4bf06
--- /dev/null
+++ b/test/451-regression-add-float/src/Main.java
@@ -0,0 +1,72 @@
+/*
+* Copyright (C) 2015 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+public class Main {
+
+  public static void main(String[] args) {
+    assertEqual(4, add3(1));
+    assertEqual(4l, add3(1l));
+    assertEqual(4f, add3(1f));
+    assertEqual(4d, add3(1d));
+  }
+
+  public static int add3(int a) {
+    return 1 + a + 2;
+  }
+
+  public static long add3(long a) {
+    return 1l + a + 2l;
+  }
+
+  public static float add3(float a) {
+    return 1f + a + 2f;
+  }
+
+  public static double add3(double a) {
+    return 1d + a + 2d;
+  }
+
+  public static void assertEqual(int a, int b) {
+    if (a != b) {
+      throw new RuntimeException("Expected: " + a + " Found: " + b);
+    }
+  }
+
+  public static void assertEqual(long a, long b) {
+    if (a != b) {
+      throw new RuntimeException("Expected: " + a + " Found: " + b);
+    }
+  }
+
+  public static void assertEqual(float a, float b) {
+    boolean aproxEquals = (a > b)
+      ? ((a - b) < 0.0001f)
+      : ((b - a) < 0.0001f);
+    if (!aproxEquals) {
+      throw new RuntimeException("Expected: " + a + " Found: " + b);
+    }
+  }
+
+  public static void assertEqual(double a, double b) {
+    boolean aproxEquals = (a > b)
+      ? ((a - b) < 0.0001d)
+      : ((b - a) < 0.0001d);
+    if (!aproxEquals) {
+      throw new RuntimeException("Expected: " + a + " Found: " + b);
+    }
+  }
+}
