in Sources/SIL/SILPrinter.swift [54:289]
func print(_ op: Operator) {
switch op {
case let .allocStack(type, attributes):
print("alloc_stack ")
print(type)
print(whenEmpty: false, ", ", attributes, ", ", "") { print($0) }
case let .apply(nothrow, value, substitutions, arguments, type):
print("apply ")
print(when: nothrow, "[nothrow] ")
print(value)
print(whenEmpty: false, "<", substitutions, ", ", ">") { naked($0) }
print("(", arguments, ", ", ")") { print($0) }
print(" : ")
print(type)
case let .beginAccess(access, enforcement, noNestedConflict, builtin, operand):
print("begin_access ")
print("[")
print(access)
print("] ")
print("[")
print(enforcement)
print("] ")
print(when: noNestedConflict, "[noNestedConflict] ")
print(when: builtin, "[builtin] ")
print(operand)
case let .beginApply(nothrow, value, substitutions, arguments, type):
print("begin_apply ")
print(when: nothrow, "[nothrow] ")
print(value)
print(whenEmpty: false, "<", substitutions, ", ", ">") { naked($0) }
print("(", arguments, ", ", ")") { print($0) }
print(" : ")
print(type)
case let .beginBorrow(operand):
print("begin_borrow ")
print(operand)
case let .builtin(name, operands, type):
print("builtin ")
literal(name)
print("(", operands, ", ", ")") { print($0) }
print(" : ")
print(type)
case let .condFail(operand, message):
print("cond_fail ")
print(operand)
print(", ")
literal(message)
case let .convertEscapeToNoescape(notGuaranteed, escaped, operand, type):
print("convert_escape_to_noescape ")
print(when: notGuaranteed, "[not_guaranteed] ")
print(when: escaped, "[escaped] ")
print(operand)
print(" to ")
print(type)
case let .convertFunction(operand, withoutActuallyEscaping, type):
print("convert_function ")
print(operand)
print(" to ")
print(when: withoutActuallyEscaping, "[without_actually_escaping] ")
print(type)
case let .copyAddr(take, value, initialization, operand):
print("copy_addr ")
print(when: take, "[take] ")
print(value)
print(" to ")
print(when: initialization, "[initialization] ")
print(operand)
case let .copyValue(operand):
print("copy_value ")
print(operand)
case let .deallocStack(operand):
print("dealloc_stack ")
print(operand)
case let .debugValue(operand, attributes):
print("debug_value ")
print(operand)
print(whenEmpty: false, ", ", attributes, ", ", "") { print($0) }
case let .debugValueAddr(operand, attributes):
print("debug_value_addr ")
print(operand)
print(whenEmpty: false, ", ", attributes, ", ", "") { print($0) }
case let .destroyValue(operand):
print("destroy_value ")
print(operand)
case let .destructureTuple(operand):
print("destructure_tuple ")
print(operand)
case let .endAccess(abort, operand):
print("end_access ")
print(when: abort, "[abort] ")
print(operand)
case let .endApply(value):
print("end_apply ")
print(value)
case let .endBorrow(value):
print("end_borrow ")
print(value)
case let .enum(type, declRef, maybeOperand):
print("enum ")
print(type)
print(", ")
print(declRef)
if let operand = maybeOperand {
print(", ")
print(operand)
}
case let .floatLiteral(type, value):
print("float_literal ")
print(type)
print(", 0x")
print(value)
case let .functionRef(name, type):
print("function_ref ")
print("@")
print(name)
print(" : ")
print(type)
case let .globalAddr(name, type):
print("global_addr ")
print("@")
print(name)
print(" : ")
print(type)
case let .indexAddr(addr, index):
print("index_addr ")
print(addr)
print(", ")
print(index)
case let .integerLiteral(type, value):
print("integer_literal ")
print(type)
print(", ")
literal(value)
case let .load(maybeOwnership, operand):
print("load ")
if let ownership = maybeOwnership {
print(ownership)
print(" ")
}
print(operand)
case let .markDependence(operand, on):
print("mark_dependence ")
print(operand)
print(" on ")
print(on)
case let .metatype(type):
print("metatype ")
print(type)
case let .partialApply(calleeGuaranteed, onStack, value, substitutions, arguments, type):
print("partial_apply ")
print(when: calleeGuaranteed, "[callee_guaranteed] ")
print(when: onStack, "[on_stack] ")
print(value)
print(whenEmpty: false, "<", substitutions, ", ", ">") { naked($0) }
print("(", arguments, ", ", ")") { print($0) }
print(" : ")
print(type)
case let .pointerToAddress(operand, strict, type):
print("pointer_to_address ")
print(operand)
print(" to ")
print(when: strict, "[strict] ")
print(type)
case let .releaseValue(operand):
print("release_value ")
print(operand)
case let .retainValue(operand):
print("retain_value ")
print(operand)
case let .selectEnum(operand, cases, type):
print("select_enum ")
print(operand)
print(whenEmpty: false, "", cases, "", "") { print($0) }
print(" : ")
print(type)
case let .store(value, maybeOwnership, operand):
print("store ")
print(value)
print(" to ")
if let ownership = maybeOwnership {
print(ownership)
print(" ")
}
print(operand)
case let .stringLiteral(encoding, value):
print("string_literal ")
print(encoding)
print(" ")
literal(value)
case let .strongRelease(operand):
print("strong_release ")
print(operand)
case let .strongRetain(operand):
print("strong_retain ")
print(operand)
case let .struct(type, operands):
print("struct ")
print(type)
print(" (", operands, ", ", ")") { print($0) }
case let .structElementAddr(operand, declRef):
print("struct_element_addr ")
print(operand)
print(", ")
print(declRef)
case let .structExtract(operand, declRef):
print("struct_extract ")
print(operand)
print(", ")
print(declRef)
case let .thinToThickFunction(operand, type):
print("thin_to_thick_function ")
print(operand)
print(" to ")
print(type)
case let .tuple(elements):
print("tuple ")
print(elements)
case let .tupleExtract(operand, declRef):
print("tuple_extract ")
print(operand)
print(", ")
literal(declRef)
case let .unknown(name):
print(name)
print(" <?>")
case let .witnessMethod(archeType, declRef, declType, type):
print("witness_method ")
print(archeType)
print(", ")
print(declRef)
print(" : ")
naked(declType)
print(" : ")
print(type)
}
}