Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/X86/pr3317.ll @ 0:95c75e76d11b LLVM3.4
LLVM 3.4
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 12 Dec 2013 13:56:28 +0900 |
parents | |
children | afa8332a0e37 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:95c75e76d11b |
---|---|
1 ; RUN: llc < %s -march=x86 | |
2 ; PR3317 | |
3 | |
4 %VT = type [0 x i32 (...)*] | |
5 %ArraySInt16 = type { %JavaObject, i8*, [0 x i16] } | |
6 %ArraySInt8 = type { %JavaObject, i8*, [0 x i8] } | |
7 %Attribut = type { %ArraySInt16*, i32, i32 } | |
8 %CacheNode = type { i8*, %JavaCommonClass*, %CacheNode*, %Enveloppe* } | |
9 %Enveloppe = type { %CacheNode*, %ArraySInt16*, %ArraySInt16*, i8, %JavaClass*, %CacheNode } | |
10 %JavaArray = type { %JavaObject, i8* } | |
11 %JavaClass = type { %JavaCommonClass, i32, %VT*, [1 x %TaskClassMirror], i8*, %JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16, %JavaMethod*, i16, i8*, %ArraySInt8*, i8*, %Attribut*, i16, %JavaClass**, i16, %JavaClass*, i16, i8, i32, i32, i8*, void (i8*)* } | |
12 %JavaCommonClass = type { %JavaCommonClass**, i32, [1 x %JavaObject*], i16, %JavaClass**, i16, %ArraySInt16*, %JavaClass*, i8* } | |
13 %JavaField = type { i8*, i16, %ArraySInt16*, %ArraySInt16*, %Attribut*, i16, %JavaClass*, i32, i16, i8* } | |
14 %JavaMethod = type { i8*, i16, %Attribut*, i16, %Enveloppe*, i16, %JavaClass*, %ArraySInt16*, %ArraySInt16*, i8, i8*, i32, i8* } | |
15 %JavaObject = type { %VT*, %JavaCommonClass*, i8* } | |
16 %TaskClassMirror = type { i32, i8* } | |
17 %UTF8 = type { %JavaObject, i8*, [0 x i16] } | |
18 | |
19 declare void @jnjvmNullPointerException() | |
20 | |
21 define i32 @JnJVM_java_rmi_activation_ActivationGroupID_hashCode__(%JavaObject* nocapture) nounwind { | |
22 start: | |
23 %1 = getelementptr %JavaObject* %0, i64 1, i32 1 ; <%JavaCommonClass**> [#uses=1] | |
24 %2 = load %JavaCommonClass** %1 ; <%JavaCommonClass*> [#uses=4] | |
25 %3 = icmp eq %JavaCommonClass* %2, null ; <i1> [#uses=1] | |
26 br i1 %3, label %verifyNullExit1, label %verifyNullCont2 | |
27 | |
28 verifyNullExit1: ; preds = %start | |
29 tail call void @jnjvmNullPointerException() | |
30 unreachable | |
31 | |
32 verifyNullCont2: ; preds = %start | |
33 %4 = bitcast %JavaCommonClass* %2 to { %JavaObject, i16, i32, i64 }* ; <{ %JavaObject, i16, i32, i64 }*> [#uses=1] | |
34 %5 = getelementptr { %JavaObject, i16, i32, i64 }* %4, i64 0, i32 2 ; <i32*> [#uses=1] | |
35 %6 = load i32* %5 ; <i32> [#uses=1] | |
36 %7 = getelementptr %JavaCommonClass* %2, i64 0, i32 4 ; <%JavaClass***> [#uses=1] | |
37 %8 = bitcast %JavaClass*** %7 to i64* ; <i64*> [#uses=1] | |
38 %9 = load i64* %8 ; <i64> [#uses=1] | |
39 %10 = trunc i64 %9 to i32 ; <i32> [#uses=1] | |
40 %11 = getelementptr %JavaCommonClass* %2, i64 0, i32 3 ; <i16*> [#uses=1] | |
41 %12 = load i16* %11 ; <i16> [#uses=1] | |
42 %13 = sext i16 %12 to i32 ; <i32> [#uses=1] | |
43 %14 = xor i32 %10, %6 ; <i32> [#uses=1] | |
44 %15 = xor i32 %14, %13 ; <i32> [#uses=1] | |
45 ret i32 %15 | |
46 } |