@@ -490,26 +490,20 @@ LLVM_Util::LLVM_Util(const PerThreadInfo& per_thread_info, int debuglevel,
490490 else
491491 m_llvm_type_addrint = (llvm::Type*)llvm::Type::getInt64Ty (
492492 *m_llvm_context);
493- m_llvm_type_int_ptr = (llvm::PointerType*)llvm::Type::getInt32PtrTy (
494- *m_llvm_context);
495- m_llvm_type_int8_ptr = (llvm::PointerType*)llvm::Type::getInt8PtrTy (
496- *m_llvm_context);
497- m_llvm_type_int64_ptr = (llvm::PointerType*)llvm::Type::getInt64PtrTy (
498- *m_llvm_context);
499493 m_llvm_type_bool = (llvm::Type*)llvm::Type::getInt1Ty (*m_llvm_context);
500- m_llvm_type_bool_ptr = (llvm::PointerType*)llvm::Type::getInt1PtrTy (
501- *m_llvm_context);
502494 m_llvm_type_char = (llvm::Type*)llvm::Type::getInt8Ty (*m_llvm_context);
503495 m_llvm_type_longlong = (llvm::Type*)llvm::Type::getInt64Ty (*m_llvm_context);
504496 m_llvm_type_void = (llvm::Type*)llvm::Type::getVoidTy (*m_llvm_context);
505- m_llvm_type_char_ptr = (llvm::PointerType*)llvm::Type::getInt8PtrTy (
506- *m_llvm_context);
507- m_llvm_type_float_ptr = (llvm::PointerType*)llvm::Type::getFloatPtrTy (
508- *m_llvm_context);
509- m_llvm_type_longlong_ptr = (llvm::PointerType*)llvm::Type::getInt64PtrTy (
510- *m_llvm_context);
511- m_llvm_type_void_ptr = m_llvm_type_char_ptr;
512- m_llvm_type_double_ptr = llvm::Type::getDoublePtrTy (*m_llvm_context);
497+
498+ m_llvm_type_int_ptr = llvm::PointerType::get (m_llvm_type_int, 0 );
499+ m_llvm_type_int8_ptr = llvm::PointerType::get (m_llvm_type_int8, 0 );
500+ m_llvm_type_int64_ptr = llvm::PointerType::get (m_llvm_type_int64, 0 );
501+ m_llvm_type_bool_ptr = llvm::PointerType::get (m_llvm_type_bool, 0 );
502+ m_llvm_type_char_ptr = llvm::PointerType::get (m_llvm_type_char, 0 );
503+ m_llvm_type_void_ptr = m_llvm_type_char_ptr;
504+ m_llvm_type_float_ptr = llvm::PointerType::get (m_llvm_type_float, 0 );
505+ m_llvm_type_longlong_ptr = llvm::PointerType::get (m_llvm_type_int64, 0 );
506+ m_llvm_type_double_ptr = llvm::PointerType::get (m_llvm_type_double, 0 );
513507
514508 // A triple is a struct composed of 3 floats
515509 std::vector<llvm::Type*> triplefields (3 , m_llvm_type_float);
563557LLVM_Util::ustring_rep (UstringRep rep)
564558{
565559 m_ustring_rep = rep;
566- m_llvm_type_ustring = llvm::Type::getInt8PtrTy (*m_llvm_context) ;
560+ m_llvm_type_ustring = m_llvm_type_int8_ptr ;
567561 // ^^ When m_ustring_rep != UstringRep::charptr, we'd ideally want to make
568562 // it a uint directly, but that is wreaking havoc with function
569563 // signatures, so continue to disguise it as a pointer.
@@ -1514,8 +1508,14 @@ LLVM_Util::make_jit_execengine(std::string* err, TargetISA requestedISA,
15141508 std::unique_ptr<llvm::RTDyldMemoryManager>(
15151509 new MemoryManager (m_llvm_jitmm)));
15161510
1511+ #if OSL_LLVM_VERSION >= 180
1512+ engine_builder.setOptLevel (jit_aggressive ()
1513+ ? llvm::CodeGenOptLevel::Aggressive
1514+ : llvm::CodeGenOptLevel::Default);
1515+ #else
15171516 engine_builder.setOptLevel (jit_aggressive () ? llvm::CodeGenOpt::Aggressive
15181517 : llvm::CodeGenOpt::Default);
1518+ #endif
15191519
15201520 llvm::TargetOptions options;
15211521 // Enables FMA's in IR generation.
@@ -1817,7 +1817,12 @@ LLVM_Util::nvptx_target_machine()
18171817 m_nvptx_target_machine = llvm_target->createTargetMachine (
18181818 ModuleTriple.str (), CUDA_TARGET_ARCH, " +ptx50" , options,
18191819 llvm::Reloc::Static, llvm::CodeModel::Small,
1820- llvm::CodeGenOpt::Default);
1820+ #if OSL_LLVM_VERSION >= 180
1821+ llvm::CodeGenOptLevel::Default
1822+ #else
1823+ llvm::CodeGenOpt::Default
1824+ #endif
1825+ );
18211826
18221827 OSL_ASSERT (m_nvptx_target_machine
18231828 && " Unable to create TargetMachine for NVPTX" );
@@ -2957,7 +2962,12 @@ LLVM_Util::prune_and_internalize_module(
29572962 || llvm::cast<llvm::GlobalValue>(val)
29582963 ->hasLocalLinkage ()) {
29592964 if (!debug ()
2960- || !val->getName ().startswith (" llvm.dbg" )) {
2965+ #if OSL_LLVM_VERSION >= 180
2966+ || !val->getName ().starts_with (" llvm.dbg" )
2967+ #else
2968+ || !val->getName ().startswith (" llvm.dbg" )
2969+ #endif
2970+ ) {
29612971 __OSL_PRUNE_ONLY (
29622972 std::cout
29632973 << " remove symbol table for value: "
@@ -6486,7 +6496,11 @@ LLVM_Util::ptx_compile_group(llvm::Module*, const std::string& name,
64866496 llvm::raw_svector_ostream assembly_stream (assembly);
64876497
64886498 // TODO: Make sure rounding modes, etc., are set correctly
6489- # if OSL_LLVM_VERSION >= 100
6499+ # if OSL_LLVM_VERSION >= 180
6500+ target_machine->addPassesToEmitFile (mpm, assembly_stream,
6501+ nullptr , // FIXME: Correct?
6502+ llvm::CodeGenFileType::AssemblyFile);
6503+ # elif OSL_LLVM_VERSION >= 100
64906504 target_machine->addPassesToEmitFile (mpm, assembly_stream,
64916505 nullptr , // FIXME: Correct?
64926506 llvm::CGFT_AssemblyFile);
0 commit comments