mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81290 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			47 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: llc < %s -march=x86
 | |
| ; PR3317
 | |
| 
 | |
|         %ArraySInt16 = type { %JavaObject, i8*, [0 x i16] }
 | |
|         %ArraySInt8 = type { %JavaObject, i8*, [0 x i8] }
 | |
|         %Attribut = type { %ArraySInt16*, i32, i32 }
 | |
|         %CacheNode = type { i8*, %JavaCommonClass*, %CacheNode*, %Enveloppe* }
 | |
|         %Enveloppe = type { %CacheNode*, %ArraySInt16*, %ArraySInt16*, i8, %JavaClass*, %CacheNode }
 | |
|         %JavaArray = type { %JavaObject, i8* }
 | |
|         %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*)* }
 | |
|         %JavaCommonClass = type { %JavaCommonClass**, i32, [1 x %JavaObject*], i16, %JavaClass**, i16, %ArraySInt16*, %JavaClass*, i8* }
 | |
|         %JavaField = type { i8*, i16, %ArraySInt16*, %ArraySInt16*, %Attribut*, i16, %JavaClass*, i32, i16, i8* }
 | |
|         %JavaMethod = type { i8*, i16, %Attribut*, i16, %Enveloppe*, i16, %JavaClass*, %ArraySInt16*, %ArraySInt16*, i8, i8*, i32, i8* }
 | |
|         %JavaObject = type { %VT*, %JavaCommonClass*, i8* }
 | |
|         %TaskClassMirror = type { i32, i8* }
 | |
|         %UTF8 = type { %JavaObject, i8*, [0 x i16] }
 | |
|         %VT = type [0 x i32 (...)*]
 | |
| 
 | |
| declare void @jnjvmNullPointerException()
 | |
| 
 | |
| define i32 @JnJVM_java_rmi_activation_ActivationGroupID_hashCode__(%JavaObject* nocapture) nounwind {
 | |
| start:
 | |
|         %1 = getelementptr %JavaObject* %0, i64 1, i32 1                ; <%JavaCommonClass**> [#uses=1]
 | |
|         %2 = load %JavaCommonClass** %1         ; <%JavaCommonClass*> [#uses=4]
 | |
|         %3 = icmp eq %JavaCommonClass* %2, null         ; <i1> [#uses=1]
 | |
|         br i1 %3, label %verifyNullExit1, label %verifyNullCont2
 | |
| 
 | |
| verifyNullExit1:                ; preds = %start
 | |
|         tail call void @jnjvmNullPointerException()
 | |
|         unreachable
 | |
| 
 | |
| verifyNullCont2:                ; preds = %start
 | |
|         %4 = bitcast %JavaCommonClass* %2 to { %JavaObject, i16, i32, i64 }*            ; <{ %JavaObject, i16, i32, i64 }*> [#uses=1]
 | |
|         %5 = getelementptr { %JavaObject, i16, i32, i64 }* %4, i64 0, i32 2             ; <i32*> [#uses=1]
 | |
|         %6 = load i32* %5               ; <i32> [#uses=1]
 | |
|         %7 = getelementptr %JavaCommonClass* %2, i64 0, i32 4           ; <%JavaClass***> [#uses=1]
 | |
|         %8 = bitcast %JavaClass*** %7 to i64*           ; <i64*> [#uses=1]
 | |
|         %9 = load i64* %8               ; <i64> [#uses=1]
 | |
|         %10 = trunc i64 %9 to i32               ; <i32> [#uses=1]
 | |
|         %11 = getelementptr %JavaCommonClass* %2, i64 0, i32 3          ; <i16*> [#uses=1]
 | |
|         %12 = load i16* %11             ; <i16> [#uses=1]
 | |
|         %13 = sext i16 %12 to i32               ; <i32> [#uses=1]
 | |
|         %14 = xor i32 %10, %6           ; <i32> [#uses=1]
 | |
|         %15 = xor i32 %14, %13          ; <i32> [#uses=1]
 | |
|         ret i32 %15 
 | |
| }
 |