commit:     e4e28b774ec066428e0116b94af8baad3e95c559
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 11 20:01:09 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Dec 11 20:03:38 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e4e28b77

dev-lang/crystal: [QA] Move patches to a distfile

 dev-lang/crystal/Manifest                          |   1 +
 dev-lang/crystal/crystal-0.23.1.ebuild             |   7 +-
 .../files/crystal-0.22.0-blocking-stdio-hack.patch |  20 -
 .../files/crystal-0.23.0-verbose-LDFLAGS.patch     |   9 -
 dev-lang/crystal/files/crystal-0.23.1-llvm-5.patch | 837 ---------------------
 5 files changed, 5 insertions(+), 869 deletions(-)

diff --git a/dev-lang/crystal/Manifest b/dev-lang/crystal/Manifest
index c0ba3024244..29524660167 100644
--- a/dev-lang/crystal/Manifest
+++ b/dev-lang/crystal/Manifest
@@ -1,3 +1,4 @@
 DIST crystal-0.23.0-1-linux-i686.tar.gz 18498501 BLAKE2B 
7a8e4e5a2b1425b6effe0a634b74b28c340c4d23c4bfccc0abac4e5d47473e10421d025e68e1fb1fa5b0ba8296108e36cd17d393fb143b8012168d595e5852f9
 SHA512 
8745114c4824d2859c569ed1bd1057d6d649d57b10d41d22c17627f623704eb98ec2e3ab2bf06622de624906f53e053975a6b9d852aeaafeae4f43585609de28
 DIST crystal-0.23.0-1-linux-x86_64.tar.gz 18729061 BLAKE2B 
bfca07702b2f7c7d6b11aac864475316cabe86bdba90b1819ecd5cb45769b2b7fd9fb4c9f80e46301785209cc5b35fe39bf689163b9376a32b24f8a685a6281b
 SHA512 
6a4e427b4ab3c3be6efcfaee5c1a19eff04eaf00db949d1e1ba8f29c3277affe96a7aba4273d93fd05251453d5b5b937aa792bc448ff2f6d6aa7f2b17d175f75
+DIST crystal-0.23.1-patchset.tar.bz2 7268 BLAKE2B 
135990ac9f1a225f169dbc5bb6034d2194d9fc917954764564d68afec09af703382743965a801c9ce54a5866af60847b4c4fc0b9daf2cf5ea99052fbeb771b2a
 SHA512 
68896fc5d1772eeb3dd263f1615fc8031a63d0f3eebca1feb35165adf14a610157302541c84cbc9031a3070fd5566ffe88ad03a8c523f55980520e5614b00b89
 DIST crystal-0.23.1.tar.gz 1646650 BLAKE2B 
3105a683e61835d1e514d5d403b00d3dfae01100a9862d6346c45201c5fb6cba879255469652463719998e976afc495ee9fd4f14f829a709f832cd323cfc2b3b
 SHA512 
06ee0d45cc79cc343d04c346e9cd47b6e4ebc79bf21833662f268f9604f7d2080f7696824e1959de341539f801ae8f898fe1d7b18e4c75378d4eb191878668d5

diff --git a/dev-lang/crystal/crystal-0.23.1.ebuild 
b/dev-lang/crystal/crystal-0.23.1.ebuild
index 08967bd554f..41f26d88e36 100644
--- a/dev-lang/crystal/crystal-0.23.1.ebuild
+++ b/dev-lang/crystal/crystal-0.23.1.ebuild
@@ -12,6 +12,7 @@ BV_X86=${BV}-linux-i686
 DESCRIPTION="The Crystal Programming Language"
 HOMEPAGE="https://crystal-lang.org";
 SRC_URI="https://github.com/crystal-lang/crystal/archive/${PV}.tar.gz -> 
${P}.tar.gz
+       https://dev.gentoo.org/~mgorny/dist/${P}-patchset.tar.bz2
        amd64? ( 
https://github.com/crystal-lang/crystal/releases/download/${PV}/crystal-${BV_AMD64}.tar.gz
 )
        x86? ( 
https://github.com/crystal-lang/crystal/releases/download/${PV}/crystal-${BV_X86}.tar.gz
 )"
 
@@ -37,14 +38,14 @@ RDEPEND="${DEPEND}
 "
 
 PATCHES=(
-       "${FILESDIR}"/${PN}-0.23.0-verbose-LDFLAGS.patch
-       "${FILESDIR}"/${PN}-0.23.1-llvm-5.patch
+       "${WORKDIR}"/${P}-patchset/${PN}-0.23.0-verbose-LDFLAGS.patch
+       "${WORKDIR}"/${P}-patchset/${PN}-0.23.1-llvm-5.patch
 )
 
 src_prepare() {
        default
 
-       use blocking-stdio-hack && eapply 
"${FILESDIR}"/"${PN}"-0.22.0-blocking-stdio-hack.patch
+       use blocking-stdio-hack && eapply 
"${WORKDIR}"/${P}-patchset/${PN}-0.22.0-blocking-stdio-hack.patch
 }
 
 src_compile() {

diff --git a/dev-lang/crystal/files/crystal-0.22.0-blocking-stdio-hack.patch 
b/dev-lang/crystal/files/crystal-0.22.0-blocking-stdio-hack.patch
deleted file mode 100644
index 07b7dba7be6..00000000000
--- a/dev-lang/crystal/files/crystal-0.22.0-blocking-stdio-hack.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Workaround tty corruption in crystal.
-
-Patch restores blocking mode of file desriptors
-in exchange of potential runtime deadlocks
-when dealing with stdio.
-
-Reported-by: Renich Bon Ciric
-Bug: https://github.com/crystal-lang/crystal/issues/2065
-Bug: https://bugs.gentoo.org/616256
-diff --git a/src/compiler/crystal/stdio.cr b/src/compiler/crystal/stdio.cr
-new file mode 100644
-index 000000000..e65f65089
---- /dev/null
-+++ b/src/compiler/crystal/stdio.cr
-@@ -0,0 +1,5 @@
-+module Crystal
-+  STDIN.blocking = true
-+  STDOUT.blocking=true
-+  STDERR.blocking = true
-+end

diff --git a/dev-lang/crystal/files/crystal-0.23.0-verbose-LDFLAGS.patch 
b/dev-lang/crystal/files/crystal-0.23.0-verbose-LDFLAGS.patch
deleted file mode 100644
index 35eace15dae..00000000000
--- a/dev-lang/crystal/files/crystal-0.23.0-verbose-LDFLAGS.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-diff --git a/Makefile b/Makefile
-index eff69e5..5c0c024 100644
---- a/Makefile
-+++ b/Makefile
-@@ -28,3 +28,3 @@ SOURCES := $(shell find src -name '*.cr')
- SPEC_SOURCES := $(shell find spec -name '*.cr')
--FLAGS := $(if $(release),--release )$(if $(stats),--stats )$(if 
$(progress),--progress )$(if $(threads),--threads $(threads) )$(if $(debug),-d )
-+FLAGS := $(if $(release),--release )$(if $(stats),--stats )$(if 
$(progress),--progress )$(if $(threads),--threads $(threads) )$(if $(debug),-d 
)$(if $(verbose),--verbose )$(if $(LDFLAGS),--link-flags="$(LDFLAGS)" )
- SPEC_FLAGS := $(if $(verbose),-v )$(if $(junit_output),--junit_output 
$(junit_output) )

diff --git a/dev-lang/crystal/files/crystal-0.23.1-llvm-5.patch 
b/dev-lang/crystal/files/crystal-0.23.1-llvm-5.patch
deleted file mode 100644
index bbfd922149e..00000000000
--- a/dev-lang/crystal/files/crystal-0.23.1-llvm-5.patch
+++ /dev/null
@@ -1,837 +0,0 @@
-https://bugs.gentoo.org/630634
-diff --git a/.gitignore b/.gitignore
-index 9a883edfd..5f852d930 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -12,5 +12,6 @@ all_spec
- /tmp
- /doc/
- /src/llvm/ext/llvm_ext.o
-+/src/llvm/ext/llvm_ext.dwo
- /src/ext/*.o
- /src/ext/libcrystal.a
-diff --git a/Makefile b/Makefile
-index a5dc0d7e3..14a21bb86 100644
---- a/Makefile
-+++ b/Makefile
-@@ -37,8 +37,6 @@ LLVM_CONFIG_FINDER := \
-     (command -v llvm-config > /dev/null && (case "$(llvm-config --version)" 
in 3.9*) command -v llvm-config;; *) false;; esac)) || \
-   command -v llvm-config-3.8 || command -v llvm-config38 || \
-     (command -v llvm-config > /dev/null && (case "$(llvm-config --version)" 
in 3.8*) command -v llvm-config;; *) false;; esac)) || \
--  command -v llvm-config-3.6 || command -v llvm-config36 || \
--  command -v llvm-config-3.5 || command -v llvm-config35 || \
-   command -v llvm-config
- LLVM_CONFIG := $(shell $(LLVM_CONFIG_FINDER))
- LLVM_EXT_DIR = src/llvm/ext
-diff --git a/src/compiler/crystal/compiler.cr 
b/src/compiler/crystal/compiler.cr
-index a2bed9a95..afc7976e3 100644
---- a/src/compiler/crystal/compiler.cr
-+++ b/src/compiler/crystal/compiler.cr
-@@ -447,9 +447,6 @@ module Crystal
-
-     protected def optimize(llvm_mod)
-       fun_pass_manager = llvm_mod.new_function_pass_manager
--      {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
--        fun_pass_manager.add_target_data target_machine.data_layout
--      {% end %}
-       pass_manager_builder.populate fun_pass_manager
-       fun_pass_manager.run llvm_mod
-       module_pass_manager.run llvm_mod
-@@ -460,9 +457,6 @@ module Crystal
-     private def module_pass_manager
-       @module_pass_manager ||= begin
-         mod_pass_manager = LLVM::ModulePassManager.new
--        {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
--          mod_pass_manager.add_target_data target_machine.data_layout
--        {% end %}
-         pass_manager_builder.populate mod_pass_manager
-         mod_pass_manager
-       end
-@@ -554,54 +548,29 @@ module Crystal
-         can_reuse_previous_compilation =
-           !compiler.emit && !@bc_flags_changed && File.exists?(bc_name) && 
File.exists?(object_name)
-
--        {% if LibLLVM::IS_35 %}
--          # In LLVM 3.5 we can't write a bitcode to memory,
--          # so instead we write it to another file
--          bc_name_new = self.bc_name_new
--          llvm_mod.write_bitcode_to_file(bc_name_new)
--
--          if can_reuse_previous_compilation
--            if FileUtils.cmp(bc_name, bc_name_new)
--              # If the user cancelled a previous compilation it might be that
--              # the .o file is empty
--              if File.size(object_name) > 0
--                File.delete bc_name_new
--                must_compile = false
--              end
--            end
--          end
-+        memory_buffer = llvm_mod.write_bitcode_to_memory_buffer
-
--          if must_compile
--            # Create/overwrite the .bc file (for next compilations)
--            File.rename(bc_name_new, bc_name)
--            compiler.optimize llvm_mod if compiler.release?
--            compiler.target_machine.emit_obj_to_file llvm_mod, object_name
--          end
--        {% else %}
--          memory_buffer = llvm_mod.write_bitcode_to_memory_buffer
--
--          if can_reuse_previous_compilation
--            memory_io = IO::Memory.new(memory_buffer.to_slice)
--            changed = File.open(bc_name) { |bc_file| !FileUtils.cmp(bc_file, 
memory_io) }
--
--            # If the user cancelled a previous compilation
--            # it might be that the .o file is empty
--            if !changed && File.size(object_name) > 0
--              must_compile = false
--              memory_buffer.dispose
--              memory_buffer = nil
--            else
--              # We need to compile, so we'll write the memory buffer to file
--            end
--          end
-+        if can_reuse_previous_compilation
-+          memory_io = IO::Memory.new(memory_buffer.to_slice)
-+          changed = File.open(bc_name) { |bc_file| !FileUtils.cmp(bc_file, 
memory_io) }
-
--          # If there's a memory buffer, it means we must create a .o from it
--          if memory_buffer
--            # Create the .bc file (for next compilations)
--            File.write(bc_name, memory_buffer.to_slice)
-+          # If the user cancelled a previous compilation
-+          # it might be that the .o file is empty
-+          if !changed && File.size(object_name) > 0
-+            must_compile = false
-             memory_buffer.dispose
-+            memory_buffer = nil
-+          else
-+            # We need to compile, so we'll write the memory buffer to file
-           end
--        {% end %}
-+        end
-+
-+        # If there's a memory buffer, it means we must create a .o from it
-+        if memory_buffer
-+          # Create the .bc file (for next compilations)
-+          File.write(bc_name, memory_buffer.to_slice)
-+          memory_buffer.dispose
-+        end
-
-         if must_compile
-           compiler.optimize llvm_mod if compiler.release?
-diff --git a/src/llvm.cr b/src/llvm.cr
-index 44a03c272..f9b31cf4b 100644
---- a/src/llvm.cr
-+++ b/src/llvm.cr
-@@ -94,11 +94,5 @@ module LLVM
-     string
-   end
-
--  {% if LibLLVM::IS_35 %}
--    DEBUG_METADATA_VERSION = 1
--  {% elsif LibLLVM::IS_36 %}
--    DEBUG_METADATA_VERSION = 2
--  {% else %}
--    DEBUG_METADATA_VERSION = 3
--  {% end %}
-+  DEBUG_METADATA_VERSION = 3
- end
-diff --git a/src/llvm/context.cr b/src/llvm/context.cr
-index 8485eedf1..7d66a4365 100644
---- a/src/llvm/context.cr
-+++ b/src/llvm/context.cr
-@@ -9,9 +9,9 @@ class LLVM::Context
-   end
-
-   def new_module(name : String) : Module
--    {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+    {% if LibLLVM::IS_38 %}
-       Module.new(LibLLVM.module_create_with_name_in_context(name, self), 
name, self)
--    {% else %}
-+    {% else %} # LLVM >= 3.9
-       Module.new(LibLLVM.module_create_with_name_in_context(name, self), self)
-     {% end %}
-   end
-@@ -104,9 +104,9 @@ class LLVM::Context
-     if ret != 0 && msg
-       raise LLVM.string_and_dispose(msg)
-     end
--    {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+    {% if LibLLVM::IS_38 %}
-       Module.new(mod, "unknown", self)
--    {% else %}
-+    {% else %} # LLVM >= 3.9
-       Module.new(mod, self)
-     {% end %}
-   end
-diff --git a/src/llvm/di_builder.cr b/src/llvm/di_builder.cr
-index b8c0fd628..79571d2c0 100644
---- a/src/llvm/di_builder.cr
-+++ b/src/llvm/di_builder.cr
-@@ -31,16 +31,8 @@ struct LLVM::DIBuilder
-
-   def create_function(scope, name, linkage_name, file, line, composite_type, 
is_local_to_unit, is_definition,
-                       scope_line, flags, is_optimized, func)
--    {% if LibLLVM::IS_36 || LibLLVM::IS_35 %}
--      LibLLVMExt.di_builder_create_function(self, scope, name, linkage_name, 
file, line, composite_type,
--                                            is_local_to_unit ? 1 : 0,
--                                            is_definition ? 1 : 0,
--                                            scope_line, flags,
--                                            is_optimized ? 1 : 0, func)
--    {% else %}
--      LibLLVMExt.di_builder_create_function(self, scope, name, linkage_name, 
file, line, composite_type,
--                                            is_local_to_unit, is_definition, 
scope_line, flags, is_optimized, func)
--    {% end %}
-+    LibLLVMExt.di_builder_create_function(self, scope, name, linkage_name, 
file, line, composite_type,
-+      is_local_to_unit, is_definition, scope_line, flags, is_optimized, func)
-   end
-
-   def create_auto_variable(scope, name, file, line, type, align_in_bits)
-@@ -87,19 +79,11 @@ struct LLVM::DIBuilder
-   end
-
-   def create_replaceable_composite_type(scope, name, file, line, context : 
Context)
--    {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
--      LibLLVMExt.temporary_md_node(context, nil, 0).as(LibLLVMExt::Metadata)
--    {% else %}
--      LibLLVMExt.di_builder_create_replaceable_composite_type(self, scope, 
name, file, line)
--    {% end %}
-+    LibLLVMExt.di_builder_create_replaceable_composite_type(self, scope, 
name, file, line)
-   end
-
-   def replace_temporary(from, to)
--    {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
--      LibLLVMExt.metadata_replace_all_uses_with(from, to)
--    {% else %}
--      LibLLVMExt.di_builder_replace_temporary(self, from, to)
--    {% end %}
-+    LibLLVMExt.di_builder_replace_temporary(self, from, to)
-   end
-
-   def end
-diff --git a/src/llvm/ext/llvm_ext.cc b/src/llvm/ext/llvm_ext.cc
-index d13446160..3dbdd4220 100644
---- a/src/llvm/ext/llvm_ext.cc
-+++ b/src/llvm/ext/llvm_ext.cc
-@@ -18,35 +18,22 @@ using namespace llvm;
- #define LLVM_VERSION_LE(major, minor) \
-   (LLVM_VERSION_MAJOR < (major) || LLVM_VERSION_MAJOR == (major) && 
LLVM_VERSION_MINOR <= (minor))
-
-+#if LLVM_VERSION_LE(4, 0)
- typedef struct LLVMOpaqueDIBuilder *LLVMDIBuilderRef;
- DEFINE_SIMPLE_CONVERSION_FUNCTIONS(DIBuilder, LLVMDIBuilderRef)
-
--#if LLVM_VERSION_EQ(3, 5)
--typedef LLVMValueRef LLVMMetadataRef;
--typedef Value Metadata;
--#define DIBuilderRef LLVMDIBuilderRef
--
--#else /* LLVM != 3.5 */
- typedef struct LLVMOpaqueMetadata *LLVMMetadataRef;
- DEFINE_ISA_CONVERSION_FUNCTIONS(Metadata, LLVMMetadataRef)
- inline Metadata **unwrap(LLVMMetadataRef *Vals) {
-   return reinterpret_cast<Metadata **>(Vals);
- }
--#endif /* LLVM == 3.5 */
--
--#if LLVM_VERSION_LE(3, 6)
--template <typename T> T unwrapDIptr(LLVMMetadataRef v) {
--  return v ? T(unwrap<MDNode>(v)) : T();
--}
--#define DIBuilderRef LLVMDIBuilderRef
-+#endif
-
--#else /* LLVM > 3.6 */
- typedef DIBuilder *DIBuilderRef;
- #define DIArray DINodeArray
- template <typename T> T *unwrapDIptr(LLVMMetadataRef v) {
-   return (T *)(v ? unwrap<MDNode>(v) : NULL);
- }
--#endif /* LLVM <= 3.6 */
-
- #if LLVM_VERSION_LE(3, 6)
- #define OperandBundleDef void
-@@ -66,13 +53,7 @@ void LLVMDIBuilderFinalize(LLVMDIBuilderRef dref) { 
unwrap(dref)->finalize(); }
-
- LLVMMetadataRef LLVMDIBuilderCreateFile(DIBuilderRef Dref, const char *File,
-                                         const char *Dir) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DIFile F = D->createFile(File, Dir);
--  return wrap(F);
--#else
-   return wrap(Dref->createFile(File, Dir));
--#endif
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateCompileUnit(DIBuilderRef Dref, unsigned 
Lang,
-@@ -82,20 +63,13 @@ LLVMMetadataRef 
LLVMDIBuilderCreateCompileUnit(DIBuilderRef Dref, unsigned Lang,
-                                                int Optimized,
-                                                const char *Flags,
-                                                unsigned RuntimeVersion) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DICompileUnit CU = D->createCompileUnit(Lang, File, Dir, Producer, 
Optimized,
--                                          Flags, RuntimeVersion);
--  return wrap(CU);
--#else
--# if LLVM_VERSION_LE(3, 9)
-+#if LLVM_VERSION_LE(3, 9)
-   return wrap(Dref->createCompileUnit(Lang, File, Dir, Producer, Optimized,
-                                       Flags, RuntimeVersion));
--# else
-+#else
-   DIFile *F = Dref->createFile(File, Dir);
-   return wrap(Dref->createCompileUnit(Lang, F, Producer, Optimized,
-                                       Flags, RuntimeVersion));
--# endif
- #endif
- }
-
-@@ -111,19 +85,11 @@ LLVMMetadataRef LLVMDIBuilderCreateFunction(
- #endif
-     bool IsOptimized,
-     LLVMValueRef Func) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DISubprogram Sub = D->createFunction(
--      unwrapDI<DIDescriptor>(Scope), Name, LinkageName, 
unwrapDI<DIFile>(File),
--      Line, unwrapDI<DICompositeType>(CompositeType), IsLocalToUnit,
--      IsDefinition, ScopeLine, Flags, IsOptimized, unwrap<Function>(Func));
--#else
-   DISubprogram *Sub = Dref->createFunction(
-       unwrapDI<DIScope>(Scope), Name, LinkageName, unwrapDI<DIFile>(File), 
Line,
-       unwrapDI<DISubroutineType>(CompositeType), IsLocalToUnit, IsDefinition,
-       ScopeLine, Flags, IsOptimized);
-   unwrap<Function>(Func)->setSubprogram(Sub);
--#endif
-   return wrap(Sub);
- }
-
-@@ -132,18 +98,8 @@ LLVMMetadataRef 
LLVMDIBuilderCreateLexicalBlock(DIBuilderRef Dref,
-                                                 LLVMMetadataRef File,
-                                                 unsigned Line,
-                                                 unsigned Column) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--# if LLVM_VERSION_EQ(3, 5)
--  DILexicalBlock LB = D->createLexicalBlock(unwrapDI<DIDescriptor>(Scope), 
unwrapDI<DIFile>(File), Line, Column, 0);
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
--  DILexicalBlock LB = D->createLexicalBlock(unwrapDI<DIDescriptor>(Scope), 
unwrapDI<DIFile>(File), Line, Column);
--# endif
--  return wrap(LB);
--#else /* LLVM > 3.6 */
-   return wrap(Dref->createLexicalBlock(unwrapDI<DIDescriptor>(Scope),
-                                        unwrapDI<DIFile>(File), Line, Column));
--#endif /* LLVM <= 3.6 */
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateBasicType(DIBuilderRef Dref,
-@@ -151,71 +107,34 @@ LLVMMetadataRef 
LLVMDIBuilderCreateBasicType(DIBuilderRef Dref,
-                                              uint64_t SizeInBits,
-                                              uint64_t AlignInBits,
-                                              unsigned Encoding) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DIBasicType T = D->createBasicType(Name, SizeInBits, AlignInBits, Encoding);
--  return wrap(T);
--#else
--# if LLVM_VERSION_LE(3, 9)
-+#if LLVM_VERSION_LE(3, 9)
-   return wrap(Dref->createBasicType(Name, SizeInBits, AlignInBits, Encoding));
--# else
-+#else
-   return wrap(Dref->createBasicType(Name, SizeInBits, Encoding));
--# endif
- #endif
- }
-
- LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(DIBuilderRef Dref,
-                                                   LLVMMetadataRef *Data,
-                                                   unsigned Length) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--# if LLVM_VERSION_EQ(3, 5)
--  Value **DataValue = unwrap(Data);
--  ArrayRef<Value *> Elements(DataValue, Length);
--  DIArray A = D->getOrCreateArray(Elements);
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
--  Metadata **DataValue = unwrap(Data);
--  ArrayRef<Metadata *> Elements(DataValue, Length);
--  DITypeArray A = D->getOrCreateTypeArray(Elements);
--# endif
--  return wrap(A);
--#else /* LLVM > 3.6 */
-   Metadata **DataValue = unwrap(Data);
-   return wrap(
-       Dref->getOrCreateTypeArray(ArrayRef<Metadata *>(DataValue, Length))
-           .get());
--#endif /* LLVM <= 3.6 */
- }
-
- LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(DIBuilderRef Dref,
-                                               LLVMMetadataRef *Data,
-                                               unsigned Length) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  ArrayRef<Metadata *> elements(unwrap(Data), Length);
--  DIArray a = D->getOrCreateArray(elements);
--
--  return wrap(a);
--#else
-   Metadata **DataValue = unwrap(Data);
-   return wrap(
-       Dref->getOrCreateArray(ArrayRef<Metadata *>(DataValue, Length)).get());
--#endif
- }
-
- LLVMMetadataRef
- LLVMDIBuilderCreateSubroutineType(DIBuilderRef Dref, LLVMMetadataRef File,
-                                   LLVMMetadataRef ParameterTypes) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--# if LLVM_VERSION_EQ(3, 5)
--  DICompositeType CT = D->createSubroutineType(unwrapDI<DIFile>(File), 
unwrapDI<DIArray>(ParameterTypes));
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
--  DICompositeType CT = D->createSubroutineType(unwrapDI<DIFile>(File), 
unwrapDI<DITypeArray>(ParameterTypes));
--# endif
--#else /* LLVM > 3.6 */
-   DISubroutineType *CT = 
Dref->createSubroutineType(DITypeRefArray(unwrap<MDTuple>(ParameterTypes)));
--#endif /* LLVM <= 3.6 */
-   return wrap(CT);
- }
-
-@@ -229,21 +148,14 @@ LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(
-     DINode::DIFlags Flags,
- #endif
-     uint32_t AlignInBits) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DIVariable V = D->createLocalVariable(
--      llvm::dwarf::DW_TAG_auto_variable, unwrapDI<DIDescriptor>(Scope), Name, 
unwrapDI<DIFile>(File), Line,
--      unwrapDI<DIType>(Ty), AlwaysPreserve, Flags, 0);
--#else
--# if LLVM_VERSION_LE(3, 9)
-+#if LLVM_VERSION_LE(3, 9)
-   DILocalVariable *V = Dref->createAutoVariable(
-       unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
-       unwrapDI<DIType>(Ty), AlwaysPreserve, Flags);
--# else
-+#else
-   DILocalVariable *V = Dref->createAutoVariable(
-       unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
-       unwrapDI<DIType>(Ty), AlwaysPreserve, Flags, AlignInBits);
--# endif
- #endif
-   return wrap(V);
- }
-@@ -258,18 +170,10 @@ LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
-     DINode::DIFlags Flags
- #endif
-     ) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DIVariable V = D->createLocalVariable(
--       llvm::dwarf::DW_TAG_arg_variable, unwrapDI<DIDescriptor>(Scope), Name, 
unwrapDI<DIFile>(File), Line,
--       unwrapDI<DIType>(Ty), AlwaysPreserve, Flags, ArgNo);
--  return wrap(V);
--#else
-   DILocalVariable *V = Dref->createParameterVariable
-     (unwrapDI<DIDescriptor>(Scope), Name, ArgNo, unwrapDI<DIFile>(File), Line,
-      unwrapDI<DIType>(Ty), AlwaysPreserve, Flags);
-   return wrap(V);
--#endif
- }
-
- LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(DIBuilderRef Dref,
-@@ -278,46 +182,17 @@ LLVMValueRef 
LLVMDIBuilderInsertDeclareAtEnd(DIBuilderRef Dref,
-                                              LLVMMetadataRef Expr,
-                                              LLVMValueRef DL,
-                                              LLVMBasicBlockRef Block) {
--#if LLVM_VERSION_EQ(3, 5)
--  DIBuilder *D = unwrap(Dref);
--  Instruction *Instr =
--    D->insertDeclare(unwrap(Storage), unwrapDI<DIVariable>(VarInfo),
--                     unwrap(Block));
--  Instr->setDebugLoc(DebugLoc::getFromDILocation(cast<MDNode>(DL)));
--#endif
--
--#if LLVM_VERSION_EQ(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  Instruction *Instr =
--    D->insertDeclare(unwrap(Storage), unwrapDI<DIVariable>(VarInfo),
--                     unwrapDI<DIExpression>(Expr), unwrap(Block));
--  
Instr->setDebugLoc(DebugLoc::getFromDILocation(cast<MDNode>(unwrap<MetadataAsValue>(DL)->getMetadata())));
--#endif
--
--#if LLVM_VERSION_GE(3, 7)
-   Instruction *Instr =
-     Dref->insertDeclare(unwrap(Storage), unwrap<DILocalVariable>(VarInfo),
-                         unwrapDI<DIExpression>(Expr),
-                         
DebugLoc(cast<MDNode>(unwrap<MetadataAsValue>(DL)->getMetadata())),
-                         unwrap(Block));
--#endif
--
-   return wrap(Instr);
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateExpression(DIBuilderRef Dref, int64_t 
*Addr,
-                                               size_t Length) {
--#if LLVM_VERSION_LE(3, 6)
--# if LLVM_VERSION_EQ(3, 5)
--  return nullptr;
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
--  DIBuilder *D = unwrap(Dref);
--  DIExpression Expr = D->createExpression(ArrayRef<int64_t>(Addr, Length));
--  return wrap(Expr);
--# endif
--#else /* LLVM > 3.6 */
-   return wrap(Dref->createExpression(ArrayRef<int64_t>(Addr, Length)));
--#endif
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateEnumerationType(
-@@ -325,30 +200,16 @@ LLVMMetadataRef LLVMDIBuilderCreateEnumerationType(
-     LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
-     uint64_t AlignInBits, LLVMMetadataRef Elements,
-     LLVMMetadataRef UnderlyingType) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DICompositeType enumType = D->createEnumerationType(
--      unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
--      SizeInBits, AlignInBits, unwrapDI<DIArray>(Elements),
--      unwrapDI<DIType>(UnderlyingType));
--#else
-   DICompositeType *enumType = Dref->createEnumerationType(
-       unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
-       SizeInBits, AlignInBits, DINodeArray(unwrapDI<MDTuple>(Elements)),
-       unwrapDI<DIType>(UnderlyingType));
--#endif
-   return wrap(enumType);
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateEnumerator(DIBuilderRef Dref,
-                                               const char *Name, int64_t 
Value) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DIEnumerator e = D->createEnumerator(Name, Value);
--  return wrap(e);
--#else
-   DIEnumerator *e = Dref->createEnumerator(Name, Value);
--#endif
-   return wrap(e);
- }
-
-@@ -367,22 +228,13 @@ LLVMDIBuilderCreateStructType(DIBuilderRef Dref,
- #endif
-                               LLVMMetadataRef DerivedFrom,
-                               LLVMMetadataRef Elements) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DICompositeType CT = D->createStructType(
--      unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
--      SizeInBits, AlignInBits, Flags, unwrapDI<DIType>(DerivedFrom),
--      unwrapDI<DIArray>(Elements));
--#else
-   DICompositeType *CT = Dref->createStructType(
-       unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
-       SizeInBits, AlignInBits, Flags, unwrapDI<DIType>(DerivedFrom),
-       DINodeArray(unwrapDI<MDTuple>(Elements)));
--#endif
-   return wrap(CT);
- }
-
--#if LLVM_VERSION_GE(3, 8)
- LLVMMetadataRef
- LLVMDIBuilderCreateReplaceableCompositeType(DIBuilderRef Dref,
-                                             LLVMMetadataRef Scope,
-@@ -409,7 +261,6 @@ LLVMDIBuilderReplaceTemporary(DIBuilderRef Dref,
-   llvm::TempMDNode fwd_decl(Node);
-   Dref->replaceTemporary(std::move(fwd_decl), Type);
- }
--#endif
-
- LLVMMetadataRef
- LLVMDIBuilderCreateMemberType(DIBuilderRef Dref, LLVMMetadataRef Scope,
-@@ -422,16 +273,9 @@ LLVMDIBuilderCreateMemberType(DIBuilderRef Dref, 
LLVMMetadataRef Scope,
-                               DINode::DIFlags Flags,
- #endif
-                               LLVMMetadataRef Ty) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DIDerivedType DT = D->createMemberType(
--      unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
--      SizeInBits, AlignInBits, OffsetInBits, Flags, unwrapDI<DIType>(Ty));
--#else
-   DIDerivedType *DT = Dref->createMemberType(
-       unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
-       SizeInBits, AlignInBits, OffsetInBits, Flags, unwrapDI<DIType>(Ty));
--#endif
-   return wrap(DT);
- }
-
-@@ -440,39 +284,24 @@ LLVMMetadataRef 
LLVMDIBuilderCreatePointerType(DIBuilderRef Dref,
-                                                uint64_t SizeInBits,
-                                                uint64_t AlignInBits,
-                                                const char *Name) {
--#if LLVM_VERSION_LE(3, 6)
--  DIBuilder *D = unwrap(Dref);
--  DIDerivedType T = D->createPointerType(unwrapDI<DIType>(PointeeType),
--                                         SizeInBits, AlignInBits, Name);
--#else
-   DIDerivedType *T = Dref->createPointerType(unwrapDI<DIType>(PointeeType),
--                                             SizeInBits, AlignInBits, Name);
-+                                             SizeInBits, AlignInBits,
-+#if LLVM_VERSION_GE(5, 0)
-+                                             None,
- #endif
-+                                             Name);
-   return wrap(T);
- }
-
- LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef C, LLVMMetadataRef *MDs,
-                                     unsigned Count) {
--#if LLVM_VERSION_LE(3, 6)
--  return wrap(MDNode::getTemporary(*unwrap(C),
--                                   ArrayRef<Metadata *>(unwrap(MDs), Count)));
--#else
-   return wrap(MDTuple::getTemporary(*unwrap(C),
-                                     ArrayRef<Metadata *>(unwrap(MDs), Count))
-                   .release());
--#endif
- }
-
- void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef MD, LLVMMetadataRef New) {
--#if LLVM_VERSION_LE(3, 6)
--# if LLVM_VERSION_EQ(3, 5)
-   auto *Node = unwrap<MDNode>(MD);
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
--  auto *Node = unwrap<MDNodeFwdDecl>(MD);
--# endif
--#else /* LLVM > 3.6 */
--  auto *Node = unwrap<MDNode>(MD);
--#endif
-   Node->replaceAllUsesWith(unwrap<MDNode>(New));
-   MDNode::deleteTemporary(Node);
- }
-diff --git a/src/llvm/function_pass_manager.cr 
b/src/llvm/function_pass_manager.cr
-index 979cb9c97..834d72a20 100644
---- a/src/llvm/function_pass_manager.cr
-+++ b/src/llvm/function_pass_manager.cr
-@@ -2,12 +2,6 @@ class LLVM::FunctionPassManager
-   def initialize(@unwrap : LibLLVM::PassManagerRef)
-   end
-
--  {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
--    def add_target_data(target_data)
--      LibLLVM.add_target_data target_data, self
--    end
--  {% end %}
--
-   def run(mod : Module)
-     changed = false
-     run do |runner|
-diff --git a/src/llvm/lib_llvm.cr b/src/llvm/lib_llvm.cr
-index e2c7a9445..5a0b67cdd 100644
---- a/src/llvm/lib_llvm.cr
-+++ b/src/llvm/lib_llvm.cr
-@@ -6,8 +6,6 @@ lib LibLLVM
-                    (command -v llvm-config > /dev/null && (case 
"$(llvm-config --version)" in 3.9*) command -v llvm-config;; *) false;; esac)) 
|| \
-                    command -v llvm-config-3.8 || command -v llvm-config38 || \
-                    (command -v llvm-config > /dev/null && (case 
"$(llvm-config --version)" in 3.8*) command -v llvm-config;; *) false;; esac)) 
|| \
--                   command -v llvm-config-3.6 || command -v llvm-config36 || \
--                   command -v llvm-config-3.5 || command -v llvm-config35 || \
-                    command -v llvm-config
-                   `.chomp.stringify
-                 }}
-@@ -32,8 +30,6 @@ end
-     IS_40 = {{LibLLVM::VERSION.starts_with?("4.0")}}
-     IS_39 = {{LibLLVM::VERSION.starts_with?("3.9")}}
-     IS_38 = {{LibLLVM::VERSION.starts_with?("3.8")}}
--    IS_36 = {{LibLLVM::VERSION.starts_with?("3.6")}}
--    IS_35 = {{LibLLVM::VERSION.starts_with?("3.5")}}
-   end
- {% end %}
-
-@@ -283,9 +279,7 @@ lib LibLLVM
-   fun set_alignment = LLVMSetAlignment(value : ValueRef, bytes : UInt32)
-   fun get_return_type = LLVMGetReturnType(TypeRef) : TypeRef
-
--  {% unless LibLLVM::IS_35 %}
--    fun write_bitcode_to_memory_buffer = LLVMWriteBitcodeToMemoryBuffer(mod : 
ModuleRef) : MemoryBufferRef
--  {% end %}
-+  fun write_bitcode_to_memory_buffer = LLVMWriteBitcodeToMemoryBuffer(mod : 
ModuleRef) : MemoryBufferRef
-
-   fun dispose_memory_buffer = LLVMDisposeMemoryBuffer(buf : MemoryBufferRef) 
: Void
-   fun get_buffer_start = LLVMGetBufferStart(buf : MemoryBufferRef) : UInt8*
-@@ -293,26 +287,22 @@ lib LibLLVM
-
-   fun write_bitcode_to_fd = LLVMWriteBitcodeToFD(mod : ModuleRef, fd : 
LibC::Int, should_close : LibC::Int, unbuffered : LibC::Int) : LibC::Int
-
--  {% if LibLLVM::IS_36 || LibLLVM::IS_35 %}
--    fun add_target_data = LLVMAddTargetData(td : TargetDataRef, pm : 
PassManagerRef)
--  {% end %}
--
--  {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+  {% if LibLLVM::IS_38 %}
-     fun copy_string_rep_of_target_data = LLVMCopyStringRepOfTargetData(data : 
TargetDataRef) : UInt8*
-     fun get_target_machine_data = LLVMGetTargetMachineData(t : 
TargetMachineRef) : TargetDataRef
-     fun set_data_layout = LLVMSetDataLayout(mod : ModuleRef, data : UInt8*)
--  {% else %}
-+  {% else %} # LLVM >= 3.9
-     fun create_target_data_layout = LLVMCreateTargetDataLayout(t : 
TargetMachineRef) : TargetDataRef
-     fun set_module_data_layout = LLVMSetModuleDataLayout(mod : ModuleRef, 
data : TargetDataRef)
-   {% end %}
-
--  {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+  {% if LibLLVM::IS_38 %}
-     fun add_attribute = LLVMAddAttribute(arg : ValueRef, attr : 
LLVM::Attribute)
-     fun add_instr_attribute = LLVMAddInstrAttribute(instr : ValueRef, index : 
UInt32, attr : LLVM::Attribute)
-     fun add_function_attr = LLVMAddFunctionAttr(fn : ValueRef, pa : 
LLVM::Attribute)
-     fun get_function_attr = LLVMGetFunctionAttr(fn : ValueRef) : 
LLVM::Attribute
-     fun get_attribute = LLVMGetAttribute(arg : ValueRef) : LLVM::Attribute
--  {% else %}
-+  {% else %} # LLVM >= 3.9
-     type AttributeRef = Void*
-     alias AttributeIndex = UInt
-
-diff --git a/src/llvm/lib_llvm_ext.cr b/src/llvm/lib_llvm_ext.cr
-index 84c65cccb..953567eb8 100644
---- a/src/llvm/lib_llvm_ext.cr
-+++ b/src/llvm/lib_llvm_ext.cr
-@@ -13,19 +13,11 @@ lib LibLLVMExt
-   fun create_di_builder = LLVMNewDIBuilder(LibLLVM::ModuleRef) : DIBuilder
-   fun di_builder_finalize = LLVMDIBuilderFinalize(DIBuilder)
-
--  {% if LibLLVM::IS_36 || LibLLVM::IS_35 %}
--    fun di_builder_create_function = LLVMDIBuilderCreateFunction(
--                                                                 builder : 
DIBuilder, scope : Metadata, name : Char*,
--                                                                 linkage_name 
: Char*, file : Metadata, line : UInt,
--                                                                 
composite_type : Metadata, is_local_to_unit : Int, is_definition : Int,
--                                                                 scope_line : 
UInt, flags : LLVM::DIFlags, is_optimized : Int, func : LibLLVM::ValueRef) : 
Metadata
--  {% else %}
--    fun di_builder_create_function = LLVMDIBuilderCreateFunction(
--                                                                 builder : 
DIBuilder, scope : Metadata, name : Char*,
--                                                                 linkage_name 
: Char*, file : Metadata, line : UInt,
--                                                                 
composite_type : Metadata, is_local_to_unit : Bool, is_definition : Bool,
--                                                                 scope_line : 
UInt, flags : LLVM::DIFlags, is_optimized : Bool, func : LibLLVM::ValueRef) : 
Metadata
--  {% end %}
-+  fun di_builder_create_function = LLVMDIBuilderCreateFunction(
-+                                                               builder : 
DIBuilder, scope : Metadata, name : Char*,
-+                                                               linkage_name : 
Char*, file : Metadata, line : UInt,
-+                                                               composite_type 
: Metadata, is_local_to_unit : Bool, is_definition : Bool,
-+                                                               scope_line : 
UInt, flags : LLVM::DIFlags, is_optimized : Bool, func : LibLLVM::ValueRef) : 
Metadata
-
-   fun di_builder_create_file = LLVMDIBuilderCreateFile(builder : DIBuilder, 
file : Char*, dir : Char*) : Metadata
-   fun di_builder_create_compile_unit = LLVMDIBuilderCreateCompileUnit(builder 
: DIBuilder,
-@@ -94,17 +86,12 @@ lib LibLLVMExt
-                                                                       
align_in_bits : UInt64,
-                                                                       name : 
Char*) : Metadata
-
--  {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
--    fun temporary_md_node = LLVMTemporaryMDNode(context : 
LibLLVM::ContextRef, mds : Metadata*, count : UInt) : Metadata
--    fun metadata_replace_all_uses_with = 
LLVMMetadataReplaceAllUsesWith(Metadata, Metadata)
--  {% else %}
--    fun di_builder_create_replaceable_composite_type = 
LLVMDIBuilderCreateReplaceableCompositeType(builder : DIBuilder,
--                                                                              
                     scope : Metadata,
--                                                                              
                     name : Char*,
--                                                                              
                                      file : Metadata,
--                                                                              
                     line : UInt) : Metadata
--    fun di_builder_replace_temporary = LLVMDIBuilderReplaceTemporary(builder 
: DIBuilder, from : Metadata, to : Metadata)
--  {% end %}
-+  fun di_builder_create_replaceable_composite_type = 
LLVMDIBuilderCreateReplaceableCompositeType(builder : DIBuilder,
-+                                                                              
                   scope : Metadata,
-+                                                                              
                   name : Char*,
-+                                                                              
                   file : Metadata,
-+                                                                              
                   line : UInt) : Metadata
-+  fun di_builder_replace_temporary = LLVMDIBuilderReplaceTemporary(builder : 
DIBuilder, from : Metadata, to : Metadata)
-
-   fun set_current_debug_location = 
LLVMSetCurrentDebugLocation2(LibLLVM::BuilderRef, Int, Int, Metadata, Metadata)
-
-diff --git a/src/llvm/module.cr b/src/llvm/module.cr
-index cb71e3b21..c15a56e77 100644
---- a/src/llvm/module.cr
-+++ b/src/llvm/module.cr
-@@ -6,7 +6,7 @@ class LLVM::Module
-
-   getter context : Context
-
--  {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+  {% if LibLLVM::IS_38 %}
-     def initialize(@unwrap : LibLLVM::ModuleRef, @name : String, @context : 
Context)
-       @owned = false
-     end
-@@ -14,7 +14,7 @@ class LLVM::Module
-     def name : String
-       @name
-     end
--  {% else %}
-+  {% else %} # LLVM >= 3.9
-     def initialize(@unwrap : LibLLVM::ModuleRef, @context : Context)
-       @owned = false
-     end
-@@ -34,9 +34,9 @@ class LLVM::Module
-   end
-
-   def data_layout=(data : TargetData)
--    {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+    {% if LibLLVM::IS_38 %}
-       LibLLVM.set_data_layout(self, data.to_data_layout_string)
--    {% else %}
-+    {% else %} # LLVM >= 3.9
-       LibLLVM.set_module_data_layout(self, data)
-     {% end %}
-   end
-@@ -57,11 +57,9 @@ class LLVM::Module
-     LibLLVM.write_bitcode_to_file self, filename
-   end
-
--  {% unless LibLLVM::IS_35 %}
--    def write_bitcode_to_memory_buffer
--      MemoryBuffer.new(LibLLVM.write_bitcode_to_memory_buffer self)
--    end
--  {% end %}
-+  def write_bitcode_to_memory_buffer
-+    MemoryBuffer.new(LibLLVM.write_bitcode_to_memory_buffer self)
-+  end
-
-   def write_bitcode_to_fd(fd : Int, should_close = false, buffered = false)
-     LibLLVM.write_bitcode_to_fd(self, fd, should_close ? 1 : 0, buffered ? 1 
: 0)
-diff --git a/src/llvm/module_pass_manager.cr b/src/llvm/module_pass_manager.cr
-index 10bfa60bd..519227809 100644
---- a/src/llvm/module_pass_manager.cr
-+++ b/src/llvm/module_pass_manager.cr
-@@ -3,12 +3,6 @@ class LLVM::ModulePassManager
-     @unwrap = LibLLVM.pass_manager_create
-   end
-
--  {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
--    def add_target_data(target_data)
--      LibLLVM.add_target_data target_data, self
--    end
--  {% end %}
--
-   def run(mod)
-     LibLLVM.run_pass_manager(self, mod) != 0
-   end
-diff --git a/src/llvm/target_machine.cr b/src/llvm/target_machine.cr
-index e4bb081e9..42e44abe2 100644
---- a/src/llvm/target_machine.cr
-+++ b/src/llvm/target_machine.cr
-@@ -9,9 +9,9 @@ class LLVM::TargetMachine
-
-   def data_layout
-     @layout ||= begin
--      layout = {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+      layout = {% if LibLLVM::IS_38 %}
-                  LibLLVM.get_target_machine_data(self)
--               {% else %}
-+               {% else %} # LLVM >= 3.9
-                  LibLLVM.create_target_data_layout(self)
-                {% end %}
-       layout ? TargetData.new(layout) : raise "Missing layout for #{self}"
---
-2.14.1
-

Reply via email to