Dan Gohman | 36a0947 | 2009-09-08 23:54:48 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -march=x86 |
Dan Gohman | 764fd0c | 2009-01-21 15:17:51 +0000 | [diff] [blame] | 2 | ; PR3317 |
| 3 | |
Chris Lattner | 1afcace | 2011-07-09 17:41:24 +0000 | [diff] [blame] | 4 | %VT = type [0 x i32 (...)*] |
Dan Gohman | 764fd0c | 2009-01-21 15:17:51 +0000 | [diff] [blame] | 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] } |
Dan Gohman | 764fd0c | 2009-01-21 15:17:51 +0000 | [diff] [blame] | 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 | } |