ruby-llvm 2.9.0 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@ require 'llvm/target'
4
4
  require 'llvm/analysis'
5
5
 
6
6
  module LLVM
7
+ # @private
7
8
  module C
8
9
  # Generic values
9
10
  attach_function :LLVMCreateGenericValueOfInt, [:pointer, :long_long, :int], :pointer
@@ -54,14 +55,17 @@ module LLVM
54
55
  class ExecutionEngine
55
56
  private_class_method :new
56
57
 
57
- def initialize(ptr) # :nodoc:
58
+ # @private
59
+ def initialize(ptr)
58
60
  @ptr = ptr
59
61
  end
60
62
 
61
- def to_ptr # :nodoc:
63
+ # @private
64
+ def to_ptr
62
65
  @ptr
63
66
  end
64
67
 
68
+ # Create a JIT compiler with an LLVM::Module.
65
69
  def self.create_jit_compiler(mod, opt_level = 3)
66
70
  FFI::MemoryPointer.new(FFI.type_size(:pointer)) do |ptr|
67
71
  error = FFI::MemoryPointer.new(FFI.type_size(:pointer))
@@ -79,6 +83,8 @@ module LLVM
79
83
  end
80
84
  end
81
85
 
86
+ # Execute the given LLVM::Function with the supplied args (as
87
+ # GenericValues).
82
88
  def run_function(fun, *args)
83
89
  FFI::MemoryPointer.new(FFI.type_size(:pointer) * args.size) do |args_ptr|
84
90
  args_ptr.write_array_of_pointer(args.map { |arg| LLVM.GenericValue(arg).to_ptr })
@@ -87,6 +93,7 @@ module LLVM
87
93
  end
88
94
  end
89
95
 
96
+ # Obtain an FFI::Pointer to a global within the current module.
90
97
  def pointer_to_global(global)
91
98
  C.LLVMGetPointerToGlobal(self, global)
92
99
  end
@@ -95,46 +102,57 @@ module LLVM
95
102
  class GenericValue
96
103
  private_class_method :new
97
104
 
98
- def initialize(ptr) # :nodoc:
105
+ # @private
106
+ def initialize(ptr)
99
107
  @ptr = ptr
100
108
  end
101
109
 
102
- def to_ptr # :nodoc:
110
+ # @private
111
+ def to_ptr
103
112
  @ptr
104
113
  end
105
114
 
115
+ # Creates a Generic Value from an integer. Type is the size of integer to
116
+ # create (ex. Int32, Int8, etc.)
106
117
  def self.from_i(i, type = LLVM::Int, signed = true)
107
118
  new(C.LLVMCreateGenericValueOfInt(type, i, signed ? 1 : 0))
108
119
  end
109
120
 
121
+ # Creates a Generic Value from a Float.
110
122
  def self.from_f(f)
111
123
  type = LLVM::Float.type
112
124
  new(C.LLVMCreateGenericValueOfFloat(type, f))
113
125
  end
114
126
 
127
+ # Creates a GenericValue from a Ruby boolean.
115
128
  def self.from_b(b)
116
129
  from_i(b ? 1 : 0, LLVM::Int1, false)
117
130
  end
118
131
 
132
+ # Creates a GenericValue from an FFI::Pointer.
119
133
  def self.from_ptr(ptr)
120
134
  new(ptr)
121
135
  end
122
136
 
137
+ # Converts a GenericValue to a Ruby Integer.
123
138
  def to_i(signed = true)
124
139
  C.LLVMGenericValueToInt(self, signed ? 1 : 0)
125
140
  end
126
141
 
142
+ # Converts a GenericValue to a Ruby Float.
127
143
  def to_f(type = LLVM::Float.type)
128
144
  C.LLVMGenericValueToFloat(type, self)
129
145
  end
130
146
 
147
+ # Converts a GenericValue to a Ruby boolean.
131
148
  def to_b
132
149
  to_i(false) != 0
133
150
  end
134
-
135
151
  end
136
152
 
137
- def GenericValue(val)
153
+ # Creates a GenericValue from an object (GenericValue, Integer, Float, true,
154
+ # false).
155
+ def LLVM.GenericValue(val)
138
156
  case val
139
157
  when GenericValue then val
140
158
  when ::Integer then GenericValue.from_i(val)
@@ -143,5 +161,4 @@ module LLVM
143
161
  when ::FalseClass then GenericValue.from_b(false)
144
162
  end
145
163
  end
146
- module_function :GenericValue
147
164
  end
data/lib/llvm/target.rb CHANGED
@@ -2,6 +2,7 @@ require 'llvm'
2
2
  require 'llvm/core'
3
3
 
4
4
  module LLVM
5
+ # @private
5
6
  module C
6
7
  attach_function :LLVMAddTargetData, [:pointer, :pointer], :void
7
8
  end
@@ -3,11 +3,13 @@ require 'llvm'
3
3
  require 'llvm/core'
4
4
 
5
5
  module LLVM
6
+ # @private
6
7
  module C
7
8
  attach_function :LLVMAddGlobalDCEPass, [:pointer], :void
8
9
  end
9
10
 
10
11
  class PassManager
12
+ # @LLVMpass gdce
11
13
  def gdce!
12
14
  C.LLVMAddGlobalDCEPass(self)
13
15
  end
@@ -2,6 +2,7 @@ require 'llvm'
2
2
  require 'llvm/core'
3
3
 
4
4
  module LLVM
5
+ # @private
5
6
  module C
6
7
  attach_function :LLVMAddAggressiveDCEPass, [:pointer], :void
7
8
  attach_function :LLVMAddCFGSimplificationPass, [:pointer], :void
@@ -27,86 +28,107 @@ module LLVM
27
28
  end
28
29
 
29
30
  class PassManager
31
+ # @LLVMpass adce
30
32
  def adce!
31
33
  C.LLVMAddAggressiveDCEPass(self)
32
34
  end
33
35
 
36
+ # @LLVMpass simplifycfg
34
37
  def simplifycfg!
35
38
  C.LLVMAddCFGSimplificationPass(self)
36
39
  end
37
40
 
41
+ # @LLVMpass dse
38
42
  def dse!
39
43
  C.LLVMAddDeadStoreEliminationPass(self)
40
44
  end
41
45
 
46
+ # @LLVMpass gvn
42
47
  def gvn!
43
48
  C.LLVMAddGVNPass(self)
44
49
  end
45
50
 
51
+ # @LLVMpass indvars
46
52
  def indvars!
47
53
  C.LLVMAddIndVarSimplifyPass(self)
48
54
  end
49
55
 
56
+ # @LLVMpass instcombine
50
57
  def instcombine!
51
58
  C.LLVMAddInstructionCombiningPass(self)
52
59
  end
53
60
 
61
+ # @LLVMpass jump-threading
54
62
  def jump_threading!
55
63
  C.LLVMAddJumpThreadingPass(self)
56
64
  end
57
65
 
66
+ # @LLVMpass licm
58
67
  def licm!
59
68
  C.LLVMAddLICMPass(self)
60
69
  end
61
70
 
71
+ # @LLVMpass loop-deletion
62
72
  def loop_deletion!
63
73
  C.LLVMAddLoopDeletionPass(self)
64
74
  end
65
75
 
76
+ # @LLVMpass loop-rotate
66
77
  def loop_rotate!
67
78
  C.LLVMAddLoopRotatePass(self)
68
79
  end
69
80
 
81
+ # @LLVMpass loop-unroll
70
82
  def loop_unroll!
71
83
  C.LLVMAddLoopUnrollPass(self)
72
84
  end
73
85
 
86
+ # @LLVMpass loop-unswitch
74
87
  def loop_unswitch!
75
88
  C.LLVMAddLoopUnswitchPass(self)
76
89
  end
77
90
 
91
+ # @LLVMpass memcpyopt
78
92
  def memcpyopt!
79
93
  C.LLVMAddMemCpyOptPass(self)
80
94
  end
81
95
 
96
+ # @LLVMpass mem2reg
82
97
  def mem2reg!
83
98
  C.LLVMAddPromoteMemoryToRegisterPass(self)
84
99
  end
85
100
 
101
+ # @LLVMpass reassociate
86
102
  def reassociate!
87
103
  C.LLVMAddReassociatePass(self)
88
104
  end
89
105
 
106
+ # @LLVMpass sccp
90
107
  def sccp!
91
108
  C.LLVMAddSCCPPass(self)
92
109
  end
93
110
 
111
+ # @LLVMpass scalarrepl
94
112
  def scalarrepl!
95
113
  C.LLVMAddScalarReplAggregatesPass(self)
96
114
  end
97
115
 
116
+ # @LLVMpass simplify-libcalls
98
117
  def simplify_libcalls!
99
118
  C.LLVMAddSimplifyLibCallsPass(self)
100
119
  end
101
120
 
121
+ # @LLVMpass tailcallelim
102
122
  def tailcallelim!
103
123
  C.LLVMAddTailCallEliminationPass(self)
104
124
  end
105
125
 
126
+ # @LLVMpass constprop
106
127
  def constprop!
107
128
  C.LLVMAddConstantPropagationPass(self)
108
129
  end
109
130
 
131
+ # @LLVMpass reg2mem
110
132
  def reg2mem!
111
133
  C.LLVMAddDemoteMemoryToRegisterPass(self)
112
134
  end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-llvm
3
3
  version: !ruby/object:Gem::Version
4
- hash: 43
5
- prerelease: false
6
- segments:
7
- - 2
8
- - 9
9
- - 0
10
- version: 2.9.0
4
+ prerelease:
5
+ version: 2.9.1
11
6
  platform: ruby
12
7
  authors:
13
8
  - Jeremy Voorhis
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-04-19 00:00:00 -07:00
13
+ date: 2011-04-23 00:00:00 -07:00
19
14
  default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
@@ -26,12 +21,7 @@ dependencies:
26
21
  requirements:
27
22
  - - ">="
28
23
  - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- - 5
33
- - 4
34
- version: 0.5.4
24
+ version: 1.0.0
35
25
  type: :runtime
36
26
  version_requirements: *id001
37
27
  description:
@@ -71,23 +61,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
61
  requirements:
72
62
  - - ">="
73
63
  - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
64
  version: "0"
78
65
  required_rubygems_version: !ruby/object:Gem::Requirement
79
66
  none: false
80
67
  requirements:
81
68
  - - ">="
82
69
  - !ruby/object:Gem::Version
83
- hash: 3
84
- segments:
85
- - 0
86
70
  version: "0"
87
71
  requirements: []
88
72
 
89
73
  rubyforge_project:
90
- rubygems_version: 1.3.7
74
+ rubygems_version: 1.6.0
91
75
  signing_key:
92
76
  specification_version: 3
93
77
  summary: LLVM bindings for Ruby