Index: bindings/go/llvm/DIBuilderBindings.cpp =================================================================== --- bindings/go/llvm/DIBuilderBindings.cpp +++ bindings/go/llvm/DIBuilderBindings.cpp @@ -128,8 +128,7 @@ LLVMMetadataRef ParameterTypes) { DIBuilder *D = unwrap(Dref); return wrap( - D->createSubroutineType(File ? unwrap(File) : nullptr, - DITypeRefArray(unwrap(ParameterTypes)))); + D->createSubroutineType(DITypeRefArray(unwrap(ParameterTypes)))); } LLVMMetadataRef LLVMDIBuilderCreateStructType( Index: include/llvm/IR/DIBuilder.h =================================================================== --- include/llvm/IR/DIBuilder.h +++ include/llvm/IR/DIBuilder.h @@ -374,7 +374,7 @@ uint64_t SizeInBits, uint64_t AlignInBits, DINodeArray Elements, DIType *UnderlyingType, StringRef UniqueIdentifier = ""); - /// Create subroutine type. + /// Create subroutine type. This method is DEPRECATED and will be removed. /// \param File File in which this subroutine is defined. /// \param ParameterTypes An array of subroutine parameter types. This /// includes return type at 0th index. @@ -384,6 +384,14 @@ DITypeRefArray ParameterTypes, unsigned Flags = 0); + /// Create subroutine type. + /// \param ParameterTypes An array of subroutine parameter types. This + /// includes return type at 0th index. + /// \param Flags E.g.: LValueReference. + /// These flags are used to emit dwarf attributes. + DISubroutineType *createSubroutineType(DITypeRefArray ParameterTypes, + unsigned Flags = 0); + /// Create an external type reference. /// \param Tag Dwarf TAG. /// \param File File in which the type is defined. @@ -702,7 +710,7 @@ /// has a self-reference -- \a DIBuilder needs to track the array to /// resolve cycles. void replaceArrays(DICompositeType *&T, DINodeArray Elements, - DINodeArray TParems = DINodeArray()); + DINodeArray TParams = DINodeArray()); /// Replace a temporary node. /// Index: lib/IR/DIBuilder.cpp =================================================================== --- lib/IR/DIBuilder.cpp +++ lib/IR/DIBuilder.cpp @@ -432,6 +432,11 @@ DISubroutineType *DIBuilder::createSubroutineType(DIFile *File, DITypeRefArray ParameterTypes, unsigned Flags) { + return this->createSubroutineType(ParameterTypes, Flags); +} + +DISubroutineType *DIBuilder::createSubroutineType(DITypeRefArray ParameterTypes, + unsigned Flags) { return DISubroutineType::get(VMContext, Flags, ParameterTypes); } Index: unittests/IR/IRBuilderTest.cpp =================================================================== --- unittests/IR/IRBuilderTest.cpp +++ unittests/IR/IRBuilderTest.cpp @@ -312,7 +312,7 @@ auto File = DIB.createFile("F.CBL", "/"); auto CU = DIB.createCompileUnit(dwarf::DW_LANG_Cobol74, "F.CBL", "/", "llvm-cobol74", true, "", 0); - auto Type = DIB.createSubroutineType(File, DIB.getOrCreateTypeArray(None)); + auto Type = DIB.createSubroutineType(DIB.getOrCreateTypeArray(None)); DIB.createFunction(CU, "foo", "", File, 1, Type, false, true, 1, 0, true, F); AllocaInst *I = Builder.CreateAlloca(Builder.getInt8Ty()); auto BarSP = DIB.createFunction(CU, "bar", "", File, 1, Type, false, true, 1, @@ -362,7 +362,7 @@ auto File = DIB.createFile("tmp.cpp", "/"); auto CU = DIB.createCompileUnit(dwarf::DW_LANG_C_plus_plus_11, "tmp.cpp", "/", "", true, "", 0); - auto SPType = DIB.createSubroutineType(File, DIB.getOrCreateTypeArray(None)); + auto SPType = DIB.createSubroutineType(DIB.getOrCreateTypeArray(None)); auto SP = DIB.createFunction(CU, "foo", "foo", File, 1, SPType, false, true, 1); DebugLoc DL1 = DILocation::get(Ctx, 2, 0, SP); Index: unittests/Transforms/Utils/Cloning.cpp =================================================================== --- unittests/Transforms/Utils/Cloning.cpp +++ unittests/Transforms/Utils/Cloning.cpp @@ -231,7 +231,7 @@ auto *File = DBuilder.createFile("filename.c", "/file/dir/"); DITypeRefArray ParamTypes = DBuilder.getOrCreateTypeArray(None); DISubroutineType *FuncType = - DBuilder.createSubroutineType(File, ParamTypes); + DBuilder.createSubroutineType(ParamTypes); auto *CU = DBuilder.createCompileUnit(dwarf::DW_LANG_C99, "filename.c", "/file/dir", "CloneFunc", false, "", 0);