diff --git a/bridge/go-llvm-irbuilders.h b/bridge/go-llvm-irbuilders.h
index 39363ab..c855d97 100644
--- a/bridge/go-llvm-irbuilders.h
+++ b/bridge/go-llvm-irbuilders.h
@@ -49,7 +49,7 @@
   typedef llvm::IRBuilder<llvm::ConstantFolder, BexprInserter> IRBuilderB;
  public:
   BexprLIRBuilder(llvm::LLVMContext &context, Bexpression *expr) :
-      IRBuilderB(context, llvm::ConstantFolder(), getInserter(), nullptr, llvm::None) {
+      IRBuilderB(context, llvm::ConstantFolder()) {
     getInserter().setDest(expr);
   }
 };
@@ -81,7 +81,7 @@
                           BinstructionsInserter> IRBuilderB;
  public:
   BinstructionsLIRBuilder(llvm::LLVMContext &context, Binstructions *insns) :
-      IRBuilderB(context, llvm::ConstantFolder(), getInserter(), nullptr, llvm::None) {
+      IRBuilderB(context, llvm::ConstantFolder()) {
     getInserter().setDest(insns);
   }
 };
diff --git a/driver/CompileGo.cpp b/driver/CompileGo.cpp
index 32cf7dc..0393812 100644
--- a/driver/CompileGo.cpp
+++ b/driver/CompileGo.cpp
@@ -439,7 +439,7 @@
       StringRef fname = fnamearg->getValue();
       std::error_code EC;
       optRecordFile_ = std::make_unique<llvm::ToolOutputFile>(
-          fname, EC, llvm::sys::fs::F_None);
+          fname, EC, llvm::sys::fs::OF_None);
       if (EC) {
         errs() << "error: unable to open file '"
                << fname << "' to emit optimization remarks\n";
diff --git a/driver/ReadStdin.cpp b/driver/ReadStdin.cpp
index 399bb4d..a3f47fe 100644
--- a/driver/ReadStdin.cpp
+++ b/driver/ReadStdin.cpp
@@ -17,6 +17,7 @@
 
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/raw_ostream.h"
+#include "llvm/Support/FileSystem.h"
 
 namespace gollvm {
 namespace driver {
@@ -61,7 +62,7 @@
   // Emit to the output artifact.
   std::error_code errc;
   llvm::raw_fd_ostream ostr(output.file(), errc,
-                            llvm::sys::fs::OpenFlags::F_None);
+                            llvm::sys::fs::OpenFlags::OF_None);
   if (errc) {
     llvm::errs() << compilation.driver().progname()
                  << ": cannot open " << output.file() << " for writing: "
diff --git a/libgo/godumpspec/godumpspec.cpp b/libgo/godumpspec/godumpspec.cpp
index edf7705..8a88fba 100644
--- a/libgo/godumpspec/godumpspec.cpp
+++ b/libgo/godumpspec/godumpspec.cpp
@@ -1266,7 +1266,7 @@
   if (!OutputFilename.empty()) {
     std::error_code EC;
     OutputFile = std::make_unique<ToolOutputFile>(OutputFilename, EC,
-                                                  sys::fs::F_None);
+                                                  sys::fs::OF_None);
     // Don't remove output file if we exit with an error.
     OutputFile->keep();
     error("Unable to open output file" + OutputFilename, EC);
diff --git a/unittests/BackendCore/BackendArrayStruct.cpp b/unittests/BackendCore/BackendArrayStruct.cpp
index f38882b..249e8cb 100644
--- a/unittests/BackendCore/BackendArrayStruct.cpp
+++ b/unittests/BackendCore/BackendArrayStruct.cpp
@@ -80,8 +80,7 @@
 
   const char *exp = R"RAW_RESULT(
     %cast.0 = bitcast { i8*, i32 }* %loc1 to i8*
-    %cast.1 = bitcast { i8*, i32 }* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 16, i1 false)
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ({ i8*, i32 }* @const.0 to i8*), i64 16, i1 false)
     store { i8*, i32 }* %loc1, { i8*, i32 }** %loc2
     store i32 0, i32* %x
     %field.0 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %loc1, i32 0, i32 1
@@ -308,11 +307,9 @@
 
   const char *exp = R"RAW_RESULT(
     %cast.0 = bitcast [4 x i64]* %aa to i8*
-    %cast.1 = bitcast [4 x i64]* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 32, i1 false)
-    %cast.2 = bitcast [4 x i64]* %ab to i8*
-    %cast.3 = bitcast [4 x i64]* @const.1 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.2, i8* align 8 %cast.3, i64 32, i1 false)
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ([4 x i64]* @const.0 to i8*), i64 32, i1 false)
+    %cast.1 = bitcast [4 x i64]* %ab to i8*
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.1, i8* align 8 bitcast ([4 x i64]* @const.1 to i8*), i64 32, i1 false)
     store i64 0, i64* %z
     %z.ld.0 = load i64, i64* %z
     %index.0 = getelementptr [4 x i64], [4 x i64]* %ac, i32 0, i32 0
@@ -371,8 +368,7 @@
 
   const char *exp = R"RAW_RESULT(
     %cast.0 = bitcast { i32*, i32 }* %loc1 to i8*
-    %cast.1 = bitcast { i32*, i32 }* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 16, i1 false)
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ({ i32*, i32 }* @const.0 to i8*), i64 16, i1 false)
     %field.0 = getelementptr inbounds { i32*, i32 }, { i32*, i32 }* %loc1, i32 0, i32 1
     %loc1.field.ld.0 = load i32, i32* %field.0
     %field.1 = getelementptr inbounds { i32*, i32 }, { i32*, i32 }* %loc2, i32 0, i32 0
@@ -428,16 +424,15 @@
 
   const char *exp = R"RAW_RESULT(
     %cast.0 = bitcast { { i32*, i32 }, float }* %loc1 to i8*
-    %cast.1 = bitcast { { i32*, i32 }, float }* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 24, i1 false)
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ({ { i32*, i32 }, float }* @const.0 to i8*), i64 24, i1 false)
     %field.0 = getelementptr inbounds { i32*, i32 }, { i32*, i32 }* %tmp.0, i32 0, i32 0
     store i32* %param1.addr, i32** %field.0
     %field.1 = getelementptr inbounds { i32*, i32 }, { i32*, i32 }* %tmp.0, i32 0, i32 1
     store i32 3, i32* %field.1
     %field.2 = getelementptr inbounds { { i32*, i32 }, float }, { { i32*, i32 }, float }* %loc1, i32 0, i32 0
-    %cast.2 = bitcast { i32*, i32 }* %field.2 to i8*
-    %cast.3 = bitcast { i32*, i32 }* %tmp.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.2, i8* align 8 %cast.3, i64 16, i1 false)
+    %cast.1 = bitcast { i32*, i32 }* %field.2 to i8*
+    %cast.2 = bitcast { i32*, i32 }* %tmp.0 to i8*
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.1, i8* align 8 %cast.2, i64 16, i1 false)
     %field.3 = getelementptr inbounds { { i32*, i32 }, float }, { { i32*, i32 }, float }* %loc1, i32 0, i32 1
     store float 3.000000e+00, float* %field.3
   )RAW_RESULT";
@@ -586,8 +581,7 @@
 
   const char *exp = R"RAW_RESULT(
     %cast.0 = bitcast [4 x i64]* %aa to i8*
-    %cast.1 = bitcast [4 x i64]* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 32, i1 false)
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ([4 x i64]* @const.0 to i8*), i64 32, i1 false)
     %index.0 = getelementptr [4 x i64], [4 x i64]* %aa, i32 0, i32 1
     %aa.index.ld.0 = load i64, i64* %index.0
     %index.1 = getelementptr [4 x i64], [4 x i64]* %aa, i32 0, i64 %aa.index.ld.0
@@ -656,8 +650,7 @@
 
     const char *exp = R"RAW_RESULT(
       %cast.0 = bitcast [10 x { i8, [4 x { i64, i64 }*], i8 }*]* %t1 to i8*
-      %cast.1 = bitcast [10 x { i8, [4 x { i64, i64 }*], i8 }*]* @const.0 to i8*
-      call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 80, i1 false)
+      call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ([10 x { i8, [4 x { i64, i64 }*], i8 }*]* @const.0 to i8*), i64 80, i1 false)
       %index.0 = getelementptr [10 x { i8, [4 x { i64, i64 }*], i8 }*], [10 x { i8, [4 x { i64, i64 }*], i8 }*]* %t1, i32 0, i32 7
       %t1.index.ld.0 = load { i8, [4 x { i64, i64 }*], i8 }*, { i8, [4 x { i64, i64 }*], i8 }** %index.0
       %field.0 = getelementptr inbounds { i8, [4 x { i64, i64 }*], i8 }, { i8, [4 x { i64, i64 }*], i8 }* %t1.index.ld.0, i32 0, i32 1
@@ -738,23 +731,19 @@
 
   const char *exp = R"RAW_RESULT(
     %cast.0 = bitcast { i8* }* %x1 to i8*
-    %cast.1 = bitcast { i8* }* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 8, i1 false)
-    %cast.2 = bitcast { i8* }* %y1 to i8*
-    %cast.3 = bitcast { i8* }* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.2, i8* align 8 %cast.3, i64 8, i1 false)
-    %cast.4 = bitcast { i64, i64, i64, i64, i64, i64 }* %x2 to i8*
-    %cast.5 = bitcast { i64, i64, i64, i64, i64, i64 }* @const.1 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.4, i8* align 8 %cast.5, i64 48, i1 false)
-    %cast.6 = bitcast { i64, i64, i64, i64, i64, i64 }* %y2 to i8*
-    %cast.7 = bitcast { i64, i64, i64, i64, i64, i64 }* @const.1 to i8*
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ({ i8* }* @const.0 to i8*), i64 8, i1 false)
+    %cast.1 = bitcast { i8* }* %y1 to i8*
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.1, i8* align 8 bitcast ({ i8* }* @const.0 to i8*), i64 8, i1 false)
+    %cast.2 = bitcast { i64, i64, i64, i64, i64, i64 }* %x2 to i8*
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.2, i8* align 8 bitcast ({ i64, i64, i64, i64, i64, i64 }* @const.1 to i8*), i64 48, i1 false)
+    %cast.3 = bitcast { i64, i64, i64, i64, i64, i64 }* %y2 to i8*
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.3, i8* align 8 bitcast ({ i64, i64, i64, i64, i64, i64 }* @const.1 to i8*), i64 48, i1 false)
+    %cast.4 = bitcast { i8* }* %x1 to i8*
+    %cast.5 = bitcast { i8* }* %y1 to i8*
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.4, i8* align 8 %cast.5, i64 8, i1 false)
+    %cast.6 = bitcast { i64, i64, i64, i64, i64, i64 }* %x2 to i8*
+    %cast.7 = bitcast { i64, i64, i64, i64, i64, i64 }* %y2 to i8*
     call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.6, i8* align 8 %cast.7, i64 48, i1 false)
-    %cast.8 = bitcast { i8* }* %x1 to i8*
-    %cast.9 = bitcast { i8* }* %y1 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.8, i8* align 8 %cast.9, i64 8, i1 false)
-    %cast.10 = bitcast { i64, i64, i64, i64, i64, i64 }* %x2 to i8*
-    %cast.11 = bitcast { i64, i64, i64, i64, i64, i64 }* %y2 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.10, i8* align 8 %cast.11, i64 48, i1 false)
   )RAW_RESULT";
 
   bool isOK = h.expectBlock(exp);
@@ -799,8 +788,7 @@
 
   const char *exp = R"RAW_RESULT(
     %cast.0 = bitcast { i32 }* %t1 to i8*
-    %cast.1 = bitcast { i32 }* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.0, i8* align 4 %cast.1, i64 4, i1 false)
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.0, i8* align 4 bitcast ({ i32 }* @const.0 to i8*), i64 4, i1 false)
     %field.0 = getelementptr inbounds { i32 }, { i32 }* %t1, i32 0, i32 0
     store i32* %field.0, i32** %a1
     store i32* getelementptr inbounds ({ i32 }, { i32 }* @t2, i32 0, i32 0), i32** %a2
diff --git a/unittests/BackendCore/BackendCallTests.cpp b/unittests/BackendCore/BackendCallTests.cpp
index 61fdb73..5e172dc 100644
--- a/unittests/BackendCore/BackendCallTests.cpp
+++ b/unittests/BackendCore/BackendCallTests.cpp
@@ -120,8 +120,7 @@
   {
     const char *exp = R"RAW_RESULT(
       %cast.0 = bitcast { i8*, i32*, i64*, i64 }* %sret.formal.0 to i8*
-      %cast.1 = bitcast { i8*, i32*, i64*, i64 }* @const.0 to i8*
-      call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 32, i1 false)
+      call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ({ i8*, i32*, i64*, i64 }* @const.0 to i8*), i64 32, i1 false)
       ret void
     )RAW_RESULT";
 
@@ -153,9 +152,9 @@
       store i64* null, i64** %field.2
       %field.3 = getelementptr inbounds { i8*, i32*, i64*, i64 }, { i8*, i32*, i64*, i64 }* %tmp.0, i32 0, i32 3
       store i64 101, i64* %field.3
-      %cast.3 = bitcast { i8*, i32*, i64*, i64 }* %sret.formal.0 to i8*
-      %cast.4 = bitcast { i8*, i32*, i64*, i64 }* %tmp.0 to i8*
-      call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.3, i8* align 8 %cast.4, i64 32, i1 false)
+      %cast.2 = bitcast { i8*, i32*, i64*, i64 }* %sret.formal.0 to i8*
+      %cast.3 = bitcast { i8*, i32*, i64*, i64 }* %tmp.0 to i8*
+      call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.2, i8* align 8 %cast.3, i64 32, i1 false)
       ret void
     )RAW_RESULT";
 
diff --git a/unittests/BackendCore/BackendExprTests.cpp b/unittests/BackendCore/BackendExprTests.cpp
index 3343734..d3ffd3c 100644
--- a/unittests/BackendCore/BackendExprTests.cpp
+++ b/unittests/BackendCore/BackendExprTests.cpp
@@ -505,20 +505,16 @@
       %x = alloca { double, double }
       %y = alloca { double, double }
       %cast.0 = bitcast { float, float }* %a to i8*
-      %cast.1 = bitcast { float, float }* @const.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.0, i8* align 4 %cast.1, i64 8, i1 false)
-      %cast.2 = bitcast { float, float }* %b to i8*
-      %cast.3 = bitcast { float, float }* @const.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.2, i8* align 4 %cast.3, i64 8, i1 false)
-      %cast.4 = bitcast { double, double }* %x to i8*
-      %cast.5 = bitcast { double, double }* @const.1 to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.0, i8* align 4 bitcast ({ float, float }* @const.0 to i8*), i64 8, i1 false)
+      %cast.1 = bitcast { float, float }* %b to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.1, i8* align 4 bitcast ({ float, float }* @const.0 to i8*), i64 8, i1 false)
+      %cast.2 = bitcast { double, double }* %x to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.2, i8* align 8 bitcast ({ double, double }* @const.1 to i8*), i64 16, i1 false)
+      %cast.3 = bitcast { double, double }* %y to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.3, i8* align 8 bitcast ({ double, double }* @const.1 to i8*), i64 16, i1 false)
+      %cast.4 = bitcast { double, double }* %tmp.0 to i8*
+      %cast.5 = bitcast { double, double }* %x to i8*
       call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.4, i8* align 8 %cast.5, i64 16, i1 false)
-      %cast.6 = bitcast { double, double }* %y to i8*
-      %cast.7 = bitcast { double, double }* @const.1 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.6, i8* align 8 %cast.7, i64 16, i1 false)
-      %cast.8 = bitcast { double, double }* %tmp.0 to i8*
-      %cast.9 = bitcast { double, double }* %x to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.8, i8* align 8 %cast.9, i64 16, i1 false)
       %field.0 = getelementptr inbounds { double, double }, { double, double }* %tmp.0, i32 0, i32 0
       %.real.ld.0 = load double, double* %field.0
       %fptrunc.0 = fptrunc double %.real.ld.0 to float
@@ -529,12 +525,12 @@
       store float %fptrunc.0, float* %field.2
       %field.3 = getelementptr inbounds { float, float }, { float, float }* %tmp.1, i32 0, i32 1
       store float %fptrunc.1, float* %field.3
-      %cast.10 = bitcast { float, float }* %a to i8*
-      %cast.11 = bitcast { float, float }* %tmp.1 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.10, i8* align 4 %cast.11, i64 8, i1 false)
-      %cast.12 = bitcast { float, float }* %tmp.2 to i8*
-      %cast.13 = bitcast { float, float }* %b to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.12, i8* align 4 %cast.13, i64 8, i1 false)
+      %cast.6 = bitcast { float, float }* %a to i8*
+      %cast.7 = bitcast { float, float }* %tmp.1 to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.6, i8* align 4 %cast.7, i64 8, i1 false)
+      %cast.8 = bitcast { float, float }* %tmp.2 to i8*
+      %cast.9 = bitcast { float, float }* %b to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.8, i8* align 4 %cast.9, i64 8, i1 false)
       %field.4 = getelementptr inbounds { float, float }, { float, float }* %tmp.2, i32 0, i32 0
       %.real.ld.1 = load float, float* %field.4
       %fpext.0 = fpext float %.real.ld.1 to double
@@ -545,15 +541,15 @@
       store double %fpext.0, double* %field.6
       %field.7 = getelementptr inbounds { double, double }, { double, double }* %tmp.3, i32 0, i32 1
       store double %fpext.1, double* %field.7
-      %cast.14 = bitcast { double, double }* %y to i8*
-      %cast.15 = bitcast { double, double }* %tmp.3 to i8*
+      %cast.10 = bitcast { double, double }* %y to i8*
+      %cast.11 = bitcast { double, double }* %tmp.3 to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.10, i8* align 8 %cast.11, i64 16, i1 false)
+      %cast.12 = bitcast { float, float }* %a to i8*
+      %cast.13 = bitcast { float, float }* %b to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.12, i8* align 4 %cast.13, i64 8, i1 false)
+      %cast.14 = bitcast { double, double }* %x to i8*
+      %cast.15 = bitcast { double, double }* %y to i8*
       call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.14, i8* align 8 %cast.15, i64 16, i1 false)
-      %cast.16 = bitcast { float, float }* %a to i8*
-      %cast.17 = bitcast { float, float }* %b to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.16, i8* align 4 %cast.17, i64 8, i1 false)
-      %cast.18 = bitcast { double, double }* %x to i8*
-      %cast.19 = bitcast { double, double }* %y to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.18, i8* align 8 %cast.19, i64 16, i1 false)
       ret void
     }
   )RAW_RESULT";
@@ -1099,21 +1095,18 @@
       %z = alloca { double, double }
       %b = alloca i8
       %cast.0 = bitcast { double, double }* %x to i8*
-      %cast.1 = bitcast { double, double }* @const.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 16, i1 false)
-      %cast.2 = bitcast { double, double }* %y to i8*
-      %cast.3 = bitcast { double, double }* @const.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.2, i8* align 8 %cast.3, i64 16, i1 false)
-      %cast.4 = bitcast { double, double }* %z to i8*
-      %cast.5 = bitcast { double, double }* @const.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.4, i8* align 8 %cast.5, i64 16, i1 false)
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ({ double, double }* @const.0 to i8*), i64 16, i1 false)
+      %cast.1 = bitcast { double, double }* %y to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.1, i8* align 8 bitcast ({ double, double }* @const.0 to i8*), i64 16, i1 false)
+      %cast.2 = bitcast { double, double }* %z to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.2, i8* align 8 bitcast ({ double, double }* @const.0 to i8*), i64 16, i1 false)
       store i8 0, i8* %b
-      %cast.6 = bitcast { double, double }* %tmp.0 to i8*
-      %cast.7 = bitcast { double, double }* %x to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.6, i8* align 8 %cast.7, i64 16, i1 false)
-      %cast.8 = bitcast { double, double }* %tmp.1 to i8*
-      %cast.9 = bitcast { double, double }* %y to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.8, i8* align 8 %cast.9, i64 16, i1 false)
+      %cast.3 = bitcast { double, double }* %tmp.0 to i8*
+      %cast.4 = bitcast { double, double }* %x to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.3, i8* align 8 %cast.4, i64 16, i1 false)
+      %cast.5 = bitcast { double, double }* %tmp.1 to i8*
+      %cast.6 = bitcast { double, double }* %y to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.5, i8* align 8 %cast.6, i64 16, i1 false)
       %field.0 = getelementptr inbounds { double, double }, { double, double }* %tmp.0, i32 0, i32 0
       %.real.ld.0 = load double, double* %field.0
       %field.1 = getelementptr inbounds { double, double }, { double, double }* %tmp.1, i32 0, i32 0
@@ -1128,15 +1121,15 @@
       store double %fadd.0, double* %field.4
       %field.5 = getelementptr inbounds { double, double }, { double, double }* %tmp.2, i32 0, i32 1
       store double %fadd.1, double* %field.5
-      %cast.10 = bitcast { double, double }* %z to i8*
-      %cast.11 = bitcast { double, double }* %tmp.2 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.10, i8* align 8 %cast.11, i64 16, i1 false)
-      %cast.12 = bitcast { double, double }* %tmp.3 to i8*
-      %cast.13 = bitcast { double, double }* %x to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.12, i8* align 8 %cast.13, i64 16, i1 false)
-      %cast.14 = bitcast { double, double }* %tmp.4 to i8*
-      %cast.15 = bitcast { double, double }* %y to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.14, i8* align 8 %cast.15, i64 16, i1 false)
+      %cast.7 = bitcast { double, double }* %z to i8*
+      %cast.8 = bitcast { double, double }* %tmp.2 to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.7, i8* align 8 %cast.8, i64 16, i1 false)
+      %cast.9 = bitcast { double, double }* %tmp.3 to i8*
+      %cast.10 = bitcast { double, double }* %x to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.9, i8* align 8 %cast.10, i64 16, i1 false)
+      %cast.11 = bitcast { double, double }* %tmp.4 to i8*
+      %cast.12 = bitcast { double, double }* %y to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.11, i8* align 8 %cast.12, i64 16, i1 false)
       %field.6 = getelementptr inbounds { double, double }, { double, double }* %tmp.3, i32 0, i32 0
       %.real.ld.2 = load double, double* %field.6
       %field.7 = getelementptr inbounds { double, double }, { double, double }* %tmp.4, i32 0, i32 0
@@ -1151,15 +1144,15 @@
       store double %fsub.0, double* %field.10
       %field.11 = getelementptr inbounds { double, double }, { double, double }* %tmp.5, i32 0, i32 1
       store double %fsub.1, double* %field.11
-      %cast.16 = bitcast { double, double }* %z to i8*
-      %cast.17 = bitcast { double, double }* %tmp.5 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.16, i8* align 8 %cast.17, i64 16, i1 false)
-      %cast.18 = bitcast { double, double }* %tmp.6 to i8*
-      %cast.19 = bitcast { double, double }* %x to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.18, i8* align 8 %cast.19, i64 16, i1 false)
-      %cast.20 = bitcast { double, double }* %tmp.7 to i8*
-      %cast.21 = bitcast { double, double }* %y to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.20, i8* align 8 %cast.21, i64 16, i1 false)
+      %cast.13 = bitcast { double, double }* %z to i8*
+      %cast.14 = bitcast { double, double }* %tmp.5 to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.13, i8* align 8 %cast.14, i64 16, i1 false)
+      %cast.15 = bitcast { double, double }* %tmp.6 to i8*
+      %cast.16 = bitcast { double, double }* %x to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.15, i8* align 8 %cast.16, i64 16, i1 false)
+      %cast.17 = bitcast { double, double }* %tmp.7 to i8*
+      %cast.18 = bitcast { double, double }* %y to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.17, i8* align 8 %cast.18, i64 16, i1 false)
       %field.12 = getelementptr inbounds { double, double }, { double, double }* %tmp.6, i32 0, i32 0
       %.real.ld.4 = load double, double* %field.12
       %field.13 = getelementptr inbounds { double, double }, { double, double }* %tmp.7, i32 0, i32 0
@@ -1186,15 +1179,15 @@
       store double %fsub.2, double* %field.20
       %field.21 = getelementptr inbounds { double, double }, { double, double }* %tmp.8, i32 0, i32 1
       store double %fadd.2, double* %field.21
-      %cast.22 = bitcast { double, double }* %z to i8*
-      %cast.23 = bitcast { double, double }* %tmp.8 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.22, i8* align 8 %cast.23, i64 16, i1 false)
-      %cast.24 = bitcast { double, double }* %tmp.9 to i8*
-      %cast.25 = bitcast { double, double }* %x to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.24, i8* align 8 %cast.25, i64 16, i1 false)
-      %cast.26 = bitcast { double, double }* %tmp.10 to i8*
-      %cast.27 = bitcast { double, double }* %y to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.26, i8* align 8 %cast.27, i64 16, i1 false)
+      %cast.19 = bitcast { double, double }* %z to i8*
+      %cast.20 = bitcast { double, double }* %tmp.8 to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.19, i8* align 8 %cast.20, i64 16, i1 false)
+      %cast.21 = bitcast { double, double }* %tmp.9 to i8*
+      %cast.22 = bitcast { double, double }* %x to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.21, i8* align 8 %cast.22, i64 16, i1 false)
+      %cast.23 = bitcast { double, double }* %tmp.10 to i8*
+      %cast.24 = bitcast { double, double }* %y to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.23, i8* align 8 %cast.24, i64 16, i1 false)
       %field.22 = getelementptr inbounds { double, double }, { double, double }* %tmp.9, i32 0, i32 0
       %.real.ld.6 = load double, double* %field.22
       %field.23 = getelementptr inbounds { double, double }, { double, double }* %tmp.10, i32 0, i32 0
@@ -1209,12 +1202,12 @@
       %zext.1 = zext i1 %fcmp.1 to i8
       %iand.0 = and i8 %zext.0, %zext.1
       store i8 %iand.0, i8* %b
-      %cast.28 = bitcast { double, double }* %tmp.11 to i8*
-      %cast.29 = bitcast { double, double }* %x to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.28, i8* align 8 %cast.29, i64 16, i1 false)
-      %cast.30 = bitcast { double, double }* %tmp.12 to i8*
-      %cast.31 = bitcast { double, double }* %y to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.30, i8* align 8 %cast.31, i64 16, i1 false)
+      %cast.25 = bitcast { double, double }* %tmp.11 to i8*
+      %cast.26 = bitcast { double, double }* %x to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.25, i8* align 8 %cast.26, i64 16, i1 false)
+      %cast.27 = bitcast { double, double }* %tmp.12 to i8*
+      %cast.28 = bitcast { double, double }* %y to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.27, i8* align 8 %cast.28, i64 16, i1 false)
       %field.26 = getelementptr inbounds { double, double }, { double, double }* %tmp.11, i32 0, i32 0
       %.real.ld.8 = load double, double* %field.26
       %field.27 = getelementptr inbounds { double, double }, { double, double }* %tmp.12, i32 0, i32 0
@@ -1277,8 +1270,7 @@
     store double 0.000000e+00, double* %a
     store double 0.000000e+00, double* %b
     %cast.0 = bitcast { double, double }* %x to i8*
-    %cast.1 = bitcast { double, double }* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 16, i1 false)
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ({ double, double }* @const.0 to i8*), i64 16, i1 false)
     %field.0 = getelementptr inbounds { double, double }, { double, double }* %x, i32 0, i32 0
     %x.real.ld.0 = load double, double* %field.0
     store double %x.real.ld.0, double* %a
@@ -1480,15 +1472,14 @@
       br label %fallthrough.0
 
     fallthrough.0:                                    ; preds = %else.0, %then.0
-      %cast.4 = bitcast { [16 x i32], i32 }* %a to i8*
-      %cast.5 = bitcast { [16 x i32], i32 }* %tmpv.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.4, i8* align 4 %cast.5, i64 68, i1 false)
+      %cast.3 = bitcast { [16 x i32], i32 }* %a to i8*
+      %cast.4 = bitcast { [16 x i32], i32 }* %tmpv.0 to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.3, i8* align 4 %cast.4, i64 68, i1 false)
       ret void
 
     else.0:                                           ; preds = %entry
       %cast.2 = bitcast { [16 x i32], i32 }* %tmpv.0 to i8*
-      %cast.3 = bitcast { [16 x i32], i32 }* @const.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.2, i8* align 4 %cast.3, i64 68, i1 false)
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.2, i8* align 4 bitcast ({ [16 x i32], i32 }* @const.0 to i8*), i64 68, i1 false)
       br label %fallthrough.0
     }
   )RAW_RESULT";
@@ -1556,15 +1547,14 @@
       br label %fallthrough.0
 
     fallthrough.0:                                    ; preds = %else.0, %then.0
-      %cast.4 = bitcast { [16 x i32], i32 }* %a to i8*
-      %cast.5 = bitcast { [16 x i32], i32 }* %tmpv.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.4, i8* align 4 %cast.5, i64 68, i1 false)
+      %cast.3 = bitcast { [16 x i32], i32 }* %a to i8*
+      %cast.4 = bitcast { [16 x i32], i32 }* %tmpv.0 to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.3, i8* align 4 %cast.4, i64 68, i1 false)
       ret void
 
     else.0:                                           ; preds = %entry
       %cast.2 = bitcast { [16 x i32], i32 }* %tmpv.0 to i8*
-      %cast.3 = bitcast { [16 x i32], i32 }* @const.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.2, i8* align 4 %cast.3, i64 68, i1 false)
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.2, i8* align 4 bitcast ({ [16 x i32], i32 }* @const.0 to i8*), i64 68, i1 false)
       br label %fallthrough.0
     }
   )RAW_RESULT";
@@ -1649,31 +1639,30 @@
   const char *exp = R"RAW_RESULT(
     define i64 @foo(i8* nest %nest.0, i32 %param1, i32 %param2, i64* %param3) #0 {
       entry:
-        %tmp.0 = alloca { i64, i64 }
-        %param1.addr = alloca i32
-        %param2.addr = alloca i32
-        %param3.addr = alloca i64*
-        %x = alloca i64
-        %y = alloca { i64, i64 }
-        store i32 %param1, i32* %param1.addr
-        store i32 %param2, i32* %param2.addr
-        store i64* %param3, i64** %param3.addr
-        store i64 0, i64* %x
-        %cast.0 = bitcast { i64, i64 }* %y to i8*
-        %cast.1 = bitcast { i64, i64 }* @const.0 to i8*
-        call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 16, i1 false)
-        store i64 5, i64* %x
-        %x.ld.0 = load i64, i64* %x
-        %x.ld.1 = load i64, i64* %x
-        %field.0 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %tmp.0, i32 0, i32 0
-        store i64 %x.ld.0, i64* %field.0
-        %field.1 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %tmp.0, i32 0, i32 1
-        store i64 %x.ld.1, i64* %field.1
-        %cast.2 = bitcast { i64, i64 }* %y to i8*
-        %cast.3 = bitcast { i64, i64 }* %tmp.0 to i8*
-        call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.2, i8* align 8 %cast.3, i64 16, i1 false)
-        ret i64 0
-      }
+      %tmp.0 = alloca { i64, i64 }
+      %param1.addr = alloca i32
+      %param2.addr = alloca i32
+      %param3.addr = alloca i64*
+      %x = alloca i64
+      %y = alloca { i64, i64 }
+      store i32 %param1, i32* %param1.addr
+      store i32 %param2, i32* %param2.addr
+      store i64* %param3, i64** %param3.addr
+      store i64 0, i64* %x
+      %cast.0 = bitcast { i64, i64 }* %y to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ({ i64, i64 }* @const.0 to i8*), i64 16, i1 false)
+      store i64 5, i64* %x
+      %x.ld.0 = load i64, i64* %x
+      %x.ld.1 = load i64, i64* %x
+      %field.0 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %tmp.0, i32 0, i32 0
+      store i64 %x.ld.0, i64* %field.0
+      %field.1 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %tmp.0, i32 0, i32 1
+      store i64 %x.ld.1, i64* %field.1
+      %cast.1 = bitcast { i64, i64 }* %y to i8*
+      %cast.2 = bitcast { i64, i64 }* %tmp.0 to i8*
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.1, i8* align 8 %cast.2, i64 16, i1 false)
+      ret i64 0
+    }
   )RAW_RESULT";
 
   bool broken = h.finish(StripDebugInfo);
diff --git a/unittests/BackendCore/BackendPointerExprTests.cpp b/unittests/BackendCore/BackendPointerExprTests.cpp
index 2cc63fd..75f4596 100644
--- a/unittests/BackendCore/BackendPointerExprTests.cpp
+++ b/unittests/BackendCore/BackendPointerExprTests.cpp
@@ -131,16 +131,15 @@
 
   const char *exp = R"RAW_RESULT(
     %cast.0 = bitcast { i64 }* %fdloc1 to i8*
-    %cast.1 = bitcast { i64 }* @const.0 to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 %cast.1, i64 8, i1 false)
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %cast.0, i8* align 8 bitcast ({ i64 }* @const.0 to i8*), i64 8, i1 false)
     store { i64 }* %fdloc1, { i64 }** %fploc1
     store { i64 (i8*, i32, i32, i64*)* }* null, { i64 (i8*, i32, i32, i64*)* }** %fploc2
     %fploc1.ld.0 = load { i64 }*, { i64 }** %fploc1
-    %cast.2 = bitcast { i64 }* %fploc1.ld.0 to { i64 (i8*, i32, i32, i64*)* }*
-    store { i64 (i8*, i32, i32, i64*)* }* %cast.2, { i64 (i8*, i32, i32, i64*)* }** %fploc2
+    %cast.1 = bitcast { i64 }* %fploc1.ld.0 to { i64 (i8*, i32, i32, i64*)* }*
+    store { i64 (i8*, i32, i32, i64*)* }* %cast.1, { i64 (i8*, i32, i32, i64*)* }** %fploc2
     %fploc2.ld.0 = load { i64 (i8*, i32, i32, i64*)* }*, { i64 (i8*, i32, i32, i64*)* }** %fploc2
-    %cast.3 = bitcast { i64 (i8*, i32, i32, i64*)* }* %fploc2.ld.0 to { i64 }*
-    store { i64 }* %cast.3, { i64 }** %fploc1
+    %cast.2 = bitcast { i64 (i8*, i32, i32, i64*)* }* %fploc2.ld.0 to { i64 }*
+    store { i64 }* %cast.2, { i64 }** %fploc1
   )RAW_RESULT";
 
   bool isOK = h.expectBlock(exp);
@@ -229,8 +228,7 @@
     %deref.ld.0 = load i32, i32* null
     store i32 %deref.ld.0, i32* %x
     %cast.2 = bitcast { i32, i32 }* %y to i8*
-    %cast.3 = bitcast { i32, i32 }* null to i8*
-    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.2, i8* align 4 %cast.3, i64 8, i1 false)
+    call addrspace(0) void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.2, i8* align 4 null, i64 8, i1 false)
   )RAW_RESULT";
 
   bool isOK = h.expectBlock(exp);
diff --git a/unittests/BackendCore/BackendVarTests.cpp b/unittests/BackendCore/BackendVarTests.cpp
index ef2fbd4..6fac914 100644
--- a/unittests/BackendCore/BackendVarTests.cpp
+++ b/unittests/BackendCore/BackendVarTests.cpp
@@ -535,7 +535,7 @@
 
   const char *exp = R"RAW_RESULT(
     define void @foo(i8* nest %nest.0) #0 {
-    entry:
+      entry:
       %x = alloca i32
       %y = alloca { i32, i32 }
       %0 = bitcast i32* %x to i8*
@@ -544,8 +544,7 @@
       call void @llvm.lifetime.start.p0i8(i64 8, i8* %1)
       store i32 0, i32* %x
       %cast.0 = bitcast { i32, i32 }* %y to i8*
-      %cast.1 = bitcast { i32, i32 }* @const.0 to i8*
-      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.0, i8* align 4 %cast.1, i64 8, i1 false)
+      call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %cast.0, i8* align 4 bitcast ({ i32, i32 }* @const.0 to i8*), i64 8, i1 false)
       %field.0 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %y, i32 0, i32 1
       %y.field.ld.0 = load i32, i32* %field.0
       store i32 %y.field.ld.0, i32* %x
