ruby-llvm 3.4.0 → 11.0.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.
Files changed (46) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +19 -4
  3. data/ext/ruby-llvm-support/Rakefile +20 -8
  4. data/ext/ruby-llvm-support/support.cpp +0 -20
  5. data/lib/llvm.rb +0 -6
  6. data/lib/llvm/analysis_ffi.rb +30 -28
  7. data/lib/llvm/config.rb +4 -4
  8. data/lib/llvm/core.rb +45 -2
  9. data/lib/llvm/core/bitcode.rb +10 -10
  10. data/lib/llvm/core/bitcode_ffi.rb +92 -70
  11. data/lib/llvm/core/builder.rb +2 -3
  12. data/lib/llvm/core/context.rb +1 -1
  13. data/lib/llvm/core/pass_manager.rb +4 -2
  14. data/lib/llvm/core/type.rb +2 -2
  15. data/lib/llvm/core/value.rb +155 -28
  16. data/lib/llvm/core_ffi.rb +4038 -3716
  17. data/lib/llvm/execution_engine.rb +176 -8
  18. data/lib/llvm/execution_engine_ffi.rb +245 -272
  19. data/lib/llvm/linker.rb +2 -19
  20. data/lib/llvm/linker_ffi.rb +24 -25
  21. data/lib/llvm/support.rb +4 -12
  22. data/lib/llvm/target.rb +11 -17
  23. data/lib/llvm/target_ffi.rb +336 -362
  24. data/lib/llvm/transforms/builder.rb +8 -3
  25. data/lib/llvm/transforms/builder_ffi.rb +57 -58
  26. data/lib/llvm/transforms/ipo.rb +1 -1
  27. data/lib/llvm/transforms/ipo_ffi.rb +60 -61
  28. data/lib/llvm/transforms/scalar_ffi.rb +208 -136
  29. data/lib/llvm/transforms/vectorize_ffi.rb +15 -16
  30. data/lib/llvm/version.rb +3 -2
  31. data/test/basic_block_test.rb +0 -1
  32. data/test/bitcode_test.rb +1 -2
  33. data/test/call_test.rb +1 -1
  34. data/test/double_test.rb +8 -7
  35. data/test/equality_test.rb +2 -4
  36. data/test/function_test.rb +27 -0
  37. data/test/generic_value_test.rb +1 -1
  38. data/test/instruction_test.rb +0 -2
  39. data/test/ipo_test.rb +1 -1
  40. data/test/linker_test.rb +0 -9
  41. data/test/mcjit_test.rb +100 -0
  42. data/test/module_test.rb +31 -1
  43. data/test/pass_manager_builder_test.rb +23 -3
  44. data/test/target_test.rb +7 -24
  45. data/test/test_helper.rb +4 -1
  46. metadata +117 -94
@@ -83,14 +83,19 @@ module LLVM
83
83
 
84
84
  # Populate an LTO pass manager.
85
85
  # @param [PassManager] pass_manager
86
- def build_with_lto(pass_manager, internalize=false, run_inliner=false)
86
+ def build_with_lto(pass_manager, internalize = false, run_inliner = false)
87
87
  if pass_manager.is_a?(FunctionPassManager)
88
88
  raise ArgumentError, "FunctionPassManager does not support LTO"
89
89
  end
90
90
 
91
- # Add flag() when the header gets fixed and has LLVMBool
91
+ if internalize.kind_of?(Integer) || run_inliner.kind_of?(Integer)
92
+ warn 'Warning: Passing Integer value to LLVM::PassManagerBuilder#build_with_lto is deprecated.'
93
+ internalize = !internalize.zero? if internalize.kind_of?(Integer)
94
+ run_inliner = !run_inliner.zero? if run_inliner.kind_of?(Integer)
95
+ end
96
+
92
97
  C.pass_manager_builder_populate_lto_pass_manager(self,
93
- pass_manager, internalize, run_inliner)
98
+ pass_manager, flag(internalize), flag(run_inliner))
94
99
  end
95
100
 
96
101
  private
@@ -4,115 +4,114 @@ require 'ffi'
4
4
 
5
5
  module LLVM::C
6
6
  extend FFI::Library
7
- ffi_lib 'LLVM-3.4'
8
-
7
+ ffi_lib ["libLLVM-11.so.1", "libLLVM.so.11", "LLVM-11"]
8
+
9
9
  def self.attach_function(name, *_)
10
10
  begin; super; rescue FFI::NotFoundError => e
11
11
  (class << self; self; end).class_eval { define_method(name) { |*_| raise e } }
12
12
  end
13
13
  end
14
-
14
+
15
15
  # (Not documented)
16
16
  class OpaquePassManagerBuilder < FFI::Struct
17
17
  layout :dummy, :char
18
18
  end
19
-
19
+
20
20
  # See llvm::PassManagerBuilder.
21
- #
21
+ #
22
22
  # @method pass_manager_builder_create()
23
- # @return [OpaquePassManagerBuilder]
23
+ # @return [OpaquePassManagerBuilder]
24
24
  # @scope class
25
25
  attach_function :pass_manager_builder_create, :LLVMPassManagerBuilderCreate, [], OpaquePassManagerBuilder
26
-
26
+
27
27
  # (Not documented)
28
- #
28
+ #
29
29
  # @method pass_manager_builder_dispose(pmb)
30
- # @param [OpaquePassManagerBuilder] pmb
31
- # @return [nil]
30
+ # @param [OpaquePassManagerBuilder] pmb
31
+ # @return [nil]
32
32
  # @scope class
33
33
  attach_function :pass_manager_builder_dispose, :LLVMPassManagerBuilderDispose, [OpaquePassManagerBuilder], :void
34
-
34
+
35
35
  # See llvm::PassManagerBuilder::OptLevel.
36
- #
36
+ #
37
37
  # @method pass_manager_builder_set_opt_level(pmb, opt_level)
38
- # @param [OpaquePassManagerBuilder] pmb
39
- # @param [Integer] opt_level
40
- # @return [nil]
38
+ # @param [OpaquePassManagerBuilder] pmb
39
+ # @param [Integer] opt_level
40
+ # @return [nil]
41
41
  # @scope class
42
42
  attach_function :pass_manager_builder_set_opt_level, :LLVMPassManagerBuilderSetOptLevel, [OpaquePassManagerBuilder, :uint], :void
43
-
43
+
44
44
  # See llvm::PassManagerBuilder::SizeLevel.
45
- #
45
+ #
46
46
  # @method pass_manager_builder_set_size_level(pmb, size_level)
47
- # @param [OpaquePassManagerBuilder] pmb
48
- # @param [Integer] size_level
49
- # @return [nil]
47
+ # @param [OpaquePassManagerBuilder] pmb
48
+ # @param [Integer] size_level
49
+ # @return [nil]
50
50
  # @scope class
51
51
  attach_function :pass_manager_builder_set_size_level, :LLVMPassManagerBuilderSetSizeLevel, [OpaquePassManagerBuilder, :uint], :void
52
-
52
+
53
53
  # See llvm::PassManagerBuilder::DisableUnitAtATime.
54
- #
54
+ #
55
55
  # @method pass_manager_builder_set_disable_unit_at_a_time(pmb, value)
56
- # @param [OpaquePassManagerBuilder] pmb
57
- # @param [Integer] value
58
- # @return [nil]
56
+ # @param [OpaquePassManagerBuilder] pmb
57
+ # @param [Integer] value
58
+ # @return [nil]
59
59
  # @scope class
60
60
  attach_function :pass_manager_builder_set_disable_unit_at_a_time, :LLVMPassManagerBuilderSetDisableUnitAtATime, [OpaquePassManagerBuilder, :int], :void
61
-
61
+
62
62
  # See llvm::PassManagerBuilder::DisableUnrollLoops.
63
- #
63
+ #
64
64
  # @method pass_manager_builder_set_disable_unroll_loops(pmb, value)
65
- # @param [OpaquePassManagerBuilder] pmb
66
- # @param [Integer] value
67
- # @return [nil]
65
+ # @param [OpaquePassManagerBuilder] pmb
66
+ # @param [Integer] value
67
+ # @return [nil]
68
68
  # @scope class
69
69
  attach_function :pass_manager_builder_set_disable_unroll_loops, :LLVMPassManagerBuilderSetDisableUnrollLoops, [OpaquePassManagerBuilder, :int], :void
70
-
70
+
71
71
  # See llvm::PassManagerBuilder::DisableSimplifyLibCalls
72
- #
72
+ #
73
73
  # @method pass_manager_builder_set_disable_simplify_lib_calls(pmb, value)
74
- # @param [OpaquePassManagerBuilder] pmb
75
- # @param [Integer] value
76
- # @return [nil]
74
+ # @param [OpaquePassManagerBuilder] pmb
75
+ # @param [Integer] value
76
+ # @return [nil]
77
77
  # @scope class
78
78
  attach_function :pass_manager_builder_set_disable_simplify_lib_calls, :LLVMPassManagerBuilderSetDisableSimplifyLibCalls, [OpaquePassManagerBuilder, :int], :void
79
-
79
+
80
80
  # See llvm::PassManagerBuilder::Inliner.
81
- #
81
+ #
82
82
  # @method pass_manager_builder_use_inliner_with_threshold(pmb, threshold)
83
- # @param [OpaquePassManagerBuilder] pmb
84
- # @param [Integer] threshold
85
- # @return [nil]
83
+ # @param [OpaquePassManagerBuilder] pmb
84
+ # @param [Integer] threshold
85
+ # @return [nil]
86
86
  # @scope class
87
87
  attach_function :pass_manager_builder_use_inliner_with_threshold, :LLVMPassManagerBuilderUseInlinerWithThreshold, [OpaquePassManagerBuilder, :uint], :void
88
-
88
+
89
89
  # See llvm::PassManagerBuilder::populateFunctionPassManager.
90
- #
90
+ #
91
91
  # @method pass_manager_builder_populate_function_pass_manager(pmb, pm)
92
- # @param [OpaquePassManagerBuilder] pmb
93
- # @param [FFI::Pointer(PassManagerRef)] pm
94
- # @return [nil]
92
+ # @param [OpaquePassManagerBuilder] pmb
93
+ # @param [FFI::Pointer(PassManagerRef)] pm
94
+ # @return [nil]
95
95
  # @scope class
96
96
  attach_function :pass_manager_builder_populate_function_pass_manager, :LLVMPassManagerBuilderPopulateFunctionPassManager, [OpaquePassManagerBuilder, :pointer], :void
97
-
97
+
98
98
  # See llvm::PassManagerBuilder::populateModulePassManager.
99
- #
99
+ #
100
100
  # @method pass_manager_builder_populate_module_pass_manager(pmb, pm)
101
- # @param [OpaquePassManagerBuilder] pmb
102
- # @param [FFI::Pointer(PassManagerRef)] pm
103
- # @return [nil]
101
+ # @param [OpaquePassManagerBuilder] pmb
102
+ # @param [FFI::Pointer(PassManagerRef)] pm
103
+ # @return [nil]
104
104
  # @scope class
105
105
  attach_function :pass_manager_builder_populate_module_pass_manager, :LLVMPassManagerBuilderPopulateModulePassManager, [OpaquePassManagerBuilder, :pointer], :void
106
-
106
+
107
107
  # See llvm::PassManagerBuilder::populateLTOPassManager.
108
- #
108
+ #
109
109
  # @method pass_manager_builder_populate_lto_pass_manager(pmb, pm, internalize, run_inliner)
110
- # @param [OpaquePassManagerBuilder] pmb
111
- # @param [FFI::Pointer(PassManagerRef)] pm
112
- # @param [Integer] internalize
113
- # @param [Integer] run_inliner
114
- # @return [nil]
110
+ # @param [OpaquePassManagerBuilder] pmb
111
+ # @param [FFI::Pointer(PassManagerRef)] pm
112
+ # @param [Integer] internalize
113
+ # @param [Integer] run_inliner
114
+ # @return [nil]
115
115
  # @scope class
116
116
  attach_function :pass_manager_builder_populate_lto_pass_manager, :LLVMPassManagerBuilderPopulateLTOPassManager, [OpaquePassManagerBuilder, :pointer, :int, :int], :void
117
-
118
117
  end
@@ -61,7 +61,7 @@ module LLVM
61
61
  end
62
62
 
63
63
  # @LLVMpass internalize
64
- def internalize!(all_but_main=true)
64
+ def internalize!(all_but_main = true)
65
65
  C.add_internalize_pass(self, all_but_main)
66
66
  end
67
67
 
@@ -4,125 +4,124 @@ require 'ffi'
4
4
 
5
5
  module LLVM::C
6
6
  extend FFI::Library
7
- ffi_lib 'LLVM-3.4'
8
-
7
+ ffi_lib ["libLLVM-11.so.1", "libLLVM.so.11", "LLVM-11"]
8
+
9
9
  def self.attach_function(name, *_)
10
10
  begin; super; rescue FFI::NotFoundError => e
11
11
  (class << self; self; end).class_eval { define_method(name) { |*_| raise e } }
12
12
  end
13
13
  end
14
-
15
- # (Not documented)
16
- #
14
+
15
+ # See llvm::createArgumentPromotionPass function.
16
+ #
17
17
  # @method add_argument_promotion_pass(pm)
18
- # @param [FFI::Pointer(PassManagerRef)] pm
19
- # @return [nil]
18
+ # @param [FFI::Pointer(PassManagerRef)] pm
19
+ # @return [nil]
20
20
  # @scope class
21
21
  attach_function :add_argument_promotion_pass, :LLVMAddArgumentPromotionPass, [:pointer], :void
22
-
22
+
23
23
  # See llvm::createConstantMergePass function.
24
- #
24
+ #
25
25
  # @method add_constant_merge_pass(pm)
26
- # @param [FFI::Pointer(PassManagerRef)] pm
27
- # @return [nil]
26
+ # @param [FFI::Pointer(PassManagerRef)] pm
27
+ # @return [nil]
28
28
  # @scope class
29
29
  attach_function :add_constant_merge_pass, :LLVMAddConstantMergePass, [:pointer], :void
30
-
30
+
31
31
  # See llvm::createDeadArgEliminationPass function.
32
- #
32
+ #
33
33
  # @method add_dead_arg_elimination_pass(pm)
34
- # @param [FFI::Pointer(PassManagerRef)] pm
35
- # @return [nil]
34
+ # @param [FFI::Pointer(PassManagerRef)] pm
35
+ # @return [nil]
36
36
  # @scope class
37
37
  attach_function :add_dead_arg_elimination_pass, :LLVMAddDeadArgEliminationPass, [:pointer], :void
38
-
38
+
39
39
  # See llvm::createFunctionAttrsPass function.
40
- #
40
+ #
41
41
  # @method add_function_attrs_pass(pm)
42
- # @param [FFI::Pointer(PassManagerRef)] pm
43
- # @return [nil]
42
+ # @param [FFI::Pointer(PassManagerRef)] pm
43
+ # @return [nil]
44
44
  # @scope class
45
45
  attach_function :add_function_attrs_pass, :LLVMAddFunctionAttrsPass, [:pointer], :void
46
-
46
+
47
47
  # See llvm::createFunctionInliningPass function.
48
- #
48
+ #
49
49
  # @method add_function_inlining_pass(pm)
50
- # @param [FFI::Pointer(PassManagerRef)] pm
51
- # @return [nil]
50
+ # @param [FFI::Pointer(PassManagerRef)] pm
51
+ # @return [nil]
52
52
  # @scope class
53
53
  attach_function :add_function_inlining_pass, :LLVMAddFunctionInliningPass, [:pointer], :void
54
-
54
+
55
55
  # See llvm::createAlwaysInlinerPass function.
56
- #
56
+ #
57
57
  # @method add_always_inliner_pass(pm)
58
- # @param [FFI::Pointer(PassManagerRef)] pm
59
- # @return [nil]
58
+ # @param [FFI::Pointer(PassManagerRef)] pm
59
+ # @return [nil]
60
60
  # @scope class
61
61
  attach_function :add_always_inliner_pass, :LLVMAddAlwaysInlinerPass, [:pointer], :void
62
-
62
+
63
63
  # See llvm::createGlobalDCEPass function.
64
- #
64
+ #
65
65
  # @method add_global_dce_pass(pm)
66
- # @param [FFI::Pointer(PassManagerRef)] pm
67
- # @return [nil]
66
+ # @param [FFI::Pointer(PassManagerRef)] pm
67
+ # @return [nil]
68
68
  # @scope class
69
69
  attach_function :add_global_dce_pass, :LLVMAddGlobalDCEPass, [:pointer], :void
70
-
70
+
71
71
  # See llvm::createGlobalOptimizerPass function.
72
- #
72
+ #
73
73
  # @method add_global_optimizer_pass(pm)
74
- # @param [FFI::Pointer(PassManagerRef)] pm
75
- # @return [nil]
74
+ # @param [FFI::Pointer(PassManagerRef)] pm
75
+ # @return [nil]
76
76
  # @scope class
77
77
  attach_function :add_global_optimizer_pass, :LLVMAddGlobalOptimizerPass, [:pointer], :void
78
-
78
+
79
79
  # See llvm::createIPConstantPropagationPass function.
80
- #
80
+ #
81
81
  # @method add_ip_constant_propagation_pass(pm)
82
- # @param [FFI::Pointer(PassManagerRef)] pm
83
- # @return [nil]
82
+ # @param [FFI::Pointer(PassManagerRef)] pm
83
+ # @return [nil]
84
84
  # @scope class
85
85
  attach_function :add_ip_constant_propagation_pass, :LLVMAddIPConstantPropagationPass, [:pointer], :void
86
-
86
+
87
87
  # See llvm::createPruneEHPass function.
88
- #
88
+ #
89
89
  # @method add_prune_eh_pass(pm)
90
- # @param [FFI::Pointer(PassManagerRef)] pm
91
- # @return [nil]
90
+ # @param [FFI::Pointer(PassManagerRef)] pm
91
+ # @return [nil]
92
92
  # @scope class
93
93
  attach_function :add_prune_eh_pass, :LLVMAddPruneEHPass, [:pointer], :void
94
-
94
+
95
95
  # See llvm::createIPSCCPPass function.
96
- #
96
+ #
97
97
  # @method add_ipsccp_pass(pm)
98
- # @param [FFI::Pointer(PassManagerRef)] pm
99
- # @return [nil]
98
+ # @param [FFI::Pointer(PassManagerRef)] pm
99
+ # @return [nil]
100
100
  # @scope class
101
101
  attach_function :add_ipsccp_pass, :LLVMAddIPSCCPPass, [:pointer], :void
102
-
102
+
103
103
  # See llvm::createInternalizePass function.
104
- #
104
+ #
105
105
  # @method add_internalize_pass(pass_manager_ref, all_but_main)
106
- # @param [FFI::Pointer(PassManagerRef)] pass_manager_ref
107
- # @param [Integer] all_but_main
108
- # @return [nil]
106
+ # @param [FFI::Pointer(PassManagerRef)] pass_manager_ref
107
+ # @param [Integer] all_but_main
108
+ # @return [nil]
109
109
  # @scope class
110
110
  attach_function :add_internalize_pass, :LLVMAddInternalizePass, [:pointer, :uint], :void
111
-
111
+
112
112
  # See llvm::createStripDeadPrototypesPass function.
113
- #
113
+ #
114
114
  # @method add_strip_dead_prototypes_pass(pm)
115
- # @param [FFI::Pointer(PassManagerRef)] pm
116
- # @return [nil]
115
+ # @param [FFI::Pointer(PassManagerRef)] pm
116
+ # @return [nil]
117
117
  # @scope class
118
118
  attach_function :add_strip_dead_prototypes_pass, :LLVMAddStripDeadPrototypesPass, [:pointer], :void
119
-
119
+
120
120
  # See llvm::createStripSymbolsPass function.
121
- #
121
+ #
122
122
  # @method add_strip_symbols_pass(pm)
123
- # @param [FFI::Pointer(PassManagerRef)] pm
124
- # @return [nil]
123
+ # @param [FFI::Pointer(PassManagerRef)] pm
124
+ # @return [nil]
125
125
  # @scope class
126
126
  attach_function :add_strip_symbols_pass, :LLVMAddStripSymbolsPass, [:pointer], :void
127
-
128
127
  end
@@ -4,269 +4,341 @@ require 'ffi'
4
4
 
5
5
  module LLVM::C
6
6
  extend FFI::Library
7
- ffi_lib 'LLVM-3.4'
8
-
7
+ ffi_lib ["libLLVM-11.so.1", "libLLVM.so.11", "LLVM-11"]
8
+
9
9
  def self.attach_function(name, *_)
10
10
  begin; super; rescue FFI::NotFoundError => e
11
11
  (class << self; self; end).class_eval { define_method(name) { |*_| raise e } }
12
12
  end
13
13
  end
14
-
15
- # (Not documented)
16
- #
14
+
15
+ # See llvm::createAggressiveDCEPass function.
16
+ #
17
17
  # @method add_aggressive_dce_pass(pm)
18
- # @param [FFI::Pointer(PassManagerRef)] pm
19
- # @return [nil]
18
+ # @param [FFI::Pointer(PassManagerRef)] pm
19
+ # @return [nil]
20
20
  # @scope class
21
21
  attach_function :add_aggressive_dce_pass, :LLVMAddAggressiveDCEPass, [:pointer], :void
22
-
22
+
23
+ # See llvm::createBitTrackingDCEPass function.
24
+ #
25
+ # @method add_bit_tracking_dce_pass(pm)
26
+ # @param [FFI::Pointer(PassManagerRef)] pm
27
+ # @return [nil]
28
+ # @scope class
29
+ attach_function :add_bit_tracking_dce_pass, :LLVMAddBitTrackingDCEPass, [:pointer], :void
30
+
31
+ # See llvm::createAlignmentFromAssumptionsPass function.
32
+ #
33
+ # @method add_alignment_from_assumptions_pass(pm)
34
+ # @param [FFI::Pointer(PassManagerRef)] pm
35
+ # @return [nil]
36
+ # @scope class
37
+ attach_function :add_alignment_from_assumptions_pass, :LLVMAddAlignmentFromAssumptionsPass, [:pointer], :void
38
+
23
39
  # See llvm::createCFGSimplificationPass function.
24
- #
40
+ #
25
41
  # @method add_cfg_simplification_pass(pm)
26
- # @param [FFI::Pointer(PassManagerRef)] pm
27
- # @return [nil]
42
+ # @param [FFI::Pointer(PassManagerRef)] pm
43
+ # @return [nil]
28
44
  # @scope class
29
45
  attach_function :add_cfg_simplification_pass, :LLVMAddCFGSimplificationPass, [:pointer], :void
30
-
46
+
47
+ # See llvm::createLateCFGSimplificationPass function.
48
+ #
49
+ # @method add_late_cfg_simplification_pass(pm)
50
+ # @param [FFI::Pointer(PassManagerRef)] pm
51
+ # @return [nil]
52
+ # @scope class
53
+ attach_function :add_late_cfg_simplification_pass, :LLVMAddLateCFGSimplificationPass, [:pointer], :void
54
+
31
55
  # See llvm::createDeadStoreEliminationPass function.
32
- #
56
+ #
33
57
  # @method add_dead_store_elimination_pass(pm)
34
- # @param [FFI::Pointer(PassManagerRef)] pm
35
- # @return [nil]
58
+ # @param [FFI::Pointer(PassManagerRef)] pm
59
+ # @return [nil]
36
60
  # @scope class
37
61
  attach_function :add_dead_store_elimination_pass, :LLVMAddDeadStoreEliminationPass, [:pointer], :void
38
-
62
+
63
+ # See llvm::createScalarizerPass function.
64
+ #
65
+ # @method add_scalarizer_pass(pm)
66
+ # @param [FFI::Pointer(PassManagerRef)] pm
67
+ # @return [nil]
68
+ # @scope class
69
+ attach_function :add_scalarizer_pass, :LLVMAddScalarizerPass, [:pointer], :void
70
+
71
+ # See llvm::createMergedLoadStoreMotionPass function.
72
+ #
73
+ # @method add_merged_load_store_motion_pass(pm)
74
+ # @param [FFI::Pointer(PassManagerRef)] pm
75
+ # @return [nil]
76
+ # @scope class
77
+ attach_function :add_merged_load_store_motion_pass, :LLVMAddMergedLoadStoreMotionPass, [:pointer], :void
78
+
39
79
  # See llvm::createGVNPass function.
40
- #
80
+ #
41
81
  # @method add_gvn_pass(pm)
42
- # @param [FFI::Pointer(PassManagerRef)] pm
43
- # @return [nil]
82
+ # @param [FFI::Pointer(PassManagerRef)] pm
83
+ # @return [nil]
44
84
  # @scope class
45
85
  attach_function :add_gvn_pass, :LLVMAddGVNPass, [:pointer], :void
46
-
86
+
87
+ # See llvm::createGVNPass function.
88
+ #
89
+ # @method add_new_gvn_pass(pm)
90
+ # @param [FFI::Pointer(PassManagerRef)] pm
91
+ # @return [nil]
92
+ # @scope class
93
+ attach_function :add_new_gvn_pass, :LLVMAddNewGVNPass, [:pointer], :void
94
+
47
95
  # See llvm::createIndVarSimplifyPass function.
48
- #
96
+ #
49
97
  # @method add_ind_var_simplify_pass(pm)
50
- # @param [FFI::Pointer(PassManagerRef)] pm
51
- # @return [nil]
98
+ # @param [FFI::Pointer(PassManagerRef)] pm
99
+ # @return [nil]
52
100
  # @scope class
53
101
  attach_function :add_ind_var_simplify_pass, :LLVMAddIndVarSimplifyPass, [:pointer], :void
54
-
102
+
55
103
  # See llvm::createInstructionCombiningPass function.
56
- #
104
+ #
57
105
  # @method add_instruction_combining_pass(pm)
58
- # @param [FFI::Pointer(PassManagerRef)] pm
59
- # @return [nil]
106
+ # @param [FFI::Pointer(PassManagerRef)] pm
107
+ # @return [nil]
60
108
  # @scope class
61
109
  attach_function :add_instruction_combining_pass, :LLVMAddInstructionCombiningPass, [:pointer], :void
62
-
110
+
63
111
  # See llvm::createJumpThreadingPass function.
64
- #
112
+ #
65
113
  # @method add_jump_threading_pass(pm)
66
- # @param [FFI::Pointer(PassManagerRef)] pm
67
- # @return [nil]
114
+ # @param [FFI::Pointer(PassManagerRef)] pm
115
+ # @return [nil]
68
116
  # @scope class
69
117
  attach_function :add_jump_threading_pass, :LLVMAddJumpThreadingPass, [:pointer], :void
70
-
118
+
71
119
  # See llvm::createLICMPass function.
72
- #
120
+ #
73
121
  # @method add_licm_pass(pm)
74
- # @param [FFI::Pointer(PassManagerRef)] pm
75
- # @return [nil]
122
+ # @param [FFI::Pointer(PassManagerRef)] pm
123
+ # @return [nil]
76
124
  # @scope class
77
125
  attach_function :add_licm_pass, :LLVMAddLICMPass, [:pointer], :void
78
-
126
+
79
127
  # See llvm::createLoopDeletionPass function.
80
- #
128
+ #
81
129
  # @method add_loop_deletion_pass(pm)
82
- # @param [FFI::Pointer(PassManagerRef)] pm
83
- # @return [nil]
130
+ # @param [FFI::Pointer(PassManagerRef)] pm
131
+ # @return [nil]
84
132
  # @scope class
85
133
  attach_function :add_loop_deletion_pass, :LLVMAddLoopDeletionPass, [:pointer], :void
86
-
134
+
87
135
  # See llvm::createLoopIdiomPass function
88
- #
136
+ #
89
137
  # @method add_loop_idiom_pass(pm)
90
- # @param [FFI::Pointer(PassManagerRef)] pm
91
- # @return [nil]
138
+ # @param [FFI::Pointer(PassManagerRef)] pm
139
+ # @return [nil]
92
140
  # @scope class
93
141
  attach_function :add_loop_idiom_pass, :LLVMAddLoopIdiomPass, [:pointer], :void
94
-
142
+
95
143
  # See llvm::createLoopRotatePass function.
96
- #
144
+ #
97
145
  # @method add_loop_rotate_pass(pm)
98
- # @param [FFI::Pointer(PassManagerRef)] pm
99
- # @return [nil]
146
+ # @param [FFI::Pointer(PassManagerRef)] pm
147
+ # @return [nil]
100
148
  # @scope class
101
149
  attach_function :add_loop_rotate_pass, :LLVMAddLoopRotatePass, [:pointer], :void
102
-
150
+
103
151
  # See llvm::createLoopRerollPass function.
104
- #
152
+ #
105
153
  # @method add_loop_reroll_pass(pm)
106
- # @param [FFI::Pointer(PassManagerRef)] pm
107
- # @return [nil]
154
+ # @param [FFI::Pointer(PassManagerRef)] pm
155
+ # @return [nil]
108
156
  # @scope class
109
157
  attach_function :add_loop_reroll_pass, :LLVMAddLoopRerollPass, [:pointer], :void
110
-
158
+
111
159
  # See llvm::createLoopUnrollPass function.
112
- #
160
+ #
113
161
  # @method add_loop_unroll_pass(pm)
114
- # @param [FFI::Pointer(PassManagerRef)] pm
115
- # @return [nil]
162
+ # @param [FFI::Pointer(PassManagerRef)] pm
163
+ # @return [nil]
116
164
  # @scope class
117
165
  attach_function :add_loop_unroll_pass, :LLVMAddLoopUnrollPass, [:pointer], :void
118
-
166
+
119
167
  # See llvm::createLoopUnswitchPass function.
120
- #
168
+ #
121
169
  # @method add_loop_unswitch_pass(pm)
122
- # @param [FFI::Pointer(PassManagerRef)] pm
123
- # @return [nil]
170
+ # @param [FFI::Pointer(PassManagerRef)] pm
171
+ # @return [nil]
124
172
  # @scope class
125
173
  attach_function :add_loop_unswitch_pass, :LLVMAddLoopUnswitchPass, [:pointer], :void
126
-
174
+
127
175
  # See llvm::createMemCpyOptPass function.
128
- #
176
+ #
129
177
  # @method add_mem_cpy_opt_pass(pm)
130
- # @param [FFI::Pointer(PassManagerRef)] pm
131
- # @return [nil]
178
+ # @param [FFI::Pointer(PassManagerRef)] pm
179
+ # @return [nil]
132
180
  # @scope class
133
181
  attach_function :add_mem_cpy_opt_pass, :LLVMAddMemCpyOptPass, [:pointer], :void
134
-
182
+
135
183
  # See llvm::createPartiallyInlineLibCallsPass function.
136
- #
184
+ #
137
185
  # @method add_partially_inline_lib_calls_pass(pm)
138
- # @param [FFI::Pointer(PassManagerRef)] pm
139
- # @return [nil]
186
+ # @param [FFI::Pointer(PassManagerRef)] pm
187
+ # @return [nil]
140
188
  # @scope class
141
189
  attach_function :add_partially_inline_lib_calls_pass, :LLVMAddPartiallyInlineLibCallsPass, [:pointer], :void
142
-
190
+
191
+ # See llvm::createLowerSwitchPass function.
192
+ #
193
+ # @method add_lower_switch_pass(pm)
194
+ # @param [FFI::Pointer(PassManagerRef)] pm
195
+ # @return [nil]
196
+ # @scope class
197
+ attach_function :add_lower_switch_pass, :LLVMAddLowerSwitchPass, [:pointer], :void
198
+
143
199
  # See llvm::createPromoteMemoryToRegisterPass function.
144
- #
200
+ #
145
201
  # @method add_promote_memory_to_register_pass(pm)
146
- # @param [FFI::Pointer(PassManagerRef)] pm
147
- # @return [nil]
202
+ # @param [FFI::Pointer(PassManagerRef)] pm
203
+ # @return [nil]
148
204
  # @scope class
149
205
  attach_function :add_promote_memory_to_register_pass, :LLVMAddPromoteMemoryToRegisterPass, [:pointer], :void
150
-
206
+
151
207
  # See llvm::createReassociatePass function.
152
- #
208
+ #
153
209
  # @method add_reassociate_pass(pm)
154
- # @param [FFI::Pointer(PassManagerRef)] pm
155
- # @return [nil]
210
+ # @param [FFI::Pointer(PassManagerRef)] pm
211
+ # @return [nil]
156
212
  # @scope class
157
213
  attach_function :add_reassociate_pass, :LLVMAddReassociatePass, [:pointer], :void
158
-
214
+
159
215
  # See llvm::createSCCPPass function.
160
- #
216
+ #
161
217
  # @method add_sccp_pass(pm)
162
- # @param [FFI::Pointer(PassManagerRef)] pm
163
- # @return [nil]
218
+ # @param [FFI::Pointer(PassManagerRef)] pm
219
+ # @return [nil]
164
220
  # @scope class
165
221
  attach_function :add_sccp_pass, :LLVMAddSCCPPass, [:pointer], :void
166
-
167
- # See llvm::createScalarReplAggregatesPass function.
168
- #
222
+
223
+ # See llvm::createSROAPass function.
224
+ #
169
225
  # @method add_scalar_repl_aggregates_pass(pm)
170
- # @param [FFI::Pointer(PassManagerRef)] pm
171
- # @return [nil]
226
+ # @param [FFI::Pointer(PassManagerRef)] pm
227
+ # @return [nil]
172
228
  # @scope class
173
229
  attach_function :add_scalar_repl_aggregates_pass, :LLVMAddScalarReplAggregatesPass, [:pointer], :void
174
-
175
- # See llvm::createScalarReplAggregatesPass function.
176
- #
230
+
231
+ # See llvm::createSROAPass function.
232
+ #
177
233
  # @method add_scalar_repl_aggregates_pass_ssa(pm)
178
- # @param [FFI::Pointer(PassManagerRef)] pm
179
- # @return [nil]
234
+ # @param [FFI::Pointer(PassManagerRef)] pm
235
+ # @return [nil]
180
236
  # @scope class
181
237
  attach_function :add_scalar_repl_aggregates_pass_ssa, :LLVMAddScalarReplAggregatesPassSSA, [:pointer], :void
182
-
183
- # See llvm::createScalarReplAggregatesPass function.
184
- #
238
+
239
+ # See llvm::createSROAPass function.
240
+ #
185
241
  # @method add_scalar_repl_aggregates_pass_with_threshold(pm, threshold)
186
- # @param [FFI::Pointer(PassManagerRef)] pm
187
- # @param [Integer] threshold
188
- # @return [nil]
242
+ # @param [FFI::Pointer(PassManagerRef)] pm
243
+ # @param [Integer] threshold
244
+ # @return [nil]
189
245
  # @scope class
190
246
  attach_function :add_scalar_repl_aggregates_pass_with_threshold, :LLVMAddScalarReplAggregatesPassWithThreshold, [:pointer, :int], :void
191
-
247
+
192
248
  # See llvm::createSimplifyLibCallsPass function.
193
- #
249
+ #
194
250
  # @method add_simplify_lib_calls_pass(pm)
195
- # @param [FFI::Pointer(PassManagerRef)] pm
196
- # @return [nil]
251
+ # @param [FFI::Pointer(PassManagerRef)] pm
252
+ # @return [nil]
197
253
  # @scope class
198
254
  attach_function :add_simplify_lib_calls_pass, :LLVMAddSimplifyLibCallsPass, [:pointer], :void
199
-
255
+
200
256
  # See llvm::createTailCallEliminationPass function.
201
- #
257
+ #
202
258
  # @method add_tail_call_elimination_pass(pm)
203
- # @param [FFI::Pointer(PassManagerRef)] pm
204
- # @return [nil]
259
+ # @param [FFI::Pointer(PassManagerRef)] pm
260
+ # @return [nil]
205
261
  # @scope class
206
262
  attach_function :add_tail_call_elimination_pass, :LLVMAddTailCallEliminationPass, [:pointer], :void
207
-
263
+
208
264
  # See llvm::createConstantPropagationPass function.
209
- #
265
+ #
210
266
  # @method add_constant_propagation_pass(pm)
211
- # @param [FFI::Pointer(PassManagerRef)] pm
212
- # @return [nil]
267
+ # @param [FFI::Pointer(PassManagerRef)] pm
268
+ # @return [nil]
213
269
  # @scope class
214
270
  attach_function :add_constant_propagation_pass, :LLVMAddConstantPropagationPass, [:pointer], :void
215
-
271
+
216
272
  # See llvm::demotePromoteMemoryToRegisterPass function.
217
- #
273
+ #
218
274
  # @method add_demote_memory_to_register_pass(pm)
219
- # @param [FFI::Pointer(PassManagerRef)] pm
220
- # @return [nil]
275
+ # @param [FFI::Pointer(PassManagerRef)] pm
276
+ # @return [nil]
221
277
  # @scope class
222
278
  attach_function :add_demote_memory_to_register_pass, :LLVMAddDemoteMemoryToRegisterPass, [:pointer], :void
223
-
279
+
224
280
  # See llvm::createVerifierPass function.
225
- #
281
+ #
226
282
  # @method add_verifier_pass(pm)
227
- # @param [FFI::Pointer(PassManagerRef)] pm
228
- # @return [nil]
283
+ # @param [FFI::Pointer(PassManagerRef)] pm
284
+ # @return [nil]
229
285
  # @scope class
230
286
  attach_function :add_verifier_pass, :LLVMAddVerifierPass, [:pointer], :void
231
-
287
+
232
288
  # See llvm::createCorrelatedValuePropagationPass function
233
- #
289
+ #
234
290
  # @method add_correlated_value_propagation_pass(pm)
235
- # @param [FFI::Pointer(PassManagerRef)] pm
236
- # @return [nil]
291
+ # @param [FFI::Pointer(PassManagerRef)] pm
292
+ # @return [nil]
237
293
  # @scope class
238
294
  attach_function :add_correlated_value_propagation_pass, :LLVMAddCorrelatedValuePropagationPass, [:pointer], :void
239
-
295
+
240
296
  # See llvm::createEarlyCSEPass function
241
- #
297
+ #
242
298
  # @method add_early_cse_pass(pm)
243
- # @param [FFI::Pointer(PassManagerRef)] pm
244
- # @return [nil]
299
+ # @param [FFI::Pointer(PassManagerRef)] pm
300
+ # @return [nil]
245
301
  # @scope class
246
302
  attach_function :add_early_cse_pass, :LLVMAddEarlyCSEPass, [:pointer], :void
247
-
303
+
304
+ # See llvm::createEarlyCSEPass function
305
+ #
306
+ # @method add_early_cse_mem_ssa_pass(pm)
307
+ # @param [FFI::Pointer(PassManagerRef)] pm
308
+ # @return [nil]
309
+ # @scope class
310
+ attach_function :add_early_cse_mem_ssa_pass, :LLVMAddEarlyCSEMemSSAPass, [:pointer], :void
311
+
248
312
  # See llvm::createLowerExpectIntrinsicPass function
249
- #
313
+ #
250
314
  # @method add_lower_expect_intrinsic_pass(pm)
251
- # @param [FFI::Pointer(PassManagerRef)] pm
252
- # @return [nil]
315
+ # @param [FFI::Pointer(PassManagerRef)] pm
316
+ # @return [nil]
253
317
  # @scope class
254
318
  attach_function :add_lower_expect_intrinsic_pass, :LLVMAddLowerExpectIntrinsicPass, [:pointer], :void
255
-
319
+
256
320
  # See llvm::createTypeBasedAliasAnalysisPass function
257
- #
321
+ #
258
322
  # @method add_type_based_alias_analysis_pass(pm)
259
- # @param [FFI::Pointer(PassManagerRef)] pm
260
- # @return [nil]
323
+ # @param [FFI::Pointer(PassManagerRef)] pm
324
+ # @return [nil]
261
325
  # @scope class
262
326
  attach_function :add_type_based_alias_analysis_pass, :LLVMAddTypeBasedAliasAnalysisPass, [:pointer], :void
263
-
327
+
328
+ # See llvm::createScopedNoAliasAAPass function
329
+ #
330
+ # @method add_scoped_no_alias_aa_pass(pm)
331
+ # @param [FFI::Pointer(PassManagerRef)] pm
332
+ # @return [nil]
333
+ # @scope class
334
+ attach_function :add_scoped_no_alias_aa_pass, :LLVMAddScopedNoAliasAAPass, [:pointer], :void
335
+
264
336
  # See llvm::createBasicAliasAnalysisPass function
265
- #
337
+ #
266
338
  # @method add_basic_alias_analysis_pass(pm)
267
- # @param [FFI::Pointer(PassManagerRef)] pm
268
- # @return [nil]
339
+ # @param [FFI::Pointer(PassManagerRef)] pm
340
+ # @return [nil]
269
341
  # @scope class
270
342
  attach_function :add_basic_alias_analysis_pass, :LLVMAddBasicAliasAnalysisPass, [:pointer], :void
271
-
343
+
272
344
  end