Skip to content

Commit f0c50ea

Browse files
committed
[Misc] Remove deprecated ABI
1 parent b1ca5cf commit f0c50ea

File tree

8 files changed

+149
-119
lines changed

8 files changed

+149
-119
lines changed

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
6060
)
6161
endif()
6262

63+
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
64+
add_compile_options(
65+
-Wno-redundant-move
66+
)
67+
endif()
68+
6369
option(SOLL_INCLUDE_TESTS
6470
"Generate build targets for the Soll unit tests."
6571
${LLVM_INCLUDE_TESTS})

include/soll/AST/Decl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class Decl {
2929
friend class ASTReader;
3030

3131
protected:
32-
Decl(SourceRange L, llvm::StringRef Name = llvm::StringRef(""),
32+
Decl(SourceRange L, llvm::StringRef Name = {},
3333
Visibility vis = Visibility::Default)
3434
: Location(L), Name(Name.str()), Vis(vis), UniqueName(Name.str()) {}
3535

lib/CodeGen/ABICodec.cpp

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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(CGM.Int8Ty, 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(CGM.Int8Ty, 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 *Val = Builder.CreateLoad(ValueTy, ValPtr);
137138
llvm::Value *NextInt8Ptr =
138-
Builder.CreateInBoundsGEP(Int8Ptr, {Builder.getInt32(32)});
139+
Builder.CreateInBoundsGEP(CGM.Int8Ty, 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+
CGM.Int8Ty, 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(CGM.Int8Ty, Int8Ptr, {Pos}), I);
166169
} else {
167170
ExprValuePtr ValExprValue;
168171
std::tie(ValExprValue, NextInt8Ptr) =
@@ -464,7 +467,7 @@ llvm::Value *AbiEmitter::emitEncodePacked(llvm::Value *Int8Ptr,
464467
unsigned PadRightLength = 32 - FixedBytesTy->getBitNum() / 8;
465468
if (PadRightLength % 32)
466469
Int8Ptr = Builder.CreateInBoundsGEP(
467-
Int8Ptr, {Builder.getIntN(32, PadRightLength)});
470+
CGM.Int8Ty, Int8Ptr, {Builder.getIntN(32, PadRightLength)});
468471
}
469472
return Int8Ptr;
470473
}
@@ -502,7 +505,7 @@ llvm::Value *AbiEmitter::emitEncode(llvm::Value *Int8Ptr,
502505
Int8Ptr = copyToInt8Ptr(
503506
Int8Ptr, Builder.CreateZExtOrTrunc(Length, CGF.Int256Ty), true);
504507
Int8Ptr = copyToInt8Ptr(Int8Ptr, Bytes, true);
505-
return Builder.CreateInBoundsGEP(Int8Ptr, {PadRightLength});
508+
return Builder.CreateInBoundsGEP(CGM.Int8Ty, Int8Ptr, {PadRightLength});
506509
}
507510
case Type::Category::Array: {
508511
llvm::Function *ThisFunc = Builder.GetInsertBlock()->getParent();
@@ -530,7 +533,8 @@ llvm::Value *AbiEmitter::emitEncode(llvm::Value *Int8Ptr,
530533
if (ArrTy->getElementType()->isDynamic()) {
531534
Head = Int8Ptr;
532535
Tail = Builder.CreateInBoundsGEP(
533-
Head, {Builder.CreateMul(ArrayLength, ABIStaticSizeValue)});
536+
CGM.Int8Ty, Head,
537+
{Builder.CreateMul(ArrayLength, ABIStaticSizeValue)});
534538
} else {
535539
Tail = Int8Ptr;
536540
}
@@ -606,7 +610,7 @@ llvm::Value *AbiEmitter::emitEncode(llvm::Value *Int8Ptr,
606610
unsigned PadRightLength = 32 - FixedBytesTy->getBitNum() / 8;
607611
if (PadRightLength % 32)
608612
Int8Ptr = Builder.CreateInBoundsGEP(
609-
Int8Ptr, {Builder.getIntN(32, PadRightLength)});
613+
CGM.Int8Ty, Int8Ptr, {Builder.getIntN(32, PadRightLength)});
610614
return Int8Ptr;
611615
}
612616
default: {
@@ -627,15 +631,16 @@ llvm::Value *AbiEmitter::copyToInt8Ptr(llvm::Value *Int8Ptr, llvm::Value *Value,
627631
Builder.CreateCall(Memcpy, {Builder.CreateBitCast(Int8Ptr, CGM.Int8PtrTy),
628632
SrcBytes, Length});
629633
if (IncreasePtr)
630-
return Builder.CreateInBoundsGEP(Int8Ptr, {Length});
634+
return Builder.CreateInBoundsGEP(CGM.Int8Ty, Int8Ptr, {Length});
631635
} else {
632636
Value = CGM.getEndianlessValue(Value);
633637
llvm::Value *CPtr =
634638
Builder.CreatePointerCast(Int8Ptr, llvm::PointerType::getUnqual(Ty));
635639
Builder.CreateStore(Value, CPtr);
636640
if (IncreasePtr)
637641
return Builder.CreateInBoundsGEP(
638-
Int8Ptr, {Builder.getInt32(Ty->getIntegerBitWidth() / 8)});
642+
CGM.Int8Ty, Int8Ptr,
643+
{Builder.getInt32(Ty->getIntegerBitWidth() / 8)});
639644
}
640645
return nullptr;
641646
}

lib/CodeGen/BackendUtil.cpp

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -143,28 +143,16 @@ void EmitAssemblyHelper::EmitAssembly(
143143
TheModule->setDataLayout(TM->createDataLayout());
144144
}
145145

146-
#if LLVM_VERSION_MAJOR >= 13
147-
llvm::PassBuilder PB(TM.get(), llvm::PipelineTuningOptions(), llvm::None);
148-
#elif LLVM_VERSION_MAJOR >= 12
149-
llvm::PassBuilder PB(false, TM.get(), llvm::PipelineTuningOptions(),
150-
llvm::None);
151-
#elif LLVM_VERSION_MAJOR >= 9
152-
llvm::PassBuilder PB(TM.get(), llvm::PipelineTuningOptions(), llvm::None);
146+
#if LLVM_VERSION_MAJOR == 12
147+
llvm::PassBuilder PB(false, TM.get());
153148
#else
154-
llvm::PassBuilder PB(TM.get(), llvm::None);
149+
llvm::PassBuilder PB(TM.get());
155150
#endif
156151

157-
#if LLVM_VERSION_MAJOR >= 13
158152
llvm::LoopAnalysisManager LAM;
159153
llvm::FunctionAnalysisManager FAM;
160154
llvm::CGSCCAnalysisManager CGAM;
161155
llvm::ModuleAnalysisManager MAM;
162-
#else
163-
llvm::LoopAnalysisManager LAM(false);
164-
llvm::FunctionAnalysisManager FAM(false);
165-
llvm::CGSCCAnalysisManager CGAM(false);
166-
llvm::ModuleAnalysisManager MAM(false);
167-
#endif
168156

169157
// Register the AA manager first so that our version is the one used.
170158
FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
@@ -186,11 +174,7 @@ void EmitAssemblyHelper::EmitAssembly(
186174
PB.registerLoopAnalyses(LAM);
187175
PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
188176

189-
#if LLVM_VERSION_MAJOR >= 13
190177
llvm::ModulePassManager MPM;
191-
#else
192-
llvm::ModulePassManager MPM(false);
193-
#endif
194178

195179
if (TargetOpts.BackendTarget == EWASM) {
196180
MPM.addPass(LoweringInteger());

lib/CodeGen/CGExpr.cpp

Lines changed: 36 additions & 30 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) {
@@ -381,7 +382,7 @@ ExprValuePtr CodeGenFunction::emitAbiDecode(const CallExpr *CE) {
381382

382383
ExprValuePtr CodeGenFunction::emitAbiDecode(llvm::Value *Bytes,
383384
const Type *TupleTy) {
384-
llvm::Value *Length = Builder.CreateZExtOrTrunc(
385+
[[maybe_unused]] llvm::Value *Length = Builder.CreateZExtOrTrunc(
385386
Builder.CreateExtractValue(Bytes, {0}), CGM.Int32Ty);
386387
llvm::Value *SrcBytes = Builder.CreateExtractValue(Bytes, {1});
387388

@@ -634,19 +635,20 @@ llvm::Value *CodeGenFunction::emitAsmGetBalance(const CallExpr *CE,
634635
llvm::Value *CodeGenFunction::emitAsmCallMLoad(const CallExpr *CE) {
635636
auto Arguments = CE->getArguments();
636637
llvm::Value *Pos = emitExpr(Arguments[0])->load(Builder, CGM);
637-
llvm::Value *CPtr =
638-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Pos}, "heap.cptr");
638+
llvm::Value *CPtr = Builder.CreateInBoundsGEP(CGM.Int8Ty, CGM.getHeapBase(),
639+
{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
}
644646

645647
void CodeGenFunction::emitAsmCallMStore(const CallExpr *CE) {
646648
auto Arguments = CE->getArguments();
647649
llvm::Value *Pos = emitExpr(Arguments[0])->load(Builder, CGM);
648-
llvm::Value *CPtr =
649-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Pos}, "heap.cptr");
650+
llvm::Value *CPtr = Builder.CreateInBoundsGEP(CGM.Int8Ty, CGM.getHeapBase(),
651+
{Pos}, "heap.cptr");
650652
llvm::Value *Ptr = Builder.CreateBitCast(CPtr, Int256PtrTy, "heap.ptr");
651653
Builder.CreateStore(
652654
CGM.getEndianlessValue(emitExpr(Arguments[1])->load(Builder, CGM)), Ptr);
@@ -656,16 +658,16 @@ void CodeGenFunction::emitAsmCallMStore(const CallExpr *CE) {
656658
void CodeGenFunction::emitAsmCallMStore8(const CallExpr *CE) {
657659
auto Arguments = CE->getArguments();
658660
llvm::Value *Pos = emitExpr(Arguments[0])->load(Builder, CGM);
659-
llvm::Value *Ptr =
660-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Pos}, "heap.ptr");
661+
llvm::Value *Ptr = Builder.CreateInBoundsGEP(CGM.Int8Ty, CGM.getHeapBase(),
662+
{Pos}, "heap.ptr");
661663
llvm::Value *Value = Builder.CreateZExtOrTrunc(
662664
emitExpr(Arguments[1])->load(Builder, CGM), CGM.Int8Ty);
663665
Builder.CreateStore(Value, Ptr);
664666
CGM.emitUpdateMemorySize(Pos, Builder.getIntN(256, 1));
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) {
@@ -688,8 +690,8 @@ void CodeGenFunction::emitAsmCallSStore(const CallExpr *CE) {
688690
void CodeGenFunction::emitAsmCallReturn(const CallExpr *CE) {
689691
auto Arguments = CE->getArguments();
690692
llvm::Value *Pos = emitExpr(Arguments[0])->load(Builder, CGM);
691-
llvm::Value *Ptr =
692-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Pos}, "heap.cptr");
693+
llvm::Value *Ptr = Builder.CreateInBoundsGEP(CGM.Int8Ty, CGM.getHeapBase(),
694+
{Pos}, "heap.cptr");
693695
llvm::Value *Length = emitExpr(Arguments[1])->load(Builder, CGM);
694696
CGM.emitUpdateMemorySize(Pos, Length);
695697
CGM.emitFinish(Ptr, Builder.CreateZExtOrTrunc(Length, CGM.Int32Ty));
@@ -698,8 +700,8 @@ void CodeGenFunction::emitAsmCallReturn(const CallExpr *CE) {
698700
void CodeGenFunction::emitAsmCallRevert(const CallExpr *CE) {
699701
auto Arguments = CE->getArguments();
700702
llvm::Value *Pos = emitExpr(Arguments[0])->load(Builder, CGM);
701-
llvm::Value *Ptr =
702-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Pos}, "heap.cptr");
703+
llvm::Value *Ptr = Builder.CreateInBoundsGEP(CGM.Int8Ty, CGM.getHeapBase(),
704+
{Pos}, "heap.cptr");
703705
llvm::Value *Length = emitExpr(Arguments[1])->load(Builder, CGM);
704706
CGM.emitUpdateMemorySize(Pos, Length);
705707
CGM.emitRevert(Ptr, Builder.CreateZExtOrTrunc(Length, CGM.Int32Ty));
@@ -714,8 +716,8 @@ void CodeGenFunction::emitAsmSelfDestruct(const CallExpr *CE) {
714716
void CodeGenFunction::emitAsmCallLog(const CallExpr *CE) {
715717
auto Arguments = CE->getArguments();
716718
llvm::Value *Pos = emitExpr(Arguments[0])->load(Builder, CGM);
717-
llvm::Value *Data =
718-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Pos}, "heap.cptr");
719+
llvm::Value *Data = Builder.CreateInBoundsGEP(CGM.Int8Ty, CGM.getHeapBase(),
720+
{Pos}, "heap.cptr");
719721
llvm::Value *DataLength = emitExpr(Arguments[1])->load(Builder, CGM);
720722
std::vector<llvm::Value *> Topics;
721723
for (size_t I = 2; I < Arguments.size(); I++) {
@@ -739,8 +741,8 @@ llvm::Value *CodeGenFunction::emitAsmCallCallDataLoad(const CallExpr *CE) {
739741
void CodeGenFunction::emitAsmCallCodeCopy(const CallExpr *CE) {
740742
auto Arguments = CE->getArguments();
741743
llvm::Value *Pos = emitExpr(Arguments[0])->load(Builder, CGM);
742-
llvm::Value *Ptr =
743-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Pos}, "heap.ptr");
744+
llvm::Value *Ptr = Builder.CreateInBoundsGEP(CGM.Int8Ty, CGM.getHeapBase(),
745+
{Pos}, "heap.ptr");
744746
llvm::Value *Code = Builder.CreateIntToPtr(
745747
emitExpr(Arguments[1])->load(Builder, CGM), Int8PtrTy);
746748
llvm::Value *Length = emitExpr(Arguments[2])->load(Builder, CGM);
@@ -802,8 +804,8 @@ llvm::Value *CodeGenFunction::emitAsmCallkeccak256(const CallExpr *CE) {
802804
// keccak256 function
803805
auto Arguments = CE->getArguments();
804806
llvm::Value *Pos = emitExpr(Arguments[0])->load(Builder, CGM);
805-
llvm::Value *Ptr =
806-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Pos}, "heap.cptr");
807+
llvm::Value *Ptr = Builder.CreateInBoundsGEP(CGM.Int8Ty, CGM.getHeapBase(),
808+
{Pos}, "heap.cptr");
807809
llvm::Value *Length = emitExpr(Arguments[1])->load(Builder, CGM);
808810
CGM.emitUpdateMemorySize(Pos, Length);
809811
return CGM.emitKeccak256(Ptr, Length);
@@ -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) {
@@ -1014,14 +1016,15 @@ void CodeGenFunction::emitAsmSetImmutable(const CallExpr *CE) {
10141016
if (Map.find(StringRefName) != Map.end()) {
10151017
llvm::Value *Offset = emitExpr(Arguments[0])->load(Builder, CGM);
10161018
llvm::Value *TableOffset = Builder.getInt(Map.lookup(StringRefName));
1017-
llvm::Value *ImmutableCPtr = Builder.CreateInBoundsGEP(
1018-
CGM.getImmutableBase(), {TableOffset}, "immutable.cptr");
1019+
llvm::Value *ImmutableCPtr =
1020+
Builder.CreateInBoundsGEP(CGM.Int256Ty, CGM.getImmutableBase(),
1021+
{TableOffset}, "immutable.cptr");
10191022
Builder.CreateStore(
10201023
Offset,
10211024
Builder.CreateBitCast(ImmutableCPtr, Int256PtrTy, "immutable.ptr"));
10221025

1023-
llvm::Value *HeapCPtr =
1024-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Offset}, "heap.cptr");
1026+
llvm::Value *HeapCPtr = Builder.CreateInBoundsGEP(
1027+
CGM.Int8Ty, CGM.getHeapBase(), {Offset}, "heap.cptr");
10251028
Builder.CreateStore(
10261029
Value, Builder.CreateBitCast(HeapCPtr, Int256PtrTy, "heap.ptr"));
10271030
CGM.emitUpdateMemorySize(Offset, Builder.getIntN(256, 0x20));
@@ -1043,14 +1046,17 @@ llvm::Value *CodeGenFunction::emitAsmLoadImmutable(const CallExpr *CE) {
10431046
auto &Map = Ctx.getImmutableAddressMap();
10441047
if (Map.find(StringRefName) != Map.end()) {
10451048
llvm::Value *TableOffset = Builder.getInt(Map.lookup(StringRefName));
1046-
llvm::Value *ImmutableCPtr = Builder.CreateInBoundsGEP(
1047-
CGM.getImmutableBase(), {TableOffset}, "immutable.cptr");
1049+
llvm::Value *ImmutableCPtr =
1050+
Builder.CreateInBoundsGEP(CGM.Int256Ty, CGM.getImmutableBase(),
1051+
{TableOffset}, "immutable.cptr");
10481052
llvm::Value *Offset = Builder.CreateLoad(
1053+
CGM.Int256Ty,
10491054
Builder.CreateBitCast(ImmutableCPtr, Int256PtrTy, "immutable.ptr"));
10501055

1051-
llvm::Value *HeapCPtr =
1052-
Builder.CreateInBoundsGEP(CGM.getHeapBase(), {Offset}, "heap.cptr");
1056+
llvm::Value *HeapCPtr = Builder.CreateInBoundsGEP(
1057+
CGM.Int8Ty, CGM.getHeapBase(), {Offset}, "heap.cptr");
10531058
return Builder.CreateLoad(
1059+
CGM.Int256Ty,
10541060
Builder.CreateBitCast(HeapCPtr, Int256PtrTy, "heap.ptr"));
10551061
}
10561062
}

0 commit comments

Comments
 (0)