; RUN: llc < %s -mtriple=i686-- ; PR3317 %VT = type [0 x ptr] %ArraySInt16 = type { %JavaObject, ptr, [0 x i16] } %ArraySInt8 = type { %JavaObject, ptr, [0 x i8] } %Attribut = type { ptr, i32, i32 } %CacheNode = type { ptr, ptr, ptr, ptr } %Enveloppe = type { ptr, ptr, ptr, i8, ptr, %CacheNode } %JavaArray = type { %JavaObject, ptr } %JavaClass = type { %JavaCommonClass, i32, ptr, [1 x %TaskClassMirror], ptr, ptr, i16, ptr, i16, ptr, i16, ptr, i16, ptr, ptr, ptr, ptr, i16, ptr, i16, ptr, i16, i8, i32, i32, ptr, ptr } %JavaCommonClass = type { ptr, i32, [1 x ptr], i16, ptr, i16, ptr, ptr, ptr } %JavaField = type { ptr, i16, ptr, ptr, ptr, i16, ptr, i32, i16, ptr } %JavaMethod = type { ptr, i16, ptr, i16, ptr, i16, ptr, ptr, ptr, i8, ptr, i32, ptr } %JavaObject = type { ptr, ptr, ptr } %TaskClassMirror = type { i32, ptr } %UTF8 = type { %JavaObject, ptr, [0 x i16] } declare void @jnjvmNullPointerException() define i32 @JnJVM_java_rmi_activation_ActivationGroupID_hashCode__(ptr nocapture) nounwind { start: %1 = getelementptr %JavaObject, ptr %0, i64 1, i32 1 ; [#uses=1] %2 = load ptr, ptr %1 ; [#uses=4] %3 = icmp eq ptr %2, null ; [#uses=1] br i1 %3, label %verifyNullExit1, label %verifyNullCont2 verifyNullExit1: ; preds = %start tail call void @jnjvmNullPointerException() unreachable verifyNullCont2: ; preds = %start %4 = getelementptr { %JavaObject, i16, i32, i64 }, ptr %2, i64 0, i32 2 ; [#uses=1] %5 = load i32, ptr %4 ; [#uses=1] %6 = getelementptr %JavaCommonClass, ptr %2, i64 0, i32 4 ; [#uses=1] %7 = load i64, ptr %6 ; [#uses=1] %8 = trunc i64 %7 to i32 ; [#uses=1] %9 = getelementptr %JavaCommonClass, ptr %2, i64 0, i32 3 ; [#uses=1] %10 = load i16, ptr %9 ; [#uses=1] %11 = sext i16 %10 to i32 ; [#uses=1] %12 = xor i32 %8, %5 ; [#uses=1] %13 = xor i32 %12, %11 ; [#uses=1] ret i32 %13 }