public
Rubygem
Description: LLVM bindings for Ruby
Homepage: http://llvmruby.org
Clone URL: git://github.com/tombagby/llvmruby.git
hooking up more instruction classes, cleaning things up
tombagby (author)
Sun Oct 19 18:37:12 -0700 2008
commit  6746bcc66b86538abce38da8a60e1448e26cf6fb
tree    ae294abde563cae0eb2ecc32537e434f668d61f0
parent  799f27a8b33a6a96760d808784b3e34ba624fe4c
...
16
17
18
19
20
21
22
23
...
29
30
31
 
32
33
34
...
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
 
 
 
 
 
 
 
 
163
164
165
...
16
17
18
 
 
19
20
21
...
27
28
29
30
31
32
33
...
147
148
149
 
 
 
 
 
150
 
 
 
151
152
153
154
155
156
157
158
159
160
161
162
163
164
0
@@ -16,8 +16,6 @@ VALUE cLLVMInstruction = Qnil;
0
 VALUE cLLVMTerminatorInst = Qnil;
0
 VALUE cLLVMUnaryOperator = Qnil;
0
 VALUE cLLVMBinaryOperator = Qnil;
0
-VALUE cLLVMLoadInst = Qnil;
0
-VALUE cLLVMStoreInst = Qnil;
0
 VALUE cLLVMCmpInst = Qnil;
0
 VALUE cLLVMICmpInst = Qnil;
0
 VALUE cLLVMFCmpInst = Qnil;
0
@@ -29,6 +27,7 @@ VALUE cLLVMPassManager = Qnil;
0
 VALUE cLLVMExecutionEngine = Qnil;
0
 
0
 #define HANDLE_TERM_INST(Num, Opcode, Klass) VALUE cLLVM##Klass;
0
+#define HANDLE_MEMORY_INST(Num, Opcode, Klass) VALUE cLLVM##Klass;
0
 #include "llvm/Instruction.def"
0
 
0
 void init_types();
0
@@ -148,18 +147,18 @@ void Init_llvmruby() {
0
   cLLVMInstruction = rb_define_class_under(cLLVMRuby, "Instruction", cLLVMValue);
0
   cLLVMUnaryOperator = rb_define_class_under(cLLVMRuby, "UnaryOperator", cLLVMInstruction);
0
   cLLVMBinaryOperator = rb_define_class_under(cLLVMRuby, "BinaryOperator", cLLVMInstruction);
0
-  cLLVMLoadInst = rb_define_class_under(cLLVMRuby, "LoadInst", cLLVMUnaryOperator);
0
-  cLLVMStoreInst = rb_define_class_under(cLLVMRuby, "BinaryOperator", cLLVMInstruction);
0
-  cLLVMCmpInst = rb_define_class_under(cLLVMRuby, "CmpInst", cLLVMInstruction);
0
-  cLLVMICmpInst = rb_define_class_under(cLLVMRuby, "ICmpInst", cLLVMCmpInst);
0
-  cLLVMFCmpInst = rb_define_class_under(cLLVMRuby, "FCmpInst", cLLVMCmpInst);
0
   cLLVMTerminatorInst = rb_define_class_under(cLLVMRuby, "TerminatorInst", cLLVMInstruction);
0
-  cLLVMReturnInst = rb_define_class_under(cLLVMRuby, "ReturnInst", cLLVMTerminatorInst);
0
-  cLLVMBranchInst = rb_define_class_under(cLLVMRuby, "BranchInst", cLLVMTerminatorInst);
0
-  cLLVMSwitchInst = rb_define_class_under(cLLVMRuby, "SwitchInst", cLLVMTerminatorInst);
0
   cLLVMAllocationInst = rb_define_class_under(cLLVMRuby, "AllocationInst", cLLVMInstruction);
0
   cLLVMFreeInst = rb_define_class_under(cLLVMRuby, "FreeInst", cLLVMInstruction);
0
   cLLVMBinaryOps = rb_define_class_under(cLLVMInstruction, "BinaryOps", rb_cObject);
0
+
0
+  #define HANDLE_TERM_INST(Num, Opcode, Klass) cLLVM##Klass = rb_define_class_under(cLLVMRuby, #Klass, cLLVMTerminatorInst);
0
+  #define HANDLE_MEMORY_INST(Num, Opcode, Klass) cLLVM##Klass = rb_define_class_under(cLLVMRuby, #Klass, cLLVMInstruction);
0
+  #include "llvm/Instruction.def"
0
+
0
+  cLLVMCmpInst = rb_define_class_under(cLLVMRuby, "CmpInst", cLLVMInstruction);
0
+  cLLVMICmpInst = rb_define_class_under(cLLVMRuby, "ICmpInst", cLLVMCmpInst);
0
+  cLLVMFCmpInst = rb_define_class_under(cLLVMRuby, "FCmpInst", cLLVMCmpInst);
0
   cLLVMPhi = rb_define_class_under(cLLVMRuby, "Phi", cLLVMValue);
0
 
0
   cLLVMPassManager = rb_define_class_under(cLLVMRuby, "PassManager", rb_cObject);
...
33
34
35
 
36
37
 
 
38
39
40
41
42
43
44
45
46
47
48
...
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
 
47
48
49
0
@@ -33,16 +33,17 @@ extern VALUE cLLVMVectorType;
0
 extern VALUE cLLVMFunctionType;
0
 extern VALUE cLLVMInstruction;
0
 extern VALUE cLLVMBinaryOperator;
0
+extern VALUE cLLVMAllocationInst;
0
 
0
 #define HANDLE_TERM_INST(Num, Opcode, Klass) extern VALUE cLLVM##Klass;
0
+#define HANDLE_MEMORY_INST(Num, Opcode, Klass) extern VALUE cLLVM##Klass;
0
+#define HANDLE_OTHER_INST(Num, Opcode, Klass) extern VALUE cLLVM##Klass;
0
 #include "llvm/Instruction.def"
0
 
0
 extern VALUE cLLVMBinaryOps;
0
 extern VALUE cLLVMPhi;
0
 extern VALUE cLLVMPassManager;
0
 
0
-
0
-
0
 #define LLVM_VAL(obj) ((Value*)DATA_PTR(obj))
0
 #define LLVM_TYPE(obj) ((Type*)DATA_PTR(obj))
0
 #define LLVM_FUNC_TYPE(obj) ((FunctionType*)DATA_PTR(obj))

Comments