@@ -613,38 +613,30 @@ class IRBuilderBase {
613613 // / and noalias tags.
614614 CallInst *CreateMemSet (Value *Ptr, Value *Val, uint64_t Size,
615615 MaybeAlign Align, bool isVolatile = false ,
616- MDNode *TBAATag = nullptr , MDNode *ScopeTag = nullptr ,
617- MDNode *NoAliasTag = nullptr ) {
618- return CreateMemSet (Ptr, Val, getInt64 (Size), Align, isVolatile,
619- TBAATag, ScopeTag, NoAliasTag);
616+ const AAMDNodes &AAInfo = AAMDNodes()) {
617+ return CreateMemSet (Ptr, Val, getInt64 (Size), Align, isVolatile, AAInfo);
620618 }
621619
622620 CallInst *CreateMemSet (Value *Ptr, Value *Val, Value *Size, MaybeAlign Align,
623- bool isVolatile = false , MDNode *TBAATag = nullptr ,
624- MDNode *ScopeTag = nullptr ,
625- MDNode *NoAliasTag = nullptr );
621+ bool isVolatile = false ,
622+ const AAMDNodes &AAInfo = AAMDNodes());
626623
627624 CallInst *CreateMemSetInline (Value *Dst, MaybeAlign DstAlign, Value *Val,
628625 Value *Size, bool IsVolatile = false ,
629- MDNode *TBAATag = nullptr ,
630- MDNode *ScopeTag = nullptr ,
631- MDNode *NoAliasTag = nullptr );
626+ const AAMDNodes &AAInfo = AAMDNodes());
632627
633628 // / Create and insert an element unordered-atomic memset of the region of
634629 // / memory starting at the given pointer to the given value.
635630 // /
636631 // / If the pointer isn't an i8*, it will be converted. If a TBAA tag is
637632 // / specified, it will be added to the instruction. Likewise with alias.scope
638633 // / and noalias tags.
639- CallInst *CreateElementUnorderedAtomicMemSet (Value *Ptr, Value *Val,
640- uint64_t Size, Align Alignment,
641- uint32_t ElementSize,
642- MDNode *TBAATag = nullptr ,
643- MDNode *ScopeTag = nullptr ,
644- MDNode *NoAliasTag = nullptr ) {
645- return CreateElementUnorderedAtomicMemSet (Ptr, Val, getInt64 (Size),
646- Align (Alignment), ElementSize,
647- TBAATag, ScopeTag, NoAliasTag);
634+ CallInst *
635+ CreateElementUnorderedAtomicMemSet (Value *Ptr, Value *Val, uint64_t Size,
636+ Align Alignment, uint32_t ElementSize,
637+ const AAMDNodes &AAInfo = AAMDNodes()) {
638+ return CreateElementUnorderedAtomicMemSet (
639+ Ptr, Val, getInt64 (Size), Align (Alignment), ElementSize, AAInfo);
648640 }
649641
650642 CallInst *CreateMalloc (Type *IntPtrTy, Type *AllocTy, Value *AllocSize,
@@ -662,12 +654,10 @@ class IRBuilderBase {
662654 // / Generate the IR for a call to the builtin free function.
663655 CallInst *CreateFree (Value *Source, ArrayRef<OperandBundleDef> Bundles = {});
664656
665- CallInst *CreateElementUnorderedAtomicMemSet (Value *Ptr, Value *Val,
666- Value *Size, Align Alignment,
667- uint32_t ElementSize,
668- MDNode *TBAATag = nullptr ,
669- MDNode *ScopeTag = nullptr ,
670- MDNode *NoAliasTag = nullptr );
657+ CallInst *
658+ CreateElementUnorderedAtomicMemSet (Value *Ptr, Value *Val, Value *Size,
659+ Align Alignment, uint32_t ElementSize,
660+ const AAMDNodes &AAInfo = AAMDNodes());
671661
672662 // / Create and insert a memcpy between the specified pointers.
673663 // /
@@ -676,40 +666,32 @@ class IRBuilderBase {
676666 // / and noalias tags.
677667 CallInst *CreateMemCpy (Value *Dst, MaybeAlign DstAlign, Value *Src,
678668 MaybeAlign SrcAlign, uint64_t Size,
679- bool isVolatile = false , MDNode *TBAATag = nullptr ,
680- MDNode *TBAAStructTag = nullptr ,
681- MDNode *ScopeTag = nullptr ,
682- MDNode *NoAliasTag = nullptr ) {
669+ bool isVolatile = false ,
670+ const AAMDNodes &AAInfo = AAMDNodes()) {
683671 return CreateMemCpy (Dst, DstAlign, Src, SrcAlign, getInt64 (Size),
684- isVolatile, TBAATag, TBAAStructTag, ScopeTag,
685- NoAliasTag);
672+ isVolatile, AAInfo);
686673 }
687674
688- CallInst *CreateMemTransferInst (
689- Intrinsic::ID IntrID, Value *Dst, MaybeAlign DstAlign, Value *Src,
690- MaybeAlign SrcAlign, Value *Size, bool isVolatile = false ,
691- MDNode *TBAATag = nullptr , MDNode *TBAAStructTag = nullptr ,
692- MDNode *ScopeTag = nullptr , MDNode *NoAliasTag = nullptr );
675+ CallInst *CreateMemTransferInst (Intrinsic::ID IntrID, Value *Dst,
676+ MaybeAlign DstAlign, Value *Src,
677+ MaybeAlign SrcAlign, Value *Size,
678+ bool isVolatile = false ,
679+ const AAMDNodes &AAInfo = AAMDNodes() );
693680
694681 CallInst *CreateMemCpy (Value *Dst, MaybeAlign DstAlign, Value *Src,
695682 MaybeAlign SrcAlign, Value *Size,
696- bool isVolatile = false , MDNode *TBAATag = nullptr ,
697- MDNode *TBAAStructTag = nullptr ,
698- MDNode *ScopeTag = nullptr ,
699- MDNode *NoAliasTag = nullptr ) {
683+ bool isVolatile = false ,
684+ const AAMDNodes &AAInfo = AAMDNodes()) {
700685 return CreateMemTransferInst (Intrinsic::memcpy, Dst, DstAlign, Src,
701- SrcAlign, Size, isVolatile, TBAATag,
702- TBAAStructTag, ScopeTag, NoAliasTag);
686+ SrcAlign, Size, isVolatile, AAInfo);
703687 }
704688
705- CallInst *
706- CreateMemCpyInline (Value *Dst, MaybeAlign DstAlign, Value *Src,
707- MaybeAlign SrcAlign, Value *Size, bool isVolatile = false ,
708- MDNode *TBAATag = nullptr , MDNode *TBAAStructTag = nullptr ,
709- MDNode *ScopeTag = nullptr , MDNode *NoAliasTag = nullptr ) {
689+ CallInst *CreateMemCpyInline (Value *Dst, MaybeAlign DstAlign, Value *Src,
690+ MaybeAlign SrcAlign, Value *Size,
691+ bool isVolatile = false ,
692+ const AAMDNodes &AAInfo = AAMDNodes()) {
710693 return CreateMemTransferInst (Intrinsic::memcpy_inline, Dst, DstAlign, Src,
711- SrcAlign, Size, isVolatile, TBAATag,
712- TBAAStructTag, ScopeTag, NoAliasTag);
694+ SrcAlign, Size, isVolatile, AAInfo);
713695 }
714696
715697 // / Create and insert an element unordered-atomic memcpy between the
@@ -722,28 +704,22 @@ class IRBuilderBase {
722704 // / and noalias tags.
723705 CallInst *CreateElementUnorderedAtomicMemCpy (
724706 Value *Dst, Align DstAlign, Value *Src, Align SrcAlign, Value *Size,
725- uint32_t ElementSize, MDNode *TBAATag = nullptr ,
726- MDNode *TBAAStructTag = nullptr , MDNode *ScopeTag = nullptr ,
727- MDNode *NoAliasTag = nullptr );
707+ uint32_t ElementSize, const AAMDNodes &AAInfo = AAMDNodes());
728708
729709 CallInst *CreateMemMove (Value *Dst, MaybeAlign DstAlign, Value *Src,
730710 MaybeAlign SrcAlign, uint64_t Size,
731- bool isVolatile = false , MDNode *TBAATag = nullptr ,
732- MDNode *ScopeTag = nullptr ,
733- MDNode *NoAliasTag = nullptr ) {
711+ bool isVolatile = false ,
712+ const AAMDNodes &AAInfo = AAMDNodes()) {
734713 return CreateMemMove (Dst, DstAlign, Src, SrcAlign, getInt64 (Size),
735- isVolatile, TBAATag, ScopeTag, NoAliasTag );
714+ isVolatile, AAInfo );
736715 }
737716
738717 CallInst *CreateMemMove (Value *Dst, MaybeAlign DstAlign, Value *Src,
739718 MaybeAlign SrcAlign, Value *Size,
740- bool isVolatile = false , MDNode *TBAATag = nullptr ,
741- MDNode *ScopeTag = nullptr ,
742- MDNode *NoAliasTag = nullptr ) {
719+ bool isVolatile = false ,
720+ const AAMDNodes &AAInfo = AAMDNodes()) {
743721 return CreateMemTransferInst (Intrinsic::memmove, Dst, DstAlign, Src,
744- SrcAlign, Size, isVolatile, TBAATag,
745- /* TBAAStructTag=*/ nullptr , ScopeTag,
746- NoAliasTag);
722+ SrcAlign, Size, isVolatile, AAInfo);
747723 }
748724
749725 // / \brief Create and insert an element unordered-atomic memmove between the
@@ -757,9 +733,7 @@ class IRBuilderBase {
757733 // / and noalias tags.
758734 CallInst *CreateElementUnorderedAtomicMemMove (
759735 Value *Dst, Align DstAlign, Value *Src, Align SrcAlign, Value *Size,
760- uint32_t ElementSize, MDNode *TBAATag = nullptr ,
761- MDNode *TBAAStructTag = nullptr , MDNode *ScopeTag = nullptr ,
762- MDNode *NoAliasTag = nullptr );
736+ uint32_t ElementSize, const AAMDNodes &AAInfo = AAMDNodes());
763737
764738private:
765739 CallInst *getReductionIntrinsic (Intrinsic::ID ID, Value *Src);
0 commit comments