content: /*
   * 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) {
      // Create a few local variables to make sure some get spilled, and we get
      // a conflict of swapping a single entry stack slot (float) with a double entry
      // stack slot (double).
      double a = 0.0;
      double b = 1.0;
      double c = 2.0;
      double d = 3.0;
      double e = 4.0;
      double f = 5.0;
      double g = 6.0;
      double h = 7.0;
      double i = 8.0;
      double j = 9.0;
  
      float aa = 0;
      float bb = 1;
      float cc = 2;
      float dd = 3;
      float ee = 4;
      float ff = 5;
      float gg = 6;
      float hh = 7;
      float ii = 8;
      float jj = 9;
      float kk = 10;
      float ll = 10;
      float mm = 10;
      float nn = 10;
  
      for (int count = 0; count < 2; count++) {
        System.out.println(aa + bb + cc + dd + ee + ff + gg + hh + ii + jj + kk + ll + mm + nn);
        System.out.println(a + b + c + d + e + f + g + h + i + j);
        a = $noinline$computeDouble();
        b = $noinline$computeDouble();
        c = $noinline$computeDouble();
        d = $noinline$computeDouble();
        e = $noinline$computeDouble();
        f = $noinline$computeDouble();
        g = $noinline$computeDouble();
        h = $noinline$computeDouble();
        i = $noinline$computeDouble();
        j = $noinline$computeDouble();
        System.out.println(a + b + c + d + e + f + g + h + i + j);
        aa = $noinline$computeFloat();
        bb = $noinline$computeFloat();
        cc = $noinline$computeFloat();
        dd = $noinline$computeFloat();
        ee = $noinline$computeFloat();
        ff = $noinline$computeFloat();
        gg = $noinline$computeFloat();
        hh = $noinline$computeFloat();
        ii = $noinline$computeFloat();
        jj = $noinline$computeFloat();
        kk = $noinline$computeFloat();
        ll = $noinline$computeFloat();
        mm = $noinline$computeFloat();
        nn = $noinline$computeFloat();
      }
    }
  
    static boolean doThrow = false;
  
    public static double $noinline$computeDouble() {
      if (doThrow) {
        // Try defeating inlining.
        throw new Error();
      }
      return 2.0;
    }
  
    public static float $noinline$computeFloat() {
      if (doThrow) {
        // Try defeating inlining.
        throw new Error();
      }
      return 4.0f;
    }
  }
  