hotspot/src/share/vm/opto/reg_split.cpp
changeset 6272 94a20ad0e9de
parent 6188 95ea4d66089a
child 7397 5b173b4ca846
--- a/hotspot/src/share/vm/opto/reg_split.cpp	Wed Aug 18 01:22:16 2010 -0700
+++ b/hotspot/src/share/vm/opto/reg_split.cpp	Thu Aug 19 14:51:47 2010 -0700
@@ -975,6 +975,19 @@
               insidx++;  // Reset iterator to skip USE side split
               continue;
             }
+
+            if (UseFPUForSpilling && n->is_Call() && !uup && !dup ) {
+              // The use at the call can force the def down so insert
+              // a split before the use to allow the def more freedom.
+              maxlrg = split_USE(def,b,n,inpidx,maxlrg,dup,false, splits,slidx);
+              // If it wasn't split bail
+              if (!maxlrg) {
+                return 0;
+              }
+              insidx++;  // Reset iterator to skip USE side split
+              continue;
+            }
+
             // Here is the logic chart which describes USE Splitting:
             // 0 = false or DOWN, 1 = true or UP
             //