Explorar o código

adjusted memcpy

Nicolas Winkler %!s(int64=6) %!d(string=hai) anos
pai
achega
7dcc9e3838
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  1. 3 1
      src/CodegenVisitor.cpp

+ 3 - 1
src/CodegenVisitor.cpp

@@ -503,7 +503,9 @@ llvm::Value* StatementVisitor::visit(sem::AssignmentStatement& assignment,
     
     if (val->getType()->isPointerTy() && val->getType()->getPointerElementType()->isStructTy()) {
         const llvm::DataLayout& layout = fg.builder.GetInsertBlock()->getModule()->getDataLayout();
-        return fg.builder.CreateMemCpy(target, val, layout.getTypeAllocSize(val->getType()->getPointerElementType()), 1);
+        return fg.builder.CreateMemCpy(target, 1, val, 1, layout.getTypeAllocSize(val->getType()->getPointerElementType()), false);
+        //llvm::Intrinsic::memcpy_element_unordered_atomic
+        //return fg.builder.CreateMemMove(target, val, layout.getTypeAllocSize(val->getType()->getPointerElementType()), 1);
     }
     else {
         return fg.builder.CreateStore(val, target);