1# Copyright (C) 2015 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15.class public LTestCase;
16
17.super Ljava/lang/Object;
18
19## CHECK-START: void TestCase.testIntRefEquivalent() builder (after)
20## CHECK-NOT: Phi
21.method public static testIntRefEquivalent()V
22    .registers 4
23
24    const v0, 0
25
26    :try_start
27    invoke-static {v0,v0}, LTestCase;->foo(ILjava/lang/Object;)V
28    if-eqz v0, :end_if
29    const v0, 0
30    :end_if
31    invoke-static {v0,v0}, LTestCase;->foo(ILjava/lang/Object;)V
32    goto :no_catch
33    :try_end
34
35    .catch Ljava/lang/Exception; {:try_start .. :try_end} :exception
36    :exception
37    # We used to have a reference and an integer phi equivalents here, which
38    # broke the invariant of not sharing the same spill slot between those two
39    # types.
40    invoke-static {v0,v0}, LTestCase;->foo(ILjava/lang/Object;)V
41
42    :no_catch
43    goto :try_start
44    return-void
45
46.end method
47
48.method public static foo(ILjava/lang/Object;)V
49    .registers 4
50    return-void
51.end method
52