Ver código fonte

adapting to newer llvm versions

Nicolas Winkler 4 anos atrás
pai
commit
f071cadf4b
3 arquivos alterados com 7 adições e 4 exclusões
  1. 1 1
      src/CodegenVisitor.cpp
  2. 5 3
      src/sem/CodeGeneration.cpp
  3. 1 0
      tests/syntax/class.qlw

+ 1 - 1
src/CodegenVisitor.cpp

@@ -506,7 +506,7 @@ llvm::Value* StatementVisitor::visit(sem::AssignmentStatement& assignment,
     if (!assignment.value->type->isNativeType() && !assignment.value->type->isReferenceType()) {
         const llvm::DataLayout& layout = fg.builder.GetInsertBlock()->getModule()->getDataLayout();
 #if LLVM_VERSION_MAJOR >= 7
-        return fg.builder.CreateMemCpy(target, 1, val, 1, layout.getTypeAllocSize(val->getType()->getPointerElementType()), false);
+        return fg.builder.CreateMemCpy(target, llvm::MaybeAlign(), val, llvm::MaybeAlign(), layout.getTypeAllocSize(val->getType()->getPointerElementType()), false);
 #else
         return fg.builder.CreateMemCpy(target, val, layout.getTypeAllocSize(val->getType()->getPointerElementType()), 1);
 #endif

+ 5 - 3
src/sem/CodeGeneration.cpp

@@ -15,7 +15,9 @@
 #include <llvm/Target/TargetMachine.h>
 #include <llvm/Support/TargetRegistry.h>
 #include <llvm/Support/TargetSelect.h>
+#include <llvm/Support/Host.h>
 #include <llvm/Support/FileSystem.h>
+#include <llvm/Support/CodeGen.h>
 #include <llvm/Support/raw_os_ostream.h>
 
 
@@ -45,7 +47,7 @@ std::unique_ptr<llvm::Module> generateModule(sem::GlobalScope& semantic)
         printf("creating llvm module\n"); 
 #endif 
 
-    std::unique_ptr<Module> module = llvm::make_unique<Module>("qlow_module", context);
+    std::unique_ptr<Module> module = std::make_unique<Module>("qlow_module", context);
 
     // create llvm structs
     // TODO implement detection of circles
@@ -260,7 +262,7 @@ void generateObjectFile(const std::string& filename, std::unique_ptr<llvm::Modul
     builder.OptLevel = optLevel;
     builder.SizeLevel = sizeLevel;
     if (optLevel >= 2) {
-        builder.DisableUnitAtATime = false;
+        //builder.DisableUnitAtATime = false;
         builder.DisableUnrollLoops = false;
         builder.LoopVectorize = true;
         builder.SLPVectorize = true;
@@ -299,7 +301,7 @@ void generateObjectFile(const std::string& filename, std::unique_ptr<llvm::Modul
             nullptr,
 #endif
 //        nullptr,
-        llvm::TargetMachine::CGFT_ObjectFile);
+        llvm::CGFT_ObjectFile);
 
     pm.run(*module);
     dest.flush();

+ 1 - 0
tests/syntax/class.qlw

@@ -11,5 +11,6 @@ end
 main do
     a: A
     a := new A
+    print(a)
 end