Skip to content

Commit 1f1b6b3

Browse files
committed
[Misc] Remove deprecated CreateLoad(Val)
1 parent b1ca5cf commit 1f1b6b3

File tree

5 files changed

+40
-29
lines changed

5 files changed

+40
-29
lines changed

lib/CodeGen/ABICodec.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,15 @@ AbiEmitter::getDecode(llvm::Value *Int8Ptr, const Type *Ty) {
133133
case Type::Category::FixedBytes: {
134134
llvm::Value *ValPtr = Builder.CreatePointerCast(
135135
Int8Ptr, llvm::PointerType::getUnqual(ValueTy));
136-
llvm::Value *Val = Builder.CreateLoad(ValPtr, ValueTy);
136+
llvm::Value *Val = Builder.CreateLoad(ValueTy, ValPtr);
137137
llvm::Value *NextInt8Ptr =
138138
Builder.CreateInBoundsGEP(Int8Ptr, {Builder.getInt32(32)});
139139
return {ExprValue::getRValue(Ty, Val), NextInt8Ptr};
140140
}
141141
default: {
142142
llvm::Value *ValPtr = Builder.CreatePointerCast(
143143
Int8Ptr, llvm::PointerType::getUnqual(CGM.Int256Ty));
144-
llvm::Value *Val = Builder.CreateLoad(ValPtr, CGM.Int256Ty);
144+
llvm::Value *Val = Builder.CreateLoad(CGM.Int256Ty, ValPtr);
145145
Val = CGM.getEndianlessValue(Val);
146146
Val = Builder.CreateZExtOrTrunc(Val, ValueTy);
147147
llvm::Value *NextInt8Ptr = Builder.CreateInBoundsGEP(

lib/CodeGen/CGExpr.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <llvm/IR/Type.h>
1111
#include <llvm/IR/Value.h>
1212
#include <llvm/Support/raw_ostream.h>
13+
1314
namespace soll::CodeGen {
1415

1516
ExprValuePtr CodeGenFunction::emitExpr(const Expr *E) {
@@ -637,7 +638,8 @@ llvm::Value *CodeGenFunction::emitAsmCallMLoad(const CallExpr *CE) {
637638
llvm::Value *CPtr =
638639
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Pos}, "heap.cptr");
639640
llvm::Value *Ptr = Builder.CreateBitCast(CPtr, Int256PtrTy, "heap.ptr");
640-
llvm::Value *Value = CGM.getEndianlessValue(Builder.CreateLoad(Ptr));
641+
llvm::Value *Value =
642+
CGM.getEndianlessValue(Builder.CreateLoad(CGM.Int256Ty, Ptr));
641643
CGM.emitUpdateMemorySize(Pos, Builder.getIntN(256, 32));
642644
return Value;
643645
}
@@ -665,7 +667,7 @@ void CodeGenFunction::emitAsmCallMStore8(const CallExpr *CE) {
665667
}
666668

667669
llvm::Value *CodeGenFunction::emitAsmCallMSize(const CallExpr *CE) {
668-
return Builder.CreateLoad(CGM.getMemorySize());
670+
return Builder.CreateLoad(CGM.Int256Ty, CGM.getMemorySize());
669671
}
670672

671673
llvm::Value *CodeGenFunction::emitAsmCallSLoad(const CallExpr *CE) {
@@ -960,7 +962,7 @@ llvm::Value *CodeGenFunction::emitAsmCreate(const CallExpr *CE) {
960962
llvm::Value *AddressPtr = Builder.CreateAlloca(AddressTy);
961963

962964
CGM.emitCreate(ValuePtr, Ptr, Length, AddressPtr);
963-
return Builder.CreateLoad(AddressPtr, AddressTy);
965+
return Builder.CreateLoad(AddressTy, AddressPtr);
964966
}
965967

966968
llvm::Value *CodeGenFunction::emitAsmCreate2(const CallExpr *CE) {
@@ -977,7 +979,7 @@ llvm::Value *CodeGenFunction::emitAsmCreate2(const CallExpr *CE) {
977979
llvm::Value *AddressPtr = Builder.CreateAlloca(AddressTy);
978980

979981
CGM.emitCreate2(ValuePtr, Ptr, Length, Salt, AddressPtr);
980-
return Builder.CreateLoad(AddressPtr, AddressTy);
982+
return Builder.CreateLoad(AddressTy, AddressPtr);
981983
}
982984

983985
llvm::Value *CodeGenFunction::emitAsmByte(const CallExpr *CE) {
@@ -993,7 +995,7 @@ llvm::Value *CodeGenFunction::emitAsmByte(const CallExpr *CE) {
993995
llvm::Value *CodeGenFunction::emitAsmChainId(const CallExpr *CE) {
994996
llvm::Value *ValPtr = Builder.CreateAlloca(Int128Ty, nullptr);
995997
CGM.emitGetChainId(ValPtr);
996-
return Builder.CreateLoad(ValPtr, Int128Ty);
998+
return Builder.CreateLoad(Int128Ty, ValPtr);
997999
}
9981000

9991001
llvm::Value *CodeGenFunction::emitAsmLinkersymbol(const CallExpr *CE) {
@@ -1046,11 +1048,13 @@ llvm::Value *CodeGenFunction::emitAsmLoadImmutable(const CallExpr *CE) {
10461048
llvm::Value *ImmutableCPtr = Builder.CreateInBoundsGEP(
10471049
CGM.getImmutableBase(), {TableOffset}, "immutable.cptr");
10481050
llvm::Value *Offset = Builder.CreateLoad(
1051+
CGM.Int256Ty,
10491052
Builder.CreateBitCast(ImmutableCPtr, Int256PtrTy, "immutable.ptr"));
10501053

10511054
llvm::Value *HeapCPtr =
10521055
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Offset}, "heap.cptr");
10531056
return Builder.CreateLoad(
1057+
CGM.Int256Ty,
10541058
Builder.CreateBitCast(HeapCPtr, Int256PtrTy, "heap.ptr"));
10551059
}
10561060
}

lib/CodeGen/CGValue.h

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,10 @@ class ExprValue {
5050
case ValueKind::VK_RValue:
5151
return V;
5252
case ValueKind::VK_LValue:
53-
return Builder.CreateLoad(V, Name);
53+
return Builder.CreateLoad(V->getType()->getPointerElementType(), V, Name);
5454
case ValueKind::VK_SValue:
55-
llvm::Value *Address = CGM.getEndianlessValue(Builder.CreateLoad(V));
55+
llvm::Value *Address = CGM.getEndianlessValue(
56+
Builder.CreateLoad(V->getType()->getPointerElementType(), V));
5657
llvm::Value *Val = CGM.emitStorageLoad(Address);
5758
switch (Ty->getCategory()) {
5859
case Type::Category::Address:
@@ -153,8 +154,8 @@ class ExprValue {
153154
Builder.CreateStore(CGM.getEndianlessValue(PHIAddress), PHIAddressPtr);
154155
if (CGM.isEVM()) {
155156
llvm::Value *LoadV = Builder.CreateCall(
156-
StorageLoad,
157-
{CGM.getEndianlessValue(Builder.CreateLoad(PHIAddressPtr))});
157+
StorageLoad, {CGM.getEndianlessValue(Builder.CreateLoad(
158+
CGM.Int256Ty, PHIAddressPtr))});
158159
Builder.CreateStore(CGM.getEndianlessValue(LoadV),
159160
Builder.CreateBitCast(PHIPtr, CGM.Int256PtrTy));
160161
} else if (CGM.isEWASM()) {
@@ -198,8 +199,8 @@ class ExprValue {
198199
ValPtr = Builder.CreateAlloca(CGM.Int256Ty);
199200
if (CGM.isEVM()) {
200201
llvm::Value *LoadV = Builder.CreateCall(
201-
StorageLoad,
202-
{CGM.getEndianlessValue(Builder.CreateLoad(AddressPtr))});
202+
StorageLoad, {CGM.getEndianlessValue(
203+
Builder.CreateLoad(CGM.Int256Ty, AddressPtr))});
203204
Builder.CreateStore(CGM.getEndianlessValue(LoadV), ValPtr);
204205
} else if (CGM.isEWASM()) {
205206
Builder.CreateCall(StorageLoad, {AddressPtr, ValPtr});
@@ -252,7 +253,8 @@ class ExprValue {
252253
Builder.CreateStore(Value, V);
253254
return;
254255
case ValueKind::VK_SValue:
255-
llvm::Value *Address = CGM.getEndianlessValue(Builder.CreateLoad(V));
256+
llvm::Value *Address = CGM.getEndianlessValue(
257+
Builder.CreateLoad(V->getType()->getPointerElementType(), V));
256258
switch (Ty->getCategory()) {
257259
case Type::Category::Address:
258260
case Type::Category::Bool:
@@ -318,11 +320,11 @@ class ExprValue {
318320
CGM.emitMemcpy(Builder.CreateBitCast(ValPtr, CGM.BytesElemPtrTy),
319321
Builder.CreateBitCast(Ptr, CGM.BytesElemPtrTy),
320322
Builder.CreateZExtOrTrunc(Length, CGM.Int32Ty));
321-
llvm::Value *Val = Builder.CreateLoad(ValPtr);
323+
llvm::Value *Val = Builder.CreateLoad(CGM.Int256Ty, ValPtr);
322324
Val = Builder.CreateOr(Val, CGM.getEndianlessValue(LengthEncode));
323325
Builder.CreateStore(Val, ValPtr);
324-
CGM.emitStorageStore(Builder.CreateLoad(AddressPtr),
325-
Builder.CreateLoad(ValPtr));
326+
CGM.emitStorageStore(Builder.CreateLoad(CGM.Int256Ty, AddressPtr),
327+
Builder.CreateLoad(CGM.Int256Ty, ValPtr));
326328
Builder.CreateBr(Done);
327329

328330
// ExtendSlot case
@@ -342,8 +344,8 @@ class ExprValue {
342344
LengthEncode = CGM.getEndianlessValue(
343345
Builder.CreateOr(LengthEncode, Builder.getIntN(256, 1)));
344346
Builder.CreateStore(LengthEncode, ValPtr);
345-
CGM.emitStorageStore(Builder.CreateLoad(AddressPtr),
346-
Builder.CreateLoad(ValPtr));
347+
CGM.emitStorageStore(Builder.CreateLoad(CGM.Int256Ty, AddressPtr),
348+
Builder.CreateLoad(CGM.Int256Ty, ValPtr));
347349
llvm::Value *Bytes = CGM.emitConcatBytes({Address});
348350
Address = CGM.emitKeccak256(Bytes);
349351
Condition = Builder.CreateICmpSGE(Length, Builder.getIntN(256, 32));
@@ -356,8 +358,9 @@ class ExprValue {
356358
llvm::PHINode *PHIAddressPtr = Builder.CreatePHI(CGM.Int256PtrTy, 2);
357359
Builder.CreateStore(CGM.getEndianlessValue(PHIAddress), PHIAddressPtr);
358360
CGM.emitStorageStore(
359-
Builder.CreateLoad(PHIAddressPtr),
360-
Builder.CreateLoad(Builder.CreateBitCast(PHIPtr, CGM.Int256PtrTy)));
361+
Builder.CreateLoad(CGM.Int256Ty, PHIAddressPtr),
362+
Builder.CreateLoad(CGM.Int256Ty,
363+
Builder.CreateBitCast(PHIPtr, CGM.Int256PtrTy)));
361364
llvm::Value *NextRemain =
362365
Builder.CreateSub(PHIRemain, Builder.getIntN(256, 32));
363366
llvm::Value *NextAddress =
@@ -396,8 +399,8 @@ class ExprValue {
396399
CGM.emitMemcpy(Builder.CreateBitCast(ValPtr, CGM.BytesElemPtrTy),
397400
Builder.CreateBitCast(PHIPtr, CGM.BytesElemPtrTy),
398401
Builder.CreateZExtOrTrunc(PHIRemain, CGM.Int32Ty));
399-
CGM.emitStorageStore(Builder.CreateLoad(AddressPtr),
400-
Builder.CreateLoad(ValPtr));
402+
CGM.emitStorageStore(Builder.CreateLoad(CGM.Int256Ty, AddressPtr),
403+
Builder.CreateLoad(CGM.Int256Ty, ValPtr));
401404
Builder.CreateBr(Done);
402405

403406
Builder.SetInsertPoint(Done);

lib/CodeGen/CodeGenModule.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ void CodeGenModule::initUpdateMemorySize() {
155155
llvm::BasicBlock *Done =
156156
llvm::BasicBlock::Create(VMContext, "done", Func_updateMemorySize);
157157
Builder.SetInsertPoint(Entry);
158-
llvm::Value *OrigSize = Builder.CreateLoad(MemorySize, "memory.size");
158+
llvm::Value *OrigSize =
159+
Builder.CreateLoad(Int256Ty, MemorySize, "memory.size");
159160
llvm::Value *EndPos = Builder.CreateAdd(Pos, Range);
160161
llvm::Value *Condition = Builder.CreateICmpUGT(EndPos, OrigSize);
161162
Builder.CreateCondBr(Condition, Update, Done);

lib/CodeGen/ExprEmitter.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ ExprValuePtr ExprEmitter::structIndexAccess(const ExprValuePtr StructValue,
6666
auto ET = STy->getElementTypes()[ElementIndex];
6767
switch (StructValue->getValueKind()) {
6868
case ValueKind::VK_SValue: {
69-
llvm::Value *Base = Builder.CreateLoad(StructValue->getValue());
69+
llvm::Type *Ty =
70+
StructValue->getValue()->getType()->getPointerElementType();
71+
llvm::Value *Base = Builder.CreateLoad(Ty, StructValue->getValue());
7072
llvm::Value *Pos = Builder.getIntN(256, STy->getStoragePos(ElementIndex));
7173
llvm::Value *ElemAddress = Builder.CreateAdd(Base, Pos);
7274
llvm::Value *Address = Builder.CreateAlloca(CGF.Int256Ty);
@@ -114,7 +116,7 @@ ExprValuePtr ExprEmitter::arrayIndexAccess(const ExprValuePtr &Base,
114116
return std::make_shared<ExprValue>(Ty, ValueKind::VK_LValue, Address);
115117
}
116118

117-
llvm::Value *Pos = Builder.CreateLoad(Value);
119+
llvm::Value *Pos = Builder.CreateLoad(CGM.Int256Ty, Value);
118120
if (ArrTy->isDynamicSized()) {
119121
// load array size and check
120122
auto LengthTy = IntegerType::getIntN(256);
@@ -596,7 +598,7 @@ ExprValuePtr ExprEmitter::visit(const CastExpr *CE) {
596598
llvm::Value *Src = Builder.CreateExtractValue(In, {1});
597599
CGM.emitMemcpy(Dst, Src, Builder.CreateZExtOrTrunc(Length, CGM.Int32Ty));
598600
return ExprValue::getRValue(
599-
CE, CGM.getEndianlessValue(Builder.CreateLoad(Ptr)));
601+
CE, CGM.getEndianlessValue(Builder.CreateLoad(CGM.Int256Ty, Ptr)));
600602
}
601603
assert(false);
602604
break;
@@ -710,8 +712,9 @@ ExprValuePtr ExprEmitter::visit(const IndexAccess *IA) {
710712
const Type *Ty = IA->getType().get();
711713

712714
if (const auto *MType = dynamic_cast<const MappingType *>(Base->getType())) {
715+
llvm::Type *LLTy = Base->getValue()->getType()->getPointerElementType();
713716
llvm::Value *Pos =
714-
CGM.getEndianlessValue(Builder.CreateLoad(Base->getValue()));
717+
CGM.getEndianlessValue(Builder.CreateLoad(LLTy, Base->getValue()));
715718
llvm::Value *Key;
716719
if (MType->getKeyType()->isDynamic()) {
717720
Key = Index->load(Builder, CGM);
@@ -760,7 +763,7 @@ ExprValuePtr ExprEmitter::visit(const MemberExpr *ME) {
760763
llvm::Value *ValPtr = Builder.CreateAlloca(Builder.getInt32Ty());
761764
CGM.emitCallDataCopy(Builder.CreateBitCast(ValPtr, CGF.Int8PtrTy),
762765
Builder.getInt32(0), Builder.getInt32(4));
763-
llvm::Value *Val = Builder.CreateLoad(ValPtr);
766+
llvm::Value *Val = Builder.CreateLoad(Builder.getInt32Ty(), ValPtr);
764767
return ExprValue::getRValue(ME, Val);
765768
}
766769
case Identifier::SpecialIdentifier::tx_gasprice: {

0 commit comments

Comments
 (0)