Class: LLVM::Phi

Inherits:
Instruction show all
Defined in:
lib/llvm/core/value.rb

Instance Method Summary collapse

Methods inherited from Instruction

from_ptr, #inspect, #next, #opcode, #parent, #previous

Methods inherited from User

#operands

Methods inherited from Value

#add_attribute, #allocated_type, #constant?, #dump, from_ptr, from_ptr_kind, #global_parent, #kind, #name, #name=, #null?, #remove_attribute, to_ptr, #to_s, type, #type, #undefined?

Methods included from PointerIdentity

#==, #eql?, #hash, #to_ptr

Instance Method Details

#add_incoming(incoming) ⇒ Object

Add incoming branches to a phi node by passing an alternating list of resulting values and BasicBlocks. e.g.

phi.add_incoming(val1, block1, val2, block2, ...)


1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
# File 'lib/llvm/core/value.rb', line 1129

def add_incoming(incoming)
  blks = incoming.keys
  vals = incoming.values_at(*blks)
  size = incoming.size

  FFI::MemoryPointer.new(FFI.type_size(:pointer) * size) do |vals_ptr|
    vals_ptr.write_array_of_pointer(vals)
    FFI::MemoryPointer.new(FFI.type_size(:pointer) * size) do |blks_ptr|
      blks_ptr.write_array_of_pointer(blks)
      C.add_incoming(self, vals_ptr, blks_ptr, vals.size)
    end
  end

  nil
end