LLVMIRLanguageFrontend

class LLVMIRLanguageFrontend(language: Language<LLVMIRLanguageFrontend>, config: TranslationConfiguration, scopeManager: ScopeManager) : LanguageFrontend

Constructors

Link copied to clipboard
fun LLVMIRLanguageFrontend(language: Language<LLVMIRLanguageFrontend>, config: TranslationConfiguration, scopeManager: ScopeManager)

Types

Link copied to clipboard
object Companion

Functions

Link copied to clipboard
fun build(init: LanguageFrontend.() -> TranslationUnitDeclaration): TranslationUnitDeclaration
Link copied to clipboard
open fun cleanup()
Link copied to clipboard
Link copied to clipboard
open override fun <T> getCodeFromRawNode(astNode: T): String?
Link copied to clipboard
fun getCodeOfSubregion(node: Node, nodeRegion: Region, subRegion: Region): String
Link copied to clipboard
open override fun <T> getLocationFromRawNode(astNode: T): PhysicalLocation?
Link copied to clipboard
fun getNameOf(valueRef: LLVMValueRef): Pair<String, String>

Returns a pair of the name and symbol name of valueRef.

Link copied to clipboard
fun getNewLineType(node: Node): String
Link copied to clipboard
fun getOperandValueAtIndex(instr: LLVMValueRef, idx: Int): Expression
Link copied to clipboard
fun guessSlotNumber(valueRef: LLVMValueRef): String
Link copied to clipboard

Determines if a struct with name exists in the scope.

Link copied to clipboard
fun mergeRegions(regionOne: Region, regionTwo: Region): Region
Link copied to clipboard
open override fun parse(file: File): TranslationUnitDeclaration
Link copied to clipboard
fun parseAll(): List<TranslationUnitDeclaration>
Link copied to clipboard
open fun process(from: Any, to: Node)
Link copied to clipboard
open fun registerObjectListener(from: Any, biConsumer: BiConsumer<Any, Node>)
Link copied to clipboard
open fun registerPredicateListener(predicate: BiPredicate<Any, Node>, biConsumer: BiConsumer<Any, Node>)
Link copied to clipboard
open override fun <N, S> setCodeAndLocation(cpgNode: N, astNode: S?)
Link copied to clipboard
open override fun <S, T> setComment(s: S, ctx: T)
Link copied to clipboard
fun typeOf(valueRef: LLVMValueRef): Type

Properties

Link copied to clipboard
var bindingsCache: MutableMap<String, Declaration>

This contains a cache binding between an LLVMValueRef (representing a variable) and its Declaration in the graph. We need this, because this way we can look up and connect a DeclaredReferenceExpression to its Declaration already in the language frontend. This in turn is needed because of the local/global system we cannot rely on the VariableUsageResolver.

Link copied to clipboard
val config: TranslationConfiguration
Link copied to clipboard
var ctx: LLVMContextRef? = null
Link copied to clipboard
var currentTU: TranslationUnitDeclaration?
Link copied to clipboard
Link copied to clipboard
open override val language: Language<out LanguageFrontend>
Link copied to clipboard
open override val namespace: Name?
Link copied to clipboard
val phiList: MutableList<LLVMValueRef>
Link copied to clipboard
open override val scope: Scope?
Link copied to clipboard
var scopeManager: ScopeManager
Link copied to clipboard
Link copied to clipboard