├── BitCodeInterpreter.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── xcuserdata
│ │ └── jintao.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
└── xcuserdata
│ └── jintao.xcuserdatad
│ ├── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
│ └── xcschemes
│ └── xcschememanagement.plist
├── BitCodeInterpreter
├── AppDelegate.h
├── AppDelegate.m
├── Assets.xcassets
│ ├── AccentColor.colorset
│ │ └── Contents.json
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── BitCodeInterpreter
│ └── llvm
│ │ ├── ADT
│ │ ├── APFixedPoint.h
│ │ ├── APFloat.h
│ │ ├── APInt.h
│ │ ├── APSInt.h
│ │ ├── AllocatorList.h
│ │ ├── Any.h
│ │ ├── ArrayRef.h
│ │ ├── BitVector.h
│ │ ├── Bitfields.h
│ │ ├── BitmaskEnum.h
│ │ ├── BreadthFirstIterator.h
│ │ ├── CachedHashString.h
│ │ ├── CoalescingBitVector.h
│ │ ├── DAGDeltaAlgorithm.h
│ │ ├── DeltaAlgorithm.h
│ │ ├── DenseMap.h
│ │ ├── DenseMapInfo.h
│ │ ├── DenseSet.h
│ │ ├── DepthFirstIterator.h
│ │ ├── DirectedGraph.h
│ │ ├── EnumeratedArray.h
│ │ ├── EpochTracker.h
│ │ ├── EquivalenceClasses.h
│ │ ├── FloatingPointMode.h
│ │ ├── FoldingSet.h
│ │ ├── FunctionExtras.h
│ │ ├── GraphTraits.h
│ │ ├── Hashing.h
│ │ ├── ImmutableList.h
│ │ ├── ImmutableMap.h
│ │ ├── ImmutableSet.h
│ │ ├── IndexedMap.h
│ │ ├── IntEqClasses.h
│ │ ├── IntervalMap.h
│ │ ├── IntrusiveRefCntPtr.h
│ │ ├── MapVector.h
│ │ ├── None.h
│ │ ├── Optional.h
│ │ ├── PackedVector.h
│ │ ├── PointerEmbeddedInt.h
│ │ ├── PointerIntPair.h
│ │ ├── PointerSumType.h
│ │ ├── PointerUnion.h
│ │ ├── PostOrderIterator.h
│ │ ├── PriorityQueue.h
│ │ ├── PriorityWorklist.h
│ │ ├── SCCIterator.h
│ │ ├── STLExtras.h
│ │ ├── ScopeExit.h
│ │ ├── ScopedHashTable.h
│ │ ├── Sequence.h
│ │ ├── SetOperations.h
│ │ ├── SetVector.h
│ │ ├── SmallBitVector.h
│ │ ├── SmallPtrSet.h
│ │ ├── SmallSet.h
│ │ ├── SmallString.h
│ │ ├── SmallVector.h
│ │ ├── SparseBitVector.h
│ │ ├── SparseMultiSet.h
│ │ ├── SparseSet.h
│ │ ├── Statistic.h
│ │ ├── StringExtras.h
│ │ ├── StringMap.h
│ │ ├── StringMapEntry.h
│ │ ├── StringRef.h
│ │ ├── StringSet.h
│ │ ├── StringSwitch.h
│ │ ├── TinyPtrVector.h
│ │ ├── Triple.h
│ │ ├── Twine.h
│ │ ├── TypeSwitch.h
│ │ ├── UniqueVector.h
│ │ ├── Waymarking.h
│ │ ├── bit.h
│ │ ├── edit_distance.h
│ │ ├── fallible_iterator.h
│ │ ├── ilist.h
│ │ ├── ilist_base.h
│ │ ├── ilist_iterator.h
│ │ ├── ilist_node.h
│ │ ├── ilist_node_base.h
│ │ ├── ilist_node_options.h
│ │ ├── iterator.h
│ │ ├── iterator_range.h
│ │ └── simple_ilist.h
│ │ ├── AsmParser
│ │ ├── LLLexer.cpp
│ │ ├── LLLexer.h
│ │ ├── LLParser.cpp
│ │ ├── LLParser.h
│ │ ├── LLToken.h
│ │ ├── Parser.cpp
│ │ ├── Parser.h
│ │ └── SlotMapping.h
│ │ ├── Basic
│ │ └── LLVM.h
│ │ ├── BinaryFormat
│ │ ├── COFF.h
│ │ ├── Dwarf.cpp
│ │ ├── Dwarf.def
│ │ ├── Dwarf.h
│ │ ├── ELF.h
│ │ ├── MachO.cpp
│ │ ├── MachO.def
│ │ ├── MachO.h
│ │ ├── Magic.cpp
│ │ ├── Magic.h
│ │ └── XCOFF.h
│ │ ├── Bitcode
│ │ ├── BitReader.cpp
│ │ ├── BitcodeAnalyzer.cpp
│ │ ├── BitcodeAnalyzer.h
│ │ ├── BitcodeCommon.h
│ │ ├── BitcodeReader.cpp
│ │ ├── BitcodeReader.h
│ │ ├── LLVMBitCodes.h
│ │ ├── MetadataLoader.cpp
│ │ ├── MetadataLoader.h
│ │ ├── ValueList.cpp
│ │ └── ValueList.h
│ │ ├── Bitstream
│ │ ├── BitCodes.h
│ │ ├── BitstreamReader.cpp
│ │ ├── BitstreamReader.h
│ │ └── BitstreamWriter.h
│ │ ├── CodeGen
│ │ ├── IntrinsicLowering.cpp
│ │ └── IntrinsicLowering.h
│ │ ├── Config
│ │ ├── AsmParsers.def
│ │ ├── AsmPrinters.def
│ │ ├── Disassemblers.def
│ │ ├── Targets.def
│ │ ├── abi-breaking.h
│ │ ├── config.h
│ │ └── llvm-config.h
│ │ ├── DebugInfo
│ │ ├── CodeView
│ │ │ ├── CVRecord.h
│ │ │ ├── CodeView.h
│ │ │ ├── CodeViewError.h
│ │ │ ├── CodeViewRegisters.def
│ │ │ ├── CodeViewSymbols.def
│ │ │ ├── CodeViewTypes.def
│ │ │ ├── Line.h
│ │ │ ├── RecordSerialization.h
│ │ │ ├── SymbolRecord.h
│ │ │ └── TypeIndex.h
│ │ └── DIContext.h
│ │ ├── Demangle
│ │ ├── Demangle.cpp
│ │ ├── Demangle.h
│ │ ├── DemangleConfig.h
│ │ ├── ItaniumDemangle.cpp
│ │ ├── ItaniumDemangle.h
│ │ ├── MicrosoftDemangle.cpp
│ │ ├── MicrosoftDemangle.h
│ │ ├── MicrosoftDemangleNodes.cpp
│ │ ├── MicrosoftDemangleNodes.h
│ │ ├── StringView.h
│ │ └── Utility.h
│ │ ├── ExecutionEngine
│ │ ├── ExecutionEngine.cpp
│ │ ├── ExecutionEngine.h
│ │ ├── GenericValue.h
│ │ ├── ObjectCache.h
│ │ └── OrcV1Deprecation.h
│ │ ├── IR
│ │ ├── AbstractCallSite.h
│ │ ├── Argument.h
│ │ ├── AssemblyAnnotationWriter.h
│ │ ├── Assumptions.h
│ │ ├── Attributes.h
│ │ ├── Attributes.inc
│ │ ├── Attributes.td
│ │ ├── AutoUpgrade.h
│ │ ├── BasicBlock.h
│ │ ├── CFG.h
│ │ ├── CallingConv.h
│ │ ├── Comdat.h
│ │ ├── Constant.h
│ │ ├── ConstantFolder.h
│ │ ├── ConstantRange.h
│ │ ├── Constants.h
│ │ ├── ConstrainedOps.def
│ │ ├── DIBuilder.h
│ │ ├── DataLayout.h
│ │ ├── DebugInfo.h
│ │ ├── DebugInfoFlags.def
│ │ ├── DebugInfoMetadata.h
│ │ ├── DebugLoc.h
│ │ ├── DerivedTypes.h
│ │ ├── DerivedUser.h
│ │ ├── DiagnosticHandler.h
│ │ ├── DiagnosticInfo.h
│ │ ├── DiagnosticPrinter.h
│ │ ├── Dominators.h
│ │ ├── FPEnv.h
│ │ ├── FixedMetadataKinds.def
│ │ ├── FixedPointBuilder.h
│ │ ├── Function.h
│ │ ├── GVMaterializer.h
│ │ ├── GetElementPtrTypeIterator.h
│ │ ├── GlobalAlias.h
│ │ ├── GlobalIFunc.h
│ │ ├── GlobalIndirectSymbol.h
│ │ ├── GlobalObject.h
│ │ ├── GlobalPtrAuthInfo.h
│ │ ├── GlobalValue.h
│ │ ├── GlobalVariable.h
│ │ ├── IRBuilder.h
│ │ ├── IRBuilderFolder.h
│ │ ├── IRPrintingPasses.h
│ │ ├── InlineAsm.h
│ │ ├── InstIterator.h
│ │ ├── InstVisitor.h
│ │ ├── InstrTypes.h
│ │ ├── Instruction.def
│ │ ├── Instruction.h
│ │ ├── Instructions.h
│ │ ├── IntrinsicEnums.inc
│ │ ├── IntrinsicImpl.inc
│ │ ├── IntrinsicInst.h
│ │ ├── Intrinsics.h
│ │ ├── Intrinsics.td
│ │ ├── IntrinsicsAArch64.h
│ │ ├── IntrinsicsAMDGPU.h
│ │ ├── IntrinsicsARM.h
│ │ ├── IntrinsicsBPF.h
│ │ ├── IntrinsicsHexagon.h
│ │ ├── IntrinsicsMips.h
│ │ ├── IntrinsicsNVPTX.h
│ │ ├── IntrinsicsPowerPC.h
│ │ ├── IntrinsicsR600.h
│ │ ├── IntrinsicsRISCV.h
│ │ ├── IntrinsicsS390.h
│ │ ├── IntrinsicsVE.h
│ │ ├── IntrinsicsWebAssembly.h
│ │ ├── IntrinsicsX86.h
│ │ ├── IntrinsicsXCore.h
│ │ ├── LLVMContext.h
│ │ ├── LLVMRemarkStreamer.h
│ │ ├── LegacyPassManager.h
│ │ ├── LegacyPassManagers.h
│ │ ├── LegacyPassNameParser.h
│ │ ├── MDBuilder.h
│ │ ├── Mangler.h
│ │ ├── MatrixBuilder.h
│ │ ├── Metadata.def
│ │ ├── Metadata.h
│ │ ├── Module.h
│ │ ├── ModuleSlotTracker.h
│ │ ├── ModuleSummaryIndex.h
│ │ ├── ModuleSummaryIndexYAML.h
│ │ ├── NoFolder.h
│ │ ├── OperandTraits.h
│ │ ├── Operator.h
│ │ ├── OptBisect.h
│ │ ├── PassInstrumentation.h
│ │ ├── PassManager.h
│ │ ├── PassManagerImpl.h
│ │ ├── PassManagerInternal.h
│ │ ├── PassTimingInfo.h
│ │ ├── PatternMatch.h
│ │ ├── PredIteratorCache.h
│ │ ├── PrintPasses.h
│ │ ├── ProfileSummary.h
│ │ ├── PseudoProbe.h
│ │ ├── RuntimeLibcalls.def
│ │ ├── SafepointIRVerifier.h
│ │ ├── Statepoint.h
│ │ ├── StructuralHash.h
│ │ ├── SymbolTableListTraits.h
│ │ ├── TrackingMDRef.h
│ │ ├── Type.h
│ │ ├── TypeFinder.h
│ │ ├── Use.h
│ │ ├── UseListOrder.h
│ │ ├── User.h
│ │ ├── VPIntrinsics.def
│ │ ├── Value.def
│ │ ├── Value.h
│ │ ├── ValueHandle.h
│ │ ├── ValueMap.h
│ │ ├── ValueSymbolTable.h
│ │ └── Verifier.h
│ │ ├── IRReader
│ │ ├── IRReader.cpp
│ │ └── IRReader.h
│ │ ├── InitializePasses.h
│ │ ├── Interpreter
│ │ ├── Execution.cpp
│ │ ├── ExternalFunctions.cpp
│ │ ├── Interpreter.cpp
│ │ └── Interpreter.h
│ │ ├── MC
│ │ ├── ConstantPools.cpp
│ │ ├── ConstantPools.h
│ │ ├── LaneBitmask.h
│ │ ├── MCAsmBackend.h
│ │ ├── MCAsmInfo.h
│ │ ├── MCAsmLayout.h
│ │ ├── MCAsmMacro.h
│ │ ├── MCAssembler.cpp
│ │ ├── MCAssembler.h
│ │ ├── MCCodeEmitter.cpp
│ │ ├── MCCodeEmitter.h
│ │ ├── MCCodeView.cpp
│ │ ├── MCCodeView.h
│ │ ├── MCContext.cpp
│ │ ├── MCContext.h
│ │ ├── MCDirectives.h
│ │ ├── MCDwarf.cpp
│ │ ├── MCDwarf.h
│ │ ├── MCExpr.cpp
│ │ ├── MCExpr.h
│ │ ├── MCFixedLenDisassembler.h
│ │ ├── MCFixup.h
│ │ ├── MCFixupKindInfo.h
│ │ ├── MCFragment.cpp
│ │ ├── MCFragment.h
│ │ ├── MCInst.cpp
│ │ ├── MCInst.h
│ │ ├── MCInstBuilder.h
│ │ ├── MCInstPrinter.cpp
│ │ ├── MCInstPrinter.h
│ │ ├── MCInstrAnalysis.cpp
│ │ ├── MCInstrAnalysis.h
│ │ ├── MCInstrDesc.cpp
│ │ ├── MCInstrDesc.h
│ │ ├── MCInstrInfo.cpp
│ │ ├── MCInstrInfo.h
│ │ ├── MCInstrItineraries.h
│ │ ├── MCLabel.cpp
│ │ ├── MCLabel.h
│ │ ├── MCLinkerOptimizationHint.cpp
│ │ ├── MCLinkerOptimizationHint.h
│ │ ├── MCMachOStreamer.cpp
│ │ ├── MCMachObjectTargetWriter.cpp
│ │ ├── MCMachObjectWriter.h
│ │ ├── MCNullStreamer.cpp
│ │ ├── MCObjectFileInfo.cpp
│ │ ├── MCObjectFileInfo.h
│ │ ├── MCObjectStreamer.cpp
│ │ ├── MCObjectStreamer.h
│ │ ├── MCObjectWriter.cpp
│ │ ├── MCObjectWriter.h
│ │ ├── MCParser
│ │ │ ├── AsmCond.h
│ │ │ ├── AsmLexer.cpp
│ │ │ ├── AsmLexer.h
│ │ │ ├── AsmParser.cpp
│ │ │ ├── DarwinAsmParser.cpp
│ │ │ ├── MCAsmLexer.cpp
│ │ │ ├── MCAsmLexer.h
│ │ │ ├── MCAsmParser.cpp
│ │ │ ├── MCAsmParser.h
│ │ │ ├── MCAsmParserExtension.cpp
│ │ │ ├── MCAsmParserExtension.h
│ │ │ ├── MCAsmParserUtils.h
│ │ │ ├── MCParsedAsmOperand.h
│ │ │ ├── MCTargetAsmParser.cpp
│ │ │ └── MCTargetAsmParser.h
│ │ ├── MCPseudoProbe.cpp
│ │ ├── MCPseudoProbe.h
│ │ ├── MCRegister.h
│ │ ├── MCRegisterInfo.cpp
│ │ ├── MCRegisterInfo.h
│ │ ├── MCSchedule.cpp
│ │ ├── MCSchedule.h
│ │ ├── MCSection.cpp
│ │ ├── MCSection.h
│ │ ├── MCSectionMachO.cpp
│ │ ├── MCSectionMachO.h
│ │ ├── MCStreamer.cpp
│ │ ├── MCStreamer.h
│ │ ├── MCSubtargetInfo.cpp
│ │ ├── MCSubtargetInfo.h
│ │ ├── MCSymbol.cpp
│ │ ├── MCSymbol.h
│ │ ├── MCSymbolMachO.h
│ │ ├── MCTargetOptions.cpp
│ │ ├── MCTargetOptions.h
│ │ ├── MCTargetOptionsCommandFlags.cpp
│ │ ├── MCTargetOptionsCommandFlags.h
│ │ ├── MCValue.cpp
│ │ ├── MCValue.h
│ │ ├── MCWinEH.h
│ │ ├── MachObjectWriter.cpp
│ │ ├── MachineLocation.h
│ │ ├── SectionKind.h
│ │ ├── StringTableBuilder.cpp
│ │ ├── StringTableBuilder.h
│ │ ├── SubtargetFeature.cpp
│ │ └── SubtargetFeature.h
│ │ ├── Object
│ │ ├── Archive.cpp
│ │ ├── Archive.h
│ │ ├── ArchiveWriter.cpp
│ │ ├── ArchiveWriter.h
│ │ ├── Binary.cpp
│ │ ├── Binary.h
│ │ ├── COFF.h
│ │ ├── COFFImportFile.cpp
│ │ ├── COFFImportFile.h
│ │ ├── CVDebugRecord.h
│ │ ├── Error.cpp
│ │ ├── Error.h
│ │ ├── IRObjectFile.cpp
│ │ ├── IRObjectFile.h
│ │ ├── IRSymtab.cpp
│ │ ├── IRSymtab.h
│ │ ├── MachO.h
│ │ ├── MachOObjectFile.cpp
│ │ ├── MachOUniversal.cpp
│ │ ├── MachOUniversal.h
│ │ ├── ModuleSymbolTable.cpp
│ │ ├── ModuleSymbolTable.h
│ │ ├── ObjectFile.cpp
│ │ ├── ObjectFile.h
│ │ ├── RecordStreamer.cpp
│ │ ├── RecordStreamer.h
│ │ ├── SymbolicFile.cpp
│ │ ├── SymbolicFile.h
│ │ └── Wasm.h
│ │ ├── Pass.h
│ │ ├── PassAnalysisSupport.h
│ │ ├── PassInfo.h
│ │ ├── PassRegistry.h
│ │ ├── PassSupport.h
│ │ ├── Remarks
│ │ ├── BitstreamRemarkContainer.h
│ │ ├── BitstreamRemarkParser 2.h
│ │ ├── BitstreamRemarkParser.cpp
│ │ ├── BitstreamRemarkParser.h
│ │ ├── BitstreamRemarkSerializer.cpp
│ │ ├── BitstreamRemarkSerializer.h
│ │ ├── Remark.cpp
│ │ ├── Remark.h
│ │ ├── RemarkFormat.cpp
│ │ ├── RemarkFormat.h
│ │ ├── RemarkParser.cpp
│ │ ├── RemarkParser.h
│ │ ├── RemarkSerializer.cpp
│ │ ├── RemarkSerializer.h
│ │ ├── RemarkStreamer.cpp
│ │ ├── RemarkStreamer.h
│ │ ├── RemarkStringTable.cpp
│ │ ├── RemarkStringTable.h
│ │ ├── YAMLRemarkParser.cpp
│ │ ├── YAMLRemarkParser.h
│ │ ├── YAMLRemarkSerializer.cpp
│ │ └── YAMLRemarkSerializer.h
│ │ ├── Support
│ │ ├── AArch64TargetParser.def
│ │ ├── AArch64TargetParser.h
│ │ ├── AMDGPUMetadata.h
│ │ ├── AMDHSAKernelDescriptor.h
│ │ ├── ARMAttributeParser.h
│ │ ├── ARMBuildAttributes.h
│ │ ├── ARMEHABI.h
│ │ ├── ARMTargetParser.def
│ │ ├── ARMTargetParser.h
│ │ ├── ARMWinEH.h
│ │ ├── AlignOf.h
│ │ ├── Alignment.h
│ │ ├── Allocator.h
│ │ ├── AllocatorBase.h
│ │ ├── ArrayRecycler.h
│ │ ├── Atomic.h
│ │ ├── AtomicOrdering.h
│ │ ├── Automaton.h
│ │ ├── Base64.h
│ │ ├── BinaryByteStream.h
│ │ ├── BinaryItemStream.h
│ │ ├── BinaryStream.h
│ │ ├── BinaryStreamArray.h
│ │ ├── BinaryStreamError.h
│ │ ├── BinaryStreamReader.h
│ │ ├── BinaryStreamRef.h
│ │ ├── BinaryStreamWriter.h
│ │ ├── BlockFrequency.h
│ │ ├── BranchProbability.h
│ │ ├── BuryPointer.h
│ │ ├── CBindingWrapping.h
│ │ ├── CFGDiff.h
│ │ ├── CFGUpdate.h
│ │ ├── COM.h
│ │ ├── CRC.h
│ │ ├── CachePruning.h
│ │ ├── Capacity.h
│ │ ├── Casting.h
│ │ ├── CheckedArithmetic.h
│ │ ├── Chrono.h
│ │ ├── CodeGen.h
│ │ ├── CodeGenCoverage.h
│ │ ├── CommandLine.h
│ │ ├── Compiler.h
│ │ ├── Compression.h
│ │ ├── ConvertUTF.h
│ │ ├── CrashRecoveryContext.h
│ │ ├── DJB.h
│ │ ├── DOTGraphTraits.h
│ │ ├── DataExtractor.h
│ │ ├── DataTypes.h
│ │ ├── Debug.h
│ │ ├── DebugCounter.h
│ │ ├── DynamicLibrary.h
│ │ ├── ELFAttributeParser.h
│ │ ├── ELFAttributes.h
│ │ ├── Endian.h
│ │ ├── EndianStream.h
│ │ ├── Errc.h
│ │ ├── Errno.h
│ │ ├── Error.h
│ │ ├── ErrorHandling.h
│ │ ├── ErrorOr.h
│ │ ├── ExitCodes.h
│ │ ├── ExtensibleRTTI.h
│ │ ├── FileCollector.h
│ │ ├── FileOutputBuffer.h
│ │ ├── FileSystem.h
│ │ ├── FileSystem
│ │ │ └── UniqueID.h
│ │ ├── FileUtilities.h
│ │ ├── Format.h
│ │ ├── FormatAdapters.h
│ │ ├── FormatCommon.h
│ │ ├── FormatProviders.h
│ │ ├── FormatVariadic.h
│ │ ├── FormatVariadicDetails.h
│ │ ├── FormattedStream.h
│ │ ├── GenericDomTree.h
│ │ ├── GenericDomTreeConstruction.h
│ │ ├── GenericIteratedDominanceFrontier.h
│ │ ├── GlobPattern.h
│ │ ├── GraphWriter.h
│ │ ├── Host.h
│ │ ├── InitLLVM.h
│ │ ├── InstructionCost.h
│ │ ├── ItaniumManglingCanonicalizer.h
│ │ ├── JSON.h
│ │ ├── KnownBits.h
│ │ ├── LEB128.h
│ │ ├── LICENSE.TXT
│ │ ├── LineIterator.h
│ │ ├── Locale.h
│ │ ├── LockFileManager.h
│ │ ├── LowLevelTypeImpl.h
│ │ ├── MD5.h
│ │ ├── MSVCErrorWorkarounds.h
│ │ ├── MachineValueType.h
│ │ ├── ManagedStatic.h
│ │ ├── MathExtras.h
│ │ ├── MemAlloc.h
│ │ ├── Memory.h
│ │ ├── MemoryBuffer.h
│ │ ├── MemoryBufferRef.h
│ │ ├── MipsABIFlags.h
│ │ ├── Mutex.h
│ │ ├── NativeFormatting.h
│ │ ├── OnDiskHashTable.h
│ │ ├── OptimizedStructLayout.h
│ │ ├── Parallel.h
│ │ ├── Path.h
│ │ ├── PluginLoader.h
│ │ ├── PointerLikeTypeTraits.h
│ │ ├── PrettyStackTrace.h
│ │ ├── Printable.h
│ │ ├── Process.h
│ │ ├── Program.h
│ │ ├── RISCVAttributeParser.h
│ │ ├── RISCVAttributes.h
│ │ ├── RISCVTargetParser.def
│ │ ├── RWMutex.h
│ │ ├── RandomNumberGenerator.h
│ │ ├── Recycler.h
│ │ ├── RecyclingAllocator.h
│ │ ├── Regex.h
│ │ ├── Registry.h
│ │ ├── ReverseIteration.h
│ │ ├── SHA1.h
│ │ ├── SMLoc.h
│ │ ├── SMTAPI.h
│ │ ├── SaveAndRestore.h
│ │ ├── ScaledNumber.h
│ │ ├── ScopedPrinter.h
│ │ ├── Signals.h
│ │ ├── Signposts.h
│ │ ├── SmallVectorMemoryBuffer.h
│ │ ├── Solaris
│ │ │ └── sys
│ │ │ │ └── regset.h
│ │ ├── SourceMgr.h
│ │ ├── SpecialCaseList.h
│ │ ├── StringSaver.h
│ │ ├── SuffixTree.h
│ │ ├── SwapByteOrder.h
│ │ ├── SymbolRemappingReader.h
│ │ ├── SystemUtils.h
│ │ ├── TarWriter.h
│ │ ├── TargetOpcodes.def
│ │ ├── TargetParser.h
│ │ ├── TargetRegistry.h
│ │ ├── TargetSelect.h
│ │ ├── TaskQueue.h
│ │ ├── ThreadLocal.h
│ │ ├── ThreadPool.h
│ │ ├── Threading.h
│ │ ├── TimeProfiler.h
│ │ ├── Timer.h
│ │ ├── ToolOutputFile.h
│ │ ├── TrailingObjects.h
│ │ ├── TrigramIndex.h
│ │ ├── TypeName.h
│ │ ├── TypeSize.h
│ │ ├── Unicode.h
│ │ ├── UnicodeCharRanges.h
│ │ ├── Valgrind.h
│ │ ├── VersionTuple.h
│ │ ├── VirtualFileSystem.h
│ │ ├── Watchdog.h
│ │ ├── Win64EH.h
│ │ ├── WindowsError.h
│ │ ├── WithColor.h
│ │ ├── X86DisassemblerDecoderCommon.h
│ │ ├── X86TargetParser.def
│ │ ├── X86TargetParser.h
│ │ ├── YAMLParser.h
│ │ ├── YAMLTraits.h
│ │ ├── circular_raw_ostream.h
│ │ ├── raw_os_ostream.h
│ │ ├── raw_ostream.h
│ │ ├── raw_sha1_ostream.h
│ │ ├── thread.h
│ │ ├── type_traits.h
│ │ └── xxhash.h
│ │ ├── lib
│ │ ├── IR
│ │ │ ├── AbstractCallSite.cpp
│ │ │ ├── AsmWriter.cpp
│ │ │ ├── Assumptions.cpp
│ │ │ ├── AttributeImpl.h
│ │ │ ├── Attributes.cpp
│ │ │ ├── AutoUpgrade.cpp
│ │ │ ├── BasicBlock.cpp
│ │ │ ├── Comdat.cpp
│ │ │ ├── ConstantFold.cpp
│ │ │ ├── ConstantFold.h
│ │ │ ├── ConstantRange.cpp
│ │ │ ├── Constants.cpp
│ │ │ ├── ConstantsContext.h
│ │ │ ├── Core.cpp
│ │ │ ├── DIBuilder.cpp
│ │ │ ├── DataLayout.cpp
│ │ │ ├── DebugInfo.cpp
│ │ │ ├── DebugInfoMetadata.cpp
│ │ │ ├── DebugLoc.cpp
│ │ │ ├── DiagnosticHandler.cpp
│ │ │ ├── DiagnosticInfo.cpp
│ │ │ ├── DiagnosticPrinter.cpp
│ │ │ ├── Dominators.cpp
│ │ │ ├── FPEnv.cpp
│ │ │ ├── Function.cpp
│ │ │ ├── GVMaterializer.cpp
│ │ │ ├── GlobalPtrAuthInfo.cpp
│ │ │ ├── Globals.cpp
│ │ │ ├── IRBuilder.cpp
│ │ │ ├── IRPrintingPasses.cpp
│ │ │ ├── InlineAsm.cpp
│ │ │ ├── Instruction.cpp
│ │ │ ├── Instructions.cpp
│ │ │ ├── IntrinsicInst.cpp
│ │ │ ├── LLVMContext.cpp
│ │ │ ├── LLVMContextImpl.cpp
│ │ │ ├── LLVMContextImpl.h
│ │ │ ├── LLVMRemarkStreamer.cpp
│ │ │ ├── LegacyPassManager.cpp
│ │ │ ├── MDBuilder.cpp
│ │ │ ├── Mangler.cpp
│ │ │ ├── Metadata.cpp
│ │ │ ├── MetadataImpl.h
│ │ │ ├── Module.cpp
│ │ │ ├── ModuleSummaryIndex.cpp
│ │ │ ├── Operator.cpp
│ │ │ ├── OptBisect.cpp
│ │ │ ├── Pass.cpp
│ │ │ ├── PassInstrumentation.cpp
│ │ │ ├── PassManager.cpp
│ │ │ ├── PassRegistry.cpp
│ │ │ ├── PassTimingInfo.cpp
│ │ │ ├── PrintPasses.cpp
│ │ │ ├── ProfileSummary.cpp
│ │ │ ├── PseudoProbe.cpp
│ │ │ ├── SafepointIRVerifier.cpp
│ │ │ ├── Statepoint.cpp
│ │ │ ├── StructuralHash.cpp
│ │ │ ├── SymbolTableListTraitsImpl.h
│ │ │ ├── Type.cpp
│ │ │ ├── TypeFinder.cpp
│ │ │ ├── Use.cpp
│ │ │ ├── User.cpp
│ │ │ ├── Value.cpp
│ │ │ ├── ValueSymbolTable.cpp
│ │ │ └── Verifier.cpp
│ │ └── Support
│ │ │ ├── ABIBreak.cpp
│ │ │ ├── AMDGPUMetadata.cpp
│ │ │ ├── APFixedPoint.cpp
│ │ │ ├── APFloat.cpp
│ │ │ ├── APInt.cpp
│ │ │ ├── APSInt.cpp
│ │ │ ├── ARMAttributeParser.cpp
│ │ │ ├── ARMBuildAttrs.cpp
│ │ │ ├── ARMTargetParser.cpp
│ │ │ ├── ARMWinEH.cpp
│ │ │ ├── Allocator.cpp
│ │ │ ├── Atomic.cpp
│ │ │ ├── BinaryStreamError.cpp
│ │ │ ├── BinaryStreamReader.cpp
│ │ │ ├── BinaryStreamRef.cpp
│ │ │ ├── BinaryStreamWriter.cpp
│ │ │ ├── BlockFrequency.cpp
│ │ │ ├── BranchProbability.cpp
│ │ │ ├── BuryPointer.cpp
│ │ │ ├── COM.cpp
│ │ │ ├── COPYRIGHT.regex
│ │ │ ├── CRC.cpp
│ │ │ ├── CachePruning.cpp
│ │ │ ├── Chrono.cpp
│ │ │ ├── CodeGenCoverage.cpp
│ │ │ ├── CommandLine.cpp
│ │ │ ├── Compression.cpp
│ │ │ ├── ConvertUTF.cpp
│ │ │ ├── ConvertUTFWrapper.cpp
│ │ │ ├── CrashRecoveryContext.cpp
│ │ │ ├── DAGDeltaAlgorithm.cpp
│ │ │ ├── DJB.cpp
│ │ │ ├── DataExtractor.cpp
│ │ │ ├── Debug.cpp
│ │ │ ├── DebugCounter.cpp
│ │ │ ├── DeltaAlgorithm.cpp
│ │ │ ├── DynamicLibrary.cpp
│ │ │ ├── ELFAttributeParser.cpp
│ │ │ ├── ELFAttributes.cpp
│ │ │ ├── Errno.cpp
│ │ │ ├── Error.cpp
│ │ │ ├── ErrorHandling.cpp
│ │ │ ├── ExtensibleRTTI.cpp
│ │ │ ├── FileCollector.cpp
│ │ │ ├── FileOutputBuffer.cpp
│ │ │ ├── FileUtilities.cpp
│ │ │ ├── FoldingSet.cpp
│ │ │ ├── FormatVariadic.cpp
│ │ │ ├── FormattedStream.cpp
│ │ │ ├── GlobPattern.cpp
│ │ │ ├── GraphWriter.cpp
│ │ │ ├── Hashing.cpp
│ │ │ ├── Host.cpp
│ │ │ ├── InitLLVM.cpp
│ │ │ ├── InstructionCost.cpp
│ │ │ ├── IntEqClasses.cpp
│ │ │ ├── IntervalMap.cpp
│ │ │ ├── ItaniumManglingCanonicalizer.cpp
│ │ │ ├── JSON.cpp
│ │ │ ├── KnownBits.cpp
│ │ │ ├── LEB128.cpp
│ │ │ ├── LineIterator.cpp
│ │ │ ├── Locale.cpp
│ │ │ ├── LockFileManager.cpp
│ │ │ ├── LowLevelType.cpp
│ │ │ ├── MD5.cpp
│ │ │ ├── ManagedStatic.cpp
│ │ │ ├── MathExtras.cpp
│ │ │ ├── MemAlloc.cpp
│ │ │ ├── Memory.cpp
│ │ │ ├── MemoryBuffer.cpp
│ │ │ ├── MemoryBufferRef.cpp
│ │ │ ├── NativeFormatting.cpp
│ │ │ ├── OptimizedStructLayout.cpp
│ │ │ ├── Optional.cpp
│ │ │ ├── Parallel.cpp
│ │ │ ├── Path.cpp
│ │ │ ├── PluginLoader.cpp
│ │ │ ├── PrettyStackTrace.cpp
│ │ │ ├── Process.cpp
│ │ │ ├── Program.cpp
│ │ │ ├── RISCVAttributeParser.cpp
│ │ │ ├── RISCVAttributes.cpp
│ │ │ ├── RWMutex.cpp
│ │ │ ├── RandomNumberGenerator.cpp
│ │ │ ├── Regex.cpp
│ │ │ ├── SHA1.cpp
│ │ │ ├── ScaledNumber.cpp
│ │ │ ├── ScopedPrinter.cpp
│ │ │ ├── Signals.cpp
│ │ │ ├── Signposts.cpp
│ │ │ ├── SmallPtrSet.cpp
│ │ │ ├── SmallVector.cpp
│ │ │ ├── SourceMgr.cpp
│ │ │ ├── SpecialCaseList.cpp
│ │ │ ├── Statistic.cpp
│ │ │ ├── StringExtras.cpp
│ │ │ ├── StringMap.cpp
│ │ │ ├── StringRef.cpp
│ │ │ ├── StringSaver.cpp
│ │ │ ├── SuffixTree.cpp
│ │ │ ├── SymbolRemappingReader.cpp
│ │ │ ├── SystemUtils.cpp
│ │ │ ├── TarWriter.cpp
│ │ │ ├── TargetParser.cpp
│ │ │ ├── TargetRegistry.cpp
│ │ │ ├── ThreadLocal.cpp
│ │ │ ├── ThreadPool.cpp
│ │ │ ├── Threading.cpp
│ │ │ ├── TimeProfiler.cpp
│ │ │ ├── Timer.cpp
│ │ │ ├── ToolOutputFile.cpp
│ │ │ ├── TrigramIndex.cpp
│ │ │ ├── Triple.cpp
│ │ │ ├── Twine.cpp
│ │ │ ├── Unicode.cpp
│ │ │ ├── UnicodeCaseFold.cpp
│ │ │ ├── Unix
│ │ │ ├── COM.inc
│ │ │ ├── DynamicLibrary.inc
│ │ │ ├── Host.inc
│ │ │ ├── Memory.inc
│ │ │ ├── Path.inc
│ │ │ ├── Process.inc
│ │ │ ├── Program.inc
│ │ │ ├── README.txt
│ │ │ ├── Signals.inc
│ │ │ ├── ThreadLocal.inc
│ │ │ ├── Threading.inc
│ │ │ ├── Unix.h
│ │ │ └── Watchdog.inc
│ │ │ ├── Valgrind.cpp
│ │ │ ├── VersionTuple.cpp
│ │ │ ├── VirtualFileSystem.cpp
│ │ │ ├── Watchdog.cpp
│ │ │ ├── Windows
│ │ │ ├── COM.inc
│ │ │ ├── DynamicLibrary.inc
│ │ │ ├── Host.inc
│ │ │ ├── Memory.inc
│ │ │ ├── Path.inc
│ │ │ ├── Process.inc
│ │ │ ├── Program.inc
│ │ │ ├── Signals.inc
│ │ │ ├── ThreadLocal.inc
│ │ │ ├── Threading.inc
│ │ │ ├── Watchdog.inc
│ │ │ └── explicit_symbols.inc
│ │ │ ├── WithColor.cpp
│ │ │ ├── X86TargetParser.cpp
│ │ │ ├── YAMLParser.cpp
│ │ │ ├── YAMLTraits.cpp
│ │ │ ├── Z3Solver.cpp
│ │ │ ├── circular_raw_ostream.cpp
│ │ │ ├── raw_os_ostream.cpp
│ │ │ ├── raw_ostream.cpp
│ │ │ ├── regcomp.c
│ │ │ ├── regengine.inc
│ │ │ ├── regerror.c
│ │ │ ├── regex2.h
│ │ │ ├── regex_impl.h
│ │ │ ├── regexec.c
│ │ │ ├── regfree.c
│ │ │ ├── regstrlcpy.c
│ │ │ ├── regutils.h
│ │ │ └── xxhash.cpp
│ │ ├── libffi
│ │ ├── common
│ │ │ ├── include
│ │ │ │ ├── ffi.h
│ │ │ │ ├── ffi_cfi.h
│ │ │ │ ├── ffi_common.h
│ │ │ │ ├── fficonfig.h
│ │ │ │ └── ffitarget.h
│ │ │ └── src
│ │ │ │ ├── closures.c
│ │ │ │ ├── debug.c
│ │ │ │ ├── dlmalloc.c
│ │ │ │ ├── java_raw_api.c
│ │ │ │ ├── prep_cif.c
│ │ │ │ ├── raw_api.c
│ │ │ │ └── types.c
│ │ └── ios
│ │ │ ├── include
│ │ │ ├── ffi_arm64.h
│ │ │ ├── ffi_armv7.h
│ │ │ ├── ffi_i386.h
│ │ │ ├── ffi_x86_64.h
│ │ │ ├── fficonfig_arm64.h
│ │ │ ├── fficonfig_armv7.h
│ │ │ ├── fficonfig_i386.h
│ │ │ ├── fficonfig_x86_64.h
│ │ │ ├── ffitarget_arm64.h
│ │ │ ├── ffitarget_armv7.h
│ │ │ ├── ffitarget_i386.h
│ │ │ └── ffitarget_x86_64.h
│ │ │ └── src
│ │ │ ├── aarch64
│ │ │ ├── ffi_arm64.c
│ │ │ ├── internal.h
│ │ │ └── sysv_arm64.S
│ │ │ ├── arm
│ │ │ ├── ffi_armv7.c
│ │ │ ├── internal.h
│ │ │ └── sysv_armv7.S
│ │ │ └── x86
│ │ │ ├── asmnames.h
│ │ │ ├── ffi64_x86_64.c
│ │ │ ├── ffi_i386.c
│ │ │ ├── ffiw64_x86_64.c
│ │ │ ├── internal.h
│ │ │ ├── internal64.h
│ │ │ ├── sysv_i386.S
│ │ │ ├── unix64_x86_64.S
│ │ │ └── win64_x86_64.S
│ │ └── llvm-c
│ │ ├── Analysis.h
│ │ ├── BitReader.h
│ │ ├── BitWriter.h
│ │ ├── Comdat.h
│ │ ├── Core.h
│ │ ├── DataTypes.h
│ │ ├── DebugInfo.h
│ │ ├── Disassembler.h
│ │ ├── DisassemblerTypes.h
│ │ ├── Error.h
│ │ ├── ErrorHandling.h
│ │ ├── ExecutionEngine.h
│ │ ├── ExternC.h
│ │ ├── IRReader.h
│ │ ├── Initialization.h
│ │ ├── LLJIT.h
│ │ ├── Linker.h
│ │ ├── Object.h
│ │ ├── Orc.h
│ │ ├── OrcEE.h
│ │ ├── Remarks.h
│ │ ├── Support.h
│ │ ├── Target.h
│ │ ├── TargetMachine.h
│ │ ├── Transforms
│ │ ├── AggressiveInstCombine.h
│ │ ├── Coroutines.h
│ │ ├── IPO.h
│ │ ├── InstCombine.h
│ │ ├── PassManagerBuilder.h
│ │ ├── Scalar.h
│ │ ├── Utils.h
│ │ └── Vectorize.h
│ │ ├── Types.h
│ │ ├── lto.h
│ │ └── module.modulemap
├── BitCodeInterpreterUserDemo.cpp
├── Info.plist
├── SceneDelegate.h
├── SceneDelegate.m
├── ViewController.h
├── ViewController.m
├── main.bc
└── main.m
└── README.md
/BitCodeInterpreter.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/BitCodeInterpreter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/BitCodeInterpreter.xcodeproj/project.xcworkspace/xcuserdata/jintao.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TannerJin/BitCodeInterpreter/c9a73f4dc4f99a9f310e0f88370d9407aa93fa97/BitCodeInterpreter.xcodeproj/project.xcworkspace/xcuserdata/jintao.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/BitCodeInterpreter.xcodeproj/xcuserdata/jintao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
9 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/BitCodeInterpreter.xcodeproj/xcuserdata/jintao.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | BitCodeInterpreter.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // BitCodeInterpreter
4 | //
5 | // Created by jintao on 2021/6/24.
6 | //
7 |
8 | #import
9 |
10 | @interface AppDelegate : UIResponder
11 |
12 |
13 | @end
14 |
15 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // BitCodeInterpreter
4 | //
5 | // Created by jintao on 2021/6/24.
6 | //
7 |
8 | #import "AppDelegate.h"
9 | #import "zlib.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | // Override point for customization after application launch.
20 | return YES;
21 | }
22 |
23 |
24 | #pragma mark - UISceneSession lifecycle
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/BitCodeInterpreter/llvm/ADT/EnumeratedArray.h:
--------------------------------------------------------------------------------
1 | //===- llvm/ADT/EnumeratedArray.h - Enumerated Array-------------*- C++ -*-===//
2 | //
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 | // See https://llvm.org/LICENSE.txt for license information.
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 | //
7 | //===----------------------------------------------------------------------===//
8 | //
9 | // This file defines an array type that can be indexed using scoped enum values.
10 | //
11 | //===----------------------------------------------------------------------===//
12 |
13 | #ifndef LLVM_ADT_ENUMERATEDARRAY_H
14 | #define LLVM_ADT_ENUMERATEDARRAY_H
15 |
16 | #include
17 |
18 | namespace llvm {
19 |
20 | template (LargestEnum)>
23 | class EnumeratedArray {
24 | public:
25 | EnumeratedArray() = default;
26 | EnumeratedArray(ValueType V) {
27 | for (IndexType IX = 0; IX < Size; ++IX) {
28 | Underlying[IX] = V;
29 | }
30 | }
31 | inline const ValueType &operator[](const Enumeration Index) const {
32 | auto IX = static_cast(Index);
33 | assert(IX >= 0 && IX < Size && "Index is out of bounds.");
34 | return Underlying[IX];
35 | }
36 | inline ValueType &operator[](const Enumeration Index) {
37 | return const_cast(
38 | static_cast &>(*this)[Index]);
40 | }
41 | inline IndexType size() { return Size; }
42 |
43 | private:
44 | ValueType Underlying[Size];
45 | };
46 |
47 | } // namespace llvm
48 |
49 | #endif // LLVM_ADT_ENUMERATEDARRAY_H
50 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/BitCodeInterpreter/llvm/ADT/None.h:
--------------------------------------------------------------------------------
1 | //===-- None.h - Simple null value for implicit construction ------*- C++ -*-=//
2 | //
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 | // See https://llvm.org/LICENSE.txt for license information.
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 | //
7 | //===----------------------------------------------------------------------===//
8 | //
9 | // This file provides None, an enumerator for use in implicit constructors
10 | // of various (usually templated) types to make such construction more
11 | // terse.
12 | //
13 | //===----------------------------------------------------------------------===//
14 |
15 | #ifndef LLVM_ADT_NONE_H
16 | #define LLVM_ADT_NONE_H
17 |
18 | namespace llvm {
19 | /// A simple null object to allow implicit construction of Optional
20 | /// and similar types without having to spell out the specialization's name.
21 | // (constant value 1 in an attempt to workaround MSVC build issue... )
22 | enum class NoneType { None = 1 };
23 | const NoneType None = NoneType::None;
24 | }
25 |
26 | #endif
27 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/BitCodeInterpreter/llvm/ADT/StringSet.h:
--------------------------------------------------------------------------------
1 | //===- StringSet.h - An efficient set built on StringMap --------*- C++ -*-===//
2 | //
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 | // See https://llvm.org/LICENSE.txt for license information.
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 | //
7 | //===----------------------------------------------------------------------===//
8 | //
9 | // StringSet - A set-like wrapper for the StringMap.
10 | //
11 | //===----------------------------------------------------------------------===//
12 |
13 | #ifndef LLVM_ADT_STRINGSET_H
14 | #define LLVM_ADT_STRINGSET_H
15 |
16 | #include "llvm/ADT/StringMap.h"
17 |
18 | namespace llvm {
19 |
20 | /// StringSet - A wrapper for StringMap that provides set-like functionality.
21 | template
22 | class StringSet : public StringMap {
23 | using Base = StringMap;
24 |
25 | public:
26 | StringSet() = default;
27 | StringSet(std::initializer_list initializer) {
28 | for (StringRef str : initializer)
29 | insert(str);
30 | }
31 | explicit StringSet(AllocatorTy a) : Base(a) {}
32 |
33 | std::pair insert(StringRef key) {
34 | return Base::try_emplace(key);
35 | }
36 |
37 | template
38 | void insert(const InputIt &begin, const InputIt &end) {
39 | for (auto it = begin; it != end; ++it)
40 | insert(*it);
41 | }
42 |
43 | template
44 | std::pair
45 | insert(const StringMapEntry &mapEntry) {
46 | return insert(mapEntry.getKey());
47 | }
48 |
49 | /// Check if the set contains the given \c key.
50 | bool contains(StringRef key) const { return Base::FindKey(key) != -1; }
51 | };
52 |
53 | } // end namespace llvm
54 |
55 | #endif // LLVM_ADT_STRINGSET_H
56 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/BitCodeInterpreter/llvm/ADT/ilist_node_base.h:
--------------------------------------------------------------------------------
1 | //===- llvm/ADT/ilist_node_base.h - Intrusive List Node Base -----*- C++ -*-==//
2 | //
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 | // See https://llvm.org/LICENSE.txt for license information.
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 | //
7 | //===----------------------------------------------------------------------===//
8 |
9 | #ifndef LLVM_ADT_ILIST_NODE_BASE_H
10 | #define LLVM_ADT_ILIST_NODE_BASE_H
11 |
12 | #include "llvm/ADT/PointerIntPair.h"
13 |
14 | namespace llvm {
15 |
16 | /// Base class for ilist nodes.
17 | ///
18 | /// Optionally tracks whether this node is the sentinel.
19 | template class ilist_node_base;
20 |
21 | template <> class ilist_node_base {
22 | ilist_node_base *Prev = nullptr;
23 | ilist_node_base *Next = nullptr;
24 |
25 | public:
26 | void setPrev(ilist_node_base *Prev) { this->Prev = Prev; }
27 | void setNext(ilist_node_base *Next) { this->Next = Next; }
28 | ilist_node_base *getPrev() const { return Prev; }
29 | ilist_node_base *getNext() const { return Next; }
30 |
31 | bool isKnownSentinel() const { return false; }
32 | void initializeSentinel() {}
33 | };
34 |
35 | template <> class ilist_node_base {
36 | PointerIntPair PrevAndSentinel;
37 | ilist_node_base *Next = nullptr;
38 |
39 | public:
40 | void setPrev(ilist_node_base *Prev) { PrevAndSentinel.setPointer(Prev); }
41 | void setNext(ilist_node_base *Next) { this->Next = Next; }
42 | ilist_node_base *getPrev() const { return PrevAndSentinel.getPointer(); }
43 | ilist_node_base *getNext() const { return Next; }
44 |
45 | bool isSentinel() const { return PrevAndSentinel.getInt(); }
46 | bool isKnownSentinel() const { return isSentinel(); }
47 | void initializeSentinel() { PrevAndSentinel.setInt(true); }
48 | };
49 |
50 | } // end namespace llvm
51 |
52 | #endif // LLVM_ADT_ILIST_NODE_BASE_H
53 |
--------------------------------------------------------------------------------
/BitCodeInterpreter/BitCodeInterpreter/llvm/AsmParser/SlotMapping.h:
--------------------------------------------------------------------------------
1 | //===-- SlotMapping.h - Slot number mapping for unnamed values --*- C++ -*-===//
2 | //
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 | // See https://llvm.org/LICENSE.txt for license information.
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 | //
7 | //===----------------------------------------------------------------------===//
8 | //
9 | // This file contains the declaration of the SlotMapping struct.
10 | //
11 | //===----------------------------------------------------------------------===//
12 |
13 | #ifndef LLVM_ASMPARSER_SLOTMAPPING_H
14 | #define LLVM_ASMPARSER_SLOTMAPPING_H
15 |
16 | #include "llvm/ADT/StringMap.h"
17 | #include "llvm/IR/TrackingMDRef.h"
18 | #include