@@ -49,7 +49,8 @@ llvm::Value *AbiEmitter::emitEncodeTuple(
4949 std::tie (Value, IsStateVariable) = Values[I];
5050 if (Value->getType ()->isDynamic ()) {
5151 DynamicPos.emplace_back (Int8Ptr, I);
52- Int8Ptr = Builder.CreateInBoundsGEP (Int8Ptr, {Builder.getIntN (32 , 32 )});
52+ Int8Ptr = Builder.CreateInBoundsGEP (Builder.getInt8Ty (), Int8Ptr,
53+ {Builder.getIntN (32 , 32 )});
5354 } else {
5455 Int8Ptr = emitEncode (Int8Ptr, Value, IsStateVariable);
5556 }
@@ -96,7 +97,7 @@ AbiEmitter::getDecode(llvm::Value *Int8Ptr, const Type *Ty) {
9697 Builder.getIntN (32 , 32 )),
9798 Builder.getIntN (32 , 32 ));
9899 llvm::Value *NextInt8Ptr =
99- Builder.CreateInBoundsGEP (Int8Ptr, {EncodeLength});
100+ Builder.CreateInBoundsGEP (Builder. getInt8Ty (), Int8Ptr, {EncodeLength});
100101 return {ExprValue::getRValue (Ty, Val), NextInt8Ptr};
101102 }
102103 case Type::Category::Array: {
@@ -133,19 +134,20 @@ AbiEmitter::getDecode(llvm::Value *Int8Ptr, const Type *Ty) {
133134 case Type::Category::FixedBytes: {
134135 llvm::Value *ValPtr = Builder.CreatePointerCast (
135136 Int8Ptr, llvm::PointerType::getUnqual (ValueTy));
136- llvm::Value *Val = Builder.CreateLoad (ValPtr, ValueTy );
137- llvm::Value *NextInt8Ptr =
138- Builder.CreateInBoundsGEP ( Int8Ptr, {Builder.getInt32 (32 )});
137+ llvm::Value *Val = Builder.CreateLoad (ValueTy, ValPtr );
138+ llvm::Value *NextInt8Ptr = Builder. CreateInBoundsGEP (
139+ Builder.getInt8Ty (), Int8Ptr, {Builder.getInt32 (32 )});
139140 return {ExprValue::getRValue (Ty, Val), NextInt8Ptr};
140141 }
141142 default : {
142143 llvm::Value *ValPtr = Builder.CreatePointerCast (
143144 Int8Ptr, llvm::PointerType::getUnqual (CGM.Int256Ty ));
144- llvm::Value *Val = Builder.CreateLoad (ValPtr, CGM.Int256Ty );
145+ llvm::Value *Val = Builder.CreateLoad (CGM.Int256Ty , ValPtr );
145146 Val = CGM.getEndianlessValue (Val);
146147 Val = Builder.CreateZExtOrTrunc (Val, ValueTy);
147148 llvm::Value *NextInt8Ptr = Builder.CreateInBoundsGEP (
148- Int8Ptr, {Builder.getInt32 (ValueTy->getIntegerBitWidth () / 8 )});
149+ Builder.getInt8Ty (), Int8Ptr,
150+ {Builder.getInt32 (ValueTy->getIntegerBitWidth () / 8 )});
149151 return {ExprValue::getRValue (Ty, Val), NextInt8Ptr};
150152 }
151153 }
@@ -162,7 +164,8 @@ AbiEmitter::getDecodeTuple(llvm::Value *Int8Ptr, const TupleType *Ty) {
162164 ExprValuePtr PosExprValue;
163165 std::tie (PosExprValue, NextInt8Ptr) = getDecode (NextInt8Ptr, &Int32Ty);
164166 llvm::Value *Pos = PosExprValue->load (Builder, CGM);
165- DynamicPos.emplace_back (Builder.CreateInBoundsGEP (Int8Ptr, {Pos}), I);
167+ DynamicPos.emplace_back (
168+ Builder.CreateInBoundsGEP (Builder.getInt8Ty (), Int8Ptr, {Pos}), I);
166169 } else {
167170 ExprValuePtr ValExprValue;
168171 std::tie (ValExprValue, NextInt8Ptr) =
@@ -463,8 +466,9 @@ llvm::Value *AbiEmitter::emitEncodePacked(llvm::Value *Int8Ptr,
463466 const auto *FixedBytesTy = dynamic_cast <const FixedBytesType *>(Ty);
464467 unsigned PadRightLength = 32 - FixedBytesTy->getBitNum () / 8 ;
465468 if (PadRightLength % 32 )
466- Int8Ptr = Builder.CreateInBoundsGEP (
467- Int8Ptr, {Builder.getIntN (32 , PadRightLength)});
469+ Int8Ptr =
470+ Builder.CreateInBoundsGEP (Builder.getInt8Ty (), Int8Ptr,
471+ {Builder.getIntN (32 , PadRightLength)});
468472 }
469473 return Int8Ptr;
470474 }
@@ -502,7 +506,8 @@ llvm::Value *AbiEmitter::emitEncode(llvm::Value *Int8Ptr,
502506 Int8Ptr = copyToInt8Ptr (
503507 Int8Ptr, Builder.CreateZExtOrTrunc (Length, CGF.Int256Ty ), true );
504508 Int8Ptr = copyToInt8Ptr (Int8Ptr, Bytes, true );
505- return Builder.CreateInBoundsGEP (Int8Ptr, {PadRightLength});
509+ return Builder.CreateInBoundsGEP (Builder.getInt8Ty (), Int8Ptr,
510+ {PadRightLength});
506511 }
507512 case Type::Category::Array: {
508513 llvm::Function *ThisFunc = Builder.GetInsertBlock ()->getParent ();
@@ -530,7 +535,8 @@ llvm::Value *AbiEmitter::emitEncode(llvm::Value *Int8Ptr,
530535 if (ArrTy->getElementType ()->isDynamic ()) {
531536 Head = Int8Ptr;
532537 Tail = Builder.CreateInBoundsGEP (
533- Head, {Builder.CreateMul (ArrayLength, ABIStaticSizeValue)});
538+ Builder.getInt8Ty (), Head,
539+ {Builder.CreateMul (ArrayLength, ABIStaticSizeValue)});
534540 } else {
535541 Tail = Int8Ptr;
536542 }
@@ -606,7 +612,7 @@ llvm::Value *AbiEmitter::emitEncode(llvm::Value *Int8Ptr,
606612 unsigned PadRightLength = 32 - FixedBytesTy->getBitNum () / 8 ;
607613 if (PadRightLength % 32 )
608614 Int8Ptr = Builder.CreateInBoundsGEP (
609- Int8Ptr, {Builder.getIntN (32 , PadRightLength)});
615+ Builder. getInt8Ty (), Int8Ptr, {Builder.getIntN (32 , PadRightLength)});
610616 return Int8Ptr;
611617 }
612618 default : {
@@ -627,15 +633,16 @@ llvm::Value *AbiEmitter::copyToInt8Ptr(llvm::Value *Int8Ptr, llvm::Value *Value,
627633 Builder.CreateCall (Memcpy, {Builder.CreateBitCast (Int8Ptr, CGM.Int8PtrTy ),
628634 SrcBytes, Length});
629635 if (IncreasePtr)
630- return Builder.CreateInBoundsGEP (Int8Ptr, {Length});
636+ return Builder.CreateInBoundsGEP (Builder. getInt8Ty (), Int8Ptr, {Length});
631637 } else {
632638 Value = CGM.getEndianlessValue (Value);
633639 llvm::Value *CPtr =
634640 Builder.CreatePointerCast (Int8Ptr, llvm::PointerType::getUnqual (Ty));
635641 Builder.CreateStore (Value, CPtr);
636642 if (IncreasePtr)
637643 return Builder.CreateInBoundsGEP (
638- Int8Ptr, {Builder.getInt32 (Ty->getIntegerBitWidth () / 8 )});
644+ Builder.getInt8Ty (), Int8Ptr,
645+ {Builder.getInt32 (Ty->getIntegerBitWidth () / 8 )});
639646 }
640647 return nullptr ;
641648}
0 commit comments